Skip to content
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단계 - 사다리(생성) #1601

Open
wants to merge 12 commits into
base: jimbaemon
Choose a base branch
from
Prev Previous commit
Next Next commit
refactor: 컨벤션 정리.
jimbaemon committed Nov 7, 2022
commit 38370f1944168fb75cd9f490bf800ba1cf4e28a6
Original file line number Diff line number Diff line change
@@ -12,14 +12,14 @@

public class LadderGameController {

public static void main(String[] args) {
String[] strings = Input.inputPlayers();
Players players = Arrays.stream(strings)
.map(Player::new)
.collect(Collectors.collectingAndThen(Collectors.toList(), Players::new));
public static void main(String[] args) {
String[] strings = Input.inputPlayers();
Players players = Arrays.stream(strings)
.map(Player::new)
.collect(Collectors.collectingAndThen(Collectors.toList(), Players::new));

Ladder ladder = new Ladder(Input.inputLadderHeights(), players.number());
Ladder ladder = new Ladder(Input.inputLadderHeights(), players.number());

Output.outputResult(ladder, players);
}
Output.outputResult(ladder, players);
}
}
29 changes: 14 additions & 15 deletions src/main/java/nextstep/ladder/model/Ladder.java
Original file line number Diff line number Diff line change
@@ -4,22 +4,21 @@
import java.util.List;

public class Ladder {
private final List<Lines> lines;
private final List<Lines> lines;

public Ladder(final int numberOfFloors, final int numberOfPlayers) {
List<Lines> result = new ArrayList<>();
for (int i = 0; i < numberOfFloors; i++) {
result.add(new Lines(numberOfPlayers));
}
this.lines = result;
}
public Ladder(final int numberOfFloors, final int numberOfPlayers) {
List<Lines> result = new ArrayList<>();
for (int i = 0; i < numberOfFloors; i++) {
result.add(new Lines(numberOfPlayers));
}
this.lines = result;
}

public int numberOfFloors() {
return lines.size();
}

public int numberOfFloors() {
return lines.size();
}

public List<Lines> getLines() {
return lines;
}
public List<Lines> getLines() {
return lines;
}
}
2 changes: 1 addition & 1 deletion src/main/java/nextstep/ladder/model/Line.java
Original file line number Diff line number Diff line change
@@ -37,7 +37,7 @@ public int hashCode() {

@Override
public String toString() {
if(hasLine){
if (hasLine) {
return "-----|";
}
return " |";
4 changes: 2 additions & 2 deletions src/main/java/nextstep/ladder/model/Lines.java
Original file line number Diff line number Diff line change
@@ -16,13 +16,13 @@ public Lines(final int countOfPlayer) {
}

private Line getPrevLine(final List<Line> result, final int i) {
if(i == 0){
if (i == 0) {
return null;
}
return result.get(i - 1);
}

public int size(){
public int size() {
return lines.size();
}

26 changes: 13 additions & 13 deletions src/main/java/nextstep/ladder/model/Players.java
Original file line number Diff line number Diff line change
@@ -4,20 +4,20 @@
import java.util.stream.Collectors;

public class Players {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

toString을 올바르게 사용한다면 현재 Players 일급컬렉션은 큰 의미를 가지기가 어려울 것 같아요!!

private List<Player> players;
private List<Player> players;

public Players(List<Player> players) {
this.players = players;
}
public Players(List<Player> players) {
this.players = players;
}

public int number() {
return players.size();
}
public int number() {
return players.size();
}

@Override
public String toString() {
return players.stream()
.map(Player::toString)
.collect(Collectors.joining());
}
@Override
public String toString() {
return players.stream()
.map(Player::toString)
.collect(Collectors.joining());
}
}
47 changes: 23 additions & 24 deletions src/main/java/nextstep/ladder/view/Input.java
Original file line number Diff line number Diff line change
@@ -4,29 +4,28 @@
import java.util.Scanner;

public class Input {
private final static Scanner SCANNER = new Scanner(System.in);
private final static String SEPARATOR = ",";

private Input() {
}

public static String[] inputPlayers(){
System.out.println("참여할 사람 이름을 입력하세요. (이름은 쉼표(,)로 구분하세요)");
String players = nextLine();
System.out.println();
return players.split(SEPARATOR);
}

public static int inputLadderHeights(){
System.out.println("최대 사다리 높이는 몇 개인가요?");
String height = nextLine();
System.out.println();
return Integer.parseInt(height);
}

private static String nextLine(){
return SCANNER.nextLine();
}

private final static Scanner SCANNER = new Scanner(System.in);
private final static String SEPARATOR = ",";

private Input() {
}

public static String[] inputPlayers() {
System.out.println("참여할 사람 이름을 입력하세요. (이름은 쉼표(,)로 구분하세요)");
String players = nextLine();
System.out.println();
return players.split(SEPARATOR);
}

public static int inputLadderHeights() {
System.out.println("최대 사다리 높이는 몇 개인가요?");
String height = nextLine();
System.out.println();
return Integer.parseInt(height);
}

private static String nextLine() {
return SCANNER.nextLine();
}

}
22 changes: 11 additions & 11 deletions src/main/java/nextstep/ladder/view/Output.java
Original file line number Diff line number Diff line change
@@ -8,16 +8,16 @@
import java.util.List;

public class Output {
private Output() {
}
private Output() {
}

public static void outputResult(Ladder ladder, Players players){
System.out.println(players);
List<Lines> lines = ladder.getLines();
for (Lines line : lines) {
System.out.print(" |");
System.out.print(line);
System.out.println();
}
}
public static void outputResult(Ladder ladder, Players players) {
System.out.println(players);
List<Lines> lines = ladder.getLines();
for (Lines line : lines) {
System.out.print(" |");
System.out.print(line);
System.out.println();
}
}
}
54 changes: 27 additions & 27 deletions src/main/java/nextstep/optional/Computer.java
Original file line number Diff line number Diff line change
@@ -1,39 +1,39 @@
package nextstep.optional;

public class Computer {
private Soundcard soundcard;
private Soundcard soundcard;

public Computer(Soundcard soundcard) {
this.soundcard = soundcard;
}
public Computer(Soundcard soundcard) {
this.soundcard = soundcard;
}

public Soundcard getSoundcard() {
return soundcard;
}
public Soundcard getSoundcard() {
return soundcard;
}

public static class Soundcard {
private USB usb;
public static class Soundcard {
private USB usb;

public Soundcard(USB usb) {
super();
this.usb = usb;
}
public Soundcard(USB usb) {
super();
this.usb = usb;
}

public USB getUsb() {
return usb;
}
}
public USB getUsb() {
return usb;
}
}

public static class USB {
private String version;
public static class USB {
private String version;

public USB(String version) {
super();
this.version = version;
}
public USB(String version) {
super();
this.version = version;
}

public String getVersion() {
return this.version;
}
}
public String getVersion() {
return this.version;
}
}
}
34 changes: 17 additions & 17 deletions src/main/java/nextstep/optional/ComputerStore.java
Original file line number Diff line number Diff line change
@@ -4,23 +4,23 @@
import nextstep.optional.Computer.USB;

public class ComputerStore {
public static final String UNKNOWN_VERSION = "UNKNOWN";
public static final String UNKNOWN_VERSION = "UNKNOWN";

public static String getVersion(Computer computer) {
String version = UNKNOWN_VERSION;
if (computer != null) {
Soundcard soundcard = computer.getSoundcard();
if (soundcard != null) {
USB usb = soundcard.getUsb();
if (usb != null) {
version = usb.getVersion();
}
}
}
return version;
}
public static String getVersion(Computer computer) {
String version = UNKNOWN_VERSION;
if (computer != null) {
Soundcard soundcard = computer.getSoundcard();
if (soundcard != null) {
USB usb = soundcard.getUsb();
if (usb != null) {
version = usb.getVersion();
}
}
}
return version;
}

public static String getVersionOptional(Computer computer) {
return null;
}
public static String getVersionOptional(Computer computer) {
return null;
}
}
28 changes: 14 additions & 14 deletions src/main/java/nextstep/optional/Expression.java
Original file line number Diff line number Diff line change
@@ -3,22 +3,22 @@
import java.util.Arrays;

enum Expression {
PLUS("+"), MINUS("-"), TIMES("*"), DIVIDE("/");
PLUS("+"), MINUS("-"), TIMES("*"), DIVIDE("/");

private String expression;
private String expression;

Expression(String expression) {
this.expression = expression;
}
Expression(String expression) {
this.expression = expression;
}

private static boolean matchExpression(Expression e, String expression) {
return expression.equals(e.expression);
}
private static boolean matchExpression(Expression e, String expression) {
return expression.equals(e.expression);
}

static Expression of(String expression) {
return Arrays.stream(values())
.filter(value -> matchExpression(value, expression))
.findAny()
.orElseThrow(() -> new IllegalArgumentException(String.format("%s는 사칙연산에 해당하지 않는 표현식입니다.", expression)));
}
static Expression of(String expression) {
return Arrays.stream(values())
.filter(value -> matchExpression(value, expression))
.findAny()
.orElseThrow(() -> new IllegalArgumentException(String.format("%s는 사칙연산에 해당하지 않는 표현식입니다.", expression)));
}
}
118 changes: 59 additions & 59 deletions src/main/java/nextstep/optional/User.java
Original file line number Diff line number Diff line change
@@ -3,72 +3,72 @@
import java.util.Optional;

public class User {
private String name;
private Integer age;
private String name;
private Integer age;

public User(String name, Integer age) {
this.name = name;
this.age = age;
}
public User(String name, Integer age) {
this.name = name;
this.age = age;
}

public String getName() {
return name;
}
public String getName() {
return name;
}

public Integer getAge() {
return age;
}
public Integer getAge() {
return age;
}

public boolean matchName(String name) {
return this.name.equals(name);
}
public boolean matchName(String name) {
return this.name.equals(name);
}

public static boolean ageIsInRange1(User user) {
boolean isInRange = false;
public static boolean ageIsInRange1(User user) {
boolean isInRange = false;

if (user != null && user.getAge() != null
&& (user.getAge() >= 30
&& user.getAge() <= 45)) {
isInRange = true;
}
return isInRange;
}
if (user != null && user.getAge() != null
&& (user.getAge() >= 30
&& user.getAge() <= 45)) {
isInRange = true;
}
return isInRange;
}

public static boolean ageIsInRange2(User user) {
return Optional.ofNullable(user)
.map(User::getAge)
.filter(age -> age >= 30 && age <= 45)
.isPresent();
}
public static boolean ageIsInRange2(User user) {
return Optional.ofNullable(user)
.map(User::getAge)
.filter(age -> age >= 30 && age <= 45)
.isPresent();
}

@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((age == null) ? 0 : age.hashCode());
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((age == null) ? 0 : age.hashCode());
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}

@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
User other = (User) obj;
if (age == null) {
if (other.age != null)
return false;
} else if (!age.equals(other.age))
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
User other = (User)obj;
if (age == null) {
if (other.age != null)
return false;
} else if (!age.equals(other.age))
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
}
25 changes: 13 additions & 12 deletions src/main/java/nextstep/optional/Users.java
Original file line number Diff line number Diff line change
@@ -4,18 +4,19 @@
import java.util.List;

public class Users {
static final User DEFAULT_USER = new User("codesquad", 100);
static final User DEFAULT_USER = new User("codesquad", 100);

List<User> users = Arrays.asList(
new User("crong", 35),
new User("pobi", 30),
new User("jk", 40),
new User("honux", 45));
List<User> users = Arrays.asList(
new User("crong", 35),
new User("pobi", 30),
new User("jk", 40),
new User("honux", 45)
);

User getUser(String name) {
return users.stream()
.filter(user -> user.matchName(name))
.findAny()
.orElse(DEFAULT_USER);
}
User getUser(String name) {
return users.stream()
.filter(user -> user.matchName(name))
.findAny()
.orElse(DEFAULT_USER);
}
}
12 changes: 6 additions & 6 deletions src/test/java/nextstep/ladder/model/LadderTest.java
Original file line number Diff line number Diff line change
@@ -8,10 +8,10 @@

class LadderTest {

@Test
void 사용자가_입력한_만큼_사다리의_층을_만든다() {
Ladder ladder = new Ladder(5, 4);
assertThat(ladder.numberOfFloors()).isEqualTo(5);
}
@Test
void 사용자가_입력한_만큼_사다리의_층을_만든다() {
Ladder ladder = new Ladder(5, 4);
assertThat(ladder.numberOfFloors()).isEqualTo(5);
}

}
}
3 changes: 1 addition & 2 deletions src/test/java/nextstep/ladder/model/LineTest.java
Original file line number Diff line number Diff line change
@@ -13,9 +13,8 @@
class LineTest {

@Test
void 이전_라인이_잇을경우_무조건_해당라인은_없다(){
void 이전_라인이_잇을경우_무조건_해당라인은_없다() {
Assertions.assertThat(Line.create(new Line(true))).isEqualTo(new Line(false));
}


}
2 changes: 1 addition & 1 deletion src/test/java/nextstep/ladder/model/LinesTest.java
Original file line number Diff line number Diff line change
@@ -9,7 +9,7 @@
class LinesTest {

@Test
void 라인들은_플레이어의_숫자보다_1작다(){
void 라인들은_플레이어의_숫자보다_1작다() {
Lines lines = new Lines(4);
assertThat(lines.size()).isEqualTo(3);
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package nextstep.ladder;
package nextstep.ladder.model;

import static org.assertj.core.api.Assertions.*;

@@ -10,8 +10,7 @@ class PlayerTest {

@Test
void 사용자의_이름은_5자를_넘길수_없다() {
assertThatIllegalArgumentException()
.isThrownBy(() -> new Player("abcdef"))
assertThatIllegalArgumentException().isThrownBy(() -> new Player("abcdef"))
.withMessage("사용자의 이름은 5자를 넘을 수 없습니다");
}