์ปดํจํฐ ์ธ์ด์ ๋ฐ๋ฌ
- ์ด์ ๋ธ๋ฆฌ์ด
- Cobol, Fortran, Basic ๋ฑ 2์ธ๋ ์ธ์ด
- ์ ์ฐจ ์งํฅ ์ธ์ด (Procedural Programming like C language)
- ๊ฐ์ฒด์งํฅ ์ธ์ด (C++, Java, Python, C#..)
- ํ๋ก๊ทธ๋จ์ ํฌ๊ธฐ๊ฐ ์์ ๋ณด๋ค ํจ์ฌ ์ปค์ง.
- ์๋ก์ด ํจ๋ฌ๋ค์์ด ํ์ํด ๊ฐ๋ฐ๋จ
๊ฐ์ฒด๋?
๊ฐ์ฒด๋, ๋ณ์๋ค๊ณผ ์ฐธ๊ณ ์๋ฃ๋ค๋ก ์ด๋ฃจ์ด์ง ์ํํธ์จ์ด ๋ฉ์ด๋ฆฌ ์ด๋ค.
๊ฐ์ฒด๊ฐ ํ์ค ์ธ๊ณ์์์ ์กด์ฌํ๋ ๊ฒ๋ค์ ๋ํ๋ด๊ธฐ ์ํด์๋ ์ถ์ํ(abstraction) ๊ณผ์ ์ด ํ์.
Animal animal;
// ์ด๊ธฐํ ๊ณผ์ ์๋ต
animal.food += 100; // --> ๋ถ๊ฐ๋ฅ
animal.increase_food(100); // --> ๊ฐ๋ฅanimal.increase_food(100); ์ ๊ฒฝ์ฐ animal ๊ฐ์ฒด์ โ์ธ์คํด์ค ํจ์โ๋ฅผ ํตํด์ ๊ฐ์ ์์ .
์ด๋ ๊ฒ ์ธ์คํด์ค ๋ฉ์๋๋ฅผ ํตํด ๊ฐ์ ์ ์ผ๋ก ์กฐ์ ํ๋ ๊ฒ์ ์บก์ํ(Encapsulation)์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
ํด๋์ค
๊ฐ์ฒด์ โ์ค๊ณ๋โ
#include <iostream>
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;
}
}; // ์ธ๋ฏธ์ฝ๋ก ์์ง ๋ง์!
int main() {
Animal animal;
animal.set_animal(100, 50);
animal.increase_food(30);
animal.view_stat();
return 0;
}private vs public
- private keyword: ๊ฐ์ฒด ๋ด๋ถ์์๋ง ์ ๊ทผ ๊ฐ๋ฅ
- public keyword: ๊ฐ์ฒด ๋ฐ์์ ์ ๊ทผ ๊ฐ๋ฅ
// Quiz 4-1. Calculate Calendar
#include <iostream>
using namespace std;
class Date {
int year_;
int month_;
int day_;
public:
void CalcDate(int day_temp, int max_day) {
if (day_temp <= max_day) {
day_ = day_temp;
} else {
AddMonth(1);
day_ = day_temp - max_day;
}
}
void SetDate(int year, int month, int date) {
year_ = year;
month_ = month;
day_ = date;
}
void AddDay(int inc) {
// day_ += inc;
int day_temp = day_ + inc;
switch (month_) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
CalcDate(day_temp, 31);
break;
case 2:
CalcDate(day_temp, 28);
break;
case 4:
case 6:
case 9:
case 11:
CalcDate(day_temp, 30);
break;
}
if (day_temp < 29) {
day_ = day_temp;
} else {
}
}
void AddMonth(int inc) {
// month_ += inc;
int month_temp = month_ + inc;
if (month_temp > 12) {
++year_;
month_ = month_temp - 12;
} else {
month_ = month_temp;
}
}
void AddYear(int inc) { year_ += inc; }
void ShowDate() {
cout << year_ << "." << month_ << "." << day_ << " " << endl;
}
};
int main() {
Date date;
int now_year, now_month, now_day;
cout << "Current year: ";
cin >> now_year;
cout << "Current month: ";
cin >> now_month;
cout << "Current day: ";
cin >> now_day;
// date.SetDate(2025, 7, 3);
date.SetDate(now_year, now_month, now_day);
date.ShowDate();
// date.AddDay(3);
// date.ShowDate();
cout << "Current date is: ";
date.ShowDate();
// cout << "After 2years, 3months, 5days.. " << endl;
int inc_year, inc_month, inc_day;
cout << "\nAfter nth year: ";
cin >> inc_year;
cout << "After nth month: ";
cin >> inc_month;
cout << "After nth day: ";
cin >> inc_day;
date.AddDay(inc_day);
date.AddMonth(inc_month);
date.AddYear(inc_year);
date.ShowDate();
}