Home

[OOP] 객체지향 사고 프로세스 Chapter_5. 클래스 설계 지침

객체지향 사고 프로세스

객체지향 사고 프로세스

맷 와이스펠드 지음 / 박진수 옮김

JPUB

목차

클래스 설계 지침

객체지향 프로그래밍이란 단일 엔터티인 데이터와 행위를 캡슐화해 완전한 패키지인 클래스를 만든다는 아이디어에 따른 것이다.

클래스를 설계할 때는 다음과 같은 지침을 따르기를 권한다.

현실 세계 시스템 모델링

객체지향 프로그래밍의 주요 목표 중 하나는 사람들이 실제로 생각하는 방식과 비슷한 방식으로 현실 세계의 시스템을 모델링 하는 것이다.

객체지향 방식은 데이터와 행위가 서로 상호 작용할 수 있게 한 객체 안에 두어 캡슐화 하는 것을 말한다. 해결해야 하는 문제는 사건의 역속 또는 별개로 존재하는 것이 아니다.

상호 작용은 현실 객체간의 상호 작용과 비슷한 방식으로 발생하는데, 따라서 클래스를 만들때 는 객체의 실제 행위를 나타내는 방식으로 클래스를 설계 해야 한다.

공개 인터페이스 식별

잘 설계된 객체의 인터페이스는 클라이언트가 원하는 서비스를 설명한다.

사용자가 필요하지 않는 인터페이스는 제공할 필요가 없다. 정말로 필요한 인터페이스만 최소로 공개해야 하는 것이다.

코드 사용자는 내부에서 어떻게 작업이 이뤄지는지 알 필요가 전혀 없다. 객체를 인스턴스화해서 사용하는 방법만 알면 된다. (캡슐화)

또한 코드 사용자는 구현부에 전혀 관여가 되지 않도록 설계 해야 한다.

튼튼한 생성자나 소멸자가 되게 설계하기

생성자를 꼭 작성해서 객체를 초기화 시키자.

생성자 주입(constructor injection)이란 서비스 클래스를 클래스 내에 두는게 아니라 (생성자를 통해) 객체를 생성할 때 (new 키워드를 사용해) 생성자에 주입한다는 것을 의미한다.

클래스에 대한 오류 처리 설계

객체를 생성할때 오류를 무시하지 않고 처리 할 수 있도록 코드를 작성해야 하며 애플리케이션은 중단되면 안된다. 사용자가 스스로 오류처리를 한뒤 다시 사용할 수 있도록 설계 되야 한다.

재사용을 고려한 설계

재사용을 염두해두고 코드를 작성하자. (딱히 기억할게 없다.. -_-)

확장성을 고려한 설계

확장성을 염두해두고 코드를 작성하자. (딱히 기억할게 없다.. -_-)

유지보수를 고려한 설계

유지보수성을 높이는 가장 좋은 방법은 서로 의존성을 줄이는 것이다. 의존성을 줄인 다는 것은 한 클래스의 변경 사항이 다른 클래스에 영향을 미치지 않거나 최소한의 영향을 미치도록 해야 한다는 것이다.

코드 크기를 작게 해서 작성한 다음 각 단계별로 코드를 빌드하고 테스트하자. 테스트를 잘 작성해 놓으면 인터페이스가 충분하지 않은 영역을 빨리 찾아 낼 수 있다.

스텁(stub)이란 인터페이스를 최소한으로 구현한 것을 의미한다. 이를 사용하면 실제 코드를 작성하지 않고도 인터페이스를 테스트 할 수 있다.

객체 지속성 사용

지속성(persistence)이란 객체의 상태를 유지한다는 개념이다. 이는 비즈니스 시스템에서 객체를 나중에 사용하기 위하여 객체의 상태를 저장하는 것을 의미한다.

XML, JSON, 또는 RDS, NoSQL 등을이용해 객체를 저장하고 이를 꺼내 쓰곤 한다.


위 정리글은 객체지향 사고 프로세스에서 인용한 것입니다.

[ISBN 979-11-90665-21-6]

Loading script...