하루하루

[C++] 객체 지향 프로그래밍 (OOP, Object-Oriented Programmig) 본문

IT/c++

[C++] 객체 지향 프로그래밍 (OOP, Object-Oriented Programmig)

Jo.o 2019. 10. 7. 16:41
반응형

C++은 절차 지향적이며, 구조적 프로그래밍 언어이다. 또한 객체 지향 프로그래밍 언어이다.

객체 지향 프로그래밍의 특징은 크게 5가지, 상속성, 추상화, 캡슐화, 다형성, 정보은닉으로 이루어져있다.
객체 지향 프로그래밍에선 모든 데이터를 객체(Object)로 취급한다.


Objects (객체)

  • 자신의 정보를 나타낼 수 있는 변수들과, 이를 가지고 작업 할 수 있는 함수들로 이루어졌다.
  • 각각 인스턴스 변수, 인스턴스 메소드라고 부른다.

Class (클래스)

  • 사용자 정의 데이터 형식으로 정의할 수도 있고, 함수도 포함한다. 클래스는 기본적으로 객체의 설계도이다. 객체가 가질 데이터 변수와 클래스 객체에서 수행 할 수 있는 작업을 선언하고 정의한다.
  • 클래스를 이용해 만들어진 객체를 인스턴스라고 부른다.

Inheritance (상속)

  • 상속은 작성된 코드를 반복해서 재사용하는 방법이다. 상속 된 클래스를 Base(기반) 클래스라고 하며, 상속되는 클래스를 Derived(파생) 클래스라고 한다. 부모 및 자식 클래스라고도 한다.
  • 따라서 기반 클래스를 상속받는 파생 클래스는 기반 클래스에 정의 된 모든 함수를 사용할 수 있으므로 코드를 재사용 할 수 있다.
  • 파생 클래스는 상속받은 속성이나 함수 외에 새로운 속성, 함수를 추가하여 사용할 수 있다.

Abstraction (추상화)

  • 추상화는 공통의 속성이나 기능을 묶어 이름을 붙이는 것, 객체 지향적 관점에서 클래스를 정의하는 것을 말한다.
  • 불필요한 부분은 생략하고 다른 객체들과 구분되는 핵심적인 특징들에 집중하여, 복잡도를 관리할 수 있다.

Encapsulation (캡슐화)

  • 구현되는 부분을 외부에 드러나지 않도록 캡슐로 감싸고, 이용방법만을 드러낸다.
  • 데이터 구조(속성)와 데이터를 처리하는 함수를 결합시켜 묶는다. 데이터를 외부에서 직접 접근을 못하게, 함수를 통해서만 접근할 수 있도록 하는 것이 캡슐화이다.

Polymorphism (다형성)

  • 다형성은 객체가 연산을 수행할 때 각 객체가 가지고 있는 고유한 방법으로 응답하는 것을 의미한다.
  • 상위클래스에서 상속받은 것을 하위 클래스에서 다시 정의하는 것을 메소드 오버라이딩(Method Overriding) 이라고 한다.
  • 클래스 내부에 동일한 이름의 메소드를 여러개 정의하고, 매개변수의 타입에 따라 구분하는 것을 메소드 오버로딩(Method Overloading) 이라고 한다.
반응형

'IT > c++' 카테고리의 다른 글

[CMake] Ubuntu에 CMake 설치 및 업데이트  (0) 2020.01.17
[VS code] 우분투 16.04 LTS 에서 VScode 설치하기  (2) 2020.01.06
[C++] 상속(Inheritance)  (0) 2019.10.16
[C++] 접근 제어자  (0) 2019.10.08
[C++] 클래스와 객체  (0) 2019.10.07