[c++] 객체지향 프로그래밍 언어

객체지향 프로그래밍(Object-Oriented Programming, OOP)은 프로그램을 객체들의 모임으로 바라보고 이들간의 상호 작용을 통해 프로그램을 디자인하는 프로그래밍 패러다임입니다. C++는 객체지향 프로그래밍을 지원하는 언어로, 클래스와 객체, 상속, 다형성 등의 특징을 가지고 있습니다.

클래스와 객체

클래스(Class)는 객체의 설계도 또는 틀을 정의하는데 사용되며, 객체(Object)는 이러한 클래스에 의해 생성된 인스턴스를 가리킵니다. C++에서 클래스는 class 키워드를 사용하여 정의되며, 객체는 new 키워드를 사용하여 동적으로 생성됩니다.

class Rectangle {
    int width, height;

  public:
    void set_values(int, int);
    int area() { return width * height; }
};

void Rectangle::set_values(int x, int y) {
    width = x;
    height = y;
}

int main() {
    Rectangle rect;
    rect.set_values(3, 4);
    std::cout << "Area: " << rect.area() << std::endl;
}

상속

상속(Inheritance)은 기존 클래스로부터 새로운 클래스를 만드는 기법을 말합니다. 기존 클래스를 부모 클래스 또는 상위 클래스라고 하고, 새로운 클래스를 자식 클래스 또는 하위 클래스라고 합니다. C++에서 상속은 콜론(:)을 사용하여 정의됩니다.

class Square : public Rectangle {
  public:
    void set_side(int s) { set_values(s, s); }
};

int main() {
    Square square;
    square.set_side(4);
    std::cout << "Area: " << square.area() << std::endl;
}

다형성

다형성(Polymorphism)은 같은 이름을 가진 메소드나 함수가 입력 인자나 객체의 타입에 따라 다르게 동작하는 것을 말합니다. C++에서는 가상함수(Virtual Function)를 사용하여 다형성을 구현합니다.

class Shape {
  public:
    virtual int area() { return 0; }
};

class Circle : public Shape {
  public:
    int area() { return 3.14 * radius * radius; }
  private:
    int radius;
};

C++는 객체지향 프로그래밍의 주요한 특징을 지원하고 있으며, 이를 통해 프로그래밍의 유지보수성과 재사용성을 향상시킬 수 있습니다.

참조