-
Notifications
You must be signed in to change notification settings - Fork 250
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[2단계 - 사다리 게임 실행] 히이로(문제웅) 미션 제출합니다. #210
Merged
Merged
Changes from all commits
Commits
Show all changes
97 commits
Select commit
Hold shift + click to select a range
9f9aaa1
test: Disabled 어노테이션 제거 및 관련 내용 javadoc 추가
MoonJeWoong 397377b
refactor: Ladder 클래스 내 Line 객체 생성 시 불필요한 객체 생성 수정
MoonJeWoong 2852a6a
test: Name 클래스 간 단순 비교 기능 삭제
MoonJeWoong 4e5f327
refactor: Name 클래스 간 단순 비교 기능 삭제
MoonJeWoong 771c87a
style: OutputView 클래스 가독성 개선
MoonJeWoong 4456d2a
style: LadderTest 클래스 가독성 개선
MoonJeWoong 6521999
refactor: LadderStep Enum 관련 기능 OutputView로 이관 처리
MoonJeWoong a195e3c
refactor: OutputView에 LadderStep Enum 관련 기능 이관
MoonJeWoong b2df98b
docs: 2단계 미션 요구사항 기능 명세 추가
MoonJeWoong 680ed76
test: Result 객체 생성 성공 테스트 추가
MoonJeWoong 5e296dd
feat: Result 객체 생성 기능 추가
MoonJeWoong 6e95d95
test: 사다리 게임 결과는 최대 5글자까지 부여하는 기능 테스트 추가
MoonJeWoong dd2cfa4
feat: 사다리 게임 결과는 최대 5글자까지 부여하는 기능 추가
MoonJeWoong 787d6dd
test: 단순 getter 추가를 위한 javadoc 작성
MoonJeWoong 7f08712
feat: Result 클래스 내 데이터 출력을 위한 getter 추가
MoonJeWoong 2362a64
test: Results 객체 생성 성공 테스트 추가
MoonJeWoong cf33acb
feat: Results 객체 생성 기능 추가
MoonJeWoong f7b040f
docs: readme 기능 명세 추가 및 수정
MoonJeWoong c0d2848
test: 게임 결과 값의 수와 전체 사람 수의 동일 여부 검증 기능 테스트 추가
MoonJeWoong 2e1a575
feat: 게임 결과 값의 수와 전체 사람 수의 동일 여부 검증 기능 추가
MoonJeWoong aa03839
docs: readme 요구사항 기능 명세 추가
MoonJeWoong 3f8f46e
test: 사다리 게임 결과는 쉼표를 기준으로 입력받는 기능 테스트 추가
MoonJeWoong 8b3fe04
feat: 사다리 게임 결과는 쉼표를 기준으로 입력받는 기능 추가
MoonJeWoong d343d02
test: Results 일급 컬렉션 요소 값 Result 테스트 항목 추가
MoonJeWoong 4a01626
refactor: Results 일급 컬렉션 요소 값 Result로 변경
MoonJeWoong 2753486
test: 사다리 게임의 개인 결과를 저장하는 기능 테스트 추가
MoonJeWoong 34be038
feat: 사다리 게임의 개인 결과를 저장하는 기능 추가
MoonJeWoong 89289b2
test: 기존 Results 클래스를 팩토리화한 기능 테스트 코드로 수정
MoonJeWoong 8099cfd
refactor: 기존 Results 클래스를 팩토리화
MoonJeWoong b8a348d
test: 기존 Names 클래스를 팩토리화한 기능 테스트 코드로 수정
MoonJeWoong 34982f2
refactor: 기존 Names 클래스를 팩토리화
MoonJeWoong 5651db3
refactor: Names, Results 클래스 팩토리화로 인한 수정사항 반영
MoonJeWoong c8ba7a2
fix: 플레이어 이름 출력 형식 불일치 문제 수정
MoonJeWoong d854d6e
test: LadderHeight 테스트 Disabled 어노테이션 삭제 및 javadoc 추가
MoonJeWoong 49a089b
test: 사람 이름 간 비교 기능 테스트 추가
MoonJeWoong 4806549
feat: 사람 이름 간 비교 기능 추가
MoonJeWoong 0dc007e
test: 테스트 메서드 담당 기능 변경
MoonJeWoong c252c98
feat: 참여자의 이름정보가 일치하는지 확인할 수 있는 기능 추가
MoonJeWoong 418fcd6
test: 참여자의 이름을 검색하여 해당 참여자의 정보를 반환하는 기능 테스트 추가
MoonJeWoong 06a8af4
feat: 참여자의 이름을 검색하여 해당 참여자의 정보를 반환하는 기능 추가
MoonJeWoong 023b401
test: 존재하지 않는 이름을 검색한 경우 예외 처리 기능 테스트 추가
MoonJeWoong ede4a91
feat: 존재하지 않는 이름을 검색한 경우 예외 처리하는 기능 추가
MoonJeWoong de039eb
docs: 사다리 게임 진행을 위한 기능 명세 추가
MoonJeWoong 03e11d0
test: Position 객체 생성 성공 테스트 추가
MoonJeWoong 58db252
feat: Position 객체 생성 기능 추가
MoonJeWoong 3f8c8b5
test: 주어진 위치 값과의 동일 여부를 알 수 있는 기능 테스트 추가
MoonJeWoong fdaf028
feat: 주어진 위치 값과의 동일 여부를 알 수 있는 기능 추가
MoonJeWoong 36a096b
test: 참여자의 현재 위치와 주어진 위치 값의 동일 여부 확인 기능 테스트 추가
MoonJeWoong 08736c9
feat: 참여자의 현재 위치와 주어진 위치 값의 동일 여부 확인 기능 추가
MoonJeWoong a6dc347
test: 참여자 간 위치를 변경하는 기능 테스트 추가
MoonJeWoong 6836a49
feat: 참여자 간 위치를 변경하는 기능 추가
MoonJeWoong bc6f4de
docs: 기존 구현 기능 및 명세 수정
MoonJeWoong 67e9b0c
test: 기존 기능 변경으로 인한 테스트 코드 삭제 및 추가
MoonJeWoong e11bf9b
feat: 사다리 라인에 따라 참여자 현재 위치를 바꾸는 기능 추가
MoonJeWoong 7c834ec
test: 사다리 타기가 완료된 참여자의 위치에 맞는 결과 저장 기능 테스트 추가
MoonJeWoong 655713b
feat: 사다리 타기가 완료된 참여자의 위치에 맞는 결과 저장 기능 추가
MoonJeWoong 41bf61c
test: 참여자 이름을 검색하여 최종 결과 반환 기능 테스트 추가
MoonJeWoong 03f69f0
test: 존재하지 않는 이름을 검색한 경우 예외 처리 기능 테스트
MoonJeWoong efd60e8
docs: 참여자 이름 중복 여부 검사 기능 명세 추가
MoonJeWoong c658104
test: 참여자 이름 중복 여부 검사 기능 테스트 코드 추가
MoonJeWoong 47640f9
feat: 참여자 이름 중복 여부 검사 기능 추가
MoonJeWoong 8a8070c
test: 도메인 객체 상태 값 반환 타입을 Wrapper Type으로 수정
MoonJeWoong 4499a59
refactor: 도메인 객체 속성 값 반환 타입 wrapping 타입으로 변경
MoonJeWoong 5ab617c
feat: view에 wrapping 타입 unwrap 기능 추가
MoonJeWoong 5e459a3
feat: controller에 실행결과 입력 기능 추가
MoonJeWoong 1080d1f
feat: 사다리 게임 실행 결과를 입력 받는 기능
MoonJeWoong aa4b485
feat: controller에 사다리 게임 실행 결과를 출력하는 기능 추가
MoonJeWoong 6934ba3
feat: 사다리 게임 실행 결과 출력 기능 추가
MoonJeWoong ee0899f
feat: 컨트롤러에 사다리 게임 진행을 완료하는 기능 추가
MoonJeWoong 7ed9a95
docs: 사다리 게임 결과를 각 참여자에게 저장하는 기능 명세 추가
MoonJeWoong 1555ae8
feat: controller에 사다리 게임 결과를 각 참여자에게 저장하는 기능 추가
MoonJeWoong 241138c
feat: controller에 결과를 보고 싶은 사람을 입력받는 기능 추가
MoonJeWoong 0c862f4
feat: 결과를 보고 싶은 사람을 입력받는 기능 추가
MoonJeWoong 74485f3
feat: controller에 참가자 개인 결과를 출력하는 기능 추가
MoonJeWoong 1bff394
feat: 참가자 개인 결과를 출력하는 기능 추가
MoonJeWoong f6ebaab
feat: controller에 모든 참가자의 결과를 출력하고 프로그램 종료 기능 추가
MoonJeWoong 2ccad6d
feat: 모든 참가자의 결과를 출력하고 프로그램 종료 기능 추가
MoonJeWoong 7095a6f
fix: 사다리 높이 입력 이후 개행문자 삭제를 위한 버퍼 초기화 기능 추가
MoonJeWoong cc27996
feat: controller에 사다리 생성 결과 메세지 출력 기능 추가
MoonJeWoong e524eda
feat: 사다리 생성 결과 메세지 출력 기능 추가
MoonJeWoong 51099a6
test: 테스트 메서드 명에 누락된 Test 추가
MoonJeWoong b155bb0
style: 프로젝트 패키지 구조 변경 및 코드 스타일 개선
MoonJeWoong 03130e4
refactor: controller에서 참가자 개인의 결과를 반복 출력하는 기능 분리
MoonJeWoong 8a67ae7
test: LadderTest 메서드 공통 부분 BeforeEach로 분리
MoonJeWoong 3f159ad
test: 단순 반복 작업 리팩토링 및 Disabled 메서드 주석화
MoonJeWoong 1c4a766
docs: view 관련 누락된 체크리스트 완료 표시
MoonJeWoong 6f316db
refactor: 기존 factory 클래스의 역할을 view에게 위임
MoonJeWoong 7bfe376
style: 컨벤션에 따른 패키지 명 변경
MoonJeWoong 48ffde4
refactor: vo 객체 내부 getter 메서드 명 수정
MoonJeWoong ca5cd24
refactor: Position 객체 내부 매서드 명 수정
MoonJeWoong 0968649
refactor: NPE 방어를 위한 Player 내 속성 값 비교 메서드 수정
MoonJeWoong faa401b
refactor: players 내 속성 값 비교 메서드 수정
MoonJeWoong 4e860fd
test: 기존 factory 클래스 삭제로 인한 테스트 코드 수정
MoonJeWoong 902d698
test: 사용하지 않는 테스트 코드 내용 삭제
MoonJeWoong a8d0972
mini mission: 리스트 미션 구현 완료
MoonJeWoong e6a874c
feat: Name 객체간 논리적 동치성 보장을 위한 equals & hashCode 구현
MoonJeWoong d899bef
refactor: 기존 controller 게임 실행 로직 LadderGame 클래스로 분리
MoonJeWoong File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
package model.domain; | ||
|
||
import model.vo.Result; | ||
|
||
import java.util.List; | ||
import java.util.stream.IntStream; | ||
|
||
public class LadderGame { | ||
private Players players; | ||
private Ladder ladder; | ||
private List<Result> results; | ||
|
||
public LadderGame(Players players, Ladder ladder, List<Result> results) { | ||
this.players = players; | ||
this.ladder = ladder; | ||
this.results = results; | ||
} | ||
|
||
public Players getPlayersAfterPlay() { | ||
play(); | ||
return players; | ||
} | ||
|
||
private void play() { | ||
IntStream.range(0, ladder.getHeight()) | ||
.forEach(index -> playOneLine(players, ladder.getLine(index))); | ||
players.saveAllResults(results); | ||
} | ||
|
||
private void playOneLine(Players players, Line line) { | ||
players.moveAllPlayersByLinePoints(line.getPoints()); | ||
} | ||
} |
2 changes: 1 addition & 1 deletion
2
src/main/java/model/Line.java → src/main/java/model/domain/Line.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,4 @@ | ||
package model; | ||
package model.domain; | ||
|
||
import java.util.ArrayList; | ||
import java.util.List; | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
package model.domain; | ||
|
||
import model.vo.Name; | ||
import model.vo.Position; | ||
import model.vo.Result; | ||
|
||
public class Player { | ||
private final Name name; | ||
private Result result; | ||
private Position position; | ||
|
||
public Player(final Name name, final Position position) { | ||
this.name = name; | ||
this.position = position; | ||
} | ||
|
||
public Name getName() { | ||
return name; | ||
} | ||
|
||
public Result getResult() { | ||
return result; | ||
} | ||
|
||
public void saveResult(final Result result) { | ||
this.result = result; | ||
} | ||
|
||
public boolean isSameName(Name other) { | ||
return this.name.isSame(other); | ||
} | ||
|
||
public boolean isSamePosition(Position other) { | ||
return this.position.isSame(other); | ||
} | ||
|
||
public void changePositionWith(Player otherPlayer) { | ||
Position temporaryPosition = otherPlayer.position; | ||
otherPlayer.position = this.position; | ||
this.position = temporaryPosition; | ||
} | ||
} |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Player
가Result
의 책임을 가지고 있는 것이 맞을까요 ?처음 결과가 주어지기 전 result가 비어있는 '데이터 무결성이 깨지는 상태'가 너무 오래 지속되지 않을까 해요.
Player와 Result의 매핑정보를 알고 있는 것은 어떤 객체가 되면 좋을지 한번 고민해봅시다 😊
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Players에게 과도한 책임이 부여되는 문제가 발생하면서 같이 생긴 문제라고 생각합니다. 여기도 Player가 Players 외부에 반환되어 게임 진행 이후에 result 객체와 맵핑할 수 있는 객체를 설계한다면 해결할 수 있는 부분이라고 생각됩니다. 해당 부분은 Players에 달아주신 코멘트에 대한 답변을 듣고 수정해보고 싶어 일단은 그대로 두었습니다!