유권자(Voter) 메서드의 작성 순은 VO -> DAO -> Service 순으로 진행했습니다
코드를 작성하면서 필요한 정보 기능들은 주석으로 표기했습니다
VoterVO
@AllArgsConstructor //생성자
@Getter //읽기 전용이기에 값을 복사만 하는 Getter을 사용
@ToString
public class VoterVO {
// int 는 기본값이 0 이다 Integer 은 기본값이 null이다
//int 는 기본값이 0 이기에 산술연산이 가능
// Interger은 특별한 작업을 해는것이 아니면 산술연산 불가 기본값이 null이기에
// 인스턴스 variable은 다 private 설정
private Integer vno; //유권자 번호 이 번호는 사실 주민번호의 역할이다
private String name; // 유권자 이름
}
VO의 경우는 후보자 패키지와의 차이점이 별로 없다
VoterDAO
public class VoterDAO {
// 유권자를 배열로 정리해서 만들어주기위해 VoterVO타입의 배열 생성
private VoterVO[] arr;
// 생성자이기에 리턴값이 없다
public VoterDAO(){
arr= new VoterVO[4];
arr[0] = new VoterVO(1,"홍길동");
arr[1] = new VoterVO(2,"고길동");
arr[2] = new VoterVO(3,"박길동");
arr[3] = new VoterVO(4,"이길동");
}
//식별번호를 확인해서 정보 전달해주기
//특정 식별번호의 데이터를 찾아주는 기능
//지금 Voter은 읽기 전용이라 publci를 해줘도 안전
// vno 를 파라미터로 vno=식별번호
public VoterVO getOne(Integer vno){
//리턴 타입을 먼저 선언
VoterVO result = null;
//같은 사람을 체크했을때 없으면 result 값이 계속 null로 반환됨 그럼 서비스에서는 null을 확인할수있다 그리고 ui로 다시 전달한다
for (VoterVO vo:arr) {
//배열의 vno //여기서 vno는 파라미터로 받은 vno
if(vo.getVno() == vno){
result = vo;
break;
}
}
return result;
}
유권자 DAO 의 역할은 후보자 DAO의 역할과는 다르다
유권자 DAO는 유권자의 목록뿐 아니라
" 내 번호가 몇번이에요 라고 이야기해주면 당신은 누구이군요? 투표가 가능합니다 "
<해당 번호에 유권자가 있느냐 없느냐를 반환해줘야 함 >
VoterService
//NonNull 에 대한 생성자만 생성
@RequiredArgsConstructor
public class VoterService {
//DAO가 없으면 아무것도 못함 <의존성>
@NonNull
private VoterDAO voterDAO;
//VotreVO의 정보를 DAO를 거쳐서 전달해주기
//VotreVO를 반환해주는 readOne
//throws 는 던진다 즉 이걸 호출하는 곳에서 반듯이 알았으면 좋겠어!! 를 위해 예외로 던지는것
public VoterVO readOne(Integer vno)throws Exception{
//voter은 voterDAO의 getOne(vno) 를 가르킨다
VoterVO voter = voterDAO.getOne(vno);
//유권자의 정보가 없으면 null 로 나오는데 그런 상황을 UI로 전달해주기위해
//voter 이 null 일때 UI에 이 사람은 없어요! 하고 알려주는 용도
if(voter == null){
//이걸 받는 UI에게 반듯이 이건 알아줘~ 를 위해 throw를 사용해서 예외 처리를함
throw new Exception("Voter is null");
}
return voter;
}
}
DAO에서 만들었던 메소드 getOne (유권자의 정보를 확인하고 해당 유권자가 없는 사람이면 null를 반환해줌)을 UI로 전달해주는 기능을 담당한 Service 사용자의 값이 null을 가리키면 UI에게 Service는 사용자가 없어요~ 하고 알려주게 된다 그 기능을 readOne가 해준다
throws Exception
여기서 throws Exception 이라는 기능을 처음 접해보았는데 이것은?
throws Exception ->지금 이 메서드를 호출하는 쪽에 예외 처리하는 것 (이것은 반듯이 알아줘~ 하는 것)
이걸로 써 1차 도메인의 패키지는 끝이 났습니다
'개발자 성장 일지' 카테고리의 다른 글
2022.03.13 UI & Main (0) | 2022.03.13 |
---|---|
2022.03.13 투표 패키지 (0) | 2022.03.13 |
2022.03.12 투표 시스템 후보자 (0) | 2022.03.12 |
2022.03.12 반성 다짐 그리고 설계 (0) | 2022.03.12 |
2022.03.10. 투표 서비스 < 유권자 패키지> (0) | 2022.03.11 |