我必须进行从UML类图到Java代码的逆向工程。这是一个示例:
如您所见,SCSIController可以具有1..4 DiskDrive。我可以这样用Java表示吗?
public class SCSIController extends Controller{
private List disks;
public SCSIController(){
disks=new ArrayList();
}
public void addDisk(DiskDrive d){
if(disks.size()<4 && !disks.contains(d)){
disks.add(d);
………
………
}else
……… //do something else
}
}
在将磁盘驱动器添加到SCSIController之前,我检查SCSIController的磁盘列表中是否有少于4个磁盘驱动器。这是编码这种1到n关联的正确方法吗?
答案 0 :(得分:0)
基本上您是正确的。但是,您的多样性不需要唯一性
尽管这很有意义:-)严格遵循UML规范,您可以从代码中省略&& !disks.contains(d))
。或者您添加如上所示的类型。 (或者可能只是假设人们能够以正确的方式认识到这一点。)
侧面说明:我认为SCSIController也可以不附加驱动器。您的UML显示1..4
,因此您至少需要一个驱动器,这会使您的代码在这方面出错。