제휴관계 Association
어느 한쪽이 주 반대쪽이 부가 되는 개념이 아닌 개념이다.
어느쪽이든 주,부가 될수 있다.
다른관계들보단 많이 사용하지 않는다.
서로가 서로를 사용한다. 용도이외에는 무관하다.
의사,환자
의사1이 환자1을 만난다.
환자1이 의사1를 만난다.
의사1이 환자2를 만난다.
환자2가 의사1을 만난다.
즉, 서로 기록은 하지만 터치하지 못한다.
또 양방향으로 기록하는게 아닌 단방향으로 기록할 수 있다.
#include <iostream>
#include <vector>
#include <string>
using namespace std;
class Doctor;
class Patient {
private:
string m_name;
vector<Doctor*> m_doc;
public:
Patient(string name)
:m_name(name) {
}
void addDoc(Doctor *new_doc)
{
m_doc.push_back(new_doc);
}
void meetDot();
friend class Doctor;
};
class Doctor {
private:
string m_name;
vector<Patient*> m_pat;
public:
Doctor(string name)
:m_name(name) {
}
void addPai(Patient *new_pai)
{
m_pat.push_back(new_pai);
}
void meetPai() {
for (auto & ele : m_pat) {
cout << m_name << " - >Meet Pat : " << ele->m_name << endl;
}
}
friend class Patient;
};
void Patient::meetDot() {
for (auto & ele : m_doc) {
cout << m_name << " - >Meet Doc : " << ele->m_name << endl;
}
}
int main()
{
Patient *p1 = new Patient("choi");
Patient *p2 = new Patient("lee");
Patient *p3 = new Patient("kim");
Doctor *d1 = new Doctor("D_kim");
Doctor *d2 = new Doctor("D_jung");
p1->addDoc(d1);
d1->addPai(p1);
p2->addDoc(d1);
d1->addPai(p2);
p1->meetDot();
p2->meetDot();
d1->meetPai();
delete p1;
delete p2;
delete p3;
delete d1;
delete d2;
return 0;
}
'개발 소발 > 개발 C++(기초)' 카테고리의 다른 글
c++ container classes 컨테이너클래스 (0) | 2019.08.28 |
---|---|
c++ 객체들의 관계, 의존관계 (0) | 2019.08.28 |
c++ 객체들의 관계, 집합관계 (0) | 2019.08.23 |
c++ 객체들의 관계,구성관계 (0) | 2019.08.23 |
c++ 이니셜라이져리스트 initalizer_list (0) | 2019.08.21 |