C++

객체지향언어(Object-Oriented Programming)

switch_user 2023. 3. 28. 20:50

객체지향언어의 대표적인 예로는 JAVA, C++, Python, Swift 등이 있다. 절차지향언어에 대조적으로 클래스의 상속이 가능하기 때문에 코드를 재사용 할 수 있어 편리하다. 또한 독립적인 객체로 이루어져 있기 때문에 생산적으로 작업할 수 있고, 유지 및 보수에 용이하다. C와 호환도 가능하다. 하지만 실행 속도가 절차지향언어에 비해 느리다는 단점을 가지고 있다. 

 

1. 객체지향의 꽃 클래스와 객체

- 클래스 : 객체를 정의하는 틀, 설계도

- 객체 : 클래스라는 틀에서 생겨난 실체

- 클래스는 데이터(멤버 변수)와 메소드(멤버 함수)로 구성된다.

 

예시)

class Circle{
	private:
    	int radius;
    public:
    	Circle();
        Circle(int n);
        void setRadius(int n);
    	double getArea();
        ~Circle();
};

 

2. 객체지향의 특성

- 추상화 : 객체들의 공통적인 속성과 기능을 추출하여 모델링이 가능하다.

- 캡슐화 : 데이터와 메소드를 하나로 묶는 것이 가능하며 접근지정자를 통해 데이터를 숨길 수 있다. 

- 상속화 : 부모 클래스의 특성과 기능을 자식 클래스가 물려받을 수 있다(재사용이 가능하다).

- 다형성 : 하나의 기능이 경우에 따라 다르게 작동한다.

(Overloading : 같은 이름의 함수를 '중복 정의'하는 것을 말하며 호출인자에 따라 알맞은 함수를 선택한다.)

(Overriding : 상속관계에서 같은 이름의 함수를 '재정의'하는 것을 말한다.)