티스토리 뷰
개요
클래스들을 작성할 때 맺을 수 있는 관계에 대해 알아보자.
이는 기법은 아니고 관계에 대한 용어를 배우는 것으로 모른다고 하더라도 코드를 작성할 수는 있지만 용어를 많이 알아두면 다른 개발자들과 소통하기 좋다.
IS A
클래스를 상속할 때 맺어지는 관계이다.
일반적인 상속 구조에서 부모클래스와 자식클래스의 관계를 is a 관계라고 한다. is a 관계인 클래스는 자식 클래스가 가지고 있는 멤버를 무조건 부모 클래스가 가지고 있기 때문에 묵시적인 업캐스팅이 가능하다.
class Parent |
Child 클래스가 Person을 상속받았기 때문에 두 클래스 모두 a 변수를 가지고 있는 것이고, 따라서 업캐스팅이 가능하다.
반대로 Person은 b라는 멤버를 가지고있지 않기 때문에 다운캐스팅은 불가능하다.
HAS A
어떤 한 클래스가 자신의 멤버로 다른 클래스의 인스턴스를 가지고 있거나, 다른 클래스를 내부에서 작성할 경우 has a 관계가 성립한다. has a 관계를 맺는 두 클래스는 상속관계가 아니기 때문에 묵시적 캐스팅이 불가능하다.
class Person |
위처럼 Person클래스에서 Face 클래스를 새로 작성하거나 Cloth클래스의 인스턴스를 가지고 있을 경우 Person-Face, Person-Cloth 사이의 관계를 has a 관계라고 한다.
마치며
앞으로도 용어에 대해서 공부를 많이 해야할것 같다. 내가 아는 것을 설명하거나 남이 하는 설명을 잘 이해하기 위해서는 기본적으로 사용하는 용어들을 많이 익혀둘 필요가 있다.
'Programming > C++' 카테고리의 다른 글
C++ - 스마트 포인터(smart pointer) (2) | 2019.03.29 |
---|---|
C++ - 타입 캐스팅 (0) | 2019.03.04 |
C++ - 메모리 해제 (0) | 2017.12.30 |
C++ - 메모리 생성 (0) | 2017.12.30 |
c++11 - std::shared_ptr로 thread safe callback 구현하기 (0) | 2017.11.19 |
- Total
- Today
- Yesterday
- 자료구조
- machine learing
- Cocos2d-x
- Java
- C++
- 데이터베이스
- Git
- SHADER
- mongoDB
- 운영체제
- OS
- DesignPattern
- C
- 드라마
- winsock
- ue4
- JSP
- 알고리즘
- rxswift
- game
- C/C++
- scala
- SOCKET
- Spring
- database
- 수학
- 국내여행
- ios
- SwiftUI
- swift
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |