设计模式之UML类图初步

来源:互联网 发布:gta5卡顿优化 编辑:程序博客网 时间:2024/06/02 00:07
UML图(分为结构图和行为图)
    对软件体系结构进行可视化、详述、构造和文档化,有5种最重要的互补视图:用况视图(usecaseview)、设计视图(designview)、进程视图(processview)、实现视图(implementationview)、实施视图(deploymentview)。每一种视图都包含结构建模(对静态事物建模)和行为建模(对动态事物建模)。    UML中包含9种图,可以将这9种图分为两类,一类用于结构建模,称为结构图;一类用于行为建模,称为行为图。一、结构图结构图有4种,分别是:⑴类图(classdiagram)    类图显示一组类、接口、协作以及它们之间的关系。类图可用于说明系统的静态设计视图。包含主动类的类图可用于说明系统的静态进程视图。⑵对象图(objectdiagram)    UML图中对象图显示一组对象以及他们之间的关系。对象图是类图中发现的事物的实例的数据结构和静态快照。对象图也可用于说明系统的静态设计视图和静态的进程视图,但它是从现实或原型的方面来透视的(因为是类的实例)。⑶构件图(componentdiagram)    UML图中构件图显示了一组构件以及他们之间的关系。构件图可用于说明系统的静态实现视图。⑷实施图(deploymentdiagram)    UML图中实施图显示了一组节点以及他们之间的关系。实施图可用于说明系统的静态实施视图。    这4种图还有一些常见的变体,例如子系统图实际就是一个类图。二、行为图行为图有5种,分别是:⑴用况图(usecasediagram)    UML图中用况图用于组织系统的行为,描述了一组用况和参与者以及他们之间的关系。用况图用于描述系统的静态用况视图。⑵顺序图(sequencediagram)和协作图(collaborationdiagram)    UML图中顺序图和协作图在语义上是等价的,它们可以互相转换。顺序图和协作图又被统称为交互图(interactiondiagram)。它们显示了一组对象和由这组对象发送和接收的消息。顺序图强调消息的时间次序,协作图强调发消息的对象的结构组织。⑶状态图(statechartdiagram)和活动图(activitydiagram)    UML图中状态图和活动图在语义上是等价的,它们可以互相转换。状态图显示了一个由状态、转换、事件和活动组成的状态机,它强调一个对象按事件次序发生的行为,通常状态图用于对接口、类或协作的行为建模。活动图显示了系统从活动到活动的流,它强调对象之间的控制流,通常活动图用于对系统的功能建模。
UML类图符号简介 
1. 类(Class):使用三层矩形框表示。 第一层:显示类的名称,如果是抽象类,则就用斜体显示。 第二层:是字段和属性。 第三层:是类的方法。 注意前面的符号,‘+’表示public,‘-’表示private,‘#’表示protected。
2.接口:使用两层矩形框表示,与类图的区别主要是顶端有<<interface>>显示。 第一层:是接口名称。 第二层:是接口方法。
3.继承类(extends)(泛化):用空心三角形+实线来表示。
4.实现接口(implements):用空心三角形+虚线来表示
5.关联(Association):用实线箭头来表示,例如:燕子与气候
6.聚合(Aggregation):用空心的菱形+实线箭头来表示 
聚合:表示一种弱的‘拥有’关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分,例如:公司和员工 
7.组合(Composition):用实心的菱形+实线箭头来表示 组合:部分和整体的关系,并且生命周期是相同的。例如:人与手
8.依赖(Dependency):用虚线箭头来表示,例如:动物与氧气
9.基数:连线两端的数字表明这一端的类可以有几个实例,比如:一个鸟应该有两只翅膀。如果一个类可能有无数个实例,则就用‘n’来表示。关联、聚合、组合是有基数的。
UML类图中类之间的四种关系
1.泛化(Generalization)    UML类图中泛化表示类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的实现关系。一般化的关系是从子类指向父类的,与继承或实现的方法相反。
2.依赖(Dependency)    UML类图总依赖对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。
3.关联(Association)    UML类图中的关联。对于两个相对独立的对象,当一个对象的实例与另一个对象的一些特定实例存在固定的对应关系时,这两个对象之间为关联关系。
    比如客户和订单,每个订单对应特定的客户,每个客户对应一些特定的订单;再例如公司和员工,每个公司对应一些特定的员工,每个员工对应一特定的公司。
(4)聚合(Aggregation)
    UML类图中聚合关系是指当对象A被加入到对象B中,成为对象B的组成部分时,对象B和对象A之间为聚集关系。聚合是关联关系的一种,是较强的关联关系,强调的是整体与部分之间的关系。    与关联关系一样,聚合关系也是通过实例变量来实现这样关系的。关联关系和聚合关系来语法上是没办法区分的,从语义上才能更好的区分两者的区别。
关联与聚合的区别:    (1)关联关系所涉及的两个对象是处在同一个层次上的。比如人和自行车就是一种关联关系,而不是聚合关系,因为人不是由自行车组成的。聚合关系涉及的两个对象处于不平等的层次上,一个代表整体,一个代表部分。比如电脑和它的显示器、键盘、主板以及内存就是聚集关系,因为主板是电脑的组成部分。    (2)对于具有聚集关系(尤其是强聚集关系)的两个对象,整体对象会制约它的组成对象的生命周期。部分类的对象不能单独存在,它的生命周期依赖于整体类的对象的生命周期,当整体消失,部分也就随之消失。比如张三的电脑被偷了,那么电脑的所有组件也不存在了,除非张三事先把一些电脑的组件(比如硬盘和内存)拆了下来。
0 0