• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

멤버의 존재를 클래스가 관리하지 않는다는 의미

19.10.28 23:38 작성 조회수 112

3

수고 많으십니다. 교수님

항상 친절하게 답변해주셔서 감사합니다. 먼저 아시고 계시겠지만 표지에 Aggregation인데 Association으로 되어 있네요. 오타로 보입니다^^

10.1도 다시 돌아가서 듣고 왔는데 멤버의 존재를 클래스가 관리하지 않는다는 부분을 제가 이해한 것이 맞는지 모르겠네요. 제가 이해한 바와 질문을 아래와 같습니다. 

- Lecture 클래스의 인스턴스가 소멸하게되면 그 인스턴스의 멤버변수인 Teacher*, Student*는 소멸하게 된다.

- 주소값 및 주소값을 저장하고 있는 벡터의 소멸이기 때문에 포인터가 가리키는 값은 그대로 유지가 된다. 유지가 된다고 하더라도 멤버변수는 소멸되기 떄문에 해당 인스턴스를 통해서는 포인터가 가리키는 값에 접근이 불가하다.

- 만약,  다른 Lecture의 인스턴스에서 소멸했던 인스턴스와 동일한 주소값을 멤버변수에 저장해두었던 경우에만 한정적으로 기존에 사용하던 정보에 접근이 가능하다. 

 질문) 바로 위의 문장과 같은 점 때문에, Aggregation을 '다른 클래스에도 속할 수 있다' ' 멤버의 존재를 클래스가 관리하지 않는다' 라고 표현하는 것인가요? 만약 그렇다면 클래스가 아니라 '다른 인스턴스에도 속할 수 있다' '멤버의 존재를 인스턴스가 관리?'가 맞지 않나요?

답변 2

·

답변을 작성해보세요.

2

안녕하세요? 표지 바뀐 것은 모르고 있었습니다. 알려주셔서 감사합니다. 이후에 보실 학생분들을 위해서 얼른 수정해놓도록 하겠습니다.

'꽉 쥐고 있다'라는 표현이 더 애매하게 느껴지셨나보네요. 이부분도 조금 더 구체적으로 자막을 달아놓겠습니다. 기술적인 내용은 이해하신 대로 인스턴스들을 재사용 혹은 공유하고 싶다는 의도가 맞습니다.

질문)부분에서 '클래스'와 '인스턴스'의 혼용에 대해서 문의하셨는데 '클래스'에도 속할 수 있다는 표현은 '이 클래스의 인스턴스들 중 하나'에 속할 수 있다라고 말하는 것이 더 정확하겠지요. 아무래도 말을 줄여서 하다 보니 모호한 표현이 된 것 같습니다. 이부분도 자막으로 보충해야겠네요. 참고로 (특정 언어에 대한 강의가 아니라) 일반적인 객체지향 강의에서는 클래스나 인스턴스 대신 'Object'라는 보다 일반적인 용어를 사용하는 경우도 있습니다. 원 교재의 글도 참고하시면 도움이 될 것 같습니다. 아래 링크 참고하세요.

https://www.learncpp.com/cpp-tutorial/103-aggregation/

In a composition relationship, the whole object is responsible for the existence of the part.

수정할 부분 알려주셔서 감사합니다. 앞으로도 잘 부탁드려요.

1

tndyd8282님의 프로필

tndyd8282

질문자

2019.11.08

안녕하세요 교수님. 예제 코드를 복습하던 중 하나 더 의문이 들어서 질문 드립니다.

Composition 과 Aggregation의 차이는 멤버클래스의 자료형이 포인터냐 아니냐로 구분해도 무방한가요?