JAVA Design a set of classes that work together to simulate a police officer iss
ID: 3575445 • Letter: J
Question
JAVA
Design a set of classes that work together to simulate a police officer issuing a parking ticket. You should design the following classes:
1. the ParkedCar class: this class should simulate a parked car. The class's responsibility are as follows:
-To know the car's make, model, color, license number, and the number of minutes that the car has been parked
2. The ParkingMeter class: This class should a parking meter. The class's only responsibility is as follows:
-To know the nunber of minutes of parking time that has been purchased
3. The ParkingTicket class: this class should simulate a parking ticket. The class's responsibilities are as follows:
- To report the make, model, color, and license number of the illegally parked car
- To report the amount of fine, which is $25 for the first hour or part of an hour that the car is illegally parked, plus $10 for every additional hour or part of an hour that the car is illegally parked
-To report the name and badge number of the police office issuing the ticket
4. The PoliceOfficer class: This class should simulate a police officer inspecting parked cars. The class's responsibility are as follows:
-To know the police officer's name and badge number
-To examine a ParkedCar object and a ParkingMeter object, and determine whether a car's time has expired
-To issue a parking ticket(generate a ParkingTicket object) if the car's time has expried
Write a program that demonstrate these classes collaborate.
Explanation / Answer
public class ParkedCar {
private String make, model, color, licenseNumber;
private int minutesParked;
/**
* @param make
* @param model
* @param color
* @param licenseNumber
* @param minutesParked
*/
ParkedCar(String make, String model, String color, String licenseNumber,
int minutesParked) {
setMake(make);
setModel(model);
setColor(color);
setLicenseNumber(licenseNumber);
setMinutesParked(minutesParked);
}
/**
* @return the make
*/
public String getMake() {
return make;
}
/**
* @return the model
*/
public String getModel() {
return model;
}
/**
* @return the color
*/
public String getColor() {
return color;
}
/**
* @return the licenseNumber
*/
public String getLicenseNumber() {
return licenseNumber;
}
/**
* @return the minutesParked
*/
public int getMinutesParked() {
return minutesParked;
}
/**
* @param make
* the make to set
*/
public void setMake(String make) {
this.make = make;
}
/**
* @param model
* the model to set
*/
public void setModel(String model) {
this.model = model;
}
/**
* @param color
* the color to set
*/
public void setColor(String color) {
this.color = color;
}
/**
* @param licenseNumber
* the licenseNumber to set
*/
public void setLicenseNumber(String licenseNumber) {
this.licenseNumber = licenseNumber;
}
/**
* @param minutesParked
* the minutesParked to set
*/
public void setMinutesParked(int minutesParked) {
this.minutesParked = minutesParked;
}
}
public class ParkingMeter {
int parkingTimePurchased;
/**
* @param parkingTimePurchased
*/
ParkingMeter(int parkingTimePurchased) {
setParkingTimePurchased(parkingTimePurchased);
}
/**
* @return the parkingTimePurchased
*/
public int getParkingTimePurchased() {
return parkingTimePurchased;
}
/**
* @param parkingTimePurchased
* the parkingTimePurchased to set
*/
public void setParkingTimePurchased(int parkingTimePurchased) {
this.parkingTimePurchased = parkingTimePurchased;
}
}
public class ParkingTicket {
ParkedCar parkedCar;
ParkingMeter parkingMeter;
PoliceOfficer policeOfficer;
/**
* @param policeOfficer
* @param parkedCar
* @param parkingMeter
*/
ParkingTicket(PoliceOfficer policeOfficer, ParkedCar parkedCar,
ParkingMeter parkingMeter) {
this.policeOfficer = policeOfficer;
this.parkedCar = parkedCar;
this.parkingMeter = parkingMeter;
}
public String getColor() {
return parkedCar.getColor();
}
public Double getFine() {
int illegalMinutes = parkedCar.getMinutesParked()
- parkingMeter.getParkingTimePurchased();
double fine = 0;
if (illegalMinutes >= 60) {
fine += 25.00;
illegalMinutes -= 60;
}
while (illegalMinutes > 0) {
if (illegalMinutes >= 60) {
fine += 10.00;
illegalMinutes -= 60;
}
else {
fine += 10.00;
illegalMinutes -= illegalMinutes;
}
}
return fine;
}
public String getLicense() {
return parkedCar.getLicenseNumber();
}
public String getMake() {
return parkedCar.getMake();
}
public String getModel() {
return parkedCar.getModel();
}
public String getOfficerBadgeNumber() {
return policeOfficer.getBadgeNumber();
}
public String getOfficerName() {
return policeOfficer.getName();
}
}
public class PoliceOfficer {
private String name, badgeNumber;
/**
* @param name
* @param badgeNumber
*/
PoliceOfficer(String name, String badgeNumber) {
this.name = name;
this.badgeNumber = badgeNumber;
}
/**
* @param parkedCar
* @param parkingMeter
*/
public void examineParkedCar(ParkedCar parkedCar, ParkingMeter parkingMeter) {
if (parkingMeter.getParkingTimePurchased() < parkedCar
.getMinutesParked()) {
ParkingTicket parkingTicket = new ParkingTicket(this, parkedCar,
parkingMeter);
System.out.println(parkedCar.getModel()
+ " is illegally parked. Ticket issued.");
System.out.println(" Parking ticket:");
System.out.println("Issuing officer's name: "
+ parkingTicket.getOfficerName());
System.out.println("Issuing officer's badge number: "
+ parkingTicket.getOfficerBadgeNumber());
System.out.println("Fine: $" + parkingTicket.getFine());
}
else {
System.out.println(parkedCar.getModel() + " is legally parked.");
}
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @return the badgeNumber
*/
public String getBadgeNumber() {
return badgeNumber;
}
}
/**
* @author
*
*/
public class ParkingTicketSimulator {
/**
* @param arsg
*/
public static void main(String[] arsg) {
PoliceOfficer andy = new PoliceOfficer("Srinivas", "BD222");
ParkedCar accord = new ParkedCar("Maruthi", "Swift", "White",
"LICE332", 211);
ParkingMeter meter = new ParkingMeter(40);
andy.examineParkedCar(accord, meter);
}
}
OUTPUT:
Swift is illegally parked. Ticket issued.
Parking ticket:
Issuing officer's name: Srinivas
Issuing officer's badge number: BD222
Fine: $45.0
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.