728x90
C++은 객체 지향 프로그래밍 (Object-Oriented Programming, OOP)의 주요 언어 중 하나로,
개체(객체)들 간의 상호작용을 중심으로 프로그래밍하는 방식입니다.
C++에서 OOP의 기본 개념과 이점에 대해 살펴보겠습니다.
객체 지향 프로그래밍이란?
- 객체 지향 프로그래밍은 현실 세계의 사물을 모델링하여 프로그램을 구성하는 개발 방법론입니다.
이는 코드의 구조를 이해하고 관리하기 쉽도록 돕습니다. - 객체 지향 프로그래밍은 객체라는 개념을 중심으로 프로그램을 설계하며,
이 객체들 간의 상호작용을 통해 프로그램을 완성합니다.
기본 개념
- 클래스(Class)
클래스는 데이터와 함수를 하나로 묶은 사용자 정의 데이터 형식으로,
객체를 생성하기 위한 설계도입니다. - 객체(Object)
클래스의 인스턴스로, 실제로 메모리에 할당된 것을 의미합니다.
객체는 클래스의 속성과 행위를 가집니다. - 상속(Inheritance)
상속은 기존 클래스의 특성을 다른 클래스에게 물려주는 개념으로,
코드의 재사용성을 높이고 유지보수를 쉽게 합니다. - 다형성(Polymorphism)
다형성은 같은 이름의 메소드나 함수가 상황에 따라 다르게 동작하는 것을 의미하며,
오버로딩과 오버라이딩을 통해 구현됩니다. - 캡슐화(Encapsulation)
캡슐화는 데이터와 함수를 하나의 단위로 묶고,
외부에서의 접근을 제어하는 것을 의미합니다.
이는 데이터의 보안과 코드의 재사용성을 높입니다.
C++에서의 OOP
- C++은 객체 지향 프로그래밍을 지원하는 언어로,
클래스와 객체를 직접적으로 지원합니다. - 클래스는 키워드 'class'를 사용하여 정의되며,
멤버 변수와 멤버 함수로 구성됩니다. - 객체는 클래스의 인스턴스로,
'new' 키워드를 사용하여 동적으로 할당될 수 있습니다. - 상속은 키워드 'extends'를 사용하여 구현되며,
다중 상속도 지원합니다.
장점
- 코드의 재사용성을 높이고 유지보수를 용이하게 합니다.
- 코드의 가독성을 향상시키고 모듈화를 촉진합니다.
- 소프트웨어의 개발과 관리를 단순화시킵니다.
- 개발자들 간의 협업을 원활하게 합니다.
예제
#include <iostream>
#include <string>
using namespace std;
// 도형 클래스 정의
class Shape {
public:
virtual string getType() const {
return "도형";
}
virtual double getArea() const {
return 0;
}
};
// 사각형 클래스 정의 (도형 클래스를 상속)
class Rectangle : public Shape {
private:
double width;
double height;
public:
Rectangle(double w, double h) : width(w), height(h) {}
string getType() const override {
return "사각형";
}
double getArea() const override {
return width * height;
}
};
// 삼각형 클래스 정의 (도형 클래스를 상속)
class Triangle : public Shape {
private:
double base;
double height;
public:
Triangle(double b, double h) : base(b), height(h) {}
string getType() const override {
return "삼각형";
}
double getArea() const override {
return 0.5 * base * height;
}
};
// 프로그램 실행
int main() {
// 도형 객체 생성
Shape* shape1 = new Rectangle(5, 4);
Shape* shape2 = new Triangle(6, 8);
// 도형 정보 출력
cout << "도형 1: " << shape1->getType() << ", 넓이: " << shape1->getArea() << endl;
cout << "도형 2: " << shape2->getType() << ", 넓이: " << shape2->getArea() << endl;
delete shape1;
delete shape2;
return 0;
}
이 예제에서는 'Shape'라는 추상 클래스를 정의하고,
이를 상속받아 'Rectangle'과 'Triangle' 클래스를 구현합니다.
각 클래스에서는 'getType()'과 'getArea()'라는 가상 함수를 오버라이드하여
도형의 종류와 넓이를 반환합니다.
마지막으로 'main()' 함수에서는 'Shape' 포인터를 사용하여 도형 객체를 생성하고,
이를 활용하여 도형의 정보를 출력합니다.
마무리
C++의 객체 지향 프로그래밍은 효율적이고 유연한 소프트웨어 개발을 위한 강력한 도구입니다.
이를 통해 복잡한 문제를 간결하고 효율적으로 해결할 수 있습니다.
제 글이 도움이 되셨다면 댓글 & 공감 부탁드려요 😀
728x90
반응형
'Application > 기초' 카테고리의 다른 글
[기초] C++ 접근 지정자 (private , protected, public) (0) | 2024.04.08 |
---|---|
[기초] C++ 상속과 다형성 (0) | 2024.04.04 |
[기초] C++ 파일 입출력 : 기초와 예제 (0) | 2024.04.01 |
[기초] C++ 포인터 (2) | 2024.03.26 |
[기초] C++ 배열(Array) (0) | 2024.03.22 |