1회차
객체란 무엇인가? - 상태와 행동을 가지는 개체?? - chatGPT曰
----> 어떤 속성이 존재하고 속성에 대한 행동을 하는 것!
ex) 버스
상태 - 번호, 좌석 수, 색, 출발지, 도착지, 연료량 등등 정의 할 수 있는 값
행동 - 멈춘다, 이동한다, 시동켠다, 문을 연다 등등 수행할 수 있는 것
하지만.. 버스에는 광역버스, 시내버스, 고속버스 등 다양한 종류가 있고 버스마다 조금씩 상태와 행동이 다르다!
이것을 상속없이 구현하려면... 죄다 하나씩 구현해야함
class CityBus {
val 출발
val 도착
....
}
class WideBus {
val 출발
val 도착
....
}
class ExpressBus {
val 출발
val 도착
....
}
종류는 너무많고 하나씩 다하려면 시간이 너어어어무 오래걸림!
--> 공통점과 차이점을 구분하여 공통점을 추상화해서 사용한다!
ex) 버스
시내버스는 출발지-도착지 사이에 수많은 정류장, 입석 가능 광역,고속버스는 중간에 휴게소는 있지만 경유지가 없음, 입석불가 등등
객체지향 키워드 - 상속, 추상화, 정보은닉, 캡슐화 대해 알아보기
2회차 (2023-08-08)
상위 버스에 버스번호를 두고 하위 버스에 상속시켜주어 구분을 시켜준다.
다형성
업캐스팅 - 자식클래스를 부모클래스로 변환
다운캐스팅 - 부모클래스를 자식클래스로 변환
예제를 통해 익히기
3회차 (2023-08-16)
다형성에 이어서....
캡슐화, 정보은닉...
캡슐화 - 변수나 메소드들을 캡슐로 감싸서 안보이게 하는 정보 은닉 개념중 하나
정보 은닉 - 객체지향 언어적 요소를 활용하여 객체에 대한 구체적인 정보를 노출시키지 않도록 하는 기법
정보은닉의 대표적 방법
- 객체의 구체적인 타입 은닉 ( = 업캐스팅)
- 객체의 필드 및 메소드 은닉 ( = 캡슐화)
- 구현 은닉 ( = 인터페이스 & 추상 클래스)
OOP를 안쓰면 어떤 코드가 나올까??
--> 모든 변수 메소드를 각 클래스마다 만들어야해서 코드가 굉장히 복잡해지고 길어진다..
디자인 패턴
--> 이전에 미리 정형화 해놓은 프로그램 구현을 하는 방식
전략패턴, 옵저버패턴, 데코레이터패턴, 싱글턴패턴 등 여러가지가 많은데
다 외우는 것은 불가능하고 개념을 알아두고 적용은 천천히 해보도록 하자...