본문 바로가기
후기

객체지향의 사실과 오해 - 주관적으로 읽기 1

by jucheol 2024. 12. 24.

그동안 시험, 프로젝트 개발에만 급해서 이해하지 못하고 넘어갔던 개념들을 책을 읽으면서 되돌아보려고 한다.

그 첫 번째 책으로 객체지향의 사실과 오해를 선택했다. 사실 작년에 선배에게 읽어보라고 추천 받았던 책인데 바쁘다는 핑계로 계속 미뤄오다 이제 읽게 되었다.

 

지금 객체지향에 대해 설명하라고 하면 " 그거 그냥 클래스 만들어서 서로 연결 시켜서 사용하는 거야 "라고 설명할 것이다. 정확히 어떤 방식으로 동작하고 중요한 점이 무엇인지 설명하라고 하면 잘 모르겠다고 대답한다. 그렇기 때문에 이 책을 읽으면서 스스로의 생각과 알게 된 내용을 글로 적어보려고 한다.


Chapter. 02 - 이상한 나라의 객체

객체는 상태, 행동, 식별자로 이루어져 있다.

1. 상태

상태를 이용하면 과거의 모든 행동 이력을 설명하지 않아도 행동의 결과를 쉽게 예측할 수 있다. 

프로퍼티란?

  • 객체의 상태를 구성하는 모든 특징을 통틀어 객체의 프로퍼티(property)라고 한다.
  • 프로퍼티의 값은 동적으로 바뀐다.
  • 객체의 프로퍼티는 단순한 값인 속성과 다른 객체를 가리키는 링크로 이루어져 있다.

=> 이 내용은 객체로 만든 대상이 가지고 있는 정보를 모두 기록하지 않고 상태를 사용하면 가장 마지막 동작에 따른 정보의 변화를 저장하기 때문이라고 생각한다. 

이를 바탕으로 상태는 데이터 필드이고 이 필드 중 다른 클래스를 이용해 만든 필드를 링크라고 부르는 것 같다.

 

2. 행동

객체의 상태를 변경하기 위한 객체의 자발적 행동

행동과 상태가 서로 영향을 주고 받는다

  • 객체의 행동은 상태에 영향을 받는다
  • 객체의 행동은 상태를 변화시킨다

협력 : 객체가 다른 객체와 상호작용한다

 

=> 행동은 메소드를 의미한다고 생각한다

이때 협력은 다른 클래스에서 선언된 메소드를 사용하는 것을 의미할 것 같다.

 

3. 식별자

객체가 식별 가능하다는 것은 객체를 서로 구별할 수 있는 특정한 프로퍼티가 객체 안에 존재한다. 이 프로퍼티를 식별자라고 한다. 같은 값을 가지고 있어도 식별자가 다르면 다른 객체이다

 

=> new를 통해 생성된 객체들이 서로 다른 객체라는 것은 쉽게 접할 수 있는 개념이다. 사람을 예시로 들어도 우리가 같은 사람에 속하지만 글쓴이와 독자가 서로 다른 사람인 것처럼 말이다.

객체를 기계로 표현

책을 읽는 중 가장 직관적으로 이해되는 부분이었다. 왜 진작 이런 생각을 하지 못했을까?

책에서는 기계의 기능을 사용하기 위해 누르는 버튼을 행동이라고 한다. 이 버튼을 누를 때마다 기계가 가지고 있는 데이터 값이 변경되는 것이다. 이때 변경되는 데이터가 상태이다. 또한 같은 모델의 기계가 여러 개 있을 경우 방금까지 내가 버튼을 이용해 조작하고 있던 기계는 한 개만 존재한다는 것이다. (기계의 식별코드가 식별자라고 생각한다)

 

객체지향은 세상을 모방하여 만드는 것이 아니라 은유를 통해 만드는 것

은유

  • 은유가 현실과 객체지향 사이의 관계를 좀 더 정확히 설명할 수 있다
  • 객체지향을 설명할 때 실제로 적용되지 않는 한 가지 개념을 이용해 다른 개을 서술하는 미화의 한 형태이다

=> 현실 세계를 온전히 객체지향으로 옮기는 것이 아니라 개발자가 상황에 따라 필요한 값을 넣기 때문에 은유로 표현한다고 하는 것 같다. ( 현실 + a = 객체 )

 


소감

2장을 읽는 동안 나름 알고있는 개념이 많이 나와서 좋았다. 특히 기계에 비유한 설명은 학교에서 이렇게 설명해줬으면 더 쉽게 이해할 수 있었을 것이라고 생각한다.

이 책을 읽는동안 가장 노력하는 부분이 최대한 상상하면서 읽는 것이다. 책에 많은 비유가 있지만 내가 쉽게 이해할 수 있는 내용으로 바꿔서 스스로에게 설명하고, 내 생각과 의문점을 나타내려고 최대한 중요하게 생각하며 실행하기 위해 노력하는 중이다.