[c++] 객체지향 언어의 특징

객체지향 프로그래밍은 모든 것을 객체(Object)로 본다는 개념을 기반으로 한다. 이러한 개념에는 여러 특징이 있다.

1. 캡슐화 (Encapsulation)

캡슐화는 데이터와 그 데이터를 다루는 메서드들을 하나로 묶어 외부에서의 직접적인 접근을 제한함으로써 객체의 상태를 보호하는 것을 말한다.

class Car {
private:
    int speed;

public:
    void setSpeed(int s) {
        if (s > 0) {
            speed = s;
        }
    }

    int getSpeed() {
        return speed;
    }
};

2. 상속 (Inheritance)

상속은 이미 존재하는 클래스를 기반으로 새로운 클래스를 정의하는 것을 말한다. 부모 클래스의 특성과 행위를 자식 클래스가 물려받아 재사용할 수 있게 해준다.

class Animal {
public:
    void move() {
        cout << "Moving" << endl;
    }
};

class Dog : public Animal {
public:
    void bark() {
        cout << "Woof woof!" << endl;
    }
};

3. 다형성 (Polymorphism)

다형성은 같은 이름을 가진 메서드나 함수가 상황에 따라 다르게 동작하는 것을 말한다. 이는 코드의 재사용성과 유연성을 높여준다.

class Animal {
public:
    virtual void sound() {
        cout << "Generic animal sound" << endl;
    }
};

class Dog : public Animal {
public:
    void sound() override {
        cout << "Woof woof!" << endl;
    }
};

class Cat : public Animal {
public:
    void sound() override {
        cout << "Meow meow!" << endl;
    }
};

결론

객체지향 언어는 캡슐화, 상속, 다형성 등의 특징을 통해 코드의 유지보수성과 재사용성을 높이고, 프로그램을 논리적으로 정리하여 개발자가 문제를 보다 쉽게 해결할 수 있게 도와준다.