반응형
추상화
사물이나 표상을 어떤 성질, 공통성, 본질에 착안하여 그것을 추출하여 파악하는 것
객체
현실세계에 존재하는 것들을 나타내기 위해서는 추상화 과정이 필요
변수와 함수로 이루어져 있다.
객체의 변수나 함수를 인스턴스 변수, 인스턴스 메소드라고 부른다.
객체의 인스턴스 변수의 값은 외부에서 바꾸지 못하고, 객체의 인스턴스 함수를 통해서만 변경이 가능하다.
Animal animal;
animal.full+=100; //불가능
animal.increate_food(100); //가능
캡슐화
외부에서 직접 인스턴스 변수의 값을 바꿀 수 없고 인스턴스 메소드를 통해서 간접적으로 조절할 수 있다.
객체가 내부적으로 어떻게 작동하는지 몰라도 사용할 수 있다.
클래스
객체의 설계도
클래스를 통해서 객체를 생성하고, 생성된 객체를 인스턴스라고 한다.
클래스 상에서의 변수와 함수를 멤버 변수, 멤버 함수라고 부른다.
접근 지시자는 외부에서 멤버들에게 접근을 할 수 있냐 없냐를 지시해주는 것을 의미한다.
private 키워드는 모두 객체 내에서 보호되고 있으며, 자기 객체 안에서만 접근할 수 있을 뿐 객체 외부에서는 접근할 수 없다.
public 키워드는 공개된 것으로 외부에서 접근이 가능하다.
키워드 명시를 따로 하지 않으면 기본적으로 private로 설정된다.
class Animal {
private:
int food;
int weight;
public:
void set_animal(int _food, int _weight){
food=_food;
weight=_weight;
}
void increase_food(int inc){
food+=inc;
weight+=(inc/3);
}
void view_stat(){
std::cout << "동물의 food : " << food << std::endl;
std::cout << "동물의 weight : " << weight << std::endl;
}
};
- 클래스를 이용한 날짜 계산
#include <iostream>
class Date {
int year_;
int month_; //1~12
int day_; //1~31
public:
void set_date(int year, int month, int date){
year_=year;
month_=month;
day_=date;
}
void add_day(int inc){
if (month_==1||month_==3||month_==5||month_==7||month_==8||month_==10||month_==12){
if ((day_+inc)>31){
month_++;
day_=(day_+inc)-31;
}
else {
day_+=inc;
}
}
else if (month_==2 && year_%4==0){
if ((day_+inc)>29){
month_++;
day_=(day_+inc)-29;
}
else {
day_+=inc;
}
}
else {
if ((day_+inc)>30){
month_++;
day_=(day_+inc)-30;
}
else {
day_+=inc;
}
}
}
void add_month(int inc){
if (month_+inc>12){
year_++;
month_=(month_+inc)-12;
}
else {
month_++;
}
}
void add_year(int inc){
year_+=inc;
}
void show_date(){
std::cout << "year:" << year_ << std::endl;
std::cout << "month:" << month_ << std::endl;
std::cout << "day:" << day_ << std::endl;
}
};
int main(){
Date date;
date.set_date(2023,1,8);
date.show_date();
std::cout << "\n";
date.add_year(1);
date.add_month(2);
date.add_day(3);
date.show_date();
return 0;
}
반응형
'programming > c++' 카테고리의 다른 글
[programmers] 폰켓몬 (0) | 2023.01.09 |
---|---|
[programmers] 완주하지 못한 선수 (0) | 2023.01.08 |
[C++] 힙(heap) (0) | 2023.01.08 |
[C++] 문법구조 (0) | 2023.01.07 |
[C++] 기본 (0) | 2023.01.07 |