[C++ 소스] 구성 관계(Composition Relation), 사람과 눈
//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) 관계
'C++ > 디딤돌 C++' 카테고리의 다른 글
[C++ 소스] 연관(ASSOCIATION) 관계, 의사와 약사 (0) | 2016.12.18 |
---|---|
[C++ 소스] 직접 연관(DIRECTED ASSOCIATION) 관계, 회사와 직원 (0) | 2016.12.18 |
[C++ 소스] 집합 관계(Aggregation Relation), 필통과 연필 (0) | 2016.12.18 |
[C++ 소스] 동적 배열(템플릿 클래스) (0) | 2016.12.17 |
[C++ 소스] 최대값 위치 찾기(전역 template 함수) (0) | 2016.12.17 |