차량 5부제 프로그램 설계 및 구현 가이드



차량 5부제 프로그램 설계 및 구현 가이드

차량 5부제를 위한 프로그램을 설계하는 과정은 차량 번호의 끝자리를 기준으로 출입 제한을 적용하는 로직을 포함합니다. 이 프로그램은 랜덤으로 차량을 생성하고, 특정 요일에 따라 출입을 제한하는 기능을 갖추고 있습니다. 아래는 이 프로그램을 구성하는 주요 클래스와 메서드에 대한 설명입니다.

 

👉 ✅ 상세 정보 바로 확인 👈

 

차량 생성 클래스 설계

VehicleDeductibleCar 클래스

이 클래스는 랜덤 차량 번호와 종류를 생성하는 역할을 합니다. 차량의 종류는 배열에 저장되며, 각각의 차량은 랜덤한 번호를 부여받습니다.



주요 구성 요소

  • cars 배열: 다양한 차량 종류를 저장합니다.
  • except_car 배열: 출입이 제한되는 차량 종류를 저장합니다.
  • number 변수: 0부터 9999까지의 랜덤 번호를 생성하며, Random 클래스를 사용합니다. 이때 String.format을 사용하여 번호를 4자리 형식으로 변환합니다.

랜덤 차량 번호 생성

랜덤으로 생성된 차량 번호는 4자리 문자열 형식으로 표현됩니다. 예를 들어, 차량 번호가 100이라면 ‘0100’으로 변환됩니다. 차량 종류는 랜덤으로 선택되어 ‘경차0017’, ‘중형차9956’와 같은 형식으로 나타납니다.

 

👉 ✅ 상세 정보 바로 확인 👈

 

차량 5부제 검사 클래스 설계

VehicleDeductible 클래스

이 클래스는 차량의 출입 여부를 판단하는 메서드를 포함하고 있습니다. 공휴일 및 제외 차량을 체크하는 로직이 포함됩니다.

주요 메서드

  • pass_car(): 제외 차량 배열을 확인하여 현재 차량이 제외 차량 목록에 포함되는지 여부를 판단합니다.
  • pass_week(): 현재 날짜가 공휴일인지 여부를 확인합니다. 이 정보는 ArrayList에 저장된 공휴일 목록을 기준으로 검사됩니다.

차량 출입 제한 검사

  • notPassCarLastNum(): 매개변수로 차량 인스턴스와 현재 날짜를 받아, 차량의 끝번호가 출입 제한 요일에 해당하는지 검사합니다. 요일 값에 따라 제한되는 차량 번호를 판단하여 true 또는 false를 반환합니다.

메인 로직 설계

프로그램의 메인 로직에서는 위에서 정의한 메서드를 조합하여 차량의 출입 가능 여부를 판단합니다.

출입 가능 여부 판단 진행

  1. 현재 날짜가 2018년 8월 31일 이후인지 확인: isAfter 메서드를 통해 검증합니다.
  2. 공휴일 및 제외 차량 확인: pass_car()pass_week()를 통해 차량의 출입 여부를 체크합니다.
  3. 5부제 검사: 만약 공휴일이나 제외 차량이 아니라면, notPassCarLastNum() 메서드를 통해 차량 번호의 끝자리가 출입 제한에 해당하는지 검사합니다.
  4. 출입 가능 여부 출력: 모든 조건을 통과하면 출입 가능하다는 메시지를 출력합니다.

예시 및 주의사항

2021년 8월 16일은 월요일이며, 차량 끝번호 1과 6이 출입 제한에 해당합니다. 따라서 이 날짜에 해당 차량 번호를 가진 차량은 출입할 수 없습니다.

차량 번호 끝자리 및 요일 매핑

요일 끝번호
월요일 1, 6
화요일 2, 7
수요일 3, 8
목요일 4, 9
금요일 5, 0

이 프로그램은 위와 같은 구조로 설계되어 차량 5부제를 효과적으로 관리할 수 있습니다. 사용자에게 명확한 출입 가능 여부를 전달하며, 랜덤 차량 생성을 통해 다양한 테스트 케이스를 시뮬레이션할 수 있습니다.