실습 프로젝트 - 숫자 야구 게임
📒 외부 라이브러리 사용하기
(2) JavaFaker
(3) Lombok
- @AllArgsConstructor // 모든 Args 의 생성자를 만들어라
- @NoArgsConstructor // 기본생성자도 생성가능하게 해줌
- @ToString // toString 구현
- @EqualsAndHashCode // equlas와 hashcoed 구현
- @Getter, @Setter // Getter Setter 구현
- @Data => 위의 모든게 다들어가있음
📃 설계
(1)요구사항 파악하기
- 게임의 룰
- 동작환경, 데이터의 범위
- 3자리 숫자 사용(확장가능)
- 중복된 숫자를 사용하지 않음
- 1~9 를 사용 (0 사용 x)
- Console 상에서 동작하는 프로그램
- 일을 객체로 나누기 / 객체를 연관 짓기
- 핵심로직 설계
- Flow Chart
- Correct Input에서 false일 경우 Loop로 돌아감
- 3 Strikes에서 false일 경우 Loop로 돌아감
🔍 AtomicInteger ?
- int자료형을 갖고 있는 wrapping 클래스
- 멀티쓰레드 환경에서 동시성 보장
- CAS : 비교 및 교환
- get() : 값을 읽을 때
- set() : 값을 변경할 때
- getAndSet() : 현재의 value를 get(return)하고, 인자로 전달된 값 set
- addAndGet() : add 하고 get
- compareAndSet(expect, update) : 현재값이 expect와 동일하면 update로 값 변경하고 true return
🔍 getNumericValue
java.lang.Charater.getNumericValue(char)
- 숫자 형태의 char형을 int형으로 변환
- 문자에 숫자 값이 없을 경우 -1 반환
- 음이 아닌 정수로 표시할 수 없는 숫자 값일 경우 -2 반환
- 공식
💁♀️
큰(?) 프로젝트로 객체지향적인 설계를 배웠을때는 매번 그저 코드를 타이핑만 했고, 개념적인 부분 그래서 이게 왜 객체지향적인 코드인지 알지 못했다. 하지만 작은 게임 만들기를 통해 객체 지향으로 프로젝트를 설계 강의를 들으니까 이해하는데 더 수월했고, 이전의 무거운 프로젝트로 수업을 들었을때 왜 그렇게 했는지가 이제 조금은 이해가 간다. 이제 스스로 설계해보기 !