UML类关系之JAVA代码实现.doc_第1页
UML类关系之JAVA代码实现.doc_第2页
UML类关系之JAVA代码实现.doc_第3页
UML类关系之JAVA代码实现.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

UML中类之间的关系及其Java代码例子 Class BClass EClass DClass CClass A摘自 Java开发者 frenzied关系是事物之间的联系。类之间有4种重要的关系:依赖、泛化、关联和实现。这些关系都可以映射到代码里。依赖()是一种使用关系,描述了一个事物的规格说明的变化可能会影响到使用它的另一个事物(反之不一定)。在UML中表示为一条指向被依赖事物的虚线。依赖有很多构造型,不过一般不需要使用,以免搞得过份复杂。其实另外3种关系泛化、关联和实现都可以算作是某种依赖关系,只不过它们有比较强的语义和重要的作用,所以划分出来。一般对类关系建模的时候,先对泛化、关联和实现建模,剩下的关系都可以看作依赖了。对应到代码中,依赖关系可能有很多种形式,例如public class A public B getB(C c, D d) E e = new E(); B b = new B(c, d, e); 这里类A就依赖于类B(方法返回类)、C和D(参数类)、E(方法内变量的类),因为这几个类的变化都有可能影响到类A 泛化(Generalization)是一般事物(称为超类或父类)和较特殊的事务(称为子类)之间的关系,对类来说一般就是继承了,如:public Class A extends B。一般用一个带空心箭头的实线表示泛化关系。关联是一种结构关系,说明一个事物的对象与另一个事物的对象相联系。给定一个连接两各类的关联,可以从一个类的对象导航到另一个类的对象。一般把关联画为连接相同或者不同的类一条实线。关联可以有方向,即导航。一般不作说明的时候,导航是双向的,不需要在线上标出箭头。大部分情况下导航是单向的,可以加一个箭头表示。关联在代码中一般表示为属性,例如public class Aprivate B b;可以认为有一个A指向B的关联。如果B也关联到A,那么它们就是双向的关联。有的时候B不是A的属性,但是也可以有关联关系,例如:public class Apublic B getBs().方法getBs可能去查数据库,找到A和B之间的关联关系。 两个类之间的简单关联表示了两个同等地位类之间的结构关系。聚合也是一种关联关系,与简单关联不同的是,它描述的是一个整体和组成部分的关系,即“has-a”关系,意思是整体对象拥有部分对象,例如学校和学生的关系。聚合的整体和部分之间在生命周期上没有什么必然的联系,部分对象可以在整体对象创建之前创建,也可以在整体对象销毁之后销毁。聚合用带一个空心菱形(整体的一端)的实线表示。public Class Person. public Class Schoolprivate ArrayList students;private void addStudent(Person person)students.add(person);组合则是比聚合更强的关联形式。组合是指带有很强的拥有有关系且整体与部分的生命周期一致的聚合关联形式。例如Windows的窗口和窗口上的菜单就是组合关系。生命周期一致指的是部分必须在组合创建的同时或者之后创建,在组合销毁之前或者同时销毁,部分的生命周期不会超出组合的生命周期。组合是用带实心菱形(整体的一端)的实线来表示。public Class Menu.public Class Windowprivate Menu menu;组合和聚合在代码实现上的主要差别在于生命周期的实现上,组成需要负责其部分的创建和销毁。public Class Schoolpublic School()./不需要创建任何Person对象,其Students都是已有的Person对象public void destroy()./只需要关掉School对象和断开它与自己所有的Person对象的关联即可,Person对象是不会销毁的 public Class Windowprivate Menu menu;public Window()menu = new Menu();/可以在这时候创建Menu对象,也可以在之后创建public void destory()menu.destory();/必须同时或者在这之前销毁关联的Menu对象 另外有一个差别是组合中的一个对象在同一时刻只能属于一个组成对象,而聚合的一个部分对象可以被多个整体对象聚合,例如一个学生可以在多个学校就读,而一个菜单在同一时刻只能是某个窗口内的对象。 实现(Realize)关系就比较简单了,指的是一个类元描述了另一个类元保证实现的契约。对类来说,就是一个类实现了一个接口public interface A public void methodA();public class B implements Apublic void methodA().一般在面对对象的系统中,尽可能的使用接口来减少类之间的耦合。因为接口没有实现,所以依赖于接口就不会依赖于某种具体实现,例如jdbc里的Connection和ResultSet都是接口,不同数据库厂商的实现可以不一样。总结一下1)依赖关系:关系对象出现在局部变量或者方法的参数里,或者关系类的静态方法被调用2)关联关系:关系对象出现在实例变量中3)聚合关系:关系对象出现在实例变量中4)合成关系:关系对象出现在实例变量中5)Generalization: extends6)实现: implem

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论