I need help in improving my Passenger class and it's subclasses code. This is an elevator simulator that uses polymorphism and object-oriented programming to simulate the movement of elevators in a building with multiple types of passengers and elevators. The system has 8 elevators, each of which can be one of 4 types of elevators, with a certain percentage of requests for each type. Similarly, each passenger can be one of 4 types, with a different percentage of requests for each type. The simulation should have 4 types of Passengers: Standard: This is the most common type of passenger and has a request percentage of 70%. Standard passengers have no special requirements. VIP: This type of passenger has a request percentage of 10%. VIP passengers are given priority and are more likely to be picked up by express elevators. Freight: This type of passenger has a request percentage of 15%. Freight passengers have large items that need to be transported and are more likely to be picked up by freight elevators. Glass: This type of passenger has a request percentage of 5%. Glass passengers have fragile items that need to be transported and are more likely to be picked up by glass elevators. Passenger { Should have the variable used in sub classes initializes Passenger Counter - keeps count of number of passengers } Sub-classes (Standarda, Vip, Frieght, Glass) { Use the polymorphic methods from Passenger class requestElevator - Uses random to generate a Start floor and End floor. getPercent - Retrieves the percent from the setting.txt file. } This is what I have: public class Simulation { SimulatorSettings settings = new SimulatorSettings("settings.txt"); public void InitSimulation() throws FileNotFoundException{ ///// Read all parameters from the file and store in the clas File file = new File("settings.txt"); Scanner scanner = new Scanner(file); //FileReader freader = new FileReader(file); while(scanner.hasNextLine()){ String line = scanner.nextLine(); if(line.startsWith("floor=")) { line= line.replace("floor=", ""); // Convert the value to the wanted type System.out.println(line); } } settings.setNofloors(55); Passenger pass1 = new StandardPassenger(); pass1.requestElevator(settings); ArrayList passengers = null; for(int i = 0; i < 100; i++){ //Use the percentage from the file passengers.add(new StandardPassenger()); } } } public class SimulatorSettings { SimulatorSettings(String fileName){ } private int nofloors; public int getNofloors() { return nofloors; } public void setNofloors(int nofloors) { this.nofloors = nofloors; } } import java.util.Random; public abstract class Passenger { public static int passengerCounter = 0; private String passengerID; protected int startFloor; protected int endFloor; Passenger() { this.passengerID = "" + passengerCounter; passengerCounter++; } public abstract boolean requestElevator(SimulatorSettings settings); } class StandardPassenger extends Passenger { public StandardPassenger() { super(); } @Override public boolean requestElevator(SimulatorSettings settings) { Random rand = new Random(); this.startFloor = rand.nextInt(settings.getNofloors()); this.endFloor = rand.nextInt(settings.getNofloors()); while (this.startFloor == this.endFloor) { this.endFloor = rand.nextInt(settings.getNofloors()); } return true; } } class VIPPassenger extends Passenger { public VIPPassenger() { super(); } @Override public boolean requestElevator(SimulatorSettings settings) { // Request an express elevator int expressElevator = settings.getNofloors() / 2; this.startFloor = expressElevator; this.endFloor = expressElevator; return true; } } class FreightPassenger extends Passenger { public FreightPassenger() { super(); } @Override public boolean requestElevator(SimulatorSettings settings) { Random rand = new Random(); this.startFloor = rand.nextInt(settings.getNofloors()); this.endFloor = rand.nextInt(settings.getNofloors()); while (this.startFloor == this.endFloor) { this.endFloor = rand.nextInt(settings.getNofloors()); } return true; } } class GlassPassenger extends Passenger { public GlassPassenger() { super(); } @Override public boolean requestElevator(SimulatorSettings settings) { Random rand = new Random(); this.startFloor = rand.nextInt(settings.getNofloors()); this.endFloor = rand.nextInt(settings.getNofloors()); while (this.startFloor == this.endFloor) { this.endFloor = rand.nextInt(settings.getNofloors()); } return true; } }
I need help in improving my Passenger class and it's subclasses code. This is an elevator simulator that uses polymorphism and object-oriented programming to simulate the movement of elevators in a building with multiple types of passengers and elevators.
The system has 8 elevators, each of which can be one of 4 types of elevators, with a certain
percentage of requests for each type. Similarly, each passenger can be one of 4 types, with a
different percentage of requests for each type.
The simulation should have 4 types of Passengers:
Standard: This is the most common type of passenger and has a request percentage of 70%. Standard passengers have no special requirements.
VIP: This type of passenger has a request percentage of 10%. VIP passengers are given priority and are more likely to be picked up by express elevators.
Freight: This type of passenger has a request percentage of 15%. Freight passengers have large items that need to be transported and are more likely to be picked up by freight elevators.
Glass: This type of passenger has a request percentage of 5%. Glass passengers have fragile items that need to be transported and are more likely to be picked up by glass elevators.
Passenger {
Should have the variable used in sub classes
initializes Passenger Counter - keeps count of number of passengers
}
Sub-classes (Standarda, Vip, Frieght, Glass) {
Use the polymorphic methods from Passenger class
requestElevator - Uses random to generate a Start floor and End floor.
getPercent - Retrieves the percent from the setting.txt file.
}
This is what I have:
public class Simulation {
SimulatorSettings settings = new SimulatorSettings("settings.txt");
public void InitSimulation() throws FileNotFoundException{
///// Read all parameters from the file and store in the clas
File file = new File("settings.txt");
Scanner scanner = new Scanner(file);
//FileReader freader = new FileReader(file);
while(scanner.hasNextLine()){
String line = scanner.nextLine();
if(line.startsWith("floor="))
{
line= line.replace("floor=", "");
// Convert the value to the wanted type
System.out.println(line);
}
}
settings.setNofloors(55);
Passenger pass1 = new StandardPassenger();
pass1.requestElevator(settings);
ArrayList<Passenger> passengers = null;
for(int i = 0; i < 100; i++){
//Use the percentage from the file
passengers.add(new StandardPassenger());
}
}
}
public class SimulatorSettings {
SimulatorSettings(String fileName){
}
private int nofloors;
public int getNofloors() {
return nofloors;
}
public void setNofloors(int nofloors) {
this.nofloors = nofloors;
}
}
import java.util.Random;
public abstract class Passenger {
public static int passengerCounter = 0;
private String passengerID;
protected int startFloor;
protected int endFloor;
Passenger() {
this.passengerID = "" + passengerCounter;
passengerCounter++;
}
public abstract boolean requestElevator(SimulatorSettings settings);
}
class StandardPassenger extends Passenger {
public StandardPassenger() {
super();
}
@Override
public boolean requestElevator(SimulatorSettings settings) {
Random rand = new Random();
this.startFloor = rand.nextInt(settings.getNofloors());
this.endFloor = rand.nextInt(settings.getNofloors());
while (this.startFloor == this.endFloor) {
this.endFloor = rand.nextInt(settings.getNofloors());
}
return true;
}
}
class VIPPassenger extends Passenger {
public VIPPassenger() {
super();
}
@Override
public boolean requestElevator(SimulatorSettings settings) {
// Request an express elevator
int expressElevator = settings.getNofloors() / 2;
this.startFloor = expressElevator;
this.endFloor = expressElevator;
return true;
}
}
class FreightPassenger extends Passenger {
public FreightPassenger() {
super();
}
@Override
public boolean requestElevator(SimulatorSettings settings) {
Random rand = new Random();
this.startFloor = rand.nextInt(settings.getNofloors());
this.endFloor = rand.nextInt(settings.getNofloors());
while (this.startFloor == this.endFloor) {
this.endFloor = rand.nextInt(settings.getNofloors());
}
return true;
}
}
class GlassPassenger extends Passenger {
public GlassPassenger() {
super();
}
@Override
public boolean requestElevator(SimulatorSettings settings) {
Random rand = new Random();
this.startFloor = rand.nextInt(settings.getNofloors());
this.endFloor = rand.nextInt(settings.getNofloors());
while (this.startFloor == this.endFloor) {
this.endFloor = rand.nextInt(settings.getNofloors());
}
return true;
}
}


Step by step
Solved in 4 steps









