在学习C语言的时候,教科书上的第一个程序就是Hello World,即一个在屏幕上简单地打印出“Hello World!”语句的例子。在初步学习了事物与关系的图形表示后,我们就可以用UML来为这个Hello World例子进行面向对象建模,让大家有一个直观的认识。
图9—17 泛化关系
图9—18 实现关系
在java中,一个在浏览器中显示“Hello World!”的Applet代码如下:
第一行代码“import java.awt.Graphics;”使得程序可以使用Graphics类。前缀java.awt指出了类Graphics所在的包。
第二行代码“class HelloWorld extends java.applet.Applet{”从Applet类派生出新的类HelloWorld,Applet类在java.applet包中。
接下来的代码:
public void paint(Graphics g){
g.drawString("Hello World!",10,10);}}(www.daowen.com)
声明了类Hello World的方法paint,它用了一个Graphics对象g为参数,通过调用g的方法drawString来在屏幕上输出“Hello World!”。我们用UML为这个程序建立模型,如图9—19所示。
图9—19 HelloWorld的UML模型
图9—19表达了最基本的Hello World模型:一个类事物加上一个注释事物。但它还有很多东西没有表示出来,在我们的程序中还有Applet类和Graphics类。Applet用作Hello World类的父类,而Graphics类用在方法paint的实现中。在UML模型中可以将这些关系表示为图9—20。
图9—20 HelloWorld的类及其关系模型
在图9—20中,我们用简单的矩形图标表示类Applet和Graphics,没有将它们的属性和方法显露出来是为了简化。图中的空心箭头表示Hello World类是Applet类的子类,代表一般化。Hello World和Graphics之间的虚线箭头表示依赖关系,表示Hello World类使用了Graphics类。
到这里或许你认为已经结束了,其实不然,如果认真研究java库中的Applet类和Graphics类,会发现它们都是一个庞大的继承关系中的一部分。追踪Applet的实现可以得到另外一个类关系图,如图9—21所示。其中的Component类通过Image Observer接口来接收有关Image信息的通知。
通过上面的Hello World示例,我们可以大致了解UML模型的搭建。事物、关系在模型中均用统一规范的图标直接表示,这些图标相互连接起来就构成了图,而图正是模型的表现形式。语义规则主要体现在模型中各个图标的命名、定义等工作上。公共机制则主要体现在图标间的相互连接上,旨在让连接更加清晰明了,让读者看得更加清楚,方便交流与查看。
图9—21 Hello World的类继承图
建模实际上是对真实世界进行简化,从而可以更好地理解你要开发的系统。使用UML中基本的构造块如类、接口、组件、关联、依赖、继承等,可以建立简单的系统模型。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。