转换UML类关联“;1至n“;到java代码
我必须做从UML类图到java代码的逆向工程。下面是一个例子: 如您所见,SCSIController可以有1..4个磁盘驱动器。我可以用java这样表示它吗转换UML类关联“;1至n“;到java代码,java,uml,reverse-engineering,Java,Uml,Reverse Engineering,我必须做从UML类图到java代码的逆向工程。下面是一个例子: 如您所见,SCSIController可以有1..4个磁盘驱动器。我可以用java这样表示它吗 public class SCSIController extends Controller{ private List disks; public SCSIController(){ disks=new ArrayList(); } public void addDisk(DiskD
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(){
disks=newarraylist();
}
公共无效添加磁盘(磁盘驱动器d){
if(disks.size()基本上是正确的。但是,多重性并不要求唯一性
尽管这很有意义:-)严格按照UML规范,您可以从代码中省略&&!disks.contains(d))
,或者添加如上所示的类型(或者假设人们能够以正确的方式识别)
旁注:我认为SCSIController也可以不附加驱动器。您的UML显示1..4
,因此您至少需要一个驱动器,这会使您的代码在这方面出错。因为您事先知道实际的数字,也许阵列会更容易。DiskDrive驱动器=新的DiskDrive[4];如果我使用数组,我是否需要一个计数器来知道数组中有多少个元素有效?不能使用myArray.add(…),因此,在添加元素时,您需要知道将其放入哪个索引中。如果要使用数组数据结构,您可以在addDisk方法中添加一个私有静态变量并递增它。但是,我会选择HashSet数据结构,因为原则上它不接受重复项。其次,您可以使用4初始化此集合元素(HashSet(4)),性能第一:-)小点-从技术上讲,这是正向工程;反向工程将获取Java源代码并从中提取模型。这些术语来自模型驱动的软件开发,一种构建模型并生成模型的方法(正向工程)源代码。你认为我可以使用构造函数public-SCSIController(DiskDrive d){disks=new-ArrayList();disks.add(d);}来解决吗?这将是一个解决方案。根据实际经验,我会与UML作者争论,它应该是0..4
。