为Java代码创建UML

时间:2013-03-21 05:48:58

标签: java interface uml extends interface-implementation

我必须为下面编写的两个Java程序/代码创建UML图。 我的疑问是:

  • 接口的子类也是接口吗?
  • 实现Runnable Interface的类是一个接口吗?
  • 不能将方法/函数称为类的操作吗?
  • 全局变量是一个类的唯一属性还是函数中的局部变量也可以这样调用?
  • 在第二个程序中,作者正在向Thread构造函数发送一个对象。这是对的吗?

除此之外:有人可以为这两个程序绘制UML吗?我很难理解Threads,interface&相关的关键词,如extends,implements。

JAVA CODE#1

public class RunThreads
  {
    public static void main(String[] args)
      {
        SomeThread p1=new new SomeThread(1);
        p1.start();
        SomeThread p2=new new SomeThread(2);
        p2.start();
        SomeThread p3=new new SomeThread(3);
        p3.start();
      }
  } // end class RunThreads

public class SomeThread extends Thread {
  {
    int myID;
    SomeThread(int id) {
      this.myID=id;
    }
    public void run() {
      int i;
      for(i = 1; i < 11; i++)
        System.out.println("Thread" + myID + ": " + i);
    }
  } // end class SomeThread

JAVA CODE#2

public class RunThreads2
  {
    public static void main(String[] args)
      {
        Thread p1 = new Thread(new SomeThread2(1));
        p1.start();
        Thread p2 = new Thread(new SomeThread2(2));
        p2.start();
        Thread p1 = new Thread(new SomeThread2(3));
        p3.start();
      }
  } // end class RunThread2

class SomeThread2 implements Runnable {
  int myID;
  SomeThread2(int id) {
    this.myID = id;
  }
  public void run() {
    int i;
    for(i=1; i<11; i++)
      System.out.println("Thread " + myID + ": " + i);
    }
  } // end class SomeThread2

2 个答案:

答案 0 :(得分:0)

  

接口的子类也是接口吗?

没有接口的子类这样的东西。您可以extend与其他界面的界面,也可以implement与班级的界面。

  

实现Runnable Interface的类是否也是一个接口?

不 - 这是一堂课。界面定义为interface,而不是class

  

不能将方法/函数称为类的操作吗?

当然 - 方法/功能/操作 - 对我来说听起来像是合理的同义词。在内部,Java称它们为方法(参见reflection related javadoc

  

全局变量是类或局部变量的唯一属性   在一个函数内也可以这样调用吗?

我假设您将类属性称为类实例拥有的对象/基元 - 在第一个示例中,myID类中的SomeThread。方法中的局部变量只能在该方法中访问(例如,同一类中i方法中的run),而不是类属性。

  

在第二个程序中,作者正在向Thread发送一个对象   构造函数。这是对的吗?

是; new SomeThread2(3)返回SomeThread的实例,该实例也是一个对象。

  

有人可以为这两个程序绘制UML吗?

不太可能。这听起来太像家庭作业了。

答案 1 :(得分:-1)

您可以使用IBM rational rose软件为您的程序获取UML图表(它不是免费版本)

或者如果您开发了编码,那么您应该知道逻辑,并且可以使用Edraw来绘制UML图。

线程只能以两种方式使用

通过实现Runnable接口或扩展Thread类。

简单:如果您使用关键字extends,那么您使用类

如果使用关键字implements,则使用接口。