Head First Object-Oriented Analysis & Design


5장.좋은 디자인 = 유연한 소프트웨어


-추상클래스는 실제 구현 클래스를 위한 저장 장소.
-추상클래스는 기능을 정의하고, 그 기능은 서브 클래스가 구현
-두 개 이상의 클래스에서 공통된 행동(기능)을 발견할때마다, 그 행동을 하나의 클래스로 추상화하여
그 행동(기능)을 재사용하도록 하기


-인터페이스:여러 타입에 적용되는 행동을 정의하는 역할, 그 여러타입을 사용하는 클래스들의 관심의 초점을 나타내는 역할의 두 가지 역할이 있음.
-구현보다 인터페이스에 의존하도록 코딩하는 것이 소프트웨어 확장이 용이
-인터페이스에 의존하도록 코딩하면, 여러분의 코드는 인터페이스의 서브 클래서 모두-심지어 아직 만들지 않은 클래스와도 와 잘 동작할 것임.


-캡슐화:객체의 행동 변화에 필요한 코드 변경을 국한하여, 어떤 객체지향 원리보다도 유지보수에서 생기는 문제를 막는 책임을 지고 있음.

-여러분의 클래스를 불필요한 변경으로부터 보호


-변경:모든 클래스가 이것(소프트웨어의 많은 잘못 설계된 부분 없애기)에 대해 하나의 이유만을 갖도록 해야함.

-너무 많은 일을 하려고 하면 안됨.

-각 클래스가 하나의 일만을 하도록 할 수 있는지 알기


-객체지향원리

변하는 것을 캡슐화하라

구현에 의존하기보다는 인터페이스에 의존하도록 코딩하라

각 클래스는 변경 요인이 오직 하나이어야 한다


-소프트웨어에 유연성을 추가하기 위해 기본적인 객체지향 원리들을 적용하라

-변경되는 것을 캡슐화하여, 프로그램을 더 유연하고 변경이 용이하게 만듬.

-객체들 사이에 변하는 속성들이 있을 때, Map같은 콜렉션을 사용해서 속성들을 동적으로 저장하기.

-새로운 속성들이 여러분의 클래스에 추가되어도, 메소드들을 추가하거나 코드를 변경할 필요가 없음

-응집된 클래스는 하나의 일을 정말 잘하고 그 외의 일은 하려고 하지도 않습니다.

Posted by 용학도리
,