-
[클래스 / Class] 클래스(Class)의 기본Software/Implementation Pattern 2019. 6. 4. 00:52반응형
"현실 세계에 존재하는 것은 클래스(Class)의 인스턴스(Instance)일 뿐이다"
- 플라톤 -
객체 지향 프로그램은 위 플라톤이 말한 후기 서양 철학의 클래스와 인스턴스의 아이디어를 도입하였다. 여기서 클래스는 비슷한 성질을 가진 모든 것을 총칭하는 단어이고 객체는 이러한 클래스를 구체한 것이라 할 수 있다. 객체 지향 프로그램에서 클래스와 객체가 가지는 의미와 중요성은 매우 크며 실제 프로그램 구현 패턴에서도 클래스 관련 구현 패턴이 가장 많은 양을 차지하고 있다.
클래스의 사용 이유
객체 지향 프로그래밍에서 클래스를 사용하는 이유는 명확하다. 그건 바로 로직에 비해 데이터의 변화가 빈번하게 이루어 지기 때문이다.
"클래스의 로직과 데이터는 함께 사용되며, 로직은 데이터에 비해 변화율이 낮다. 클래스 내부의 데이터는 관련 로직에 의해 변화하며, 클래스 내부에서 사용하는 데이터의 변화율은 비슷하다"
클래스 계층 구성
일반적인 대부분의 경우에 위의 말은 맞다. 그러나데이터의 변화율이 로직에 비해 높다는 말이 절대적인 것은 아니다. 때로 로직은 데이터에 의존적으로 변화기도 하고, 더 큰 단위에서 변화하기도 한다. 그렇기에 객체를 사용해서 효과적인 프로그래밍을 하기 위해서는 로직을 클래스 단위로 어떻게 구성해야 하는 지, 로직 사이의 차이점을 어떻게 효과적으로 표현해야 하는 지 배워야 한다.
클래스 계층을 구성하는 것은 일종의 압축 기법을 사용하는 것이다. 클래스 계층의 사용은 상위 클래스의 코드를 모두 하위 클래스에 붙여 넣는 것과 같은 효과이기 때문에 코드의 직관성이 떨어지고 난해해 진다.
선별적인 상속 사용
클래스 계층이 무분별하게 존재하는 경우 하위 클래스를 이해하기 위해서는 상위 클래스를 먼저 이해해야 하기 때문에 코드를 읽기가 어려워 진다. 그러므로 효과적인 객체 지향 프로그래밍을 하기 위해서는 선별적으로 상속을 사용해야 한다. 객체 지향 프로그램의 설계 요소 중 클래스는 비교적 값이 비싼 편에 속하므로 중요도가 높고 의미가 있는 작업에 사용하는 것이 중요하다.
참조: 켄트 벡의 구현 패턴 : 읽기 쉬운 코드를 작성하는 77가지 자바 코딩 비법
반응형