我的UML图是否适用于附加代码?

时间:2016-10-12 04:12:39

标签: java uml

我的教授给了我们这个程序,但根本没有向我们解释UML,我想知道我是否正确地制作了这个图。

CODE:

package p1;
public class MyProg {
    static int i = 5;
    private Integer j = new Integer(10);
    protected double k = 2.5;
    public MyProg() {}

    public static void main(String[] args) {  
        MyProg mp = new MyProg();  
    }

    void m1(){
        System.out.println("Hello World!");
    }

    void m1(String str, int n){
        for(int k = 0; k < n; k++)
            System.out.println(str);
    }

    public static int getI(){   
        return MyProg.i;  
    }

    protected Integer getJ(){   
        return new Integer(j);
    }

    double getK(){  
       return new Double(k);   
    }
}

enter image description here

3 个答案:

答案 0 :(得分:2)

在你的图表上:

  • 如前所述,i和j不是字符串
  • 主要操作中的
  • args参数是某种数组,因此您缺少多重性指示符(在关闭圆括号之前方括号中的星号)。所以该行应该看起来像+ main(in args: String[*])。当然强调
  • m1操作中的
  • 应该具有未指定的类型
  • 初始值应指定为已在评论中提及
  • 您可以使用标准刻板印象&lt;&gt;在MyProg操作中将其标记为构造函数。有些书建议不要对构造函数进行建模,除非它是非标准的(即需要一些参数)
  • 我会非常小心参与vs inout指标。在Java中,默认情况下对象通过引用传递,这意味着参数是inout而不是in。在C ++中它是相反的情况,参数通过值传递,即它在。

答案 1 :(得分:1)

我对自己对UML的细节过于痴迷从来没有太大的意义(我确实看到设计会议后来讨论了UML的细节而不是设计本身),但是几个小问题:

  • 您通常不希望在类图上包含私有变量,方法等,因为这是一个实现细节(不是设计细节)。 编辑:这一点可能在某种程度上取决于图表的目的 - 有些人会认为在某些情况下包含这些内容是可以接受的(例如,如果您的主要目的是为了沟通您的实施而非比你的设计好。)
  • 其中一些方法(例如double getK())缺少访问修饰符。虽然依靠默认设置在技术上在法律上是合法的,但明确表达您的意图总是更好。

答案 2 :(得分:0)

将所有答案粘贴在一个答案中会很好...

  • 在程序中,您使用IntegerStringDouble(作为课程,我猜),有时混合int,而在您的类图中,您使用全部更低case(是原始的)并且总是integer。这应该是一致的。