티스토리 뷰
우리가 열심히 노력해서 결과를 만들었으면, 그 다음을 위해서는 반드시 자신의 결과물에 대해서 피드백이 필요하다고 생각한다.
어쨋든 나는 chessGame 프로젝트 소스코드와 이 프로젝트의 설계 의도(?)를 ChatGPT에게 보낸 후, 피드백을 "현실적"으로 해달라고 했다.
잘한 점도 물론 있었지만, 부족한 점, 못한 점이 당연히 훨씬 많았다 ㅋㅋㅋㅋㅋㅋ
어쨋든 앞으로 내가 기억해야할 점에 대해서 정리해보자.
★ 다형성 부족!!
소스코드를 보면 알겠지만, 나는 어떤 자리에 체스기물을 놓을 수 있는지 검사하는 로직을 ChessBoard클래스에 switch의 case를 이용하여 분리하였다.
하지만, 이것은 곳 switch 지옥의 지옥이었다( 물론, 작은 프로젝트이기에 지옥까지는 아니지만, 프로젝트가 더 커진다면 충분히 "지옥"이라고 생각한다 ㅋㅋ).
↓ (해결법)
일단 우선 자세한 설명버전으로 gpt 설명을 복분해보겠다.



즉, chessPiece라는 "추상클래스"를 만든 후, "자식클래스"로 Pawn, Bishop 등의 piece를 만든다.
그리고, 자식클래스에 canMoveHere()과 같은 메서드를 구성한다.
이렇게 설계를 한다면, service에서는 흐름제어를 할때도 편할 것이고, 나중에 기능을 추가할 때로 훨씬 편해질 것이다.
무엇보다도, 현재 가장 큰 문제인 "ChessBoard클래스에 switch를 통해서 모든 piece의 로직을 담당한다는 점"을 해결할 수 있다.
솔직히 이렇게 설계하는 것을 처음에 고민하긴 했지만, 다형성이라는 개념도 잘몰랐고, 왜 필요한지도 몰랐었는데,
뭔가 맨땅의 헤딩을 겪고 나니 이제야 뭔가 깨달음을 얻은거 같다 ㅋㅋ
나머지 문제점도 있긴하지만, 일단 현재 기억해야할 가장 중요한 점인
"추상클래스, 자식클래스, 오버라이딩을 활용한 다형성 구현!"만을 일단은 정리할 생각이다.
추가로, 또또! 헷갈린 객체 선언 방식에 대해서 질문한 내용도 사진으로 붙여보겠다.

기억하자!!!!

-----------------------------------
수고했따~
'코딩 프로젝트 & 설계' 카테고리의 다른 글
| new 프로젝트 계획!! ( 2025/11/06 ) (0) | 2025.11.06 |
|---|---|
| 도메인 객체의 유효성 검사, 어디서 해야할까? (0) | 2025.10.07 |
| 체스게임을 자바로 만들어보았다. (0) | 2025.10.02 |
| 노트북 수리 이슈 + chessGame 진행상황(3) (0) | 2025.10.01 |
| 현재 chessGame 진행상황(3) (9/21 ~ 9/25( 16시 20분.. )) (1) | 2025.09.25 |