역할,책임,협력관점에서 본 객체지향 - 조영호
서론
자바를 다시 공부중인데 깊게 파고들수록 참 어려운 언어라는 생각이 들어 여러 책들을 찾아보는 중에 읽게 되었습니다.
객체지향에 대해 어느정도 알고 있다고 생각하고 있지만, 막상 설명하려 하니 쉽지 않은듯하여 이 책을 읽고 공부하게 되었습니다.
느낀점
- 객체지향의 기본 개념이 역할, 책임, 협력이며 객체지향이란 시스템을 상호작용하는 자율적인 객체들의 공동체로 바라보고 객체를 이용해 시스템을 분할하는 방법임을 알게 되었음.(자율적인 객체란 상태(변수)와 행위(메서드)를 함께 지니며 스스로 자기 자신을 책임지는 객체를 의미함)
- 객체는 다른 객체와 협력하기 위해 메시지를 전송하고, 메시지를 수신한 객체는 메시지를 처리하는 데 적합한 메서드를 자율적으로 선택한다.
- 왜 클래스 지향이 아니라 객체지향인지는 이해가 갔음. 클래스는 정적이기 때문에 요구사항을 보고 설계하는건 객체여야함. 객체를 보고 정적인 형태의 클래스를 작성하는게 순서상 맞다는 생각이 듬.(순서를 바꿨다간 실제 사용중에 문제를 느끼고 클래스를 수정할 확률이 올라갈 것 같음.)
외워야 할 것
객체지향 설계 원칙 : SOLID
- S : 단일 책임 원칙 : SRP : Single Responsibility Principle
- 하나의 클래스는 단 하나의 책임만 가져야 한다.
- 단일 책임 원칙을 지키지 않을 경우 한 책임의 변경에 의해 다른 책임과 관련된 코드에 영향이 갈 수 있다.
- O : 개방- 폐쇄 원칙 : OCP , Open/ Closed Principle
- 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다.
- 기능을 변경하거나 확장할 수 있으면서 기능을 사용하는 코드는 수정하지 않는다.
- L : 리스코프 치환 원칙 : LSP : Liskov Substitution Principle
- 프로그램 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.
- 상위 타입의 객체를 하위 타입의 객체로 치환해도, 상위 타입을 사용하는 프로그램은 정상적으로 동작해야 한다.
- I : 인터페이스 분리 원칙 : ISP : Interface Segregation Principle
- 범용 인터페이스 하나보다 클라이언트를 위한 여러 개의 인터페이스로 구성하는 것이 좋다.
- 인터페이스는 인터페이스를 사용하는 클라이언트를 기준으로 분리해야 한다.
- 클라이언트가 필요로 하는 인터페이스를 분리함으로써 각 클라이언트가 사용하지 않는 인터페이스에 변경이 있어도 영향을 받지 않도록 만들어야 한다
- # 인터페이스란? : 객체의 서비스에 대해서 미리 약속된 부분
- D : 의존관계 역전 원칙 : DIP : Dependency Inversion Principle
- 추상화에 의존해야지 구체화에 의존하면 안된다.
- 고수준 모듈은 저수준 모듈의 구현에 의존해서는 안되고 저수준 모듈은 고수준 모듈에서 정의한 추상 타입에 의존해야 한다.
'일상 > 책 리뷰' 카테고리의 다른 글
함께 자라기 애자일로 가는 길 - 2 (0) | 2023.08.09 |
---|---|
함께 자라기 애자일로 가는 길 - 1 (1) | 2023.08.02 |
대체 뭐가 문제야 - 리뷰 - 2 (2) | 2023.07.19 |
대체 뭐가 문제야 - 리뷰 - 1 (0) | 2023.07.10 |