객체(Object)란?
- 변수들과 참고 자료들로 이루어진 소프트웨어 덩어리다.
- 객체는 현실 세계에 존재하는 것들을 나타내기 위해 추상화(abstraction)라는 과정이 필요하다.
- 객체는 자기만의 정보를 나타내는 변수들과, 이를 가지고 어떠한 작업을 수행 하는 함수로 둘러싸고 있다.
- 이러한 객체의 변수나 함수들을 보통 인스턴스 변수(instance variable)와 인스턴스 메소드(instance method)라고 부르게 된다.
캡슐화(Encapsulation)
- 객체의 변수들은 외부로부터 보호되고 있다.
- 즉, 외부에선 객체의 인스턴스 변수의 값을 바꾸지 못하고 오직 객체의 인스턴스 함수를 통해서만 가능하다.(물론 극단적으로 불가능한 것은 아니고 사용자가 컨트롤할 수 있다.)
- 이와 같이 외부에서 직접 인스턴스 변수의 값을 바꿀 수 없고 항상 인스턴스 메소드를 통해서 간접적으로 조절하는 것을 캡슐화라고 부른다.
클래스(Class)
- C++ 에서 객체의 생성은 클래스를 통해 이뤄진다.
- 클래스를 이용해서 만들어진 객체를 인스턴스(instance)라고 부른다.
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;
}
};
Animal
이라는 클래스를 나타낸 코드로 생성될 임의의 객체에 대한 설계도로 볼 수 있다.
- 즉,
Animal
클래스를 통해서 생성될 객체는 food, weight
라는 변수가 있고, set_animal, increase_food, view_start
라는 함수들이 있는데 Animal
클래스 상에서 이들을 지칭할 떄 각각 멤버변수(member variable), 멤버함수(member function)라고 부른다.
- 인스턴스로 생성된 객체에서는 인스턴스 변수, 인스턴스 함수, 클래스라는 골격 상에서는 멤버 변수, 멤버 함수라고 부른다.
- 위 코드에서
private, public
은 접근지정자로 외부에서의 접근 권한을 설정하는 키워드다.
- 만약 아무것도 설정하지 않으면 기본값은
private
다.