淮北网站开发公司,安徽网页设计培训,快手seo关键词优化,wordpress 主题 对比设计模式的艺术P1基础—2.3 类之间的关系
在软件系统中#xff0c;类并不是孤立存在的#xff0c;类与类之间存在各种关系。对于不同类型的关系#xff0c;UML提供了不同的表示方式 1#xff0e;关联关系
关联#xff08;Association#xff09;关系是类与类之间最常用…设计模式的艺术P1基础—2.3 类之间的关系
在软件系统中类并不是孤立存在的类与类之间存在各种关系。对于不同类型的关系UML提供了不同的表示方式 1关联关系
关联Association关系是类与类之间最常用的一种关系它是一种结构化关系用于表示一类对象与另一类对象之间有联系如汽车和轮胎、师傅和徒弟、班级和学生等。在UML类图中用实线连接有关联关系的对象所对应的类。 在使用类图表示关联关系时可以在关联线上标注角色名一般使用一个表示二者之间关系的动词或者名词表示角色名有时该名词为实例对象名关系的两端代表两种不同的角色。 如在一个登录界面类LoginForm中包含一个JButton类型的注册按钮loginButton它们之间可以表示为关联关系。 1双向关联
默认情况下关联是双向的。例如顾客Customer购买商品Product并拥有商品反之卖出的商品总有某个顾客与之相关联。 2单向关联
类的关联关系也可以是单向的在UML中单向关联用带箭头的实线表示。例如顾客Customer拥有地址Address则Customer类与Address类具有单向关联关系 3自关联
在系统中可能会存在一些类的属性对象类型为该类本身这种特殊的关联关系称为自关联。例如一个节点类Node的成员又是节点Node类型的对象 4多重性关联
多重性关联关系又称为重数性Multiplicity关联关系表示两个关联对象在数量上的对应关系。
如一个界面Form可以拥有零个或多个按钮Button但是一个按钮只能属于一个界面因此一个Form类的对象可以与零个或多个Button类的对象相关联但一个Button类的对象只能与一个Form类的对象关联。 5聚合关系
聚合Aggregation关系表示整体与部分的关系。在聚合关系中成员对象是整体对象的一部分但是成员对象可以脱离整体对象独立存在。
在UML中聚合关系用带空心菱形的直线表示。 例如汽车发动机Engine是汽车Car的组成部分但是汽车发动机可以独立存在因此汽车和发动机是聚合关系 6组合关系
组合Composition关系也表示类之间整体和部分的关系但是在组合关系中整体对象可以控制成员对象的生命周期。一旦整体对象不存在成员对象也将不存在成员对象与整体对象之间具有同生共死的关系。在UML中组合关系用带实心菱形的直线表示 例如人的头Head与嘴巴Mouth嘴巴是头的组成部分之一而且如果头没了嘴巴也就没了因此头和嘴巴是组合关系如图2-8所示。 2依赖关系
依赖Dependency关系是一种使用关系特定事物的改变有可能会影响到使用该事物的其他事物在需要表示一个事物使用另一个事物时使用依赖关系。大多数情况下依赖关系体现在某个类的方法使用另一个类的对象作为参数。在UML中依赖关系用带箭头的虚线表示由依赖的一方指向被依赖的一方。 例如驾驶员开车在Driver类的drive方法中将Car类型的对象car作为一个参数传递以便在drive方法中能够调用Car类的move方法且驾驶员的drive方法依赖车的move方法因此类Driver依赖类Car 3泛化关系
泛化Generalization关系也就是继承关系用于描述父类与子类之间的关系父类又称作基类或超类子类又称作派生类。在UML中泛化关系用带空心三角形的直线来表示。
在Java语言中使用extends关键字。
例如Student类和Teacher类都是Person类的子类Student类和Teacher类继承了Person类的属性和方法Person类的属性包含姓名name和年龄age每一个Student和Teacher也都具有这两个属性。 4接口与实现关系
在接口中通常没有属性而且所有的操作都是抽象的只有操作的声明没有操作的实现。
UML中用与类的表示法类似的方式表示接口。接口的类图左上角有一个空心圆短线 接口之间也可以有与类之间关系类似的继承关系和依赖关系但是接口和类之间还存在一种实现Realization关系。
在UML中类与接口之间的实现关系用带空心三角形的虚线来表示。
如定义了一个交通工具接口Vehicle包含一个抽象操作move在类Ship和类Car中都实现了该move操作。 如在Java语言中使用implements关键字而在C中使用冒号“”来实现