0317 Property 속성/Stack 클래스/Queue 큐
2021. 3. 17. 16:35ㆍC#/수업내용
전용 필드의 값을 읽거나 쓰거나 계산하는 맴버;
변수처럼 사용할 수 있지만 실제론 접근자라는 특수 메서드
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 |