Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

KH_C++

객체 지향 프로그래밍(Object-Oriented Programming, OOP) 본문

C++

객체 지향 프로그래밍(Object-Oriented Programming, OOP)

kanghou 2022. 11. 16. 00:46

OOP

객체 지향 프로그래밍(Object-Oriented Programming, OOP)은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, ‘객체’들의 상호작용(메시지 주고받기, 데이터 처리 등)으로 프로그램 로직을 구성하는 프로그래밍 패러다임이다.


캡슐화(encapsulation)

​캡슐화는 데이터의 구조와 데이터를 다루는 방법을 결합시켜 묶는 것을 말한다.

즉, 특정 객체가 독립적으로 역할을 하기 위해 필요한 데이터(멤버 변수, property)와 기능(멤버 함수, method)을 묶는 것이다. 또한, 데이터를 은닉(private)하고, 그 데이터에 접근하는 기능을 노출시키지 않는 다는 의미로도 캡슐화라는 용어를 사용한다. 다른 객체가 알 필요 없는, 혹은 알아서는 안 되는 데이터를 캡슐로 보호하는 것이다. 즉, 정보 은닉(data hiding)과 연관되어 있다.
  데이터는 외부에서 직접 접근을 하면 안되고 함수를 통해서만 접근해야 한다


 

상속성(inheritance)

​상속은 상위 개념의 특징(property, method)을 하위 개념이 물려받는 것을 말한다.

같은 특징 있는 클래스를 그대로 물려받아, 다시 작성할 필요 없이 재사용으로 효율성을 늘린다. 이를 통해 다형성을 확보할 수 있다.

 기존 메서드와 변수를 물려받되, 필요한 기능을 더 추가하거나 나(자식 클래스)에게 맞게 재정의하는 방법


추상화(abstraction)

​추상화는 객체들의 공통 특징(property, method)을 뽑아 하나의 클래스(새로운 타입의 사용자 데이터형)로 표현하는 것이다. 절차 지향 프로그래밍에서도 구조체로 있어왔다.

 

  보통 객체 지향 프로그래밍에서 클래스를 정의하는 걸 추상화라고 생각하면 된다


다형성(polymorphism)

​다형성이란 다양한 형태로 표현이 가능한 구조를 말한다. 비슷하지만 조금 다른 방법의 기능이 있는 함수를 동일한 이름으로 사용할 수 있는 구조를 만드는 것이다.

상속받은 멤버 함수를 재정의하는 함수 overriding, 부모 클래스 포인터 객체가 자식 클래스 객체를 가리킬 때,

동적 바인딩(dynamic binding)을 가능케 하는 가상 함수(virtual function), 반드시 재정의 되어야 한다고 명시하는 순수 가상 함수(pure virtual function)와 그것을 포함한 추상 클래스(abstract class) 등을 통해 다형성을 지닌 객 제지 향 프로그램을 설계할 수 있다.

 일반적으로 오버 라이딩 혹은 오버 로딩을 의미한다.


정보 은닉(information hiding)

사용자가 굳이 알 필요가 없는 정보를 사용자로부터 숨겨야 한다는 개념이다.

이에 따라 최소한의 정보만으로 프로그램을 손쉽고, 보기 편하게 사용할 수 있게 합니다.

이를 위해 3가지 접근 제어 지시자를 사용합니다.

  • private
  • public
  • protected

기본 접근 제어 권한은 private이고,

구조체 및 공용체는 public입니다.

캡슐화의 목표. 내부 구조는 private 하게 감춰두고 외부에서 조작할 수 있는 정보만 public으로 공개한다.


public - pulbic 접근 제어 지시자를 사용하여 선언된 클래스 멤버는 외부로 공개되며, 해당 객체를 사용하는 프로그램 어디에서나 직접 접근할 수 있습니다.

따라서, public 멤버 함수는 private 멤버와 프로그램 사이의 인터페이스 역할을 합니다.

 


private - public과 반대로, 외부에 공개되지 않으며, public을 통해서를 제외하고는 접근할 수 없습니다.

 


protected - 파생 클래스(derived class)에 대해서는 public 멤버처럼 취급되고,  외부에서는 private 멤버처럼 취급됩니다.

 

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

생성자(Constructor), 소멸자(Destructor)  (0) 2022.11.24
static 정적 변수  (0) 2022.11.23
오답노트  (0) 2022.11.11
벡터(Vector)의 멤버함수  (0) 2022.11.09
STL 구성요성  (0) 2022.11.09
Comments