항목 40. 레이어링을 통해 가지고 있는 것과 사용하여 구현된것을 모델링하도록 한다. 이유 1. 클래스 디자인의 일관성과 편의성을 제공해주기 때문이다. 해결방법 1. is a 관계 계승과 has a 관계(is implemented in terms of 관계)의 차이점을 인지해라. 개인적인 생각 1. public 상속을 통해서도 구현은 가능하다. 하지만 일관성이 떨어진다. 이 일관성이 떨어지는 시점에서, 클래스 디자인은 무너지게 된다. 2008/07/18 12:15:47 추가 설명, 일관성이랑 is-a 관계의 일관성을 뜻한다. 2. 그래서 상속관계에 대해서는 충분히 사용법에 따라 분류해야 한다. 예) isa 와 hasa 의 차이점을 이해하여, 3. 사람은 한 손으로 다른것을 들고 있을땐, 그 손은 다른것을..
상속 검색 결과
항목 36. 인터페이스 계승과 구현의 차이점을 이해해라 2008/07/09 14:14 추가 이 이야기의 전제 조건은 어떤 클래스가 부모클래스가 될때, 그 부모클래스의 멤버 함수 선언함에 있어 주의해야 할점을 설명하는 것이다. 인터페이스 계승이란? 1. 메소드의 선언(int class::hehehe(int a); 이것을 계승한다는 뜻으로, 일종의 명령어(이런 이런 함수의 선언만 말한다)만 계승하는 것 이다. 2008/07/09 14:14 추가 2판이라 그런지 단어가 3판하고 좀 차이를 본다. 인터페이스 계승이란 함수의 정의만 계승하는것을 뜻한다. 여기서의 구현이란? 이 메소드들의 내부 동작 즉 메소드 정의(이런 이런 함수의 내부 동작을 말한다.)를 말한다. 이유 1. 각각의 차이점을 모르면 효율적인 설계를..
이유 1. public 계승이 isa를 의미하기 때문이다. 해결 방법 아래 예를 통해 어떤 뜻인지 이해 해라. class Person { .... }; class Student : public Person { .... }; is a 관계이므로 1. 학생은 사람이다. (참) 2. 사람은 학생이다. (거짓) 이게 왜 중요하냐면 void dance(const Person& p); // 사람은 춤을 출수 있다. void study(const Student& s); // 학생만 공부한다. Person p; // 사람 등장 Student s; // 학생 등장 dance(p); // 참 dance(s); // 참, 왜냐하면 학생은 사람이니까! study(p); // 거짓, 사람은 학생이 아니니까, 즉 학생만 공부한다..
최근댓글