C++/디딤돌 C++

[C++ 소스] 구성 관계(Composition Relation), 사람과 눈

언제나휴일 2016. 12. 18. 22:20
반응형

[C++ 소스] 구성 관계(Composition Relation), 사람과 눈


Eye.cpp

Eye.h

Man.cpp

Man.h

Program.cpp


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





//Eye.h

#pragma once

#include <iostream>

#include <string>

using namespace std;

 

class Eye

{   

    bool isopened;

    bool left;

public:

    Eye(bool left);

    void Close();

    void Open();

    void See();

    bool IsOpened()const;   

};


//Eye.cpp

#include "Eye.h"

 

Eye::Eye(bool left)

{   

    this->left = left;

    isopened = false;

}

 

void Eye::Close()

{

    if(isopened)

    {

        if(left)

        {

            cout<<"왼쪽 눈을 감다."<<endl;

        }

        else

        {

            cout<<"오른쪽 눈을 감다."<<endl;

        }

    }

}

 

void Eye::Open()

{

    if(isopened==false)

    {

        if(left)

        {

            cout<<"왼쪽 눈을 뜨다."<<endl;

        }

        else

        {

            cout<<"오른쪽 눈을 뜨다."<<endl;

        }

        isopened = true;       

    }

}

 

void Eye::See()

{

    Open();

    if(left)

    {

        cout<<"왼쪽 눈으로 보다."<<endl;

    }

    else

    {

        cout<<"오른쪽 눈으로 보다."<<endl;

    }

}

 

bool Eye::IsOpened()const

{

    return isopened;

}


//Man.h

#pragma once

#include "Eye.h"

class Man

{

    Eye *eyes[2];

public:

    Man(void);

    ~Man(void);

    void Sleep();

    void Walk();

    void Wink();

};


//Man.cpp

#include "Man.h"

 

Man::Man(void)

{

    eyes[0] =new Eye(true);

    eyes[1] = new Eye(false);

}

Man::~Man(void)

{

    delete eyes[0];

    delete eyes[1];

}

void Man::Sleep()

{

    cout<<"=== Sleep ==="<<endl;

    eyes[0]->Close();

    eyes[1]->Close();

}

void Man::Walk()

{

    cout<<"=== Walk ==="<<endl;

    eyes[0]->Open();

    eyes[1]->Open();

    eyes[0]->See();

    eyes[1]->See();

    cout<<"앞으로 가다."<<endl;

}

 

void Man::Wink()

{

    cout<<"=== Wink ==="<<endl;

    eyes[0]->Open();

    eyes[1]->Close();

}


//Program.cpp

#include "Man.h"

int main()

{

    Man *man = new Man();   

    man->Walk();

    man->Wink();

    man->Sleep();

    delete man;

    return 0;

}


실행 결과

=== Walk ===

왼쪽 눈을 뜨다.

오른쪽 눈을 뜨다.

왼쪽 눈으로 보다.

오른쪽 눈으로 보다.

앞으로 가다.

=== Wink ===

오른쪽 눈을 감다.

=== Sleep ===

왼쪽 눈을 감다.

오른쪽 눈을 감다.



본문

[디딤돌 C++] 63. 구성(COMPOSITION) 관계




반응형