我必须将下面的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;
}
}
2条答案
按热度按时间pn9klfpd1#
我将忽略方法和属性,因为它们是琐碎的,不有趣的(理想情况下应该省略getter)。
您的图表有几个不同之处:
Restaurant
可能根本没有任何预订,因此应该是*
,而不是1..*
Booking
只需要一个Time
,因为Time
已经包含了开始和结束Restaurant
有开始和结束时间。我假设它是为了显示开放时间(这是Time
的单个示例)。Table
上拥有Booking
。在您的图中,只有一个是可能的。Table
可能有多个Booking
。在图中,它可能只有一个。(当然,存在运行时约束,即两个Booking
不应该在同一个Time
周期内预订相同的Table
,但这应该用OCL或注解表示)period
、openingHours
...)更多说明:
Time
应该包含单个时间,或者应该将其重命名为Period
或TimeInterval
。当前命名令人困惑。Time
开始的关系的另一边的多重性可以省略(因为它们在这里没有太多意义)。swvgeqrz2#