Answer:
Code given below
Step-by-step explanation:
/*
* Class to hold the Passenger data
* Stores the name and classOfService
* */
public class Passenger {
String name;
int classOfService;
public Passenger(String string, int classOfService) {
this.name = string;
this.classOfService = classOfService;
}
@Override
public String toString() {
return "Passenger [name=" + name + ", classOfService=" + classOfService
+ "]";
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + classOfService;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Passenger other = (Passenger) obj;
if (classOfService != other.classOfService)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
public String getName() {
return name;
}
public int getClassOfService() {
return classOfService;
}
}
----
import java.util.ArrayList;
import java.util.List;
/* Train class for holding the
* passengerList.
* The passengerList is the list of Passenger Object
*/
public class Train {
List<Passenger> passengerList;
public Train() {
passengerList = new ArrayList<Passenger>();
}
public Passenger getPassenger(int index) {
if (index <= 0 && getTotalNumberOfPassengersOnBoard() < index) {
return null;
} else {
return passengerList.get(index - 1);
}
}
public void addPassenger(Passenger p) {
passengerList.add(p);
}
public int getTotalNumberOfPassengersOnBoard() {
return passengerList.size();
}
public boolean isPassengerOnBoard(String name) {
boolean flag= false;
for (Passenger p : passengerList) {
if (p.getName().equalsIgnoreCase(name)) {
flag = true;
break;
} else {
flag = false;
}
}
return flag;
}
public double getRevenue(double priceFirstClass, double priceSecondClass) {
double total = 0.0;
for (Passenger p : passengerList) {
if (p.getClassOfService() == 1) {
total += priceFirstClass;
} else {
total += priceSecondClass;
}
}
return total;
}
public double getPercentageFirstClassTravellers() {
double count = 0.0;
for (Passenger p : passengerList) {
if (p.getClassOfService() == 1) {
count++;
}
}
return count / getTotalNumberOfPassengersOnBoard() * 100;
}
@Override
public String toString() {
return "Train [passengerList=" + passengerList + "]";
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result
+ ((passengerList == null) ? 0 : passengerList.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Train other = (Train) obj;
if (passengerList == null) {
if (other.passengerList != null)
return false;
} else if (!passengerList.equals(other.passengerList))
return false;
return true;
}
}
-----------
public class TrainTest {
public static void main(String[] args) {
Train t = new Train();
Passenger p1 = new Passenger("James", 1);
Passenger p2 = new Passenger("Sarah", 2);
Passenger p3 = new Passenger("Jhon", 1);
Passenger p4 = new Passenger("Test", 2);
// add other passengers Test1 .. Test6
for (int j = 1; j < 7; j++) {
t.addPassenger(new Passenger("Test" + j, j % 2));
}
t.addPassenger(p1);
t.addPassenger(p2);
t.addPassenger(p3);
t.addPassenger(p4);
System.out.println("total revenue $" + t.getRevenue(10.0, 25.0));
System.out.println("total number of passengers on Board .. "
+ t.getTotalNumberOfPassengersOnBoard());
System.out.println("percentage of first class traveller .. "
+ t.getPercentageFirstClassTravellers());
System.out.println("getPassenger number # 2 .. " + t.getPassenger(2));
System.out.println("is passenger Jhon on board ? "
+ t.isPassengerOnBoard("Jhon"));
System.out.println("is passenger Dummy on board ? "
+ t.isPassengerOnBoard("Dummy"));
System.out.println("Printing all the Passengers on Board ...");
for (int i = 1; i <= t.getTotalNumberOfPassengersOnBoard(); i++) {
System.out.println("" + t.getPassenger(i));
}
// using the the Train toString to print all the passengers from Train
System.out.println(t.toString());
}
}