|
안녕하세요
저는 전기 밥솥을 만듭니다.
저희 회사엔 3가지 모델의 밥솥이 있죠
구형, 일반형, 최신형
그리고 각 모델마다 동일한 3가지 기능이 있습니다
죽밥, 꼬두밥, 보통밥 만들기
그런데 죽밥 하나를 만들더라도 구형모델일 경우
쌀, 물의 용량 및 가열시간, 등등의 조건을 입력해야 합니다
반면 최신형은 인공지능 타입이라 죽밥 만들기 버튼하나로
한국인 입맛에 맞는 평균적인 죽밥을 만들 수 있죠
중간 기능인 일반형은 구형보다는 작은 조건으로 3가지 기능을 수행하고요..
이걸 전산인들이 알기쉽게 class로 구현해 보겠습니다.
class 구형밥솥
{
public:
void Make죽밥(float 쌀용량, float 물용량, int 가열시간...각종 조건 파라미터들...);
void Make꼬두밥(float 쌀용량, float 물용량, int 가열시간...각종 조건 파라미터들...);
void Make보통밥(float 쌀용량, float 물용량, int 가열시간...각종 조건 파라미터들...);
};
class 일반형밥솥
{
public:
void Make죽밥(int 가열시간);
void Make꼬두밥(int 가열시간);
void Make보통밥(int 가열시간);
};
class 최신형밥솥
{
public:
void Make죽밥();
void Make꼬두밥();
void Make보통밥();
};
대충 위와 같이 되겠네요
그런데 이런 3가지 모델을 대변하는 추상층을 하나 만들어
일괄적으로 밥솥을 제어하는 인터페이스를 만들고 싶습니다
리팩토링하는거죠
class 추상밥솥
{
public:
virtual void Make죽밥();
virtual void Make꼬두밥();
virtual void Make보통밥();
};
위를 베이스클래스 삼아 3가지 모델을 상속받으면 쓸만한 밥솥 계층이 구성되겠건만
문제가 하나 있네요.
3가지 기능의 밥만드는 메쏘드는 이름은 동일한데
각기 모델(Sub Class)마다 다른 파라미터(인수)들은 어떻게
처리해야 할지 고작 밥솥 만드는 기술밖에 없는 저로서는 난감합니다
객체지향 밥솥 설계를 심도깊게 생각 하신분들의 조언을 부탁드립니다.
그럼......
|