728x90
반응형
Study about relational
관계 종류
- 수직 - 상속
- 수평
- 집합
수평적 관계
- class를 instance화 한다 이때 바깥에서 pointing하는걸 인터페이스라고 하고 대부분 method로 구현
- 서로 다른 두 클래스가 긴밀하게 붙어야 할 경우가 생긴다 (연예인과 매니저관계)
- 즉 서로 독립적이지만 응집적임이 필요할 경우 어떤건 public 어떤건 private protected로 규정한 접근제어를 한번에 무력화 시키는 방법이
friend 키워드다
friend로 선언 가능한 대상
- 함수
- 클래스
관계의 필요성 (자료구조 링크드리스트를 통한 예제)
class MyList {};
// friend MyList {};
class MyNode {};
class User : public MyNode {};
- MyList는 노드들을 연결 리스트로 묶어주는 역할이다. (관리체계)
- MyNode는 관리하고자 하는 대상
- 이때 MyList 와 MyNode는 서로 다른 클래스이나 자료구조를 이루는 핵심으로
friend를 통해 private로 막힌부분을 다 사용가능 이때 파생클래스는 사용 불가 - 즉 관리체계와 관리체계를 통해 관리하고자 하는 대상은 구별하자
- 콜렉션 클래스에 대해 조금더 생각하기
집합 관계
- Composition: 여럿이모여 다시 하나가됨
- Aggregation: 여럿이긴하나 단순한 모임의 성격
composition 예시
- 자동차클래스에 차체 바퀴 엔진 클래스로 나뉘어 자동차 클래스를 이루는데 차체 바퀴 엔진이 멤버 Data로 들어가는것
- 따라서 자동차가 소멸시 그 멤버들도 소멸되는 운명공동체
aggregation 예시
- 어떤 클래스에 멤버 *강의장 *강사
- 각각 강의장과 강사를 가르키는데 이때 어떤 클래스가 소멸해도 강의장과 강사는 상관없이 남음
728x90
반응형
'C++ 공부' 카테고리의 다른 글
exception (0) | 2021.08.22 |
---|---|
template (0) | 2021.08.20 |
inheritance 04 (0) | 2021.08.20 |
inheritance 03 (0) | 2021.08.20 |
inheritance 02 (0) | 2021.08.20 |