我必须将以下Java代码转换为UML图,但是我不确定我是否正确地完成了类之间的关联。请您告诉我UML图是否正确。
public class Booking {
private String name;
private Time time;
private Table[] tables;
public Booking ( String n, int st, int en, int num ){
}
public int getStart ( ){
return 1;
}
public int getEnd ( ){
return 1;
}
public Table[] getTables ( ){
return new Table[3];
}
public int getBookingSize ( ){
return 1;
}
}
public class Time {
private int startHour;
private int endHour;
public Time ( int st, int en ){
}
public int getStart ( ){
return 1;
}
public int getEnd ( ){
return 1;
}
}
public class Table {
private int number;
private int seats;
public Table ( int num, int sz ){
}
public int getNumber ( ){
return 1;
}
public int getSeats ( ){
return 1;
}
}
public class Restaurant {
private Booking[] bookings;
public void makeBooking ( String n, int st, int en, int s ){
}
public void cancelBooking ( String n ){
}
public Table[] getTables ( String n ){
return new Table[2];
}
public int getStTime (String n) {
return 1;
}
public int getEndTime (String n) {
return 1;
}
}
答案 0 :(得分:1)
我会忽略方法和属性,因为它们很简单而且没有意义(理想情况下应该省略getter)。
您的图表有以下几点不同:
Restaurant
可能根本没有任何预订,因此它应该是*
,而不是1..*
Booking
只需要一个Time
,因为Time
已包含开头和结尾Restaurant
有开始和结束时间。我会假设它显示开放时间(这是Time
的单个实例。Booking
上拥有Table
。在你的图表中只有一个是可能的。Table
可能有很多Booking
个。在你的图表中,它只能有一个。 (当然存在运行时约束,即两个Booking
不应在同一Table
期内预订相同的Time
,但应以OCL或注释)period
,openingHours
,...)更多说明:
Time
应该包含一次,或者应该重命名为Period
或TimeInterval
。目前的命名令人困惑。Time
关系另一面的多重性可以省略(因为它们在这里没有多大意义)。