UML到java代码

时间:2017-08-11 09:31:49

标签: java uml

我试图了解UML类图,但我不确定我是否... 让我们假设我们有一个像这样的UML类图(每个类中只显示必需的属性): UML class diagram

上面那个UML类图的java代码应该是这样的(如果我没错)

class Car {
    private String color;
    private int weight;
    private Gearbox gearbox;
    private Brand brand_name;
}

class Brand {
    private String Skoda;
    private String BMW;
    private Location location;
}

class Location {
    private String US;
    private String EU;
}

class Gearbox {
    enmu Gearbox {
    automatic, manual
    }
}

问题是:我是否正确?我能做得好吗?

3 个答案:

答案 0 :(得分:4)

下面:

class Gearbox {
    enmu Gearbox {
    automatic, manual
    }
}

最好是:

enum Gearbox { AUTOMATIC, MANUAL; }

将枚举包装到Java中的同名类中有 no 点。

建模的角度来看,我也会将枚举用于定位和品牌。品牌中还有 no 点,其中包含名为BMW或Skoda的字段。一辆汽车具有完全一个品牌的已知disjunkt可能性。并且存在用于表达这种情况的枚举。

您的实现(枚举事项除外)与图表匹配。是。但对我而言,正确性也意味着"大图片"解决了。正如所解释的那样:你的输入本质上是有缺陷的。你设法"正确"用Java源代码表达输入。所以你解决了任务(imho)。但在现实世界中,我会把你送回家,并让你先重新制作图表。

从那里开始,真正的答案是:首先查看UML图。这种方式没有意义。因此,不要盲目地实施给你的东西 - 挑战明显不一致的要求。

答案 1 :(得分:3)

除了Gearbox不需要类包装(使用简单的枚举)之外,实现是正确的,但是图表开头不正确。

在您提议的实施中,您可以注意到您实际上将位置和品牌视为伪枚举;要么有意义地使用类,要么使用枚举。这种伪概念只是令人困惑。

在编写代码时尝试遵循Java命名约定(所以brandName而不是brand_name等)

1)与Gearbox无关联

您不应该指定与枚举的关联(对于诸如String,int等原始类型相同),而是使用属性。

此外,您不应该为枚举文字提供可见性(公共,私有,...)。事实上,UML甚至不允许您指定,因为枚举中的“属性”实际上是与类中属性不同的概念。

enter image description here

2)brand_name是奇数

汽车是以一个品牌制造的,这个品牌有一个名字。但是,最好将品牌建模为具有name属性的单独实体,而不是具有“brand_name”关联或枚举。

enter image description here

如果您想保留brand_name“access”,您可以添加一个可以获得价值的方法,例如

enter image description here

3)位置相同;位置可能比国家/地区具有更多属性;也许是地址,也许是联系点等等。所以把它当作另一种建模概念。

4)如果您没有指定共享关联,请不要使用共享关联

UML中的共享关联(空菱形)没有指定的含义,这使它变得灵活,但是如果你在没有指定含义的情况下使用它,它就没有任何意义。所以请改用关联。

enter image description here

答案 2 :(得分:0)

我希望通过以下方式理解面向对象的设计和使用UML进行编程。:

var filedelete = Task.Run(() => File.Delete(filePath));