230608(목)-TIL

조우진·2023년 6월 8일
0

TIL

목록 보기
14/28

오늘 마주친 문제

<호텔 예약 프로그램 팀 과제 진행 중 발생한 문제>

1. 날짜입력 관련

  • [호텔예약시스템] 미니프로젝트 진행 중 예약할 날짜를 변경하려면 사용자가 날짜를 입력해야하는데, 사용자가 지정하지 않은 형식으로 입력하는 경우 처리할 방법에 대해 고민했다.

Try

  • 지정된 형식이 아닌 문자열이 입력된 경우 Try/Catch문을 통해 시스템 중단을 피하고, While문을 통해 요구하는 형식대로 입력할 때까지 입력을 계속 받아서 처리했다.

2. 예약된 객실을 조회대상에서 제외하기 위한 방법

  • 객실목록 조회 기능 구현을 담당했는데, 이미 예약된 객실은 타인에 의해 예약되지 못하도록 객실목록에서 보이지 않도록 하기 위한 방법에 무엇이 있는지 고민했다.
  • 사용자가 예약할 날짜가 언제인지에 따라 예약되지 않은 객실많은 유동적으로 보여줘야했다.

Try

아래 로직을 이용하여 구현을 완료하였다.

  1. [객실조회]기능을 선택할 때 호텔 객체에 속한 객실들을 모두 불러와 새로운 TreeMap에 저장
  2. 예약정보가 담긴 TreeMap에서 사용자가 예약하려는 날짜가 있는지 확인
  3. 예약내역이 있을 경우, 해당 예약정보의 객실번호값을을 키값으로 하여 TreeMap에서 삭제
  4. 1~3번 로직을 통해 가공된 데이터를 보여주고, 예약날짜를 바꾸는 경우 TreeMap을 비우고 다시 1번으로 돌아가는 로직 구현

3. Collection 내 저장된 객체를 사용자 정의를 통한 정렬

  • Collection에서 지원하는 sort()메서드를 통해 객체를 정렬할 수 있는지 고민하였다.

Try

  • 메소드 오버라이딩을 통해 문제를 해결하였다.
  • TreeMap으로는 정렬기능을 사용할 수 없어, 정렬 기능이 필요할 때만 ArrayList를 만들어 AddAll로 요소를 복사하고 정렬한 값을 보여주었다.

    Collections.sort()메소드는 객체를 정렬할 때, 해당 객체의 Comparable을 구현한 compareTo()메소드를 참조하여 정렬순서를 결정한다.
    따라서 정렬할 객체가 Comparable interface를 구현하고, compareTo()메소드 안에 정렬기준을 정의해준다면 Collections.sort()메서드를 사용하여 객체를 사용자 정의형태로 정렬할 수 있다.

profile
공부노트

0개의 댓글