OOP(Object-Oriented-Programming)
OOP는 컴퓨터 프로그래밍의 패러다임 중 하나로 프로그램을 작업 단위가 아니라 물리적인 대상에 대한 모델 단위(객체)로 나눈다.
객체지향의 특징
추상화: 추상화란 불필요한 정보를 숨기고 중요한 정보만을 표현함으로써 공통의 프로퍼티(속성)과 메서드(함수를) 모은것
ex) 사자와 호랑이가 있다면 동물이라는 개념으로 추상화가 가능하다.
추상클래스: 하나 이상의 순수 가상함수를 포함하는 클래스
상속: 상위 클래스의 프로퍼티(속성)과 메서드(함수)를 물려받는것
다형성: 다형성(폴리모피즘,PolyMorphism)이란 여러 개의 서로 다른 객체가 동일한 기능을 다른방법으로 동작, 처리 하는 것
캡슐화: 비슷한 역할을 하는 프로퍼티(속성)과 메서드(함수)를 하나의 클래스로 모아서 관리하는 것
응집도: 클래스나 모듈안의 요소들이 얼마나 밀접하게 관련되어 있는지를 의미한다.
결합도: 어떤 기능을 수행할 때 다른 클래스나 모듈에 얼마나 의존하는지 의미한다.
동적 바인딩: 가상함수는 컴파일 시간에 객체를 특성할 수 없다. 그래서 가상 함수는 실행 시간 대 올바른 함수가 실행될 수 있도록 동적 바인딩을 사용한다.
정적 바인딩: 일반적으로 함수의 호출은 컴파일 시기에 고정된 메모리 주소를 사용하며 이러한 방식을 정적 바인딩 이라고 한다. C++의 일반적인 멤버함수는 이러한 정적 바인딩을 사용한다.
가상화: 자식 클래스에서 재정의할 수 있는 멤버 함수
* 가상 함수를 사용하지 않으면 기본적으로 C++은 정적 바인딩을 사용한다.
후기
객체지향의 기본원리 이면서 특징을 정리했다. C++이나 JAVA 같은 객체지향언어를 공부했다면 수없이 들었을 개념들이다. 그럼에도 이렇게 정리를 한 이유는 면접에서 물어보기 때문이다. 알고는 있지만 막상 면접에서 물어봤을 때 깔끔하게 대답을 할 수 없다면 한번쯤 다시 보는것도 좋다고 생각한다.
'프로그래밍 > Modern C++' 카테고리의 다른 글
[C++] Sort Vector VS Map (0) | 2021.04.26 |
---|---|
[C++] 메모리 풀(Memory Pool) (2) | 2020.09.25 |
[C++] PIMPL을 사용하지 말자 (0) | 2020.08.26 |
[C++] 멤버 함수를 Thread에 등록하는 방법 (0) | 2020.07.14 |
[C++] private 함수보다는 delete 를 사용하자 (0) | 2020.06.28 |