C++,python (인프런+사이트)/C++ 개념

OOP의 4대 원리 (원칙 특성 특징)

알 수 없는 사용자 2022. 1. 27. 19:04

OOP의 4대 원리 (원칙 특성 특징) 

1. 캡슐화 (Encapsulation) ( == 클래스 내에서의 추상화 , 추상화랑 겹치는 내용이 많음.) 

54강 

무엇 - 데이터(멤버변수)와 기능(멤버 메서드)를 하나의 단위로 묶어놓음 

- 데이터를 보이지 않게 가리고, 데이터에 접근하기 위한 메서드만을 노출(데이  터은닉) 

언제 - 언제든! 많이 쓸수록 좋다. 

- 클래스 사용자 : 클래스 내부 구조를 이해할 필요가 없다.  

   데이터를 실수로 잘못 바꾸는 것을 방지 

     메서드 사용법만 알면 사용가능 - 예 : 자동차운전할줄만알면 

어떻게 - 클래스 안에 멤버변수, 멤버 메서드 선언/ 접근제어 

2. 상속성 (Inheritnace) 

75~84강 

무엇 - 부모 클래스의 멤버를 재사용해서 자식 클래스에서도 사용 할 수 있음. 

언제 - 부모 클래스에서 할 수 있는 일을 자식 클래스에서 할 수 있을때 

- 자식 클래스는 부모 클래스의 일종이다 ( A is a B ) 

- 코드 재사용 

어떻게 - 상속! 

3. 다형성 (Polymorphism) 

78강 

무엇 - 동적 다형성 : 한 클래스가 그로부터 파생된 다양한 형태를 지닐 수 있음 

 오버라이딩 , 동적바이딩을 써서 서로다른 객체를 사용할때 따로따로 동작 

- 정적 다형성 : 함수오버로딩, 템플릿 

언제 - 자식 클래스의 메서드 구현이 부모 클래스와 다를 때 

- 자식 클래스에서 하고 싶은 일들이 부모 클래스에서와 다를 수 있음 

 부모클래스 꺼를 오버라이딩해서 바꿔써먹고 싶을때 

어떻게 - 오버라이딩, 가상함수(이게없으면 동적바인딩안되니까), {RTTI, 다형적 클래스} 

 

 

 

 

4. 추상화 (Abstraction) ( == 클래스 간의 추상화 ) 

80강 

무엇 - 부모클래스 : 클래스가 구현해야 할 기능만을 명시 (순수 가상함수) 

- 자식클래스 : 실제 구현 

언제 - [자식클래스]는 [부모클래스]할 수 이썽야 한다. ( A is able to B ) 

 shape 안에서는 너가 도형이면 넓이와 크기를 변경할 수 있어야 된다는 조건   을 제시하고 그 조건으로 자식클래스에서 구현을 하는거 

- ex) "자동차" : 너가만약에 자동차라면 운전대, 페달, 기어변속기 같은 기능들이 있어야 된다는 규정을 만들어 놓는 것. 

- 각 부품의 작동원리는 자동차 종류마다 다르지만 공통기능이 규칙으로 있어서 

어떻게 - 추상 클래스 ( 순수 가상 함수 ) 

 

 

 

 

캡슐화( == 클래스 내에서의 추상화 )  VS  추상화( == 클래스 간의 추상화 ) 

 

캡슐화 : 클래스 내에서 TV안의 기능들을 기능 별로 묶어놓은거 ( 전원 채널변경 볼륨 등등) 

 

추상화 : LG티비클래쓰 Samsung티비클래쓰 들이 가지고 있어야할  

 기본 기능에 대한 룰( 전원 채널변경 볼륨 )