우테코에서 자바 강의를 올려주셔서 감사히 들었다. 유용한 내용 감사합니다 :-)
클래스, 생성자에는 대문자!
기능(함수, 메서드)는 소문자로 표현!
int
들어간 순간 return이 있어야 함
public int add(int number1, int number2) {
return 0;
}
new -> 사용하고자 하는 기능들이 모여있는 클래스
new Calculator();
:
숫자야구와 관련된 클래스 - 모델
실제 다루고자 하는 서비스의 비지니스 로직 (계산을 한다거나 하는 기능들) - 도메인
=
Calculator parameter = new Calculator();
뒤가 선언, 앞이 할당
이 변수에 앞의 것(클래스)을 담을 거야 !
뒤의 클래스의 인스턴스가 parameter에 담긴 것
매서드가 있으려면(기능이 있으려면) 클래스가 있어야 함!
클래스 단위로, 인스턴스 단위로 변수를 관리하고 싶으면 (메서드 범위가 아니라)
클래스 도입부에
int result; 라고 위에 선언하면 됨~! (메서드에 선언하면, 메서드 끝나면 사라짐.)
매서드 바깥, 즉 위에 선언하면 밖에서도 사용 가능.
이게 바로 인스턴스 변수라고 함!
public int result = 0;
static
을 붙여야지 클래스 변수다!
복사 말고, 공유해서 쓰고 싶으면 static
을 쓰면 됨.
static 붙으면 인스턴스 명 안 써도 그냥 바로 클래스명에 사용 가능.
public static int shareFesult = 0
: 클래스 변수
public int result = 0;
: 인스턴스 변수
상수 만들기
'static final'
불변과 가변
변하지 않는 값으로 만드려면 final
키워드를 붙이면 됨. (상수 = 항상 변하지 않는 수)
상수는 다 대문자를 쓰고 띄워쓰기는 언더스코어()씀. (자바에서 거의 유일한 )
커밋 메시지
git commit -m "feat(baseball): crate skeleton code"
new ArrayList<>(); -> 어레이 리스트는 실제 클래스라고 생각하면 됨.
컨트럴알트엘
커멘드 옵션엘 -> 코드 자동 정렬
class RefereeTest {
@Test
void 3스트라이크() {
Referee referee = new Referee();
String result = referee.compare(Arrays.asList(1, 2, 3), Arrays.asList(1, 2, 3))
assertThat(result).isEqualTo(" 0볼 3 스트라이크");
}
@Test
void 아웃() {
Referee referee = new Referee();
String result = referee.compare(Arrays.asList(7, 8, 9), Arrays.asList(1, 2, 3))
assertThat(result).isEqualTo("아웃");
}
@Test
void 3볼() {
Referee referee = new Referee();
String result = referee.compare(Arrays.asList(2, 3, 1), Arrays.asList(1, 2, 3))
assertThat(result).isEqualTo("3 볼 0 스트라이크");
}
}
중복 줄이기 1단계
class RefereeTest {
private static final List<Integer> ANSWER = Arrays.asList(1, 2, 3);
private Referee referee;
@BeforeEach // 매테스트마다 실행되는 함수
void setUp() {
referee = new Referee();
}
@Test
void 3스트라이크() {
String result = referee.compare(Arrays.asList(1, 2, 3), ANSWER)
assertThat(result).isEqualTo(" 0볼 3 스트라이크");
}
@Test
void 아웃() {
String result = referee.compare(Arrays.asList(7, 8, 9), ANSWER)
assertThat(result).isEqualTo("아웃");
}
@Test
void 3볼() {
String result = referee.compare(Arrays.asList(2, 3, 1), ANSWER)
assertThat(result).isEqualTo("3 볼 0 스트라이크");
}
}
중복 줄이기 2단계
class RefereeTest {
private static final List<Integer> ANSWER = Arrays.asList(1, 2, 3);
private Referee referee;
@BeforeEach // 매테스트마다 실행되는 함수
void setUp() {
referee = new Referee();
}
@ParameterizedTest
@CsvSource({"1,2,3,0 볼 3 스트라이크", "7,8,9,아웃", "2,3,1,3 볼 0 스트라이크", "1,3,2, 2볼 1스트라이크"})
public void compare(int number1, int number2, int number3, String expected) { String actual = referee.compare(ANSWER, Arrays.asList(number1, number2, number3));
assertThat(actual).isEqualTo(expected);
}