본문 바로가기
CS (Computer Science)/독후감 : 객체지향의 사실과 오해

2일차 (3장) - 클래스와 객체의 관계. 클래스는 타입을 구현하는 방법 중 하나

by 우인입니다 2023. 11. 15.

 

3장의 전반부에서는 지하철 노선도의 예시로 추상화의 중요성에 대한 얘기를 시작했다.

중반부에서는 타입의 개념과 함께 비트열에서부터 출발해서 타입의 등장을 설명한다.

 

숫자의 값을 떠나서 어떤 데이터에 어떤 연산자를 사용할 수 있는 지가 그 데이터의 타입을 결정한다.

이는 얘기를 곧 객체의 행동의 중요성으로 연결짓는다. 객체의 상태는 단순히 행동의 결과로 초래된 부수효과를 쉽게 표현하기 위함을 반복하여 언급한다.

 

이 객체의 행동의 중요성은 또 다시 다형성으로 개념이 연결된다.

같은 타입의 객체는 행동만 동일하다면 서로 다른 데이터를 갖을 수 있다. 동일한 행동이란 동일한 책임, 이는 동일한 메시지 수신을 의미한다. 즉, 데이터 처리방식은 다르더라도 동일한 메시지를 수신하고 처리한다.

 

이 부분에서 이전 다형성 공부당시 자바를 통해 같은 메소드를 통해서도 다른 결과값을 출력했던 예제가 기억났다.

 

일반화, 추상화.

외연의 크기, 내연의 크기.

슈퍼타입, 서브타입 등 다양한 개념을 통해 상속관계에 대해 의미를 확장시켜나가는 것을 느꼈고, 그 기준이 되는것은 행동이라고 계속하여 일관되게 강조하고 있다.

 

끝으로, 계속하여 언급했던 타입을 구현할 수 있는 것이 클래스라고 연관짓는다.

이는 타입이 곧 클래스라는 것이 아닌, 구현할 수 있는 수단이 클래스라고 재차 강조한다.

 

객체지향 프로그래밍 언어를 이용해 클래스를 작성하는 시점에는 시스템을 정적인 관점에서 접근하는 것이다. 그러나 실제로 애플리케이션을 실행해 객체의 상태 변경을 추적하고 디버깅하는 동안에는 객체의 동적인 모델을 탐험하고 있는 것이다.

 

타입을 사용하면 각 객체의 상태를 정적인 관점에서 표현할 수 있다.

동적으로 변하는 객체의 '상태'와 상태를 변경하는 '행위'는 객체지향에서 가장 중요하다.

 

3장은 클래스와 객체를 혼동했던 시기를 되돌아보게 했다. 클래스를 붕어빵틀, 객체를 붕어빵이라고 예시를 들곤하던 간단했던 설명에서 좀 더 구체적인 개념과 그 정의에 따른 분류들이 이해하는 데 도움을 줬다.