0317 Property 속성/Stack 클래스/Queue 큐

2021. 3. 17. 16:35C#/수업내용

전용 필드의 값을 읽거나 쓰거나 계산하는 맴버;

변수처럼 사용할 수 있지만 실제론 접근자라는 특수 메서드

 

get 반환/set 키워드 새 값 할당 사용해서 새 값을 할당할 수 있다.

각기 다른 엑세스 수준을 가질 수 있다.

value: set 접근자가 할당하는 값을 정의하는 데 사용 (매개변수)

주로 중요한 데이터에 대한 엑세스를 제한하는 데 사용

 

 

Property

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

            //Marine 인스턴스 생성 
            Marine marine = new Marine(100f);

            //set속성으로 값 할당하기 
            marine.Hp = 10000;  

            //get속성으로 출력
            Console.WriteLine(marine.Hp);   

            //SCV객체 생성 
            SCV scv = new SCV(50f);
            
            //속성 get, set사용 
            scv.Hp -= 10;   

            //get속성을 사용해 출력 
            Console.WriteLine("{0}/{1}", scv.Hp, scv.MaxHp);   
        }
    }
public class Marine
    {
        //맴버 변수 선언 
        private float hp;
        private float maxHp;

        //속성정의 
        public float Hp {
            get 
            {
                if (this.hp <= 0) {
                    return 0;
                }
                return this.hp;
            }
            set 
            {
                if (value >= this.maxHp) {
                    value = this.maxHp;
                }
                this.hp = value;
            }
        }

        //생성자 
        public Marine(float maxHp) {
            this.maxHp = maxHp;
            this.hp = this.maxHp;
        }
    }
public class SCV
    {
        //자동구현 속성정의 
        public float Hp {
            get; set;
        }
        public float MaxHp {
            get; set;
        }

        //생성자 
        public SCV(float maxHp) {
            this.MaxHp = maxHp;
            this.Hp = this.MaxHp;
        }
    }

 

 

Stack

public App() 
        {
            Console.WriteLine("App");

            //Stack<stirng> 변수 선언
            Stack<string> stack;

            //Stack<string> 인스턴스 생성 후 변수 할당
            stack = new Stack<string> ();

            //Stack에 값 추가 Push
            stack.Push("홍길동");
            stack.Push("임꺽정");

            //Stack의 요소 출력 (foreach)
            foreach (string name in stack) 
            {
                Console.WriteLine(name);
            }

            //Stack에서 값 꺼내오기 Pop
            string popName = stack.Pop();

            //Stack 의 요소 수 출력
            Console.WriteLine(stack.Count);

            Console.WriteLine("--------------peek--------------");
            //Stack의 요소 보기 Peek
            string peekName = stack.Peek();
            Console.WriteLine(peekName);
            Console.WriteLine(stack.Count);
        }

public App() 
        {
            Console.WriteLine("App");

            //Stack<Item> 변수 선언
            Stack<Item> items;

            //Stack<Item> 인스턴스 생성후 변수 할당 
            items = new Stack<Item>();

            //Item 객체 생성 
            Item item1 = new Item("이루실의 직검");
            Item item2 = new Item("벌어진 검");

            //Stack에 값 추가 Push
            items.Push(item1);
            items.Push(item2);

            //Stack의 요소 출력 (foreach)
            foreach (Item name in items) 
            {
                Console.WriteLine(name.GetName());
            }

            Console.WriteLine("--------- pop ----------");
            //Stack에서 값 꺼내오기  Pop (출력 : 아이템의 이름)
            Item popName = items.Pop();

            //Stack의 요소의 수 출력 
            Console.WriteLine(items.Count);

            Console.WriteLine("--------- peek ----------");
            //Stack의 요소 보기 Peek (출력: 아이템 이름)
            Item peekName = items.Peek();
            Console.WriteLine(peekName.GetName());
            Console.WriteLine(items.Count);
        }
public class Item
    {
        public string name;
        public Item(string name) 
        {
            this.name = name;
        }
        public string GetName() 
        {
            return this.name;
        }
    }

 

 

 

Queue

먼저 집어넣은 데이터가 먼저 나오는 구조의 배열

public App() 
        {
            //Queue<string>변수 선언
            Queue<string> queue;
            
            //Queue객체 생성하고 변수에 할당
            queue = new Queue<string>();
            
            //EnQueue
            queue.Enqueue("허브맛 쿠키");
            queue.Enqueue("우유맛 쿠키");
            queue.Enqueue("감초맛 쿠키");
            queue.Enqueue("마들렌맛 쿠키");
            queue.Enqueue("에스프레소맛 쿠키");

            //요소 수 출력
            Console.WriteLine(queue.Count);

            //요소 출력
            foreach (string name in queue) 
            {
                Console.WriteLine(name);
            }
            Console.WriteLine("***** Dequeue *****");
            //Dequeue
            string dequeueName = queue.Dequeue();
            Console.WriteLine(dequeueName);

            //요소 수 출력
            Console.WriteLine(queue.Count);

            Console.WriteLine("***** Peek *****");
            //보기
            string peekName = queue.Peek();
            Console.WriteLine(peekName);

            //요소 수 출력
            Console.WriteLine(queue.Count);
        }
    }

public App() 
        {
            Console.WriteLine("App");

            //Queue<Unit> 변수 선언
            Queue<Unit> Qcookies;

            //Queue 객체 생성하고 변수에 할당 
            Qcookies = new Queue<Unit>();

            //Unit객체 생성 
            Unit cookie1 = new Unit("아몬드맛 쿠키");
            Unit cookie2 = new Unit("우유맛 쿠키");
            Unit cookie3 = new Unit("허브맛 쿠키");
            Unit cookie4 = new Unit("스파클링맛 쿠키");

            //Enqueue 
            Qcookies.Enqueue(cookie1);
            Qcookies.Enqueue(cookie2);
            Qcookies.Enqueue(cookie3);
            Qcookies.Enqueue(cookie4);

            //요소 수 출력
            Console.WriteLine(Qcookies.Count);

            //요소 출력 (유닛의 이름)
            foreach (Unit name in Qcookies) 
            {
                Console.WriteLine(name.GetName());
            }

            Console.WriteLine("***** Dequeue *****");

            //Dequeue
            Unit dequeueName = Qcookies.Dequeue();
            Console.WriteLine(dequeueName.GetName());

            //요소 수 출력 
            Console.WriteLine(Qcookies.Count);


            Console.WriteLine("***** Peek *****");
            //보기 (유닛의 이름)
            Unit peekName = Qcookies.Peek();

            //요소 수 출력
            Console.WriteLine(Qcookies.Count);
        }
public class Unit
    {
        public string name;
        public Unit() 
        { }
        public Unit(string name)
        {
            this.name = name;
        }
        public string GetName() 
        {
            return this.name;
        }
    }

 

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

0318 다차원 배열 ★  (0) 2021.03.18
0318 is, as 연산자, IEquatable<T> 인터페이스  (0) 2021.03.18
0317 Abstract  (0) 2021.03.17
0317 인터페이스/Virtual  (0) 2021.03.17
0317 배열 복습★★★★  (0) 2021.03.17