
2025년 3월 21일의 고민 노션에서 옮겨오고 있습니다.
고민
농부 클래스와 농작물 클래스가 있다. 농부는 많은 농작물을 가질 수 있어서 농작물과 농부는 다대일 단방향 매핑을 했다. 외래키는 농작물에 있다.
이때 농작물의 좌표를 바꾼다(농작물을 옮겨심는다)라는 기능은 농부 클래스에 있어야 할까? 농작물 클래스에 있어야할까?
농부가 농작물을 옮겨 심는다는게 자연스럽지만 농부 레포지터리에서 농작물 레포지터리에 접근해서 해당 농부가 가지고 있는 농작물을 조회하고 그 농작물의 id를 골라 좌표를 바꿔야한다.
농작물에 농작물을 옮겨 심는다는 기능을 넣으면 좀 이상하지만 농작물 레포지터리에서 농작물 id를 찾고 좌표 바꾸면 끝이다.
농작물이 무생물이라 조금 헷갈린다 좌표 바꾸는 기능은 농작물 클래스에 넣는게 맞는건가?
해결
농작물의 이동은 농작물 클래스에 포함하는 것이 맞다. 현실에서 농작물은 무생물이지만 객체지향 프로그래밍에서 객체의 상태를 변경하는 책임은 객체 자신에게 있어야한다. 즉, 농작물이 팔이 돋아나서 스스로 이동하는 것을 상상하면 안된다.
클래스안에는 기능과 선언이 포함되어있다. 농작물 '객체'를 이동하는 것은 농작물의 기능이고 농작물 클래스에 있어야한다.
'트러블슈팅과 고민' 카테고리의 다른 글
| 실시간 알림 시스템 기술 선택 관한 고민 (2025년 4월 13일) (0) | 2025.08.07 |
|---|---|
| 단일책임원칙에 대한 고민 (1) | 2025.08.06 |
| DB를 거치지 않은 JWT을 통한 사용자 식별에 관해 (2025년 4월 7일) (0) | 2025.08.03 |
| 회원가입 기능 설계에 대한 고민 (2025년 3월 29일) (0) | 2025.08.03 |
| 토큰 보안에 관한 고민 (2025년 3월 23일) (0) | 2025.08.03 |