[C++] 클래스와 객체(2)
REF : 윤성우의 열혈 C++
객체지향 프로그래밍의 이해
- 객체 : object
- 사물 또는 대상
- 객체지향 프로그래밍 :
- 현실에 존재하는 사물, 대상, 행동을 있는 그대로 실체화시키는 형태의 프로그래밍.
객체를 이루는 데이터와 기능
- 과일 장수의 예시
- 과일을 판다.
- 사과 20개, 오렌지 10개를 보유한다.
- 현재까지의 수익은 50000이다.
- 1은 객체의 행동(기능)
- 2,3 은 객체의 데이터(state)를 의미.
- 기능을 함수로 표현
int SaleApple(int money) //사과 구매액을 매개변수로 { int num = money/1000; //사과는 개당 1000원 numOfApples -= num;//판매한 갯수만큼 사과 줄어듦 myMoney += money;//구매액 만큼 보유하는 돈 증가 return num;//구매된 사과 갯수 반환 }
과일장수의 정의와 멤버변수의 상수화
- 과일장수 클래스
class FruitSeller { private: int APPLE_PRICE; int numOfApples; int myMoney; public: void InitMembers(int price, int num, int money) //멤버변수 초기화 기능 { APPLE_PRICE = price; numOfApples = num; myMoney = money; } int SaleApple(int money) //사과를 파는 기능 { int num = money/1000; //사과는 개당 1000원 numOfApples -= num;//판매한 갯수만큼 사과 줄어듦 myMoney += money;//구매액 만큼 보유하는 돈 증가 return num;//구매된 사과 갯수 반환 } void ShowSalesResult()//현재 상태 보여주는 기능 { cout<<"남은 사과 :" <<numOfApples<<endl; cout<<"판매 수익 :" <<myMoney<<endl; } };
- 멤버변수의 상수화
- 사과의 가격을 상수화 시켜주고싶다면?
const int APPLE_PRICE=1000;
(x)- 멤버변수 선언문에서 초기화는 불가능하다.
const in APPLE_PRICE;
(x)- 상수는 선언과 동시에 초기화되어야한다.
- 생성자를 공부해야 할 수 있다.
구매자 클래스
- 멤버변수 :
- 소유한 현금액 : int myMoney;
- 소유한 사과 개수 : int numOfApples;
- 기능 :
- 멤버변수 초기화
- 사과 사는 기능
- 현재상태 보여주는 기능
- 클래스 정의
class FruitBuyer { int myMoney; //private int numOfApples; //private public: void InitMembers(int money) { myMoney = money; numOfApples = 0; } void BuyApples(FruitSeller &seller, int money) { numOfApples+=seller.SaleApple(money); myMoney -= money; } void ShowBuyResult()//현재 상태 보여주는 기능 { cout<<"현재 잔액 :" <<myMoney<<endl; cout<<"사과 개수 :" <<numOfApples<<endl; } };
클래스 기반의 두 가지 객체생성 방법
- 클래스 내의 함수와 변수를 사용하기 위해서는 클래스를 실체화 시켜야한다.
- 이를 객체화한다고 한다.
- 여기에는 2가지 방식이 있다.
- 일반적인 변수선언 방식
ClassName objName; FruitSeller seller; FruitSeller buyer;
- 동적 할당방식
ClassName *ptrObj = new ClassName; FruitSeller *objPtr1 = new FruitSeller; FruitBuyer *objPtr2 = new FruitBuyer;
- 일반적인 변수선언 방식
- 사과장수 시뮬레이션 예제
객체간의 대화방법
void BuyApples(FruitSeller &seller, int money)
{
numOfApples+=seller.SaleApple(money);
myMoney -= money;
}
buyer 객체는 seller객체의 SaleApple이라는 함수를 호출한다.
하나의 객체가 다른 하나의 객체에게 메시지를 전달하는 방법은 함수호출을 기반으로한다.
이를 메시지 전달
이라한다.
댓글남기기