Respuesta :
Answer:
The source code is given below using Java
Explanation:
/*
* File: Passenger.java
*/
public class Passenger {
int currentFloor,targetFloor;//data members
//argumented constructor
public Passenger(int currentFloor, int targetFloor) {
this.currentFloor = currentFloor;
this.targetFloor = targetFloor;
}
//getter method
public int getCurrentFloor() {
return currentFloor;
}
//getter method
public int getTargetFloor() {
return targetFloor;
}
}
/***********************/
/*
File: Elevator.java
*/
public class Elevator {
int currentFloor, baseFloor, topFloor;//data members
public Elevator()//default constructor
{
baseFloor=1;
topFloor=6;
currentFloor=1;
}
//argumented constructor
public Elevator(int currentFloor, int baseFloor, int topFloor)
{ if(topFloor>=2 && baseFloor < topFloor && currentFloor>baseFloor && currentFloor < topFloor)
{
this.baseFloor=baseFloor;
this.topFloor=topFloor;
this.currentFloor=currentFloor;
}
else
{
baseFloor=1;
topFloor=6;
currentFloor=1;
}
}
// up method
public void up(int numFloors )
{
if(numFloors>0 && currentFloor+numFloors <=topFloor)
currentFloor+=numFloors;
}
// down method
public void down(int numFloors )
{
if(numFloors>0 && currentFloor-numFloors >=baseFloor)
currentFloor-=numFloors;
}
//getter method
public int getCurrentFloor() {
return currentFloor;
}
//getter method
public int getBaseFloor() {
return baseFloor;
}
//getter method
public int getTopFloor() {
return topFloor;
}
}
/****************************/
/*
* File: PassengersTakeElevator.java
*/
import java.util.ArrayList;
public class PassengersTakeElevator {
//data members
Elevator elevator;
ArrayList <Passenger> passengers;
//default constructor
public PassengersTakeElevator() {
passengers=new ArrayList<>();
elevator=new Elevator();
Passenger p0=new Passenger(5, 2);
passengers.add(p0);
Passenger p1=new Passenger(3, 2);
passengers.add(p1);
Passenger p2=new Passenger(4, 3);
passengers.add(p2);
}
//argumented constructor
public PassengersTakeElevator(Elevator elevator, ArrayList<Passenger> passengers) {
this.elevator = elevator;
this.passengers = passengers;
}
//schedule method
public void schedule(){
for(int i=0;i<3;i++)
{
Passenger p=passengers.get(0);//gets passenger at head
System.out.println("Passenger "+i+" is at Fl "+p.getCurrentFloor()+", will go to Fl "+p.getTargetFloor());
System.out.println("Elevator is at Fl "+elevator.getCurrentFloor());
int numFloors=p.getCurrentFloor()-elevator.getCurrentFloor();
if(numFloors>0)
{
System.out.println("Elevator moves up from Fl "+elevator.getCurrentFloor()+" to Fl "+p.getCurrentFloor());
elevator.up(numFloors);
System.out.println("Elevator carries passenger down from Fl "+p.getCurrentFloor()+" to Fl "+p.getTargetFloor());
numFloors=p.getCurrentFloor()-p.getTargetFloor();
elevator.down(numFloors);
}
else if(numFloors<0)
{
System.out.println("Elevator moves down from Fl "+elevator.getCurrentFloor()+" to Fl "+p.getCurrentFloor());
elevator.down(-numFloors);
System.out.println("Elevator carries passenger up from Fl "+p.getCurrentFloor()+" to Fl "+p.getTargetFloor());
numFloors=p.getTargetFloor()-p.getCurrentFloor();
elevator.up(numFloors);
}
else
{ numFloors=p.getTargetFloor()-p.getCurrentFloor();
if(numFloors>0)
{
System.out.println("Elevator carries passenger up from Fl "+p.getCurrentFloor()+" to Fl "+p.getTargetFloor());
elevator.up(numFloors);
}
else
{
System.out.println("Elevator carries passenger down from Fl "+p.getCurrentFloor()+" to Fl "+p.getTargetFloor());
elevator.down(-numFloors);
}
}
passengers.remove(0);//removes passenger at head
}
}
}
/*****************************/
/*
* File: TestPassengersTakeElevator.java
*/
import java.util.ArrayList;
public class TestPassengersTakeElevator {
public static void main(String[] args) {
//object of PassengersTakeElevator
System.out.println("Schedule 1");
PassengersTakeElevator obj1=new PassengersTakeElevator();
obj1.schedule();//calling schedule method of PassengersTakeElevator
ArrayList <Passenger> passengers=new ArrayList<>();
Elevator elevator=new Elevator();
Passenger p0=new Passenger(1, 5);
passengers.add(p0);
Passenger p1=new Passenger(2, 4);
passengers.add(p1);
Passenger p2=new Passenger(4, 1);
passengers.add(p2);
System.out.println();
System.out.println("Schedule 2");
PassengersTakeElevator obj2=new PassengersTakeElevator(elevator,passengers);
obj2.schedule();//calling schedule method of PassengersTakeElevator
}
}