인스턴스 메소드 (객체에 정의되어 있는 함수)
인스턴스 변수 (인스턴스 메소드 내부에 있는 변수)
클래스 (객체를 만들 수있는 장치)(설계도)
-클래스를 이용해서 만든 객체를 인스턴스 라고 부른다.
멤버 변수, 멤버함수
-클래스 상에서 인스턴스 메소드, 인스턴스 변수를 지칭할때 부르는 말
private: (클래스 에 있는 키워드)
-아래에 쓰여진 것들은 모두 객체 내에서 보호함.
public: (클래스 에 있는 키워드)
-외부 내부 마음껏 이용 가능
키워드를 명시하지 않았다면 기본적으로 private 로 설정
(난이도 : 上)
#include <iostream>
class Date {
int year_;
int month_; // 1 부터 12 까지.
int date_; // 1 부터 31 까지.
public:
void SetDate(int year, int month, int date) {
year_ = year;
month_ = month;
date_ = date;
}
void AddDay(int inc) {
date_ += inc;
if (month_ == 2 && date_ > 28) {
AddMonth(1);
date_ -= 28;
AddDay(0);
}
if (month_ == 4 || month_ == 6 || month_ == 9 || month_ == 11 && date_ > 30) {
AddMonth(1);
date_ -= 30;
AddDay(0);
}
if (month_ == 1 || month_ == 3 || month_ == 5 || month_ == 7 || month_ == 8 || month_ == 10 || month_ == 12 && date_ > 31) {
AddMonth(1);
date_ -= 31;
AddDay(0);
}
}
void AddMonth(int inc) {
month_ += inc;
if (month_ > 12) {
AddYear(1);
month_ -= 12;
AddMonth(0);
}
}
void AddYear(int inc) {
year_ += inc;
}
void ShowDate() {
std::cout << year_ << month_ << date_ << std::endl;
}
};
int main() {
Date date;
int year, month, day;
std::cout << "year, month, date 값 입력 : " << std::endl;
std::cin >> year >> month >> day;
date.SetDate(year, month, day);
date.ShowDate();
while (1) {
int input1, input2;
std::cout << "1. day 추가 \n" << "2. month 추가 \n" << "3. year 추가 \n";
std::cin >> input1;
std::cout << "얼마나 추가하시겠습니까? \n";
std::cin >> input2;
switch (input1) {
case 1:
date.AddDay(input2);
break;
case 2:
date.AddMonth(input2);
break;
case 3:
date.AddYear(input2);
break;
}
date.ShowDate();
}
return 0;
}