C++

4. 객체

명징직조지훈 2024. 6. 16. 15:25

C 를 통해 대형 프로젝트를 개발하기 위해서는 많은 어려움

객체란?

이전에 Animal 구조체를 정의한 후, animal 변수를 만들어서 이를 필요로 하는 함수들에게 전달해주었다.

2024.06.15 - [C++] - 3. new, delete

 

3. new, delete

메모리를 관리하는 문제는 중요한 문제이다. 프로그램이 정확하게 실행되기 위해서는 컴파일 시에 모든 변수의 주소값이 확정되어야만 했다.하지만 이를위해서는 많은 제약이 따르기 때문에

teach-meaning.tistory.com

그런데 Play 함수에 인자로 전달하는 것이 불필요해 보인다.

 

객체는 다음과 같이 정의된다.

객체란, 변수들과 참고 자료들로 이루어진 소프트우에 덩어리이다.

객체가 현실 세계에서의 존재하는 것들을 나타내기 위해서는 추상화 abstraction 과정이 필요하다.

객체는 자기만의 정보를 나타내는 변수들과 이를 가지고 어떠한 작업을 하는 함수들로 둘러싸여 있다.

이러한 객체의 변수나 함수들을 보통 인스턴스 변수 instance variable 와 인스턴스 메소드 instance method 라고 부른다.

변수들이 외부로부터 보호되고 있다. 외부에서 객체의 인스턴스 변수의 값을 바꾸지 못하고 오직 객체의 인스턴스 함수를 통해서만 가능하다는 것 이처럼 인스턴스 메소드를 통해 간접적으로 인스턴스 변수의 값을 조절하는 것을 캡슐화라고 부른다. Encapsulation

 

클래스

그렇다면 객체는 C++ 상에서 어떻게 만들어낼까

C++ 에서 객체를 만들 수 있는 장치를 준비하였다. 객체의 설계로도 바로 클래스이다.

클래스를 이용해서 만들어진 객체를 인스턴스라고 부른다.

#include <iostream>

class Animal {
    private:
        int food;
        int weight;

    public:
        void set_animal(int _food, int _weight){
            food = _food;
            weight = _weight;
        }
};

int main(){
    Animal animal;
    animal.set_animal(100, 50)

    return 0;
}

Animal 클래스를 ㅗㅌㅇ해서 생성될 임의의 객체에 대한 설계도라고 볼 수 있다.

즉, 생성될 객체는 food, weight 라는 변수가 있고, 함수들이 있는데 클래스 상에서 이들을 멤버 변수 member variable 과 멤버 함수 member function 라고 부른다.

멤버 함수, 변수는 실제하는 것이 아닌 인스턴스가 만들어져야 나타나게 된다.