OOP의 4대 원리 (원칙 특성 특징)
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티비클래쓰 들이 가지고 있어야할
기본 기능에 대한 룰( 전원 채널변경 볼륨 )