숫자 야구 with 자바 기초

최지혜·2022년 11월 10일
0

java

목록 보기
15/33

우테코에서 자바 강의를 올려주셔서 감사히 들었다. 유용한 내용 감사합니다 :-)

  • 클래스, 생성자에는 대문자!
    기능(함수, 메서드)는 소문자로 표현!

  • int
    들어간 순간 return이 있어야 함

public int add(int number1, int number2) {
	return 0;
}
  • 접근 제어자
  1. public -> 어떤 클래스든 모두 접근 가능
  2. private -> 같은 클래스에서만 접근 가능이 중괄호 내에서만 쓰겠다.(이 클래스에서만 쓰겠다.)
  3. defort -> 같은 패키지에서는 사용가능~
  4. protected -> 상속받은 클래스에서만 접근 가능
  • 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 키워드를 붙이면 됨. (상수 = 항상 변하지 않는 수)
    상수는 다 대문자를 쓰고 띄워쓰기는 언더스코어()씀. (자바에서 거의 유일한 )

객체 지향 프로그래밍이란

  1. 기능을 가지고 있는 클래스를 인스턴스화 -> 객체
  2. 필요한 기능을 역할에 맞는 인스턴스가 수행하게 한다. (의인화)
  3. 각 결과를 종합하여 하나의 프로그램을 만든다.
  • 커밋 메시지
    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);
    }
  • 커밋 메시지
    test(baseball): 숫자 비교 테스트
    refactor(baseball): 테스트 중복 제거
profile
매일 성장하는 개발자

0개의 댓글