\n", this->name); this->isStudying = true; // 사후 조건 : isStudying = true } void TakeRest() { printf("%s 힝~\n", name); } // 등교한다. -> 집에서 학원으로 오는 거니까 학원에 있을 때는 등교 한다는 건 말이 안됨. void GoToSchool() { // 사전 조건 : 학원이면 안된다. if (this->isAtHome == false) { return; } printf("%s 등교중 ><\n", this->name); this->isAtHome = false; } // 잔다 -> 잠을 자는 건 집에서만 잔다. void Sleep() { // 사전 조건 : 집이어야 한다. if (this->isAtHome == false) { return; } printf("%s 잘꼬얌\n", this->name); this->isSleeping = true; } voi"> <\n", this->name); this->isStudying = true; // 사후 조건 : isStudying = true } void TakeRest() { printf("%s 힝~\n", name); } // 등교한다. -> 집에서 학원으로 오는 거니까 학원에 있을 때는 등교 한다는 건 말이 안됨. void GoToSchool() { // 사전 조건 : 학원이면 안된다. if (this->isAtHome == false) { return; } printf("%s 등교중 ><\n", this->name); this->isAtHome = false; } // 잔다 -> 잠을 자는 건 집에서만 잔다. void Sleep() { // 사전 조건 : 집이어야 한다. if (this->isAtHome == false) { return; } printf("%s 잘꼬얌\n", this->name); this->isSleeping = true; } voi"> <\n", this->name); this->isStudying = true; // 사후 조건 : isStudying = true } void TakeRest() { printf("%s 힝~\n", name); } // 등교한다. -> 집에서 학원으로 오는 거니까 학원에 있을 때는 등교 한다는 건 말이 안됨. void GoToSchool() { // 사전 조건 : 학원이면 안된다. if (this->isAtHome == false) { return; } printf("%s 등교중 ><\n", this->name); this->isAtHome = false; } // 잔다 -> 잠을 자는 건 집에서만 잔다. void Sleep() { // 사전 조건 : 집이어야 한다. if (this->isAtHome == false) { return; } printf("%s 잘꼬얌\n", this->name); this->isSleeping = true; } voi">
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//데이터와 데이터를 다루는 알고리즘 분리
// 캡슐화 : 데이터랑 알고리즘을 같이 작성
// 추상화 : 세부 구현을 숨기고, 사용하기 위한 일반적인 인터페이스를 정의
struct Student
{
public:
// 초기화하는 함수가 필요하다.
Student(const char* name)
{
this->name = name;
}
// 공부한다. -> 잠에서 깨어 있어야 하고, 장소는 어디에서나, 밥 먹을 땐 안함.
void Study()
{
// 사전 조건 : 잠에서 꺠어 있어야 하고, 밥먹고 있지 말아야 한다.
if (this->isSleeping == true || this->isEating == true)
{
return;
}
printf("%s 공부중 ><\\n", this->name);
this->isStudying = true;
// 사후 조건 : isStudying = true
}
void TakeRest()
{
printf("%s 힝~\\n", name);
}
// 등교한다. -> 집에서 학원으로 오는 거니까 학원에 있을 때는 등교 한다는 건 말이 안됨.
void GoToSchool()
{
// 사전 조건 : 학원이면 안된다.
if (this->isAtHome == false)
{
return;
}
printf("%s 등교중 ><\\n", this->name);
this->isAtHome = false;
}
// 잔다 -> 잠을 자는 건 집에서만 잔다.
void Sleep()
{
// 사전 조건 : 집이어야 한다.
if (this->isAtHome == false)
{
return;
}
printf("%s 잘꼬얌\\n", this->name);
this->isSleeping = true;
}
void Wakeup()
{
printf("%s 헤으응 ><\\n", name);
}
// 하교한다. -> 학원에서 집을 가는 거니까 집에 이미 도착했을 때는 하교한다는 건 말이 안됨.
void GoHome()
{
if (this->isAtHome == true)
{
return;
}
printf("%s 힘들어썽 힝 ㅜ\\n", this->name);
this->isAtHome = true;
}
// 먹는다. -> 집에서는 학원에서는 쌉가능
void Eat(const char* food)
{
printf("아 %s 살찌는뎅 ㅜ 조금만 먹을게. (우걱우걱 소리를 내며 %s를 먹는다.)\\n", this->name, food);
this->isEating = true;
}
private:
const char* name = NULL;
bool isAtHome = false;
bool isSleeping = false;
bool isEating = false;
bool isStudying = false;
};
int main()
{
Student babyWoojin("아기우진");
babyWoojin.Sleep();
babyWoojin.Wakeup();
babyWoojin.GoToSchool();
babyWoojin.Study();
babyWoojin.TakeRest();
babyWoojin.GoHome();
babyWoojin.GoToSchool();
babyWoojin.Eat("라면");
}