Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
转换UML类关联“;1至n“;到java代码_Java_Uml_Reverse Engineering - Fatal编程技术网

转换UML类关联“;1至n“;到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

我必须做从UML类图到java代码的逆向工程。下面是一个例子:

如您所见,SCSIController可以有1..4个磁盘驱动器。我可以用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(){
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