原文链接:https://www.cnblogs.com/xsyblogs/p/3404202.html

我们通过一个示例来了解UML类图的基本语法结构。画UML类图其实有专业的工具,像常用的Visio等,都是很好的工具,楼主这里由于时间关系就不用专业的工具,如有欠缺之处,欢迎广大网友指出。图片比较大,建议大家用QQ影响查看器打开,它可以实现对图片缩放的时候不失真。

通过以上图片,我们可以看到UML中常用的表示方法。下面将图像拆开来细说一下。

首先看动物那个矩形框,它代表来了一个类(Class)。类图分3层,第一层表示类的名称,如果是抽象类,则用斜体表示。第二层是类的特性,通常表示字段和属性。第三层是类的操作,通常是行为和方法。注意第二层和第三层前面的符号,有“+”,“—”,还可能有“#”,这代表什么含义呢?“+”代表public,“—”代表private,而“#”则表示protected。

再看飞翔这个矩形框,它表示一个接口图,和类图的区别就是顶部有interface字样,第一行表示接口名称,第二行表示接口方法。接口还有另一种表示方法——棒棒糖表示法。图中唐老鸭实现讲人话的接口。

类和类之间的继承关系,用实线+空心三角形表示,如下图。

类和接口之间的实现关系用虚线+空心三角形表示,如下图,表示实现接口。

关联用实线箭头表示。

聚合表示一种弱的“拥有”关系,体现的是A对象可以包含B对象,但B对象不一定是A对象的一部分。聚合用空心的菱形+实线箭头来表示。

合成(也说组合)是一种强的拥有关系,体现了严格的整体和部分的关系,部分和整体的生命周期一样。示例中鸟和其翅膀就是组合关系,因为他们是部分和整体的关系,并且翅膀和鸟的生命周期一样。

另外还有依赖关系,就像动物依赖于空气和水一样。依赖关系用虚线箭头来表示。

UML之类图详解的更多相关文章

  1. UML类图详解_关联关系_一对多

    对于一对多的示例,可以想象一个账户可以多次申购.在申购的时候没有固定上限,下限为0,那么就可以使用容器类(container class)来搞,最常见的就是vector了. 下面我们来看一个“一对多” ...

  2. UML类图详解_关联关系_多对一

    首先先来明确一个概念,即多重性.什么是多重性呢?多重性是指两个对象之间的链接数目,表示法是“下限...上限”,最小数据为零(0),最大数目为没有设限(*),如果仅标示一个数目级上下限相同. 实际在UM ...

  3. UML类图详解

    下面是类图的实例: (注:飞翔接口那里应为空心三角形) UML中类图实例 接口:空心圆+直线(唐老鸭类实现了‘讲人话’):依赖:虚线+箭头(动物和空气的关系):关联:实线+箭头(企鹅需要知道气候才迁移 ...

  4. UML 序列图详解

    现在是二月,而且到如今你或许已经读到.或听到人们谈论UML 2.0 —— 包括若干进步的 UML 的新规范,所做的变化.考虑到新规范的重要性,我们也正在修改这个文章系列的基础,把我们的注意力从 OMG ...

  5. UML 类图详解

    转载来源:http://blog.csdn.net/shift_wwx/article/details/79205187 可以参考:http://www.uml.org.cn/oobject/2012 ...

  6. UML类图详解_泛化关系

    泛化其实就是继承关系,还是比较简单的,那么我们就把之前有些问题的博客UML类图重新来实现一次. 依旧是这个图 下面我们来看一个例子 Account.h #include <cstdlib> ...

  7. UML类图详解和示例

    ps:博客园markdown不能自动生成列表,更好的阅读体验可访问我的个人博客http://www.isspark.com/archives/UMLDescription UML类图概述 什么是UML ...

  8. UML类图详解_组合关系

    组合关系和聚合关系有一个最大的不同,组合关系中的整体直接掌握部件的生灭,聚合关系中的整体并不具有生灭部件的权力.一旦组合中的整体不存在时,其组合部件也不能单独存在,必须同时消灭.另外,外界也不能直接与 ...

  9. UML类图详解_关联关系_多对多

    在关联关系中,很多情况下我们的多重性并不是多对一或者一对多的,而是多对多的. 不过因为我们要考虑里面的导航性,如果直接搞的话就是需要去维护两群对象之间多对多的互指链接,这就十分繁杂且易错.那么我们怎么 ...

随机推荐

  1. DRF - 序列化组件(GET/PUT/DELETE接口设计)、视图优化组件

    一.序列化组件 基于上篇随笔的表结构 , 通过序列化组件的ModelSerializer设计如下三个接口 : GET 127.0.0.1:8000/books/{id} # 获取一条数据,返回值:{} ...

  2. LinqHelper连接数据库配置

    LinqHelper连接数据库配置/// <summary> /// Linq通用数据访问类 /// 指定TDataBase来代替后面要使用的数据上下文(指代) /// where:说明指 ...

  3. DDD学习笔录——提炼问题域之与领域专家一起获得领域见解

    业务和开发团队之间的协作是DDD必不可少的部分,并且它是处于开发阶段的产品获得成功的关键. 领域专家指的是那些从业务领域的政策和工作流程到棘手处和特性都具有深刻理解的人.能够为你的问题区域提供深刻见解 ...

  4. leetcode392

    public class Solution { public bool IsSubsequence(string s, string t) { ; ; while (i < s.Length & ...

  5. Delphi 解压缩 ZipForge

    ZipForge http://www.componentace.com/zip_component_zip_delphi_zipforge.htm downLoad http://www.compo ...

  6. 【283】ArcMap 中河流字体设置

    左斜字体的设置 1.  右键属性设置如下,将字体角度如下设置,并点击改变样式的按钮 2. 首先设置颜色如下,然后设置加粗斜体,最后勾选 CJK character orientation 的复选框 C ...

  7. MobileSubstrate

    [MobileSubstrate] Cydia Substrate (formerly called MobileSubstrate) is the de facto framework that a ...

  8. SpringBoot17 FastJson配置、Druid配置

    1 FastJson配置 1.1 FastJson基础知识 点击前往 1.2 SpringBoot整合FastJson 点击前往 1.2.1 导入FastJson依赖 <!--fastjson- ...

  9. SQL Server 索引维护:系统常见的索引问题

    在很多系统中,比如本人目前管理的数据库,索引经常被滥用,甚至使用DTA(数据库引擎优化顾问)来成批创建索引(DTA目前个人认为它的真正用处应该是在发现缺失的统计信息,在以前的项目中,用过一次DTA,里 ...

  10. SQL 数据库 学习 002 如何启动 SQL Server 软件

    如何启动 SQL Server 软件 我的电脑系统: Windows 10 64位 使用的SQL Server软件: SQL Server 2014 Express 如果你还没有下载 SQL Serv ...