Apple is Apple

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를 안쓰면 어떤 코드가 나올까??

--> 모든 변수 메소드를 각 클래스마다 만들어야해서 코드가 굉장히 복잡해지고 길어진다..

 

 

디자인 패턴

--> 이전에 미리 정형화 해놓은 프로그램 구현을 하는 방식

 

전략패턴, 옵저버패턴, 데코레이터패턴, 싱글턴패턴 등 여러가지가 많은데

다 외우는 것은 불가능하고 개념을 알아두고 적용은 천천히 해보도록 하자...

 

 

profile

Apple is Apple

@mjjjjjj