1 UML基础

  学习设计模式的过程中,发现相关的作者们都会用UML类图来表示一个模式的整体脉络,这种方式确实直观明了,既能体现宏观思路、又能兼顾实现细节。真的是很妙的工具。在开始正式学习设计模式之前,有必要对UML有个大概的掌握。然后,日后有望解锁更多关于UML方面的技能,比如说:建模。哈哈,有点小兴奋呢。

UML全称Unfied Modeling Language(统一\标准建模语言),旨在为软件开发提供可视化、模型化的工具。可见,UML既是一种建模工具,也是一种“交流语言”。

一、UML类图的基本元素

1 类的结构

  UML用内含三层“格子”的矩形框表示类,如图:

  

  最上层为类的名称;中间为类的字段和属性;最下层为类的行为和方法。

  如果为抽象类,类名用斜体标识。

2 访问修饰符

  public、private、protected分别用  +  -  # 来表示

  至于C#中的 internal、protected internal修饰符,则没有对应的符号。(UML是通用的标记语言,而后两种修饰符属C#独有)

3 接口表示

  有两种方法矩形表示法和棒棒糖表示法(截图来自《大话设计模式》)

  

二、 相互关系

  UML类图中,类与类、接口与类之间的关系一共有泛化(Generalize)、实现(Realization)、依赖(Dependency)、关联(Association)、聚合(Aggregation)、组合(Composition)六种。这几种表示的相互作用关系依次加强。

1 泛化(Generalize)

  泛化即子类、子接口继承父类、父接口的功能,并能扩张自己新的功能的能力,是一种 is-a(一般与特殊)的关系。猫继承了动物,那么就可以说猫是动物的泛化,猫 is a 动物。

  UML用空心的三角箭头+实线来表示泛化或继承。

  

2 实现(Realization)

  即类实现接口的功能。

  对于矩形表示法,用空心三角箭头加虚线表示;对于棒棒糖表示法,则把棒棒糖直接插在实现接口的类上(JUDE的棒棒糖不太好看)。

  

3 依赖(Dependency)

  一个类依赖另一个类的定义。比如人需要用手机打电话,那么人依赖手机。依赖关系总是单向的。依赖具有偶然性、临时性,且关系非常弱。依赖在具体的代码层面,表现为(类A依赖类B):

  类B作为参数被类A使用;

  类B以局部变量的形式存在于类A的方法中;

  类A调用类B的静态方法。

  UML中用简单箭头加虚线表示依赖:

  

4 关联(Association)

  一个类需要知道另一个类的状态(属性、方法)。关联体现的是类与类或接口之间的强依赖关系,相比于依赖关系,这种关系是长期性的,而且双方的关系一般是平等的。在代码层面(A关联B),B以类属性的形式出来在A中,或A引用了一个类型为B的全局变量。

  UML中,用简单实线箭头表示单向关联,用双箭头或不使用箭头表示双向关联。但为了降低耦合,双向关联不建议使用。

  关联箭头的头合尾都可以添加基数表示,用来表示有几个实例。

  

5 聚合(Aggregation)

  关联关系的一种特例,是强的关联关系,也是一种是整体和个体的关系(has-a)。普通的关联关系的两个类处于同一层级,但聚合关系的两个类处于不同层级,比如公司和员工。同时这又是一种弱的拥有(has-a)关系。因为整体和个体之间是可分离的,他们有各自独立的生命周期。个体可以属于多个整体,也可以被多个整体共享。关于在代码层面的的实现,没有特定的标准,最可靠的识别方法为通过语义。如下为一种实现了聚合的代码:

  public class Company

  {

    List<Employee> list;

  }

  

  UML中使用空心菱形加实线来表示

  

6 组合\结合(Composition)

  组合也属与关联的特例,是比聚合更强的关联关系,而且整体与部分的生命周期一致(contains-a)。比如胳膊与人体。如下为一种代码实现:

  public class Body

  {

    private Arm arm;

    public Body()

    {

      arm=new Arm();

    }

  }

  

  UML中用实心菱形加实线来表示

  

三、总结

  六种关系的关联程序从低到高为:泛化<实现<依赖<关联<聚合<组合

  泛化为is-a关系,关联为has-a关系,其中,聚合、组合为关联的特例,组合代表的关系最为紧密,是一种contains-a关系

  聚合与组合的区别:

    1)主要体现在关系成员的生命周期是否相同;

    2)被聚合的类,还可以继续被其他类聚合;但被组合的类则不能再属于其他类。

  关联和聚合的区别:

    主要的差别在于抽象层级,关联在同一抽象层级,聚合在不同层级。

  

  关于UML,目前就学这点皮毛吧。

  

  

  

  

时间: 2024-11-07 00:50:44

1 UML基础的相关文章

《UML基础及应用案例》阅读

<UML基础及应用案例>这本书读了大半了,记住的东西很少,感觉书本有点冗余,但是因为想要了解关于UML(Unified Modeling Language ,统一建模语言)的最基础知识,所以还是硬着头皮看了一遍,把目录用思维导图软件列了出来. 到目前为止,脑子里还是一团乱麻,图的种类太多,关系也很多,目前没有比较好的方法把它们记住.专门下了个StarUML软件,打算一步一步边做边学. 先搜了一些关于UML的基础知识: 在UML类图中,常见的有以下几种关系: 泛化(Generalization)

UML基础知识

(这个是很久以前写的一篇关于UML的文章,现在放出来和大家共享) 了解一下类与类之间的关联基础知识很有必要,因为这些关系就像我们建造房子的基石,是面向对向编程的基础. 类中的关系有六种,分别是关联(Association)关系.聚合(Aggregation)关系.组合(Composition)关系.泛化(Generalization)关系.实现(Realization)关系以及依赖(Dependency)关系,下面分别介绍这六种关系. 依赖(Dependency)关系 依赖是对象之间最弱的一种关

UML基础

UML基础系列:类图 类图描述系统中类的静态结构,它不仅定义系统中的类,描述类之间的联系,如关联.依赖.聚合等,还包括类的内部结构(类的属性和操作).类图描述的是静态关系,在系统的整个生命周期中都是有效的.对象图是类图的实例,它们的不同之处在于对象图显示类图的多个对象实例,而不是实际的类.由于对象存在生命周期,所以对象图只能在系统某一时间存在. 1. 类图概述 类图(Class Diagram)是描述类.接口.协作以及它们之间关系的图,用来显示系统中各个类的静态结构.类图是一种模型类型,一种静态

UML基础与应用总结

      敲响一段键盘的乐响曲,一段路程留下一些足迹.       UML.是Unified-Modeling-Language的缩写. 首先要明白知道它是一种可视化的建模语言.   什么是UML基础与应用?简言之.就是UML描写叙述一个系统的静态结构和动态行为,从不同的角度为系统建模并形成系统的不同视图.用图形的方式表现典型的面向对象系统的整个结构:应用便是UML及九种图在系统中的运用.       用一张图来说,例如以下:       UML,是面向对象的可视化建模语言.所以,学习UML,

UML基础概念(转)

UML基础概念 UML概述 uml简介 uml(unified Modeling Language )为面向对象软件设计提供统一的.标准的.可视化的建模语言.适用于描述以用例为驱动,以体系结构为中心的软件设计的全过程. uml的定义包括UML语义和UML表示法两个部分. (1)UML语义:UML对语义的描述使开发者能在语义上取得一致认识,消除因人而异的表示方法造成的影响. (2)UML表示法:UML表示法定义UML符号的表示法,为开发者或者开发工具使用这些图形符号和文本语法为系统建模提供了标准.

UML基础—结构和组成

本文主要梳理了一下UML2中的各个图的逻辑划分,UML基础知识. 一.UML2的4个规范 二.UML2的13种模型图 分为3大类:行为视图.交互视图.结构视图 三.UML1和UML2各种视图对照 四.UML图应用 在软件系统的,需求分析.设计.实现中,可以作为标准化的图形建模工具,帮助系统分析人员.软件设计人员.开发人员等,更好的沟通交流. 示例: Donate捐赠 如果我的文章帮助了你,可以赞赏我 1 元,让我继续写出更好的内容)     (微信)                       

OOAD利器之UML基础

UML:Unified Modeling Language,即统一建模语言,简单地说就是一种有特殊用处的语言.本文是我初步学习UML的学习笔记,对于我们菜鸟码农来说,让我们做设计的可能性不大,但至少能看懂是必要的. 一.所谓模型 1.1 模型是对现实的简化 模型是提供系统的蓝图,模型可是包括详细计划.也可是是从更高程度考虑系统的总体计划,每个系统可以从不同的方面用不通过的模型来描述.因而每个模型都是在语义上闭合的抽象系统.模型可以是结构性的,强调系统的组织.也可是是行为性的,强调系统的动态方面.

【UML】UML基础知识

UML简介 统一建模语言(UML)是一个通用的可视化建模语言,用于对软件进行描述.可视化处理.构造和建立软件系统制品的文档. 它记录了对必须构造的系统的决定和理解,可用于对系统的理解.设计.浏览.配置.维护和信息控制. UML适用于各种软件开发方法.软件生命周期的各个阶段.各种应用领域以及各种开发工具,UML 是一种总结了以往建模技术的经验并吸收当今优秀成果的标准建模方法. 它融入了软件工程领域的新思想.新方法和新技术. 不仅支持面向对象的分析与设计,还支持从需求分析开始的软件开发全过程. UM

UML基础 UML对象图解析

本节向大家介绍一下UML对象图方面的内容,主要包括UML对象图概念介绍,表示法和用途等,希望通过本节的介绍大家对UML对象图有全面的认识,下面让我们一起来学习吧. UML对象图简介 对象图(ObjectDiagram)是显示了一组对象和他们之间的关系.使用对象图来说明数据结构,类图中的类或组件等的实例的静态快照.对象图和类图一样反映系统的静态过程,但它是从实际的或原型化的情景来表达的. 对象图显示某时刻对象和对象之间的关系.一个对象图可看成一个类图的特殊用例,实例和类可在其中显示.对象也和合作图