안녕하세요, WH입니다
오랜만에 써보는 C++관련 내용이네요
오늘은 클래스에 대해 알아보려고합니다.
물론 이번글을 통해서 한번에 클래스를 다루진 않을 겁니다.
양이 많거든요.
음 가장 먼저 상황을 하나 놓고 볼게요.
상황
제가 겨울이 끝나감에 따라 신상 봄 옷 제 절친인 디자이너를 통해 사고 싶다고 가정을 해보겠습니다.
이번 글에서는 '나'와 '절친 디자이너'를 만드는 부분까지가 아닌, '나'와 '절친 디자이너'를 만들기 위한 설계도, 즉 클래스를 만들어 볼겁니다. 물론 배우지 않은 생성자 등은 넣지 않겠습니다. 자 잘따라와 주세요
이 과정을 가지고 클래스를 이해해 볼까요?
먼저 이 상황을 코딩하려면, 적어도 두 개의 대상이 필요합니다.
1. 옷을 사는 사람
2. 옷을 파는 사람
너무나 당연한 이야기 인가요? 그렇다면 잘따라오고 계신겁니다. 그렇다면 조금은 어려운 질문입니다. 두 대상은 각각 무엇을 가지고 있어야 할까요?
1. 옷을 사는 사람
- 가지고 있어야 할 물품 : 돈, 신상 옷
2. 옷을 파는 사람
- 가지고 있어야 할 물품 : 옷, 돈, 옷값
물론 더 필요하겠지만, 간단하게 이정도만 필요하다고 해봅시다. 필요한 것을 더 생각하셨다면 매우 잘하셨습니다. 저는 기본적인 것만 생각해서요. 역시 여러분은 저보다 훨씬 뛰어나신 분들 같네요. 그러면 이번에는 가지고 있어야 할 정보에 대한 논의는 위에서 끝났으니, 이번에는 무슨 일을 해야할 지 생각해 볼까요? 즉, 옷 파는 사람과 사는 사람은 각각 무슨일을 해야할까요?
1. 옷을 사는 사람
- 가지고 있어야 할 물품 : 돈, 신상 옷
- 해야하는 일
1. 현재 잔고를 알아보는 일
2. 현재 가지고 있는 신상 옷 수
3. 돈을 지불하는 기능
4. 옷을 받는 기능
2. 옷을 파는 사람
- 가지고 있어야 할 물품 : 옷, 돈, 옷값
1. 현재 잔고를 알아보는 일
2. 현재 가지고 있는 신상 옷 수
3. 돈을 받는 기능
4. 옷을 주는 기능
와 갑자기 무엇인가 많아졌어요. 갑자기 어려워졌나요? 쉽다구요?? 더 많은 기능이 있겠지만 저는 능력이 부족해서..ㅎㅎ이 정도만 적어보도록 하겠습니다. ( 귀찮은건 안 비밀 ) 자 여기까지 오셨다면 클래스를 이해하기 위한 기본적인 준비는 끝났습니다. 이쯤에서 코딩으로 들어가기 전에 클래스가 무엇인지 알고 넘어가도록 하겠습니다.
클래스란 객체를 찍어내기 위한 틀입니다. 자 표현에 주목해 주시기 바랍니다. 저는 옷을 사고 팔기 위해 옷을 사는 사람과 옷을 파는 사람 이라는 대상을 정의했습니다. 물론 상황에서 옷을 사는 사람은 '나'이고 옷을 파는 사람은 '절친 디자이너' 입니다. 여기서 클래스와 객체에 대한 힌트가 있습니다. 즉 클래스는 '나'와 '절친 디자이너'를 만들어 내기 위한 틀( 설계도 ) 입니다. '나'와 '절친 디자이너'는 클래스를 통해 만들어지는 객체 입니다. 클래스는 무엇을 가지고 있죠? 바로 물품과 해야할 일입니다. 여기서 물품은 데이터를, 해야할 일은 기능을 의미합니다.
매우 중요하니, 다시한번 정리하면
클래스는 객체를 만들어 내는 틀이며, 객체가 가지고 있어야할 정보와 기능을 가지고 있다.
자 이해가 되셨나요? 간단하죠? 클래스는 틀! 객체는 클래스를 통해 만들어진다. 이 정도는 꼭 기억하시길 바랍니다.
위에 해당한 내용을 코딩으로 옮겨볼까요?
옷 파는 사람
class ClotheSeller
{
private:
int CLOTH_PRICE;
int numOfClothe;
int myMoney;
public:
void InitMembers(int price, int num, int money)
{
CLOTH_PRICE = price;
numOfClothe = num;
myMoney = money;
}
int SaleClothe(int money)
{
int num = mmoney/CLOTH_PRICE;
numOfClothe -=num; // 판매한 옷 수령 뺌
myMoney += money; // 판매한 옷 금액 입금
return num; // 판매한 옷 수 반환
}
void ShowSalesResult()
{
cout<<"남은 옷수: "<<numOfClothe<<endl;
cout<<"판매 수익: "<<myMoney<<endl;
}
옷 사는 사람
class ClotheBuyer
{
private:
int numOfClothe;
int myMoney;
public:
void InitMembers( int money)
{
numOfClothe = 0; //옷은 아직 안샀으니까요!
myMoney = money;
}
void BuyClothe(ClotheSeller &seller, int money)
{
numOfClothe +=seller.SaleClothe; // SaleClothe의 반환값이 옷 수임을 기억하세요
myMoney -= money; // 판매한 옷 금액 입금
}
void ShowBuyResult()
{
cout<<"신상 옷수: "<<numOfClothe<<endl;
cout<<"현재 잔액: "<<myMoney<<endl;
}
와.. 여기까지 따라오셨다면 잘하고 계신겁니다. 아직 생성자나.. 소멸자 등은 다루지 않았기 때문에 쓰지는 않았습니다. 오늘 알고 가셔야 할 일은 클래스가 무엇인지, 객체가 무엇인지 감 정도만 익히시면 되고, 내가 좀더 열정적이고 싶다면, 기능 구현 부분에서 BuyClothe 부분의 전달 인자와 구현 방법을 자세히 보시길 권합니다.
이번 글에서는 클래스만 만들었을 뿐, 아직 '나'와 '절친 디자이너'까지 만들지는 않았습니다. 여기까지 보시고 이해가 안되시는 부분있다면 댓글로 남겨주세요. 오늘도 즐거운 하루 되시길 바랍니다.
'함께 알아가는 C++' 카테고리의 다른 글
C++ 두번째 이야기, 참조자 (0) | 2021.12.21 |
---|---|
C++ 첫번째 이야기, 자료형 (0) | 2021.12.19 |