我正在研究Java中的电梯问题。我遇到的一个问题是如何将对象分配给对象。例如,有7层,每层是一个对象。所以......
答案 0 :(得分:4)
您可以让resident
设置Floor
类的成员,以便每个实例都跟踪它自己的居民:
public class Floor {
private Set<Passenger> resident = new HashSet<>();
public boolean isResident(Passenger p) {
return resident.contains(p);
}
}
答案 1 :(得分:0)
我觉得住宅楼是一个属于居民的地方。只需在Floor
对象中保留Passenger
个对象。
public class Passenger {
private Floor residenceFloor;
public void setResidenceFloor(Floor residenceFloor) {
this.residenceFloor = residenceFloor;
}
public Floor getResidenceFloor() {
return residenceFloor;
}
}
在评估居民是否属于某个楼层时,只需对您的Floor
对象使用覆盖等于方法。
Floor f1 = new Floor();
Passenger p1 = new Passenger();
p1.setResidenceFloor(f1);
if (f1.equals(p1.gerResidenceFloor()) {
// p1 is a resident of f1
}
您还可以在Set
个对象中容纳Floor
个居民。这些只是两种不同的OOP样式。
答案 2 :(得分:0)
简短的回答是:是的。
由于您有一个包装函数isResident
,您还可以实现包装器addResident
并将resident
声明为private
答案 3 :(得分:0)
不确定您的总体目标或用途是什么,但似乎给Floor类提供了由构造函数设置的字段floorNumber可以提供一些额外的灵活性。
Floor floor1 = new Floor(1);
然后,只需将residenceFloor作为乘客的一个领域:
public class Passenger {
private int residenceFloor;
public void setResidenceFloor(Floor residenceFloor) {
this.residenceFloor = residenceFloor.floorNumber;
}
public Floor getResidenceFloor() {
return residenceFloor;
}
}
将楼层号作为字段对我来说似乎更有用,因为它允许一种简单的方法让其他方法/字段引用它。乘客可以在当前的地点拥有当前的地板,或者居民可能会移动到不同的楼层,任何需要更改或设置楼层状态的方法都可以使用您通过它的任何楼层的楼层数。