用UML描述Java类2011-05-25 Ahaoz Java程序员的角度阐述UML和对象建模问题,是一个深入浅出的实用性介绍。 虽然从历史和基本理念方面来探讨UML非常吸引人,但我们还是直接从Java代码开 始,看看UML如何描述Java类,再在叙述过程中插入一些历史和基本理念方面的知 识。UML类图在Java中,我们用下面的代码声明两个公用类,每一个Java类放入一个文件, 文件的名字就是Java类的名字加上扩展名.java:
public class Person{}
public class Organization{}UML是Unified Modeling Language的缩写,即“统一建模语言”。与Java不同 ,UML是一种图形化的建模“语言”,它用一个矩形来表示一个类,在矩形的内部 写上类的名称,一个类图可以放入多个类。用矩形表示类,是UML中U(Unified) 起的作用。在UML的第一个版本出现,每一个对象建模专家都有自己的一套符号, 一些人用点表示类,一些人用圆圈表示类,还有一些人用圆角矩形表示类。显然 ,这很容易引起混乱。后来,Rational公司的三个专家——Grady Booch、James Raumbaugh、Ivar Jacobson达成了一致意见,同意“统一”他们各自使用的符号 ,UML终于创立,符号之争也终于落下了帷幕。图一就是上面两个Java类的UML类 图:

图一 有二个类的简单类图如果要描述一系列类的内部结构以及它们相互之间的关系,UML类图是非常有 用的。例如,在许多书籍中,我们可以看到作者用类图来描述各个类之间的关系 。显然,空的类没有什么实际意义。我们要为Person类加上一些实例变量和简单 的方法。下面是Person类的代码,已经过简化处理,不含任何注释:
public class Person {
private String name;
private String socialSecurityNumber;
private Date dateOfBirth;
private String emailAddress;
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public String getSocialSecurityNumber()
{ return socialSecurityNumber; }
public void setSocialSecurityNumber(String socialSecurityNumber)
{ this.socialSecurityNumber = socialSecurityNumber; }
public Date getDateOfBirth() { return dateOfBirth; }
public void setDateOfBirth(Date dateOfBirth)
{ this.dateOfBirth = dateOfBirth; }
public int calcAgeInYears()
{/*not implemented yet*/return 0;}
}