[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++는 객체지향 프로그래밍의 주요한 특징을 지원하고 있으며, 이를 통해 프로그래밍의 유지보수성과 재사용성을 향상시킬 수 있습니다.
참조
- https://www.learncpp.com/cpp-tutorial/
- https://en.cppreference.com/w/
- http://www.cplusplus.com/