0321 기초 복습!

2021. 3. 19. 18:02C#/수업내용

주말동안 공부할 리스트.xlsx
0.01MB

while 반복문 / 정확한 반복 횟수를 알 수 없을 때 쓴다. (괄호) 안 조건문이 true일 때 수식을 수행한다.
연산자 && (And), || (Or), ! (Not)

int val = (a > b) ? a : b;
[설명] a가 b보다 크면 val에 a 값을 대입하고, 같거나 작으면 b 값을 대입한다
매서드(반환형식) 모든 작업을 수행하고 반환받고자 하는 데이터 타입
매서드(return) 수행한 결과인 반환값을 호출한 메소드로 전달
매서드(매개변수ㅇ) 작업을 수행하는데 필요한 값들을 내부로 전달하기 위해 사용되는 변수
매서드 오버로딩 메소드 명이 같아도 매개변수가 다르면 다른 메소드로 취급
매서드 오버라이딩 virtual, override 상속 받은 메소드에 재정의를 할 수 있다.
클래스 참조 형식. new 키워드를 통해 인스턴스화가 된다. 개체가 만들어지면 해당 특정 개체에 대해 관리되는 힙에 메모리가 할당되고, 변수에는 개체 위치에 대한 주소만 포함된다.

[접근 제한자] class 클래스명
{
// 필드, 메소드 ...
}
클래스 상속 부모 클래스를 상속받은 자식 클래스는 부모 클래스의 모든 멤버를 물려받게 된다. (다만, 생성자는 상속이 되지 않으며 객체 생성 시 부모 클래스의 생성자가 자동으로 호출됨) 

private로 선언된 멤버는 상속할 수 없다.

base 키워드를 사용하면 부모 클래스에 접근할 수 있다.

클래스명 앞에다 sealed 키워드를 사용하게 되면, 이 클래스를 상속시키는 건 더이상 할 수 없다.
클래스 인터페이스 인터페이스 내에서는 메소드, 이벤트, 인덱서, 속성이 쓰일 수 있으며, 필드를 포함할 수 없다. 그리고 인터페이스의 모든 멤버는 public로 접근 권한이 기본으로 지정.

클래스의 한 종류
맴버 변수 맴버 변수는 클래스 안에 정의한다.
속성 set, get 접근자는 각각 속성을 읽거나, 새 값을 할당할 때 사용된다. 클래스 내부에서만 사용할 수 있도록 private로 접근을 제한해 버린다.

내부에 있는 변수를 수정해야 할 상황에서, get 접근자만 존재한다면 읽을 수만 있으며, set 접근자만 존재하면 쓸 수만 있으며, 두 접근자가 모두 존재하면 읽을 수도 있고, 쓸 수도 있게 된다.
public, private 접근 제한자를 통하여 특정 멤버를 공개할 것인지 공개하지 않을 것인지 지정해 줄 수 있다.

안정성을 위해, 외부에서 이를 수정하지 못하게 안전성을 고려
ref  
structrue 클래스와 상당히 비슷한 구조, 구조체는 주로 몇 가지의 항목으로 구성된 간단한 개체를 구조화하기 위해 사용된다.

struct Point
{
public int x, y;
public Point(int x, int y)
{
this.x = x;
this.y = y;
}

 

 

클래스와 메서드 호출하기 + 반복문/if문 사용

public App()
        {
            Console.WriteLine("App생성자");

            Marine hong = new Marine();
            hong.name = "홍길동";
            hong.hp = 75;
            hong.damage = 5;
            Console.WriteLine("{0} {1} {2}", hong.name, hong.hp, hong.damage);

            Marine lim = new Marine();
            lim.name = "임꺽정";
            lim.hp = 75;
            lim.damage = 5;
            Console.WriteLine("{0} {1} {2}", lim.name, lim.hp, lim.damage);

            if (lim.hp > 0) 
            {
                while (lim.hp > 0) 
                {
                    hong.Attack(lim);
                    Console.WriteLine("{0}의 hp가 {1}이 되었습니다.", lim.name, lim.hp);
                }
                lim.Die();
                Console.WriteLine("{0}의 hp가 {1}이 되었습니다.", lim.name, lim.hp);
            }
        }
public class Marine
    {
        public string name;
        public int hp;
        public int damage;
        public Marine() 
        { 
        }
        public void Attack(Marine target) 
        {
            Console.WriteLine("{0}이(가) {1}을(를) 공격합니다.", this.name, target.name);
            target.Hit(this.damage);
        }

        public void Hit(int damage) 
        {
            this.hp -= damage;
            Console.WriteLine("{0}이(가) 피해({1})를 받았습니다.", this.name, damage);
        }
        public void Die() 
        {
            Console.WriteLine("마린이 죽었습니다.");
        }
    }

 

 

 public class Tomerry
    {
        public string name;
        public int hp;
        public int damage;
        public Tomerry()
        {
            Console.WriteLine("토머리가 입장합니다.");
            Random damage = new Random();
            this.damage = damage.Next(1, 11);
        }
        public void Attack(Librarian target)
        {
            Console.WriteLine("{0}가 {1}를 공격합니다.", this.name, target.name);
            target.Hit(this);
        }
        public void Hit(Librarian target)
        {
            this.hp -= target.damage;
            Console.WriteLine("{0}가 피해({1})를 받았습니다.", target.name, this.damage);
            Console.WriteLine("토머리 현재 체력: {0}", this.hp);
        }
        public void Die()
        {
            Console.WriteLine("토머리가 죽었습니다.");
        }
    }
public class Librarian
    {
        public string name;
        public int hp;
        public int damage;
        public Librarian()
        {
            Console.WriteLine("사서가 입장합니다.");
            Random damage = new Random();
            this.damage = (damage.Next(1, 6) * 2);
        }
        public void Attack(Tomerry target)
        {
            Console.WriteLine("{0}가 {1}를 공격합니다.", this.name, target.name);
            target.Hit(this);
        }
        public void Hit(Tomerry target)
        {
            this.hp -= target.damage;
            Console.WriteLine("{0}가 피해({1})를 받았습니다.", this.name, this.damage);
            Console.WriteLine("사서 현재 체력: {0}", this.hp);
        }
        public void Die()
        {
            Console.WriteLine("사서가 죽었습니다.");
        }
    }
public class App{
        public App()
        {
            Console.WriteLine("App생성자");

            Tomerry tomerry = new Tomerry();
            tomerry.name = "토머리";
            tomerry.hp = 300;

            Librarian librarian = new Librarian();
            librarian.name = "로라";
            librarian.hp = 50;

            tomerry.Attack(librarian);
            Console.WriteLine("=================");
            librarian.Attack(tomerry);
        }
    }

 

get,set 접근자

class Program
    {
        
        static void Main(string[] args)
        {
            MyClass mc = new MyClass();
            Console.WriteLine("mc.Name: {0}", mc.Name);
            mc.Name = "홍길동";
            Console.WriteLine("mc.Name: {0}", mc.Name);
        }
    }
public class MyClass
    {
        private string name = "John";
        public string Name
        {
            get
            {
                return name;
            }
            set
            {
                name = value;
            }
        }
        public MyClass()
        {
            
        }
    }

public class MyClass
    {
        private string name = "John";
        public string Name
        {
            get
            {
                return name;
            }
            set
            {
                if (value.Length < 5)
                name = value;
            }
        }
        public MyClass()
        {
            
        }
    }

 

 

structure 구조체 

struct Program
    {
        struct Point 
        {
            public int x, y;
            public Point(int x, int y) 
            {
                this.x = x;
                this.y = y;
            }
        }
        
        static void Main(string[] args)
        {
            Point point1;
            point1.x = 20;
            point1.y = 30;

            Console.WriteLine("point1: x={0}, y={1}", point1.x, point1.y);
        }
    }

 

 

인터페이스 내부에서 인터페이스를 상속하기

namespace ConsoleApp4
{
    interface ParentInterface 
    { 
        void myMethod(string str);
    }
    interface SubInterface : ParentInterface 
    { 
        void myMethod(string str, int i);
    }
    class MyClass : SubInterface 
    { 
        public void myMethod(string str) 
        {
            Console.WriteLine(str + " ParentInterface.myMethod() call!");
        } 
        public void myMethod(string str, int count) 
        { 
            for (int i = 0; i < count; i++) 
            { 
                Console.WriteLine(str + " SubInterface.myMethod() " + i + " call!");
            }
        }
    }
    class Program 
    { 
        static void Main(string[] args)
        { 
            MyClass sif = new MyClass();
            sif.myMethod("Interface");
            sif.myMethod("Inherits", 4);
        }
    }
}

 

인벤토리에 아이템 집어넣기

public class Inventory
    {
        public Inventory(string itemNames)
        {
            List<string> inventory;
            inventory = new List<string>();
            inventory.Add(itemNames);

            Console.WriteLine("Count: {0}", inventory.Count);

            foreach (string name in inventory) 
            {
                Console.WriteLine(name);
            }

        }
    }
class Program 
    { 
        static void Main(string[] args)
        {
            new Inventory("이루실의 직검");
            new Inventory("빛의 탈리스만");
        }
    }
public class Inventory
    {
        public List<string> inventory= new List<string>();

        public Inventory() 
        {
        }
        public void inputItem(string itemName) 
        {
            this.inventory.Add(itemName);
        }
    }
class Program 
    { 
        static void Main(string[] args)
        {
            Inventory inventory = new Inventory();
            inventory.inputItem("이루실의 직검");
            inventory.inputItem("빛의 탈리스만");
            Console.WriteLine("Count: {0}", inventory.inventory.Count);

            foreach (string name in inventory.inventory) 
            {
                Console.WriteLine(name);
            }
        }
    }

'C# > 수업내용' 카테고리의 다른 글

0323 익명 함수  (0) 2021.03.23
0322 대리자 delegate★★  (0) 2021.03.22
0319 확장 메서드 extension method  (0) 2021.03.19
0319 Partial Class 분할 클래스  (0) 2021.03.19
0319 2차원 배열 복습  (0) 2021.03.19