개발자 면접 공부/C-C++

C++ 객체지향 언어 4가지 특징

chogyujin 2022. 9. 1. 20:18
728x90

오늘은 객체지향 언어 5가지 특징에 대해 공부하겠습니다.


개요

객체지향 언어는 실제 세상의 사물의 개념을 프로그램에서 객체라고 부르며 이러한 프로그램 기법은 프로그래머들에게 매우 직관적으로 표현할수 있어 좋습니다.

다만 절차지향 언어 보단 속도가 느리다는게 매우 단점입니다.

 

객체지향 언어의 4가지 특징에 대해 알아보도록 하겠습니다.

 


1. 캡슐화

캡슐화는 데이터(속성)와 데이터를 처리하는 함수를 하나로 묶은 것을 의미합니다.

  • 캡슐화된 객체의 세부 내용이 외부에 은폐(정보 은닉)되어, 변경이 발생할 때 오류의 파급 효과가 적음
  • 캡슐화된 객체들은 재사용이 용이
  • 객체들 간의 메시지를 주고 받을 때 각 객체의 세부 내용은 알 필요가 없으므로 인터페이스가 단순해지고, 객체간의 결합도가 낮아짐

흔히 Class를 선언하면 C++ 기준 접근 제어자, 변수와 함수(메소드)의 정의를 내리는 특징이 바로 캡슐화입니다.


2. 추상화

추상화는 불필요한 부분을 생략하고 객체의 속성 중 가장 중요한 것에만 중점을 두어 개략화하는것, 즉 모델화를 하는 것입니다.

  • 인간이 복잡한 문제를 다루는 데 가장 기본이 되는 방법으로, 완전한 시스템을 구축하기전에 그 시스템과 유사한 모델을 만들어 여러가지 요인들을 테스트할 수 있습니다.
  • 추상화는 최소의 비용으로 실제 상황에 대처할 수 있고, 시스템의 구조 및 구성을 가시적으로 보기가 가능

추상화는 복잡한 자료등을 핵심적인 기능만 알아서 그 기능을 사용하는것 또한 불필요한 코드를 제거하고 중요한 부분만 살리는 특징 추상 클래스도 여기 특징에 들어가있음


3. 상속

상속은 이미 정의된 상위 클래스(부모 클래스)의 모든 속성과 연산을 하위 클래스가 물려받는것을 의미합니다.

  • 상속성을 이용하면 하위 클래스는 상위 클래스의 모든 속성과 연산을 자신의 클래스 내에서 다시 정의하지 않고서도 즉시 자신의 속성으로 사용이 가능
  • 하위 클래스는 상위 클래스로부터 상속받은 속성과 연산 외에 새로운 속성과 연산을 첨가하여 사용할 수 있음
  • 상위 클래스의 속성과 연산을 하위 클래스가 공유할 수 있기 때문에 객체와 클래스의 재사용, 즉 소프트웨어 재사용을 증대시키는 중요한 개념입니다.

상속은 말 그대로 base(기본) 클래스에서 하위 클래스에게 자기 자신의 변수 함수(메소드) 등을 물려주는 특징입니다.

이러한 상속을 하면 매우 큰 장점이 있는데 상위 클래스의 변수와 메소드를 하위 클래스가 재사용할수 있다는 큰 장점

또한 이러한 상속을 통해 하위 클래스는 자기 자신의 변수, 함수등을 추가하여 더 직관적인 계산을 할수가 있습니다.

 


4. 다형성

다형성은 메시지에 의해 객체(클래스)가 연산을 수행하게 될 때 하나의 메시지에 대해 각 객체(클래스)가 가지고 있는 고유한 방법(특성)으로 응답할 수 있는 능력을 의미합니다.

  • 객체(클래스)들은 동일한 메소드명을 사용하며 같은 의미의 응답을 합니다.
  • 응용 프로그램 상에서 하나의 함수나 연산자가 두개 이상의 서로 다른 클래스의 인스턴스들을 같은 클래스에 속한 인스턴스처럼 수행할 수 있도록 하는것

다형성은 보통 객체가 다양한 타입으로 변할수있다는 전재하에 쓰는 특징입니다.

보통 다양한 타입이라면 부모객체가 여러 자식 객체에 타입을 가질수 있다는 뜻 입니다.

객체지향 언어에서는 보통 오버로딩, 오버라이드가 대표적인 다형성의 함수입니다.

오버로딩 : 함수 이름은 같으나 반환, 매개변수가 다른 함수들

오버라이딩 : 함수 이름이 같으며 기본 클래스(상위 클래스,부모) 에서 상속 받은 하위 클래스(자식)이 부모 클래스 메소드를 함수이름과 똑같은걸 재정의하는 방식 반환, 함수이름, 매개변수가 동일해야하며 함수 내부를 부모와 다르게 재정의가 가능

C++에서는 다형성을 위해 Virtual 이라는 키워드가 제공됩니다.
보통 Virtual을 사용하는 함수가있을경우 그 함수를 감싸고 있는 클래스는 다형성 클래스라고 판별을 하고 4바이트에 v-table을 제공합니다.

virtual에 대해서는 아래 링크를 남깁니다.

https://chogyujin-study.tistory.com/23

 

C++ Virtual(가상) 함수

오늘은 Virtual 함수 가상 함수에 대해 공부하도록 하겠습니다. 가상 함수란? - 기본 클래스 내에서 선언되는 파생 클래스에 의해 재정의되는 맴버함수 가상 함수를 호출하고 파생 클래스의 함수

chogyujin-study.tistory.com

 

'개발자 면접 공부 > C-C++' 카테고리의 다른 글

C++의 인터페이스(Interface)  (0) 2022.09.17
가상상속  (0) 2022.09.17
A* 알고리즘  (0) 2022.08.24
다익스트라 vs BFS  (0) 2022.08.11
C++ RAII  (0) 2022.08.11