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