왜 씀? 타입 객체 패턴은 다양한 '종류'를 정의할 때 컴파일이나 코드 변경 없이 새로운 타입을 추가하거나 변경할 수 있도록 해준다. 판타지 배경의 RPG 게임을 만든다고 하자. 이 게임의 몬스터는 여러 종족으로 나뉜다. 종족에 따라 최대 체력, 공격 속성 등이 달라진다. OOP 방식으로 구현 고블린, 오크, 용 등은 모두 몬스터의 일종이다. 따라서 몬스터라는 상위 클래스를 만드는 게 자연스럽다. (IS-A 관계) class Monster { public: virtual ~Monster(){} //공격 문구를 받아온다. virtual std::string attack() = 0; }; 하위 몬스터는 다음과 같이 구현될 것이다. class Goblin : public Monster { public: std..