[C++] 누구나 쉽게, 리팩토링(클린코드)-④ 상속 (개념과 특징)

리팩토링

 

리팩토링은 내부의 코드를 개선하는 하나의 방법론이자 솔루션을 뜻합니다. 

 

리팩토링을 한마디로 말하자면, 나쁜 냄새가 나는 코드를 최적화하는 것입니다. 여기서 주의할 점은 런타임 시의 최적화가 아니라 프로그래밍을 할 때 버그 없는 프로그램을 만드는 것입니다외부 인터페이스는 그대로 두고 내부의 코드만을 개선하여 재사용과 가독성을 높이는 데 목적이 있습니다.

 

 

[ 리팩토링 시리즈 ]

[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) 다형성

 

 

 



반응형
그리드형

댓글

❤️김세인트가 사랑으로 키웁니다❤️