본문 바로가기
2018 모각코/진도

7 / 25 일 모각코 제 4회 결과

by 데구르르르 2018. 7. 25.


정보 은닉의 이해





콘택 600 에 숨겨져 있는 캡슐화와 캡슐화의 중요성


#include <iostream>


using namespace std;


class SinivelCap{ // 콧물 처치용 캡슐

public:

    void Take()const {

        cout << "콧물이 싹 납니다" <<endl;

    }

};


class SneezeCap{ // 재채기 처치용 캡슐

public:

    void Take()const{

        cout << "재채기가 멎습니다" <<endl;

    }

};


class SnuffleCap{ // 코막힘 처치용 캡슐

public:

    void Take()const{

        cout <<"코가 뻥 뚤립니다" <<endl;

    }

};


class ColdPatient{

public:

    void TakeSinivelCap(const SinivelCap &cap )const{

        cap.Take();

    }

    void TakeSneezeCap(const SneezeCap &cap )const{

        cap.Take();

    }

    void TakeSnuffleCap (const SnuffleCap &cap )const{

        cap.Take();

    }

};


int main(void){

    SinivelCap scap;

    SneezeCap zcap;

    SnuffleCap ncap;

    

    ColdPatient suffer;

    

    suffer.TakeSinivelCap(scap);

    suffer.TakeSneezeCap(zcap);

    suffer.TakeSnuffleCap(ncap);

    return 0;

}



콧물이 납니다

재채기가 멎습니다

코가 뚤립니다

Program ended with exit code: 0



콘택 600의 구현을 통한 캡슐화의 정확한 이해


#include <iostream>


using namespace std;


class SinivelCap{ // 콧물 처치용 캡슐

public:

    void Take()const {

        cout << "콧물이 싹 납니다" <<endl;

    }

};


class SneezeCap{ // 재채기 처치용 캡슐

public:

    void Take()const{

        cout << "재채기가 멎습니다" <<endl;

    }

};


class SnuffleCap{ // 코막힘 처치용 캡슐

public:

    void Take()const{

        cout <<"코가 뻥 뚤립니다" <<endl;

    }

};


class CONTAC600{

    

private:

    SinivelCap sin;

    SneezeCap sne;

    SnuffleCap snu;

    

public:

    void Take()const{

        sin.Take();

        sne.Take();

        snu.Take();

    }

};


class ColdPatient{

public:

    void TakeCONTAC600(const CONTAC600 &cap )const{

        cap.Take();

    }

};


int main(void){


    CONTAC600 cap;

    ColdPatient sufferer;

    

    sufferer.TakeCONTAC600(cap);

    return 0;

}



콧물이 납니다

재채기가 멎습니다

코가 뚤립니다

Program ended with exit code: 0



생성자의 이해


#include <iostream>


using namespace std;


class SimpleClass{

private:

    int num1;

    int num2;

public:

    SimpleClass(){

        num1=0;

        num2=0;

    }

    SimpleClass(int n){

        num1=n;

        num2=0;

    }

    SimpleClass(int n1,int n2){

        num1=n1;

        num2=n2;

    }

    void ShowData()const{

        cout<< num1 << ' ' << num2 <<endl;

    }

};


int main(void){

    SimpleClass sc1;

    sc1.ShowData();

    SimpleClass sc2(100);

    sc2.ShowData();

    SimpleClass sc3(100,200);

    sc3.ShowData();

    return 0;

}



0 0

100 0

100 200

Program ended with exit code: 0


#include <iostream>


using namespace std;


class SimpleClass{

private:

    int num1;

    int num2;

public:

    SimpleClass(int n1=0,int n2=0){

        num1=n1;

        num2=n2;

    }

    void ShowData()const{

        cout<< num1 << ' ' << num2 <<endl;

    }

};


int main(void){

    SimpleClass sc1(); // 함수의 원형선언

    SimpleClass mysc = sc1();

    mysc.ShowData();

    return 0;

}

SimpleClass sc1(){

    SimpleClass sc(20,30);

    return sc;

}



20 30

Program ended with exit code: 0



이전 예제에 대한 생성자의 활용


#include <iostream>


using namespace std;


class FruitSeller{

private:

    int APPLE_PRICE;

    int numOfApples;

    int myMoney;

    

public:

    FruitSeller(int price, int num, int money){

        APPLE_PRICE = price;

        numOfApples = num;

        myMoney = money;

    }

    int SaleApples(int money){

        int num = money/APPLE_PRICE;

        numOfApples-=num;

        myMoney+=money;

        return num;

    }

    void showSalesResult()const{

        cout << "남은사과: " << numOfApples <<endl;

        cout << "판매수익: " << myMoney <<endl<<endl;

    }

};


class FruitBuyer{

    int myMoney;

    int numOfApples;

    

public:

    FruitBuyer(int money){

        myMoney = money;

        numOfApples =0;

    }

    void BuyApples(FruitSeller &seller, int money){

        numOfApples+=seller.SaleApples(money);

        myMoney -= money;

    }

    void ShowBuyResult()const{

        cout << "현재 잔액: " << myMoney <<endl;

        cout << "사과개수: " << numOfApples <<endl;

    }

};


int main(void){

    FruitSeller seller(1000, 20, 0);

    FruitBuyer buyer(5000);

    buyer.BuyApples(seller, 2000);

    

    cout << "과일 판매자의 현황" <<endl;

    seller.showSalesResult();

    cout << "과일 구매자의 현황 " <<endl;

    buyer.ShowBuyResult();

    return 0;

}



과일 판매자의 현황

남은사과: 18

판매수익: 2000


과일 구매자의 현황 

현재 잔액: 3000

사과개수: 2

Program ended with exit code: 0



예정된 목표량 달성 완료

4-03 까지 완료

'2018 모각코 > 진도' 카테고리의 다른 글

7 / 31 일 모각코 제 5회 결과  (0) 2018.07.31
7 / 31 모각코 제 5회 목표  (0) 2018.07.31
7 / 25 모각코 제 4회 목표  (0) 2018.07.25
7 /24 모각코 제 3회 결과  (0) 2018.07.24
7 / 24 모각코 제 3회 목표  (0) 2018.07.24

댓글