uml 类图与类的关系
2017-04-16 00:00
323 查看
在设计类图时,理清类与类之间的关系是重点。类的关系有泛化 (Generalization)、实现 (Realization)、依赖 (Dependency) 和关联 (Association)。
其中关联关系又分为一般关联 (Association)、聚合关联 (Aggregation) 与组合关联 (Composition)。
OMT, Object Modeling Technology 对象建模技术是 1991 年,James Rumbaugh 在面向对象的建模与设计一书中提出的方法。
类图 (Class Diagram):类图是面向对象系统建模中最常用和最重要的图,是定义其它图的基础。类图主要是用来显示系统中的类、接口以及它们之间的静态结构和关系的一种静态模型。
类图的 3 个基本组件:类名、方法、属性。
graphviz 代码
graphviz 代码
graphviz 代码
graphviz 代码
3ff0
关联又分为一般关联、聚合关联与组合关联。在 UML 图中,用带箭头的实线表示,箭头从使用类指向被关联的类,可以是单向和双向。
如,在一个登录界面类 Login 中包含一个 Button 类的注册按钮 loginButton,它们之间可以表示为关联关系。
graphviz 代码
graphviz 代码
graphviz 代码
其中关联关系又分为一般关联 (Association)、聚合关联 (Aggregation) 与组合关联 (Composition)。
基本概念
面向对象建模方法有很多种,也都在进一步的发展和完善中。OMT 法是目前最为成熟和实用的方法之一。OMT, Object Modeling Technology 对象建模技术是 1991 年,James Rumbaugh 在面向对象的建模与设计一书中提出的方法。
类图 (Class Diagram):类图是面向对象系统建模中最常用和最重要的图,是定义其它图的基础。类图主要是用来显示系统中的类、接口以及它们之间的静态结构和关系的一种静态模型。
类图的 3 个基本组件:类名、方法、属性。
graphviz 代码
digraph class { node [shape=record, fontname="mono", fontsize=11] NoticeAction [label="{NoticeAction | - notice: Notice\l- noticeService: NoticeService\l | + saveNotice(Notice): void\l+ dispatchNotice(): Notice\l+ findNotice(): List\l+ replyNotice(Reply): void\l}"]; }
泛化 (Generalization)
泛化 (Generalization) 关系也就是继承关系,在 UML 中,泛化关系用带空心三角形的直线表示。graphviz 代码
digraph G { node [shape=record, fontname="mono", fontsize=11] component [label="{VisualComponent | + Draw()\l}"]; textview [label="{TextView | + Draw()\l}"]; rankdir=BT; textview -> component [arrowhead=onormal]; }
实现 (Realization)
实现 (Realization) 关系在类图中是接口与实现的关系。在 UML 中,实现关系用带空心的虚线表示。graphviz 代码
digraph G { node [shape=record, fontname="mono", fontsize=11]; interface [label="{IWindow | + DrawText()\l+ DrawRect()\l}"]; implement [label="{WindowImp | + DrawText()\l+ DrawRect()\l}"]; rankdir=BT; implement -> interface [arrowhead=onormal, style=dashed]; }
依赖 (Dependency)
依赖 (Dependency) 关系是对象之间最弱的一种关系。代码中一般指由局部变量、函数参数、返回值建立的对于其他对象的调用关系。在 UML 中使用带箭头的虚线表示,箭头指向被依赖的类。graphviz 代码
digraph G { node [shape=record, fontname="mono", fontsize=11]; driver [label="{Driver | <d> + drive (Car car) : void\l}"]; car [label="{Car | + move() : void\l}"]; code [shape=note, style=filled, label="car.move();", fillcolor=gray90]; rankdir=BT code -> driver:d [arrowhead=none, style=dashed]; driver -> car [style=dashed]; }
关联 (Association)
关联 (Association) 关系指对象之间一种引用关系,比如客户类与订单类之间的关系。这种关系通常使用类的属性表达。3ff0
关联又分为一般关联、聚合关联与组合关联。在 UML 图中,用带箭头的实线表示,箭头从使用类指向被关联的类,可以是单向和双向。
如,在一个登录界面类 Login 中包含一个 Button 类的注册按钮 loginButton,它们之间可以表示为关联关系。
graphviz 代码
digraph G { node [shape=record, fontname="mono", fontsize=11] edge [fontname="mono", fontsize=11] form [label="Login | - loginButton : Button\l | "]; button [label="Button"]; rankdir=LR form -> button [label="contains"] }
聚合 (Aggregation)
聚合 (Aggregation) 表示 has-a 的关系,是一种不稳定的包含关系。较强于一般关联,有整体与局部的关系,并且没有了整体,局部也可单独存在。例如:汽车发动机 (Engine) 是汽车 (Car) 的组成部分,但是汽车发动机可以独立存在,因此,汽车和发动机是聚合关系。在 UML 中,使用空心菱形表示,菱形从局部指向整体。graphviz 代码
digraph G { node [shape=record, fontname="mono", fontsize=11]; edge [fontname="mono", fontsize=11]; car [label="Car | - engine: Engine\l"]; engine [label="Engine"]; rankdir=LR; engine -> car [arrowhead=odiamond]; }
组合 (Composition)
组合 (Composition) 表示 contains-a 的关系,是一种强的包含关系。组合类负责被组合类的生命周期。是一种更强的聚合关系。部分不能脱离整体存在。如鸟 (Bird) 的翅膀 (Wing),翅膀是鸟的组成部分之一,鸟没了,翅膀也就不存在了。在 UML 中,使用实心的菱形表示,菱形从局部指向整体。graphviz 代码
digraph G { node [shape=record, fontname="mono", fontsize=11]; edge [fontname="mono", fontsize=11]; bird [label="Bird | "]; wing [label="Engine"]; rankdir=LR; wing -> bird [arrowhead=diamond]; }
相关文章推荐
- 设计模式——UML建模的重要知识类图关系和基本的设计原则小结
- uml中类图和类的关系
- 【转】UML关系类图大全
- UML类图常见的几种关系
- UML 类图的关系
- UML类图常见的几种关系
- UML中的类图中关系
- UML图中类图和对象图的关系
- uml 类图中的6种关系
- 网页资料-UML中类图中的几种关系
- UML用例、类图中关系的表示
- UML类图几种关系的总结
- UML - 类图的关系总结
- 区分 UML 类图中的几种关系
- UML 类图关系
- UML类图几种关系的总结
- UML 类图几种关系总结
- [UML]UML系列——类图class的依赖关系
- 3-UML符号与关系、类图、对象图和包图
- 【图说UML】类图及类之间的关系