회고
- 컬렉션 프레임워크에 대해 이해가 안되는 부분은 바로 잡고 가야지 안 그러면 뒤에 오는 학습 내용을 따라가기 힘들 것 같단 생각에 주 초반에 복습을 하며 이해하는 데에 시간을 할애하였다.
- 현재까지 람다식과 스트림의 생성까지는 이해가 되었지만 이후 중간 연산과 최종 연산 부분에 대해서 이해가 되지 않아서 그 부분에 대해 5주차 초반에 다시 복습을 하면서 정리해보려고 한다.
- 과제를 수행함에 있어서 한 주의 학습을 마무리하고 수행하려다보니 에러가 발생한 부분에 대해서 바로 잡고 수정하다보니 제출 마감 기한을 넘기고 말았지만, 그래도 직접 코드를 짜면서 에러 수정도 하면서 개발 능력이 향상되고 있는 과정이라고 생각이 들었다.
학습 내용
- [자바/심화] 컬렉션 프레임워크 (1/2), [자바/심화] 컬렉션 프레임워크 (2/2)
- [자바/심화] 람다식 (Lambda Expression)
과제 내용
달력 출력 프로그램
수행 목적
- Scanner의 입력 함수와 조건문 및 반복문을 통한 달력 계산 로직 작성
소스 코드
코드 리뷰
- Main() 함수에서 달력의 년도와 월에 대한 입력을 받은 뒤, 캘린더 생성 함수를 호출하여 입력받은 값을 매개변수로 넘겨줘 실질적인 실행이 가능하도록 구현하였다.
- 단순하게 LocalDate형 배열을 선언하여 입력받은 달의 이전 달, 입력받은 달, 오늘 기준으로 현재 달에 대한 LocalDate Data를 담아주도록 하였다.
- 한 줄에 3개의 달을 표출해주어야 하는 관계로 주 단위로 Loop를 돌면서 3개의 달에 대한 주 단위 정보를 출력하도록 구현하였다.
가상 선거 및 당선 시뮬레이션 프로그램
수행 목적
- 조건문 및 반복문과 배열, 컬렉션을 통한 당선 시뮬레이션 로직 작성
소스 코드
코드 리뷰
- 지금까지의 과제 수행 중 가장 오래 걸린 과제이며, 가장 많은 에러가 발생되었던 과제이기도 하다.
- 후보자에 대한 이름과 득표율을 각각 담을 List 객체를 생성할 지 고민을 하다가 후보자에 대한 정보(이름, 번호, 득표수)를 담을 클래스를 선언해주었다. 그리고 후보자 클래스 객체를 담을 ArrayList 변수를 선언하여 후보자에 대한 정보를 List로 관리하였다.
- 그리고 가상 투표 진행 함수를 호출하여 진행할 투표수와 후보자 정보를 담고 있는 List를 매개변수로 전달하여 진행하는 방식으로 구현하였으며, 후보자 정보 클래스 변수를 함수 내부 변수로 생성하여 투표를 진행하면서 득표수가 현재 1위보다 크면은 후보자 정보를 변경하고, 최종 투표 종료 후 Main() 함수로 해당 정보를 리턴하여 당선인으로 출력되도록 하였다.
사람은 누구나 자신이 할 수 있다고 생각하는 그 이상의 일을 할 수 있다.
- 헨리 포드