C++에서 OOP의 이해 - ① OOP란?
OOP란?
OOP(Object Oriented Programing Language)란 오브젝트가 중심이 되는 프로그래밍하는 패러다임이다. C++은 멀티 패러다임 프로그래밍 언어. Procedural, Functional, OOP, Generic 패러다임을 모두 지원하는데 그중 OOP가 중심이다.
Object란?
클래스에서 정의된 대로 실제 메모리에 저장되는 객체 하나하나를 오브젝트라 한다. Cat이라는 클래스로 nabi, kitty라는 고양이들을 만들 수 있는데 이 nabi, kitty가 바로 오브젝트이다.
C++에서 OOP
C++을 OOP 중심으로 만들어주는 4가지 특성이 존재한다.
- Abstraction (추상화)
- Encapsulation (캡슐화)
- Inheritance (상속)
- Polymorphism (다형성)
Abstraction (추상화)
구현될 대상의 특징들을 모델링하여 프로그램 언어로 구현하는 과정을 추상화라고 할 수있다. 예를 들어 고양이의 특징을 클래스로 구현한다면 고양이를 클래스로 추상화했다고 할 수 있다.
Encapsulation (캡슐화)
외부에서 내부의 데이터를 직접적인 접근을 막고 정해진 인터페이스로만 접근하도록 하는 것. C++에서는 private
키워드로 캡슐화 한다.
Inheritance (상속)
상속이란 이미 존재하는 클래스로부터 기본적인 특성을 물려받아 그대로 사용하고 새로운 특징만 추가로 정의하여 사용할 수 있도록 하는 개념이다.
Polymorphism (다형성)
다형성(polymorphism)이란 하나의 객체가 여러 가지 타입을 가질 수 있는 것을 의미한다.
- function overloading (static)
- function overriding (dynamic) (virtual)
C++에서 OOP가 중요하지만, OOP가 목적이 되어서는 안 된다. 우리는 OOP 개념을 활용해서 읽기 쉽고, 이해하기 쉽고, 유지보수가 쉬운 코드를 작성하는 것이 목적이지, 정확하게 OOP 개념을 따르는 코드를 작성하는 것이 목적은 아니다. 또한 C++을 사용하는 가장 큰 이유는 OOP 때문만은 아니다. C++은 OOP를 지원하면서도 Low Level의 최적화를 통한 빠른 성능을 지원하기 때문에 사용한다. 그래서 때로는 성능을 위해서 과감히 OOP개념을 포기해야 하는 경우도 있다는 점을 항상 기억하자.
출처: https://www.youtube.com/channel/UCHcG02L6TSS-StkSbqVy6Fg