이번 강의는 구성(Composition) 관계 실습입니다.
소재는 사람과 눈입니다. 구성 관계는 소유 개체를 생성할 때 내부 개체가 같이 만들어지는 특징을 갖고 있습니다.

클래스 다이어그램을 바탕으로 코드를 구현해 보세요. 주의할 점은 Man 생성자에서 Eye 개체를 생성해야 한다는 것입니다.
별다른 알고리즘을 갖고 있는 것이 아니어서 코드 설명은 생략할게요.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
using System; namespace 구성_관계_실습 { class Eye { double sight; bool opened; public bool Opened { get { return opened; } } public Eye(double sight) { this.sight = sight; } public void Open() { Console.WriteLine("앞이 보이네. 시력:{0}", sight); opened = true; } public void Close() { Console.WriteLine("앞이 컴컴"); opened = false; } public void See() { if(opened) { Console.WriteLine("앞이 잘 보여"); } else { Console.WriteLine("앞이 안 보여"); } } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
using System; namespace 구성_관계_실습 { class Man { Eye[] eyes = new Eye[2]; string name; public string Name { get { return name; } } public Man(string name) { this.name = name; eyes[0] = new Eye(2.0); eyes[1] = new Eye(2.0); } public void Walk() { if(eyes[0].Opened==false) { eyes[0].Open(); } if (eyes[1].Opened == false) { eyes[1].Open(); } Console.WriteLine("Go~"); } public void Sleep() { if (eyes[0].Opened) { eyes[0].Close(); } if (eyes[1].Opened) { eyes[1].Close(); } Console.WriteLine("쿨~쿨~"); } public override string ToString() { return name; } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
//http://ehpub.co.kr //실습으로 다지는 C# //구성 관계 실습 namespace 구성_관계_실습 { class Program { static void Main(string[] args) { Man man = new Man("홍길동"); man.Walk(); man.Sleep(); man.Walk(); } } } |