【发布时间】:2019-06-12 19:29:19
【问题描述】:
我必须做从 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
}
}
在将 DiskDrive 添加到 SCSIController 之前,我检查 SCSIController 在其磁盘列表中的 DiskDrive 是否少于 4 个。这是编码这种 1 到 n 关联的正确方法吗?
【问题讨论】:
-
既然您预先知道实际数字,也许数组会更容易。 DiskDrive 驱动器 = new DiskDrive[4];
-
如果我使用数组,是否需要一个计数器来知道数组中有多少有效元素?
-
你不能做 myArray.add(...),所以当添加一个元素时,你需要知道将它放入什么索引。
-
如果你想使用数组数据结构,你可以添加一个私有静态变量并在 addDisk 方法中增加它。但是,我会选择 HashSet 数据结构,因为原则上它不接受重复。其次,你可以用 4 个元素初始化这个集合(HashSet(4)),性能第一:-)
-
次要问题——从技术上讲,这是正向工程;逆向工程将获取 Java 源代码并从中提取模型。这些术语来自模型驱动的软件开发,这是一种构建模型并从中生成(正向工程)源代码的方法。
标签: java uml reverse-engineering