下文转于 2019-05-10。2020-03-10 发觉本出自2007 年出版的《大话设计模式》一书(作者: 程杰)第一章。于是将文末原链接删去。


转载注: 中文命名的优势在UML图这样专注业务逻辑且完全符号化语法(与英语无关)的工具中特别明显。对新手来说这样的入门教程实属沙漠绿洲。在此与8年前的原作者致敬!

举一个简单的例子,来看这样一副图,其中就包括了UML类图中的基本图示法。

首先,看动物矩形框,它代表一个类(Class)。类图分三层,第一层显示类的名称,如果是抽象类,则就用斜体显示。第二层是类的特性,通常就是字段和属性。第三层是类的操作,通常是方法或行为。前面的符号,+ 表示public,- 表示private,# 表示protected。

右下角的飞翔,它表示一个接口图,与类图的区别主要是顶端的<<interface>>显示。第一行是接口名称,第二行是接口方法。接口还有另一种表示方法,俗称棒棒糖表示法。唐老鸭是能讲人话的鸭子,实现了讲人话的接口。

接下来的是类与类,类与接口之间的关系了。首先注意动物、鸟、鸭、唐老鸭之间的关系符号。它们都是继承的关系,继承关系用空心三角形 + 实线来表示的。

上述所列举的几种鸟中,大雁最能飞,让它实现了飞翔接口。实现接口用空心三角形 + 虚线来表示。

企鹅和气候两个类,企鹅是很特别的鸟,会游不会飞。更重要的是,它与气候有很大的关联。我们不去讨论为什么北极没有企鹅,为什么它们要每年长途跋涉。总之,企鹅需要知道气候的变化,需要了解气候规律。当一个类知道另一个类时,可以用关联(association)。关联关系用实线箭头来表示。

再来看大雁和雁群这两个类,大雁是群居动物,每只大雁都是属于一个雁群,一个雁群可以有多只大雁。所以它们之间就满足聚合(Aggregation)关系。聚合表示一种弱的拥有关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分。聚合关系用空心的菱形 + 实线箭头来表示。

组合(Composition)是一种强的拥有关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样。在这里鸟和其翅膀就是组合关系,因为它们是部分和整体的关系,并且翅膀和鸟的生命周期是相同的。组合关系用实习的菱形 + 实线箭头来表示。另外,你会注意到合成关系的连线两端还有一个数字1和数字2,这被称为基数。表明这一端的类可以有几个实例,很显然,一个鸟应该有两只翅膀。如果一个类可能有无数个实例,则就是n来表示。关系关系、聚合关系也可以有基数的。

动物的几大特征,比如有新陈代谢,能繁殖。而动物要有生命力,需要氧气、水以及食物等。也就是说,动物依赖于氧气和水。他们之间是依赖关系(Dependency),用虚线箭头来表示。

编程是一门技术,更是一门艺术,不能只满足于写完代码后运行结果正确就完整,时常要考虑如何让代码更加简练,更加容易维护,容易扩展和利用,只有这样才可以真正得到提高。写出优雅的代码真的是一种很爽的事情。UML类图也不是一学就会的,需要有一个慢慢熟练的过程。所谓学无止境,其实这才是理解面向对象的开始呢。

uml类图例子_转:(中文命名)UML类图新手入门级介绍相关推荐

  1. UML类图新手入门级介绍

    UML类图新手入门级介绍 看了大话设计模式,觉得很生动形象,比较适合于我这种初学者理解面向对象,所以就记录了一下. 举一个简单的例子,来看这样一副图,其中就包括了UML类图中的基本图示法. 首先,看动 ...

  2. uml类图例子_五分钟带你读懂UML类图

    目录 先看下面这张类图,包括了UML类图的基本图示法 1.类的表示 2.接口的表示 3.继承关系 4.实现接口 5.关联关系 6.聚合关系 7.合成(组合)关系 8.依赖关系 先看下面这张类图,包括了 ...

  3. java派生类属例子_【备考】带你认识相关类属vs派生类属!

    原标题:[备考]带你认识相关类属vs派生类属! 关于下位学习中的相关类属和派生类属总有一些同学在做题过程中出现疑惑,做题也是错误率较高.究其原因就是同学们掌握二者概念的时候,很多人都是用例子来记住概念 ...

  4. java派生类属例子_辨析之派生类属和相关类属

    更多真题资料及报考疑问请加老师微信66746005,或点击这里在线咨询 1.派生类属:新知是原有知识的特例.例证.派生物,充实.证实了原有概念.例如:学生一开始认为水果是一种多汁.味甜.可食用的食物后 ...

  5. 特征图注意力_从数据结构到算法:图网络方法初探

    作者 | 朱梓豪 来源 | 机器之心 原文 | 从数据结构到算法:图网络方法初探 如果说 2019 年机器学习领域什么方向最火,那么必然有图神经网络的一席之地.其实早在很多年前,图神经网络就以图嵌入. ...

  6. python元类是什么_谈谈Python中元类Metaclass(一):什么是元类

    简单的讲,元类创建了Python中所有的对象. 我们说Python是一种动态语言,而动态语言和静态语言最大的不同,就是函数和类不是编译时定义的,而是运行时动态创建的. 比方说我们要定义一个HelloW ...

  7. java斗图表情_程序员之间的斗图表情包, java真的输惨了!

    表情包成了人与人聊天中不可少的分量,陌生人聊天表情包丢出去妥妥的拉近关系变熟络啊(¬_¬) 而且可以用表情包化解尴尬.缓解气氛,可以没话找话.忙的时候也可以当做结束语,显得比较有礼貌! 对于沉默寡言. ...

  8. c++引用另一个类的方法_转:关于A类,B类,C类IP地址的网段和主机数的计算方法...

    转:关于A类,B类,C类IP地址的网段和主机数的计算方法 关于A类,B类,C类IP地址的网段和主机数的计算方法 IP地址是一个32位的二进制数,由四个八位字段组成.每个IP地址包括两部分:一部分为网络 ...

  9. python新式类和旧式类的区别_浅谈python新式类和旧式类区别

    python的新式类是2.2版本引进来的,我们可以将之前的类叫做经典类或者旧式类. 为什么要在2.2中引进new style class呢?官方给的解释是: 为了统一类(class)和类型(type) ...

最新文章

  1. 意大利万岁??摘自网络
  2. 常用算法25讲,拿走不谢!
  3. C#中Marshal 类的内存操作的一般功能概述
  4. vscode生成vue模板快捷键_VSCode写vue项目一键生成.vue模版,修改定义其他模板的方法...
  5. html5shiv主要解决IE6-8 无法识别HTML5的新标签,父节点不能包裹子元素,以及应用CSS样式...
  6. 2014,都要好好的~
  7. OkHttp完全解析(七)SPDY协议详细介绍
  8. zte服务器安装linux,ZTE MF637U 在linux下安装全攻略
  9. java唱哪首歌好听_盘点四首戳爷最好听的歌曲,每一首都很经典,你最喜欢哪一首?...
  10. 河南最新道路货物运输驾驶员考试真题及答案解析
  11. 非洲越来越多年轻人希望用加密货币支付
  12. 云呐|医院医疗的IT设备信息化资产盘点管理系统
  13. Creator 使用代码编辑九宫格
  14. ssm高校党员信息管理系统
  15. 武汉大学测绘学院19级导航工程第三学期专业实习
  16. vue plupload 的使用
  17. 微星(msi)笔记本无法调整屏幕亮度和分辨率
  18. AAA认证——IE阶段
  19. JS学习笔记——基础第二弹
  20. 呱呱自动喝彩-无聊制作

热门文章

  1. linux之内核剖析
  2. 有关 php __autoload 自动加载类函数的用法
  3. 计算机无法创建新文件夹,无法创建文件,教您无法新建文件夹怎么办
  4. autoload.php beanbun_Beanbun: 简单开放的 PHP 爬虫框架
  5. 编写程序在窗口中写出自己名字的拼音缩写_各类英文缩写:全称居然这么朴素?网友:最后一个我笑了...
  6. 全地球的水也没办法将这个“特殊”的瓶子装满!
  7. 史上最冤!美国原子弹之父被骂了9年!最后他上台领奖,竟一把推开了总统.........
  8. 牛顿新定律:凭本事得到的,凭什么要还?
  9. 将历史、数学、语文、地理、政治知识融会贯通的诀窍就是它
  10. 趣图:BAT程序员的一天对比