C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[23438] Re:추상 밥솥 만들기에 대해...(저의 소견)
김덕용 [fastfeel] 843 읽음    2002-12-28 13:05
^^ 내용이 무지 잼있네요^^
저도 배우고 싶어여 밥솥만드는거요^^

우선 저의 소견은 이러합니다.

enum 밥종류
{
    죽밥,
    꼬두밥,
    보통밥
};

struct 밥짓기파라미터
{
    int 가열시간;
    float 쌀용량;
    float 물용량;
    //기타 각종 파라미터^^
}

//밥솥 인터페이스(추상클래스)-------------------------------------
class 밥솥
{
public:
    //true 밥짓기 성공 false 실패
    virtual bool 밥짓기(밥종류 밥=죽밥,밥짓기파라미터* 파라미터=NULL) = 0;//순수가상함수
}

//구형 밥솥-------------------------------------------------------

//인터페이스
class 구형밥솥 : public 밥솥
{
protected:
    void Make죽밥(float 쌀용량, float 물용량, int 가열시간...각종 조건 파라미터들...);
    void Make꼬두밥(float 쌀용량, float 물용량, int 가열시간...각종 조건 파라미터들...);
    void Make보통밥(float 쌀용량, float 물용량, int 가열시간...각종 조건 파라미터들...);
public:
    bool 밥짓기(밥종류 밥=죽밥,밥짓기파라미터* 파라미터=NULL);
}
//구현
bool 구형밥솥::밥짓기(밥종류 밥,밥짓기파라미터* 파라미터)
{
    //1.파라미터값검증 ^^ 제대로된 값들인지 확인
    if(파라미터 == NULL) return false;//반드시 파리미터가 들어와야 한다.
   
    //2.밥 종류에 따라 밥을 짓는다.^^
    switch(밥)
    {
        죽밥:Make죽밥(파라미터->쌀용량,파라미터->물용량,파라미터->가열시간,..);
             return true;
             break;
        꼬두밥:Make꼬두밥(파라미터->쌀용량,파라미터->물용량,파라미터->가열시간,..);
             return true;
             break;
        보통밥:Make보통밥(파라미터->쌀용량,파라미터->물용량,파라미터->가열시간,..);
             return true;
             break;
    }
    return false;
}

//일반형밥솥-------------------------------------------------------

//인터페이스
class 일반형밥솥 : public 밥솥
{
protected:
    void Make죽밥(int 가열시간);
    void Make꼬두밥(int 가열시간);
    void Make보통밥(int 가열시간);
public:
    bool 밥짓기(밥종류 밥=죽밥,밥짓기파라미터* 파라미터=NULL);
}
//구현
bool 일반형밥솥::밥짓기(밥종류 밥,밥짓기파라미터* 파라미터)
{
    //1.파라미터값검증 ^^ 제대로된 값들인지 확인
    if(파라미터 == NULL) return false;//반드시 파리미터가 들어와야 한다.
   
    //2.밥 종류에 따라 밥을 짓는다.^^
    switch(밥)
    {
        죽밥:Make죽밥(파라미터->가열시간);
             return true;
             break;
        꼬두밥:Make꼬두밥(파라미터->가열시간);
             return true;
             break;
        보통밥:Make보통밥(파라미터->가열시간);
             return true;
             break;
    }
    return false;
}

//최신형밥솥-------------------------------------------------------

//인터페이스
class 일반형밥솥 : public 밥솥
{
protected:
    void Make죽밥();
    void Make꼬두밥();
    void Make보통밥();
public:
    bool 밥짓기(밥종류 밥=죽밥,밥짓기파라미터* 파라미터=NULL);
}
//구현
bool 최신형밥솥::밥짓기(밥종류 밥,밥짓기파라미터* 파라미터)
{
    //1.파라미터값검증 ^^ 최신형은 파라미터가 필요없다
   
    //2.밥 종류에 따라 밥을 짓는다.^^
    switch(밥)
    {
        죽밥:Make죽밥();
             return true;
             break;
        꼬두밥:Make꼬두밥();
             return true;
             break;
        보통밥:Make보통밥();
             return true;
             break;
    }
    return false;
}

---------------------------이상 ----------------------------------
위의 설계를 이용하여 밥솥 만드는예^^
// 아래와 같은 가정하에^^
enum 밥솥종류
{
    구형,
    일반,
    신형
}

밥솥종류 Get밥솥종류();//밥솥의 종류를 알려주는 함수가 밥솥에 존재한다.

//여기부터 예제임당^^
void main()
{
    밥솥* p밥솥=NULL;
    밥짓기파라미터 파라미터;
   
    cout<<"어떤 밥을 원하시오?"<<endl<<"0 죽밥"<<endl<<"1 꼬두밥"<<endl<<"1 보통밥"<<endl;
    int 짓고싶은밥=0;
    cin>>짓고싶은밥;

    switch(Get밥솥종류())
    {
    case 구형: 
        //파라미터 값을 채운다. - 함수로 따로 빼내어도 좋습니다.
        cout<<"물용량?";
        cin>>파라미터.물용량;
        cout<<"쌀용량?";
        cin>>파라미터.쌀용량;
        cout<<"가열시간?";
        cin>>파라미터.가열시간;
       
        p밥솥 = new 구형밥솥;
        break;   
    case 일반: 
        //파라미터 값을 채운다. - 함수로 따로 빼내어도 좋습니다.
        cout<<"가열시간?";
        cin>>파라미터.가열시간;

        p밥솥 = new 일반형밥솥;
        break;
    case 신형:
        //신형은 파라미터 값을 채울필요가 없다.
        p밥솥 = new 신형밥솥;
        break;
    }

    if(p밥솥 != NULL)
        p밥솥->밥짓기(짓고싶은밥,&파라미터);
}


------ 그러면 여기서 좀더 발전^^된 생각을 하자면
Make죽밥(....각종파라미터) 이 부분을
Make죽밥(밥짓기파라미터* 파라미터); 이런식으로 바꿀수도 있겠죠^^

헤헷, 글이 생각보다 길어졌네요^^ 지송..
하여간 제 생각은 이러합니다.^^
다른님들의 의견기다리겠습니다.














+ -

관련 글 리스트
23437 추상 밥솥 만들기에 대해... EmptySpear 898 2002/12/28
31469     Re:추상 밥솥 만들기에 대해... 국진(Ghost) 763 2002/12/30
31468     Re:추상 밥솥 만들기에 대해... 국진(Ghost) 782 2002/12/30
31467     Re:추상 밥솥 만들기에 대해... 국진(Ghost) 759 2002/12/30
31466     Re:추상 밥솥 만들기에 대해... 국진(Ghost) 795 2002/12/30
23458     Re:추상 밥솥 만들기에 대해... 김성규 828 2002/12/30
23460         Re:Re:추상 밥솥 만들기에 대해... EmptySpear 811 2002/12/30
23438     Re:추상 밥솥 만들기에 대해...(저의 소견) 김덕용 843 2002/12/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.