객체지향 사고 프로세스
맷 와이스펠드 지음 / 박진수 옮김
JPUB
목차
클래스 해부하기
클래스는 고립된 섬같은 독립적인 객체가 아니라 서로 상호작용하고 소통하는 개체이기 때문에 무작정 설계하면 안된다. 객체는 인스턴스화를 하고 나면 다른 객체와 소통을 하게 된다.
클래스의 이름
이름만 보고도 해당 클래스가 어떤 것인지를 알 수 있어야 한다.
또한 Java의 경우에는 공개(public) 클래스의 이름이 파일의 이름과 같아야 하는데, 같지 않으면 컴파일이 되지 않는다.
속성
속성은 객체의 상태를 나타낸다고 볼 수 있으며 private
와 static
두개의 키워드를 사용할 수 있다.
private는 선언 객체 내에서만 메서드나 변수에 접근 할 수 있다는 것이다.
static은 이 클래스로 인스턴스화해서 만든 모든 객체에 대해 이 속성이 사본 하나만 가지고 있다는 것이다. 일종의 전역변수라고 생각하자. 하지만 static은 절대 쓰면 안되는 키워드인데 자세한 내용은 엘레강트 오브젝트에서 작성 하도록 하겠다.
생성자
생성자의 경우 chapter_3에서도 정리를 하였으니 참고하자.
다만 꼭 기억해야 할점은 생성자는 필수로 작성하도록 해야 한다는 것이다. 생성자를 작성하지 않고 기본 생성자를 사용할 경우 유지/보수에 많은 문제가 발생 할 수 있다.
또한 생성자에서 속성을 항상 초기화 하도록 하자. 중간에 속성을 setter()
로 설정해버리면 해당 코드는 순서에 종속받게 된다. 속성은 중간에 넣지 말고, 항상 초기화 할때 사용하는 코드로 작성하자.
생성자는 반드시 public
으로 선언되야 하는데 클래스의 인터페이스 멤범여야 하므로 어떻게 생각하면 당연한 것이다. 만약 private
로 선언되어 있다면 클래스를 인스턴스화 할 수 없을 것이다.
접근자
일반적으로 클래스를 만들면 대부분의 경우 속성은 private로 정의 되므로 다른 객체가 속성에 직접 접근해서 수정을 할 수 없다.
클래스는 자체 속성을 잘 보호해야 하는데, 다른 클래스가 자신의 클래스를 수정하게 된다면 이는 데이터무결성이 깨지고, 디버깅이 어려워진다.
접근자는 getter, setter가 있으며 이를 통해 데이터 무결성을 보장하는데 사용된다.
접근자는 모두 public으로 선언되어 공개 인터페이스의 일부가 된다.
접근자와 달리 비공개 메서드의 경우에는 일반적으로 내부 함수로 쓰이는데 즉 구현부의 일부로서 사용되는 것이다. 이 메서드들은 객체 외부에서 사용할 수 없는 인터페이스로 객체 내부에서만 쓰이는 함수가 되는 것이다.
위 정리글은 객체지향 사고 프로세스에서 인용한 것입니다.
[ISBN 979-11-90665-21-6]