我有这个代码示例
public class Plane {
private String id;
private Flight flight;
private int seats;
public int getSeats() {
return seats;
}
}
public class Flight {
private String id;
private Set<Passenger> passengers;
private Set<Employee> crew;
private String destination;
private int flighTime; // minutes past Midnight
private int flightDuration; // in minutes
}
现在我正在尝试实施Flight的方法,Add1Passenger,所以我需要仰望飞机,如果有一个免费座位(座位数少于Flight的乘客数量)但我不知道如何做这样的事情。或者有更好的解决方案吗?
答案 0 :(得分:1)
您应该将一个getter方法添加到您公开的Plane类中。
public class Plane {
private String id;
private Flight flight;
private int seats;
public int getSeats(){
return seats;
}
}
修改强>
您可以让Plane成为Flight的属性并通过构造函数传入。所以现在你有一架与飞行相关的飞机
public class Flight {
private String id;
private Set<Passenger> passengers;
private Set<Employee> crew;
private String destination;
private int flighTime; // minutes past Midnight
private int flightDuration; // in minutes
private Plane aircraft; // the aircraft assigned to the flight
public Flight(Plane airplane){
aircraft = airplane;
}
public Boolean addPassenger(Passenger passenger){
if(aircraft.getSeats() > passengers.size()){
passenges.add(passenger);
return true;
}
return false;
}
}
从理论上讲,你可以选择另一条在飞机上传递的路线作为addPassenger的参数,但是如果你将飞机传递给飞机,可以认为飞机的不同实例可以传递到飞行中,反之亦然。飞机物体,你可以在飞机上有不同的航班,如果这是合法的商业要求,这可能没问题,但如果航班有不同的目的地,那就没有意义了。
答案 1 :(得分:0)
在这里你是你也可以在你存储这两个类的同时制作第3课,你必须总是在构造函数中使用Inicialize新对象不要忘记
public class Plane {
private String id;
private Flight flight;
private int seats;
Plane(Flight flight) {
this.flight = flight;
}
public void addPasagerToFlight() {
if (this.seats > flight.getPassagers()) {
flight.addPasagerToFlight();
}
}
}
public class Flight {
private String id;
private Set<Passenger> passengers;
private Set<Employee> crew;
private String destination;
private int flighTime; // minutes past Midnight
private int flightDuration; // in minutes
// for example use LinkedList ArrayList HashSet ....
public void addPasagerToFlight(Passenger pas) {
this.passengers.add(pas);
}
}