상세 컨텐츠

본문 제목

OOP란?

C++/C++98

by deulee 2023. 8. 3. 11:49

본문

OOP의 요소는 기본적으로 5가지가 있는데 다음과 같다.

  • 캡슐화 - 묶는다

  • 정보 은폐 - 숨긴다

  • 추상화 - 표현한다

  • 상속 - 재사용한다

  • 다형성 - 상황에 따라 달라진다.

캡슐화(Encapsulation)

표현하고자 하는 data와 function을 하나의 단위로 묶은 것을 의미한다. 이렇게 묶은것을 객체(Object)[여담이지만, C++에서는 생성자가 호출되는 것만 객체라고 판단하는 경우가 일반적이다.]라고 한다. 하나의 객체는 그것을 표현하고자 하는 data와 function을 하나의 묶으로 가지고 있기 때문에 스스로 독립적이며 프로그램의 부품으로 사용된다.

 

정보 은폐(Information Hiding)

객체는 자신의 상태를 기억하기 위한 속성과 속성을 관리하는 동작을 정의한다. 이때 외부에서 사용할 수 있는 기능을 제외하고 나머지는 전부 숨길 수 있는데 이를 정보 은폐라고 한다. 즉, 원하지 않는다면 그 누구도 객체의 상태를 바꾸거나 허가되지 않은 동작을 할 수 없다.

 

추상화(Abstraction)

현실의 사물이 어떠한 특징과 동작이 가능한지를 조사하는 과정을 거친다. 이를 모델링이라고 하며 이를 통해 얻는 자료와 동작의 목록이 작성되면 이들을 캡슐화(묶는다)를 하여 객체로 정의한다. 그리고 정보 은폐를 거치게 된다. 추상화란 객체의 효율적이고도 안전한 사용을 위해 인터페이스를 설계하는 것이다. 이는 캡슐화와 정보 은폐에 의해 구현된다.

 

위의 작업을 거치고 구현된 것이 인터페이스이고 이는 외부에서 볼 수 있는 것이다. 

 

상속(Inheritance)

상속은 이미 만들어진 클래스를 파생시켜 새로운 클래스를 정의하는 기법으로 파생된 클래스는 기존 클래스의 모든 속성과 동작을 물려받으며 여기에 더 필요한 기능을 추가하거나 필요없는 기능을 제거 또는 변경할 수 있다.

 

사실 위의 추상화를 아무리 잘한다 하더라도 하나의 객체로는 현실의 문제를 다 다룰 수 없다. 이럴때 기존의 기능 중 원하는 부분만 수정하여 기존 객체를 최대한 재활용하여 시간과 노력을 아끼는데에 있어 유용하다.

 

다형성(Polymorphism)

똑같은 호출이여도 상황에 따라, 호출하는 객체에 따라 다른 동작을 할 수 있는 능력을 다형성이라고 한다. 이는 실제 내부 구현은 다르더라도 개념적으로는 동일한 동작을 하는 함수를 하나의 인터페이스로 호출할 수 있으므로 객체들을 사용하는 코드를 일관되게 유지할 수 있다. 이는 동적 바인딩을 하는 가상 함수에 의해 구현된다.

 

이렇게 간단하게 OOP에 대해서 알아보았다. 사실 이는 코드를 얼마나 많이 작성하냐 따라 좋고 나쁜점을 알 수 있다고 생각한다.

 

출처

http://www.soen.kr/lecture/ccpp/cpplec.htm

 

C/C++ 강좌

 

www.soen.kr

 

'C++ > C++98' 카테고리의 다른 글

C++ 참조자(reference)  (0) 2023.08.03
C++ 클래스  (0) 2023.08.03
C++에서의 구조체  (0) 2023.08.03
new 연산자  (0) 2023.08.03
C++의 새로운 입출력 - cout, endl, cin  (0) 2023.06.10

관련글 더보기