정보 은닉의 이해
콘택 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 |
댓글