[C++] 누구나 쉽게, 리팩토링(클린코드)-④ 상속 (개념과 특징)
- 컴퓨터공학과/Programming
- 2020. 4. 13.
리팩토링
리팩토링은 내부의 코드를 개선하는 하나의 방법론이자 솔루션을 뜻합니다.
리팩토링을 한마디로 말하자면, 나쁜 냄새가 나는 코드를 최적화하는 것입니다. 여기서 주의할 점은 런타임 시의 최적화가 아니라 프로그래밍을 할 때 버그 없는 프로그램을 만드는 것입니다. 외부 인터페이스는 그대로 두고 내부의 코드만을 개선하여 재사용과 가독성을 높이는 데 목적이 있습니다.
[ 리팩토링 시리즈 ]
[C++] 누구나 쉽게, 리팩토링(클린코드)-① 순수가상함수/추상클래스
[C++] 누구나 쉽게, 리팩토링(클린코드)-② 인터페이스
[C++] 누구나 쉽게, 리팩토링(클린코드)-③ 캐스팅
이번시간에는 리팩토링을 진행하면서 상속개념에 대해 살펴보겠습니다.
4. 상속
스타크래프트의 마린과 고스트를 예로 설명하겠습니다.
class Marine{}; // 마린 클래스
class Ghost{}; // 고스트 클래스
문제!
마린(Marine) 부대와 고스트(Ghost) 부대를 동시에 움직이게 합시다. 어떻게 하나로 묶어서 보낼까요? 드래그로 몽땅 잡아서???
g = m; 으로?? 이는 서로 다른 폼이기 때문에 불가능합니다.
문제 해결
C언어에서는 모든 포인터 묶기 위해 void* 쓰지요! void* grp1[2] = { &g, &m }; 이런 식으로 말이죠.
void main()
{
Marine m;
Ghost g;
void* grp1[2] = { &g, &m }; // 마린과 고스트 포인터를 묶었음!
}
여기서 상속의 개념이 나오게 됩니다.
♥ 다형적 객체를 하나의 타입으로 처리하기 위해 부모 클래스를 도입하게 됩니다.
♥ 상속의 특징은 1) 재사용성 2) 유지보수성 3) 다형성!입니다.
모든 유닛을 한꺼번에 묶어 잡으려면 부모클래스! 가 있으면 되겠지요! 공통의 부모를 만들면 됩니다!
class Unit {};
부모클래스 Unit을 만들고, : public Unit 으로 상속을 받습니다.
정리
다형적 객체를 하나의 타입으로 처리하기 위해 부모클래스 도입!
상속의 특징 1) 재사용성 2) 유지보수성 3) 다형성
'컴퓨터공학과 > Programming' 카테고리의 다른 글
[C++] 누구나 쉽게, 리팩토링(클린코드)-⑤ NULL체크를 위한 널 객체 (0) | 2020.04.18 |
---|---|
[C++] 객체지향 개념(객체/클래스/생성자) 및 헤더파일 분리 요약정리 (0) | 2020.04.13 |
[C++] 누구나 쉽게, 리팩토링(클린코드)-③ 캐스팅/형변환 종류 및 방법 (0) | 2020.04.08 |
[C++] 누구나 쉽게, 리팩토링(클린코드)-② 인터페이스 (1) | 2020.04.07 |
[C++] 함수에 관한 모든것(함수 특징/Call by value/call by reference/지역변수/전역변수/함수 오버로딩) (0) | 2020.04.05 |