특강 복습
- 객체의 역할과 책임
- 각 객체들은 역할과 책임이 주어짐
- 각 객체들은 서로 협력을 통해 움직임 (협력 : 요청과 응답)
- 역할과 책임을 가지는 객체들이 서로 협력을 통해 시스템을 구성함
- 객체의 품질이 협력의 품질을 결정함 (각 객체가 요청에 성실히 이행했는지에 따라 결정됨)
- 객체 지향
- 객체는 다른 객체와 협력하기 위해 메시지를 전송하고, 메시지를 전달받은 객체는 적합한 메서드를 자율적으로 선택하여 처리함
- 클래스는 객체들의 협력 관계를 코드로 옮기는 도구!
- 객체의 역할, 책임, 협력에 집중해야 함
- 객체 지향은 객체를 지향하는 것!! (클래스를 지향X)
- 카페 시스템
- 직접 쳐 봐야 하는데 아직.. 강의만 받아 적고 혼자 해보진 않았음...ㅜ
오늘 배운 내용
- 객체지향 프로그래밍
- 프로그램을 유연하고 변경하기 쉽게 만듦
- 다형성 : 클라이언트를 변경하지 않고 내부 기능을 변경함
- SOLID
- 단일 책임 원칙(SRP) : 한 클래스에는 하나의 책임만 가져야 함(책임의 기준 : 변경)
- 개방/폐쇄 원칙(OCP) : 확장에는 열려있지만 변경에는 닫혀있음
- ex. 템플릿 메소드 패턴
- 알고리즘의 구조를 메서드에 정의하고, 하위 클래스에서 알고리즘 구조의 변경 없이 알고리즘을 재정의하는 패턴
- 즉, 전체적으로는 동일하면서 부분적으로는 다른 구문으로 구성된 메서드의 코드 중복을 최소화할 때 유용함.
- 역할
- AbstractClass
- 템플릿 메서드를 정의하는 클래스
- 하위 클래스에 공통 알고리즘을 정의하고 하위 클래스에서 구현될 기능을 primitive 메서드 또는 hook 메서드로 정의함
- ConcreteClass
- 물려받은 primitive 메서드 또는 hook메서드를 구현하는 클래스
- 상위 클래스에 구현된 템플릿 메서드의 일반적인 알고리즘에서 하위 클래스에 적합하게 primitive 메서드나 hook 메서드를 오버라이드함
- 리스코프 치환 원칙(LSP) : 하위 타입은 언제나 상위 타입으로 교체할 수 있음
- 인터페이스 분리 원칙(ISP)
- 의존 관계 역전 원칙(DIP)
느낀점
- 언제나 할 일이 많다...~ 이해가 느린 건지 집중을 못하는 건지..? 왜 오늘 이거밖에 못했지.....? 당황스럽네
- 이래가지곤 팀 프로젝트를 잘할 수 있을까? ㅠ,.ㅠ
- 퐈이팅하좌,,,,~