본문 바로가기
C++ 공부

relational

by Dev_Hugh 2021. 8. 20.
728x90
반응형

Study about relational

관계 종류

  1. 수직 - 상속
  2. 수평
  3. 집합

수평적 관계

  • 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