저는 개인적으로 UI 쪽이 먼가 가장 복잡하게 느껴졌습니다 이번 투표 시스템뿐 아니라 다른 로직을 만들 때도 항상 UI 쪽에서 멍~해졌던 것 같습니다 이번 투표 시스템을 만들 때도 UI를 만들 때 정말.... 많아진 Class 때문에 어디에 머가 있었지.... 이게 무슨 기능이었지... 하면서 머리가 뒤죽박죽이 되어버렸습니다....
사용자야 UI 들어간다
@RequiredArgsConstructor
public class VoteUI {
@NonNull
private VoteService voteService;
@NonNull
private VoterService voterService;
@NonNull
private CandidateService candidateService;
@NonNull
private Scanner scanner;
public void voteDisplay(){
System.out.println("후보자들을 봅시다.");
//배열 불러오기 //readALL 로 모든 후보 불러오기
Arrays.stream(candidateService.readAll()).forEach(candidateVO -> System.out.println(candidateVO));
//유권자 번호 받기
System.out.println("유권자 번호를 입력하세요");
Integer voterNum = Integer.parseInt(scanner.nextLine());
try {
//유권자 확인 try.catch 로 감싸기
voterService.readOne(voterNum);
} catch (Exception e) {
System.out.println("해당번호의 유권자가 없습니다. 다시 확인해 주세요");
voteDisplay();
}
System.out.println("후보 번호를 입력하세요");
Integer candidateNum = Integer.parseInt(scanner.nextLine());
//후보자 번호를 확인 기능 필요
//투표 시스템
VoteVO voteVO = new VoteVO(voterNum,candidateNum);
try {
voteService.vote(voteVO);
System.out.println("정상적으로 투표가 완료 되었습니다.");
} catch (Exception e) {
System.out.println("투표에 문제가 생겼어요 ");
}
voteDisplay();
}
}
우선 UI는 기존에 만들었던 서비스들이 없으면 아무것도 할 수 없기에 의존성 주입으로 만들었던 모든 서비스들을 주입시켜주면서 시작했습니다
그리고 후보자를 불러올 때 forEach와 람다식 정렬을 같이 사용한 부분이 나오는데 람다식은 아직까지는 어떤 식으로 기능하는지 잘 모르겠습니다 이건 좀 더 공부해보면서 눈에 익혀야 할 것 같습니다 😭
그리고 이번 UI 에서 가장 중요한 부분은 역시 try catch 인 것 같습니다 마치 if문을 보는듯한 느낌이 들었습니다 try안에 구문이 정상 작동을 하지 못하면 catch 부분으로 넘어가서 사용자에게 메시지를 보여주고 다시 로직으로 재귀 호출을 해주는 모습을 볼 수 있습니다
Main
public class Main {
public static void main(String[] args) {
CandidateDAO candidateDAO = new CandidateDAO();
VoterDAO voterDAO = new VoterDAO();
VoteDAO voteDAO = new VoteDAO();
CandidateService candidateService = new CandidateService(candidateDAO);
VoterService voterService = new VoterService(voterDAO);
VoteService voteService = new VoteService(voterDAO, candidateDAO,voteDAO);
VoteUI voteUI = new VoteUI(voteService,voterService,candidateService, new Scanner(System.in));
voteUI.voteDisplay();
}
}
Main 에서는 기존에 만들었던 모든 것을 의존성 주입을 통해 불러와주면서 이번 투표 로직이 끝이 났습니다!
끝내며..
강의시간에 만들지 못한 부분들도 있기에 아직 이 로직은 완벽하지 못합니다 아니 재기능을 다하고있지도 못하고 있습니다 하지만 이번 투표자 시스템을 기록하며 느낀 것은 자바라는 것을 처음 접한 지 일주일 정도만에 이 정도를 나갔다니....라는 생각이었습니다 솔직히 아직 아는 것보다 이해 못 하고 모르는 것이 더 많은 것 같습니다 하지만 앞으로 남은 기간 모르는 만큼 노력해서 다른 분들에게 피해 주지 않는 개발자가 되기 위해 열심히 달려보겠습니다
'개발자 성장 일지' 카테고리의 다른 글
2022.03.15 데이터 위주의 상속 (0) | 2022.03.15 |
---|---|
2022.03.14 상속을 이용해서 UI 만들어보기 (0) | 2022.03.14 |
2022.03.13 투표 패키지 (0) | 2022.03.13 |
2022.03.12 투표 유권자 패키지 (0) | 2022.03.12 |
2022.03.12 투표 시스템 후보자 (0) | 2022.03.12 |