- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
java中类的关系
Java类之间的关联关系UML类图中的关系分为四种:泛化、依赖、关联、实现;关联关系又可以细化为聚合和组合。一、泛化(Generalization)泛化是父类和子类之间的关系,子类继承父类的所有结构和行为。在子类中可以增加新的结构和行为,也可以覆写父类的行为。一般用一个带空心箭头的实线表示泛化关系,UML图如下:泛化对应Java中继承关系,即子类继承父类中出private修饰外的所有东西(变量、方法等)。示例代码:public class Animal {}public class Tiger extends Animal {}Tiger继承Animal,因此Tiger与Animal之间是泛化(继承)关系。这个很好理解。二、依赖(Dependency)依赖关系是一种使用关系,特定事物的改变有可能会影响到使用该事物的事物,反之不成立。在你想显示一个事物使用另一个事物时使用。一般用一条指向被依赖事物的虚线表示,UML图如下:通常情况下,依赖关系体现在某个类的方法使用另一个类作为参数。代码示例:public class Screwdriver {??? //螺丝刀,作为人类的工具,是用来被人类使用的}public class Person{?????? public void screw(Screwdriver src){??? //拧螺丝,需使用螺丝刀}}Person类的screw()方法在使用时就得传入一个Screwdriver类型的参数,这样Screwdriver的改变就会影响到Person,因此Person与Screwdriver之间就是依赖关系(Person依赖于Screwdriver)。三、关联(Association)是一种结构关系,说明一个事物的对象与另一个事物的对象相联系。给定有关联的两个类,可以从一个类的对象得到另一个类的对象。关联有两元关系和多元关系。两元关系是指一种一对一的关系,多元关系是一对多或多对一的关系。两个类之间的简单关联表示了两个同等地位类之间的结构关系。当你想要表示结构化关系时使用关联。(可以想想Hibernate的关联关系)一般用实线连接有关联的同一个类或不同的两个类。UML图如下:通常情况下,关联关系是通过类的成员变量来实现的。代码示例:public class Company {?? //公司private Employee emp ;? //一个公司雇员,公司与雇员之间就是一种关联关系。}public class Employee{}雇员作为公司的属性,不同于上面的依赖。依赖的话,雇员的改变会影响公司,显然不是。在这里雇员仅仅作为公司的一个属性而存在。因此Employee与Company之间是关联关系。关联关系还可以细分为聚合和组合两种。3.1? 聚合(Aggregation)聚合是一种特殊的关联。它描述了“has a”关系,表示整体对象拥有部分对象。关联关系和聚合关系来语法上是没办法区分的,从语义?上才能更好的区分两者的区别。聚合是较强的关联关系,强调的是整体与部分?之间的关系。例如,学校和学生的关系。聚合的整体和部分之间在生命周期上没有什么必然的联系,部分对象可以在整体对象创建之前创建,也可以在整体对象销毁之后销毁。一般用带一个空心菱形(整体的一端-学校)的实线表示。UML图如下:与关联关系一样,聚合关系也是通过类的成员变量来实现的。示例代码:public class Student{}public class School{?? ?????? private ListStudent students ;? //学校与学生是聚合关系}学校是整体,而学生是部分。学校与学生都是可以独立存在的,之间没有什么必然的联系。因此学校与学生就是聚合关系。3.2? 组合(Composition)组合是聚合的一种形式,它具有更强的拥有关系,强调整体与部分的生命周期是一致的,整体负责部分的生命周期的管理。生命周期一致指的是部分必须在组合创建的同时或者之后创建,在组合销毁之前或者同时销毁,部分的生命周期不会超出组合的生命周期。例如Windows的窗口和窗口上的菜单就是组合关系。如果整体被销毁,部分也必须跟着一起被销毁,如果所有者被复制,部分也必须一起被复制。一般用带实心菱形(整体的一端)的实线来表示。UML图如下:与关联关系一样,组合关系也是通过类的成员变量?来实现的。示例代码:public class Menu{}public class Window{?????? private ListMenu menus ;}菜单的存在前提是窗口的存在,两者之间存在很强的拥有关系。且窗口对菜单的生命周期负责,只有在窗口创建之后,菜单才能够创建,菜单必须在窗口销毁之前销毁。因此Window与Menu之间是组合关系。聚
文档评论(0)