[Kotlin] 객체 지향과 관련된 의문들

RID·2024년 4월 30일
0

배경


객체지향 프로그래밍을 공부하다 보면 간단한 예시에서는 이해가 되지만 조금 복잡해지면 클래스를 어떻게 나누어야 할지, 어떤 부분을 추상화 해야하는 지, 함수는 어떻게 분리하는 게 좋은 지 헷갈리는 경우가 정말 많다.
이번 글에서는 내가 공부하면서 가졌던 의문들과 튜터님에게 들은 답변을 정리해보자.


1. 등장인물(객체)의 책임이 조금 많은 것과, 더 많은 등장인물이 나타나서 서로의 협력 관계(의존성)가 많아지는 것의 trade-off에서 나은 방향을 판단하는 기준은 무엇인가?

  • 이에 대한 정답은 없고, 계속 고민해야 한다.
  • 내가 만들고자 하는 목표에서 필요한 등장인물에 대한 생각이 그때 그때 다를 수 있기 때문이다. 그래서 리펙토링을 진행하기도 하는 것이다.
  • 적절한 책임을 적절한 개체한테 잘 할당하는 것에 대한 고민을 계속 해야한다.
  • 처음 구상한대로도 짜보고, 이후에 더 좋은 구조가 있으면 바꿔도 보고 해보아야 한다.

2. 계산기 기능같이 '연산'이라는 키워드로 묶여있는 것들의 추상화는 쉬울 것 같다. 근데 그게 아닌 경우에 추상화는 어떻게 진행할까

  • (질문에 대한 피드백) 계산기 기능이 특정 키워드로 묶여있어서 추상화가 된 것이 아니라, 기능을 구현하고 보았을 때 추상화가 필요한 부분이라 진행한 것이다.
  • 그렇기 때문에 단순히 외적인 분류, 구분 등에 의존할 필요는 굳이 없다.

3. 만약 비슷한 기능을 하는 함수들이라 추상화를 하고 싶은데, 각각의 함수의 입력이나 출력의 형태가 모두 다른 경우는 어떻게 하나?

  • 이 경우에는 각 입력과 결과값 역시도 추상화하여 진행한다.
  • 입력 혹은 결과 값에 맞는 객체들을 상속하며 생성하여 해당 부분까지 추상화 할 수 있다.

혼자 고민하는 것보다 직접 질문하다 보니 예상하지 못했던 내용까지도 배울 수 있었고, 훨씬 더 빠르게 익힐 수 있었던 것 같다.

앞으로 객체 지향 공부하면서 생기는 질문들을 고민하고 질문하면서 여기에 답을 해두어야겠다.

0개의 댓글