반응형
구성 관계 (Composition Relationship)
몬스터 클래스와 그의 멤버인 좌표 클래스로 비유했다.
Monster클래스의 멤버로 존재하는Position2D클래스 인스턴스location_(Monster.h참고)이
location_인스턴스는Monster클래스로 만들어진mon1인스턴스의Part-of라고 할 수 있다.mon1이 소멸하면 자동으로location_도 소멸한다.
main.cpp#include "Monster.h" int main() { using namespace std; Monster mon1("Sanson", Position2D(0, 0)); cout << mon1 << endl; { mon1.moveTo(Position2D(1, 1)); cout << mon1 << endl; } } /* stdout Sanson 0 0 Sanson 1 1 */Monster.h#pragma once #include "Position2D.h" class Monster { std::string name_; Position2D location_; public: Monster(const std::string name_in, const Position2D & pos_in) : name_{name_in}, location_{pos_in} {} void moveTo(const Position2D& pos_target) { location_.set(pos_target); } friend std::ostream& operator << (std::ostream& out, const Monster& monster) { out << monster.name_ << ' ' << monster.location_; return (out); } };Position2D.h#pragma once #include <iostream> class Position2D { int x_; int y_; public: Position2D(const int &x_in, const int &y_in) : x_(x_in), y_(y_in) {} void set(const Position2D& pos_target) { set(pos_target.x_, pos_target.y_); } void set(const int& x_target, const int& y_target) { x_ = x_target; y_ = y_target; } friend std::ostream& operator << (std::ostream& out, const Position2D& pos) { out << pos.x_ << ' ' << pos.y_; return (out); } };
반응형
'SW개발 > C++' 카테고리의 다른 글
| C++ 의존 관계 (Dependency) (0) | 2021.03.19 |
|---|---|
| C++ 연계, 제휴 관계 (Association) (0) | 2021.03.19 |
| C++ 객체들의 관계 (Object Relationship) (0) | 2021.03.19 |
| 따라하며 배우는 C++ 10장 (0) | 2021.03.19 |
| C++ initializer_list (0) | 2021.03.19 |