두 개의 Circle 클래스를 기반으로 한 Ring 클래스 생성


정보 은닉과 캡슐화에 관련되어 있다.


#include <iostream>

using namespace std;


class Circle1 //내측 원

{

private :

int xpos;

int ypos;

int radius1;


public :

void Init(int x, int y, int r) //정보 은닉

{

xpos = x;

ypos = y;

radius1 = r;

}


void ShowInInfo() const

{

cout << "반지름: " << radius1 << endl << '[' << xpos << ',' << ypos << ']' <<endl;

}

};


class Circle2 //외측 원

{

private :

int xpos;

int ypos;

int radius2;


public :

void Init(int x, int y, int r)

{

xpos = x;

ypos = y;

radius2 = r;

}


void ShowOutInfo() const

{

cout << "반지름: " << radius2 << endl << '[' << xpos << ',' << ypos << ']' <<endl;

}

};


class Ring

{

private :

Circle1 Inner;

Circle2 Outter;

public :

void Init(int x1, int y1, int z1, int x2, int y2, int z2)

{

Inner.Init(x1,y1,z1); //private 멤버 변수에 직접 접근은 불가능하지만 이렇게는 가능하다.

Outter.Init(x2,y2,z2);

}

void ShowRingInfo() const //나름대로 캡슐화

{

cout << "내측 원의 정보..." << endl;

Inner.ShowInInfo();

cout << "외측 원의 정보..." << endl;;

Outter.ShowOutInfo();

}

};


int main(void)

{

Ring ring;

ring.Init(1,1,5,2,2,8);

ring.ShowRingInfo();

return 0;

} 


'프로그래밍 > C++' 카테고리의 다른 글

생성자 (Constructor)  (0) 2014.02.06
복사 생성자  (0) 2013.09.06
explicit 예제  (0) 2013.09.06
난수 사용하기  (0) 2013.07.25
참조자와 함수의 호출관계  (0) 2013.07.24
new & delete 기본 사용법  (0) 2013.07.23
포인터와 참조자  (0) 2013.07.23

+ Recent posts