투표 패키지를 만들면서 설계도에서 누락된 부분이 있다는 걸 알았습니다 그래서 설계도를 살짝 수정했습니다!!
바로 투표 Service 가 투표 DAO 뿐 아니라 유권자 DAO와 후보자 DAO 가 필요했었습니다!!
강사님은 말씀하셨죠 처음부터 완벽한 설계는 없다 생각하고 수정해가면서 만드는 거다 그래서 바로 실천해버렸습니다
투표 패키지의 역할은 후보자의 정보와 유권자의 정보를 가지고와서 모아주는 역할을 하고 있습니다!!
투표(Vote) VO
//한번 만들어지면 값을 바꾸면 안되니 Getter만
@AllArgsConstructor
@Getter
@ToString
public class VoteVO {
//데이터베이스 방식 설계
//유권자 데이터
private Integer voter;
//후보 데이터
private Integer candidate;
//객체 지향적 설계는 원래는 이렇게 불러와야하지만 지금은 데이터베이스 방식으로 정리하기위해 위 방식처럼 불러옴
//데이터베이스 방식은 식별키를 위주로 설계를 잡기때문에 !!
// private VoteVO voteVO;
// private CandidateVO candidateVO;
이번 투표 시스템 설계는 데이터베이스 방식으로 진행한다고 말씀하셨기에 이 투표VO 를 만들 때 객체 지향적 설계가 아닌 식별키를 위주로 하는 데이터 베이스 방식으로 진행했습니다!!
투표(Vote) DAO
public class VoteDAO {
//ArrayList 선언 타입 이름
private ArrayList<VoteVO> voArrayList;
// ArrayList 초기화
public VoteDAO() {
voArrayList = new ArrayList<>();
}
//voteVO를 Array안에 넣어줌 <배열의 역할> 투표가 들어감
public void add(VoteVO voteVO) {
voArrayList.add(voteVO);
}
}
이번 투표DAO 에서는 기존에 사용하던 배열 방식이 아닌 ArrayList를 사용했습니다
기존 배열은 만들어줄 때 크기를 설정하고 만들어 주지만 ArrayList는 int의 크기만큼 자동 생성됩니다
자세한 사용법은 JAVA 카테고리에서 추가적으로 설명하겠습니다!! 😘
투표(Vote) Service
@RequiredArgsConstructor
public class VoteService {
@NonNull
private VoterDAO voterDAO;
@NonNull
private CandidateDAO candidateDAO;
@NonNull
private VoteDAO voteDAO;
//투표 VoteVO로받을거
public void vote(VoteVO voteVO) throws Exception {
//voteVO 에서 Candidate를 가져온다
Integer candidate = voteVO.getCandidate();
//후보자 검열식
candidateDAO.check(candidate);
//voteVO 에서 voter를 가져온다
Integer voter = voteVO.getVoter();
//유권자 검열식
voterDAO.check(voter);
//투표한적 있는지 검열식
voteDAO.checkVoter(voter);
//검열식
voteDAO.add(voteVO);
}
}
후보자 검열식 로직은 구현화했지만 이번 강의 동안은 다른 로직의 구현은 하지 않으셔서 메서드 이름만 있습니다 ㅠ
다른 검열식은 공부하면서 직접 만들어 봐야 할 것 같습니다
'개발자 성장 일지' 카테고리의 다른 글
2022.03.14 상속을 이용해서 UI 만들어보기 (0) | 2022.03.14 |
---|---|
2022.03.13 UI & Main (0) | 2022.03.13 |
2022.03.12 투표 유권자 패키지 (0) | 2022.03.12 |
2022.03.12 투표 시스템 후보자 (0) | 2022.03.12 |
2022.03.12 반성 다짐 그리고 설계 (0) | 2022.03.12 |