Apple is Apple
article thumbnail

일일회고

 

과제를 마무리하는 날이자 일주일을 마무리하는 날이다.

 

첫 주차 과제는 객체지향의 원리가 들어간 계산기를 만들어 보는 과제였다.

요구사항이 주어지고 그에 맞게 프로그래밍을 하면 됐었다. 아직은 큰 무리 없이 할 수 있었다.

추가적으로 선택 심화 과제를 내어주셨는데 (호텔 예약 프로그램), 이건 아직 진행 중이다.

 

주 5일 12시간을 해보면서 느낀 점은 쉽지 않다는 것이었다.

긴 시간 몰입하는 것도 쉽지 않고, 오래 앉아있는 것도 쉽지가 않다 (더워서 더 그런 것 같다.)

하지만 마음먹고 하기로 했으니 체력관리를 잘하면서 나아가면 될 것 같다!

 


오늘의 키워드

  • 객체지향 5대 원칙 (SOLID원칙)

SOLID 원칙

  1. SRP (Single Responsibilty Principle, 단일 책임 원칙)  - 클래스는 단 하나의 책임을 가져야 함
  2. OCP (Open Closed Principle, 개방-폐쇄 원칙) - 클래스는 확장에는 열려있고, 변경에는 닫혀있어야 함
  3. LSP (Liskov Subsitution Principle, 리스코프 치환 원칙) - 하위타입은 상위타입을 대체할 수 있어야 함
  4. ISP (Interface Segregatiion Principle, 인터페이스 분리 원칙) - 클래스가 사용하지 않는 인터페이스에는 의존하지 않아야 함
  5. DIP (Dependency Inversion Principle, 의존 역전 원칙) - 상위 모듈은 하위 모듈에 의존해서는 안되며,  모두 추상화된 모듈에 의존해야 함

 

과제로 보는 객체지향 

LV 3 다이어그램

 

LV 2에서 Calculator에서 모든 계산을 직접 했다면

LV 3에선 직접 계산을 하지 않고 클래스 모듈을 불러와서 계산하도록 변경하였다 (책임 분배)

 

 

 

 

 

LV 4 다이어그램

 

Lv3에서 Calculator는 다른 4가지 operator 클래스를 직접 참조하고 있어 operator 클래스에 변화가 있으면 Calculator 클래스에도 영향을 준다.  


이런 operate 클래스를 구체적인 operator가 아닌 추상화된 operator클래스로 만들어 구체적인 operate가 추상적인 operate에 의존하게 한다.  


Calculator가 구체적인 operator를 의존하지 않고 추상화된 operator에만 의존하게 되어 operator를 바꿔도 Calculator에는 영향을 주지 않는다.

profile

Apple is Apple

@mjjjjjj