본문 바로가기

프로그래밍/Modern C++

[C++] 기본 객체지향 특징 정리

 

 

OOP(Object-Oriented-Programming)

OOP는 컴퓨터 프로그래밍의 패러다임 중 하나로 프로그램을 작업 단위가 아니라 물리적인 대상에 대한 모델 단위(객체)로 나눈다.

 

객체지향의 특징

추상화: 추상화란 불필요한 정보를 숨기고 중요한 정보만을 표현함으로써 공통의 프로퍼티(속성)과 메서드(함수를) 모은것

               ex) 사자와 호랑이가 있다면 동물이라는 개념으로 추상화가 가능하다.

 

추상클래스: 하나 이상의 순수 가상함수를 포함하는 클래스

 

상속: 상위 클래스의 프로퍼티(속성)과 메서드(함수)를 물려받는것

 

다형성: 다형성(폴리모피즘,PolyMorphism)이란 여러 개의 서로 다른 객체가 동일한 기능을 다른방법으로 동작, 처리 하는 것

 

캡슐화: 비슷한 역할을 하는 프로퍼티(속성)과 메서드(함수)를 하나의 클래스로 모아서 관리하는 것

 

응집도: 클래스나 모듈안의 요소들이 얼마나 밀접하게 관련되어 있는지를 의미한다.

 

결합도: 어떤 기능을 수행할 때 다른 클래스나 모듈에 얼마나 의존하는지 의미한다.

 

동적 바인딩: 가상함수는 컴파일 시간에 객체를 특성할 수 없다. 그래서 가상 함수는 실행 시간 대 올바른 함수가 실행될 수 있도록 동적 바인딩을 사용한다.

 

정적 바인딩: 일반적으로 함수의 호출은 컴파일 시기에 고정된 메모리 주소를 사용하며 이러한 방식을 정적 바인딩 이라고 한다. C++의 일반적인 멤버함수는 이러한 정적 바인딩을 사용한다.

 

가상화: 자식 클래스에서 재정의할 수 있는 멤버 함수

              * 가상 함수를 사용하지 않으면 기본적으로 C++은 정적 바인딩을 사용한다.

 

 

 

 

후기

객체지향의 기본원리 이면서 특징을 정리했다. C++이나 JAVA 같은 객체지향언어를 공부했다면 수없이 들었을 개념들이다. 그럼에도 이렇게 정리를 한 이유는 면접에서 물어보기 때문이다. 알고는 있지만 막상 면접에서 물어봤을 때 깔끔하게 대답을 할 수 없다면 한번쯤 다시 보는것도 좋다고 생각한다.