본문 바로가기
컴퓨터공학과/Programming

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

by 김세인트 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) 다형성

 

 

 



반응형
그리드형