[실습으로 다지는 C#] 구성(Composition) 관계 실습 – 사람, 눈

 

 이번 강의는 구성(Composition) 관계 실습입니다.

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

구성 관계 클래스 다이어그램

 클래스 다이어그램을 바탕으로 코드를 구현해 보세요. 주의할 점은 Man 생성자에서 Eye 개체를 생성해야 한다는 것입니다.

 별다른 알고리즘을 갖고 있는 것이 아니어서 코드 설명은 생략할게요.

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("앞이 안 보여");
            }
        }
    }
}

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;
        }

    }
}
//https://ehpub.co.kr
//실습으로 다지는 C#
//구성 관계 실습

namespace 구성_관계_실습
{
    class Program
    {
        static void Main(string[] args)
        {
            Man man = new Man("홍길동");
            man.Walk();
            man.Sleep();
            man.Walk();
        }
    }
}