1. property, get-set메서드

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Study04
{
    public class Hero
    {
        private string name;
        private int damage;
        private int maxHp;
        private int hp;
        
        public string Name
        {
            get
            {
                return this.name;
            }
            set
            {
                this.name = value;
            }
        }

        public int Damage
        {
            get
            {
                return this.damage;
            }
            set
            {
                this.damage = value;
            }
        }

        public int Hp
        {
            get
            {
                return this.hp;
            }
        }

        public int MaxHp
        {
            get
            {
                return this.maxHp;
            }
            set
            {
                this.maxHp = value;
                this.hp = this.maxHp;
                
            }
        }

        // 생성자
        public Hero()
        {

        }
        
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Study04
{
    public class App
    {
        // 생성자
        public App()
        {
            Hero hero = new Hero();
            hero.Name = "홍길동";
            hero.Damage = 1;
            hero.MaxHp = 10;
            Console.WriteLine(hero.Name);
            Console.WriteLine(hero.Damage);
            Console.WriteLine("{0}/{1}", hero.Hp, hero.MaxHp);
        } 
    }
}

2. interface 상속

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Study04
{
    interface IBurrow
    {
        void Burrow();
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Study04
{
    interface IRecovery
    {
        void RecoverHp();   // 체력 회복
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Study04
{
    public class Drone : IBurrow, IRecovery
    {
        // 생성자
        public Drone()
        {

        }

        // 자동 생성
        public void Burrow()
        {
            Console.WriteLine("Brrow!");
        }

        public void RecoverHp()
        {
            Console.WriteLine("체력 회복");
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Study04
{
    public class Zergling : IBurrow, IRecovery
    {
        // 생성자
        public Zergling()
        {

        }

        public void Burrow()
        {
            Console.WriteLine("Burrow");
        }

        public void RecoverHp()
        {
            Console.WriteLine("체력 회복");
        }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Study04
{
    public class App
    {
        // 생성자
        public App()
        {
            Drone drone = new Drone();
            drone.Burrow();
            drone.RecoverHp();

            Zergling zergling = new Zergling();
            zergling.Burrow();

            // 타입으로 사용
            IBurrow drone2 = new Drone();
            drone2.Burrow();
            // drone2.RecoverHp();  -> 캐스팅 오류
            // 해결방법
            IRecovery drone3 = (IRecovery)drone2;
            drone3.RecoverHp();
            ((IRecovery)drone2).RecoverHp();

            IBurrow zergling2 = new Zergling();
            zergling2.Burrow();
        } 
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Study04
{
    interface IAttack
    {
        void Attack();
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Study04
{
    interface ICloak
    {
        void CloakOn();
        void CloakOff();
        bool IsCloak();
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Study04
{
    public class Marine : IAttack
    {
        // 생성자
        public Marine()
        {

        }

        public void Attack()
        {
            Console.WriteLine("총을 쏩니다.");
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Study04
{
    public class Firebat : IAttack
    {
        //생성자
        public Firebat()
        {

        }

        public void Attack()
        {
            Console.WriteLine("화염방사기를 쏩니다.");
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Study04
{
    public class Wraith : ICloak
    {
        private bool isCloak;
        // 생성자
        public Wraith()
        {

        }

        public void CloakOff()
        {
            this.isCloak = false;
        }

        public void CloakOn()
        {
            this.isCloak = false;
        }

        public bool IsCloak()
        {
            return this.isCloak;
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Study04
{
    public class App
    {
        // 생성자
        public App()
        {
            // 인터페이스 IAttack

            Marine marine = new Marine();
            Firebat firebat = new Firebat();

            marine.Attack();    //총을 쏩니다
            firebat.Attack();   // 화염방사기를 쏩니다

            // 인터페이스 ICloak
            ICloak wraith = new Wraith();
            wraith.CloakOn();
            wraith.CloakOff();  // false
            bool isCloak = wraith.IsCloak();
            if (isCloak)
            {
                Console.WriteLine("은신중입니다.");
            }
            else
            {
                Console.WriteLine("은신중이지 않습니다.");   // 출력
            }

        } 
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Study04
{
    public class App
    {
        // 정수 배열 타입 변수 정의
        int[] arr1;
        // 문자열 배열 타입 변수 정의
        string[] arr2;
        // Hero배열 형식의 변수 정의
        Hero[] arr3;

        // 생성자
        public App()
        {
            // 정수 인스턴스 생성하고 arr3에 할당, 해당 요소는 기본값 0
            this.arr1 = new int[2];
            this.arr1[0] = 1;

            // 문자열 인스턴스 생성하고 arr3에 할당 
            this.arr2 = new string[3];

            // Hero 인스턴스 생성하고 arr3에 할당
            this.arr3 = new Hero[3];

            // 두개 같음
            int[] array2 = new int[] { 1, 2, 3, 4, 5 };
            int[] array3 = { 1, 2, 3, 4, 5 };

            int[] score = new int[5];
            //score[-1] = 0;  // 인덱스 배열 범위 오류
            score[0] = 80;
            score[1] = 74;
            score[2] = 81;
            score[3] = 90;
            score[4] = 34;
            //score[5] = 79;  // 인덱스 배열 범위 오류
            //Console.WriteLine(score.Length);    // 5

            //// 반복문 이용하여 출력
            //for (int i = 0; i < score.Length; i++)
            //{
            //    Console.WriteLine(score[i]);
            //}

            foreach (int num in score)
            {
                Console.WriteLine(num);
            }

            string[] fruitsNames = new string[3];
            fruitsNames[0] = "바나나";
            //fruitsNames[1] = "딸기";
            fruitsNames[2] = "수박";

            for (int i = 0; i < fruitsNames.Length; i++)
            {
                if (i == 1)
                {
                    fruitsNames[i] = "복숭아";
                }
            }

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

+ Recent posts