先上一张总的UML类图,然后对其中的部分逐个讲解:

类图分三层,第一层表示类的名称,如果是斜体(如图中的“动物”),则表示这是一个抽象类。

第二层是类的特性,通常是属性和字段。

第三层是类的操作,通常是类的方法或者行为。

在上图中,特性和操作之前都有一个“+”号修饰,这表示修饰符,用+、-和#分别对应public、private和protected。

  • 接口

    • 矩形表示法:

第一行是接口名,第二行是接口方法,矩形表示法和类图的主要区别在于接口会多一个《interface》的标识。

  • “棒棒糖表示法”:

圆圈旁为接口名称,接口方法在实现类中出现。​​​​​​​

  • 继承关系: 空心箭头+实线

  • 实现关系:空心箭头+虚线

  • 关联(Association)关系:实线箭头

企鹅需要“知道”气候的变化,需要“了解”气候的规律。当一个类“知道”另一个类时,可以用关联(Association)来表示。

  • 聚合(Aggregation)关系:空心菱形+实线箭头

聚合表示一种弱的“拥有”关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分。他们拥有各自的生命周期,比如雁群在迁徙时形成,在迁徙完成后消散,这是雁群的生命周期,但是某只大雁的生命周期可以完全独立于雁群之外:在雁群形成前就出生,在雁群消散之后继续存活。

  • 合成(Composition,也有翻译成‘组合’的)关系:实心菱形+实线箭头

合成表示一种强的“拥有”关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样。翅膀的生命周期必须和鸟的生命周期相同,而不能单独作为翅膀独立存活。

  • 依赖(Dependency)关系: 虚线箭头

动物的所有行动都离不开氧气和水,他们之间用虚线箭头表示依赖关系。

UML类图概要——《大话设计模式》读书笔记相关推荐

  1. 大话设计模式读书笔记

    主题 概要 设计模式 大话设计模式读书笔记 编辑 时间 新建 20170423 序号 参考资料 1 大话设计模式 重新看了一遍设计模式,除了一些已经特别熟悉的模式,都自己敲了一遍代码,有些豁然开朗的感 ...

  2. 大话设计模式读书笔记(十三) 状态模式

    状态模式: 状态模式定义: 状态模式(State):当一个对象的内在状态改变时允许改变其行为,这个对象看起来像改变了其子类. 状态模式UMl类图: 状态模式Java代码实现 public class ...

  3. 大话设计模式读书笔记之状态模式

    1.定义:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类.主要解决的问题是当控制一个对象状态转换的条件表达式过于复杂时把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复 ...

  4. 大话设计模式读书笔记之桥接模式

    1.定义: 将抽象部分与它的实现部分分离,使它们都可以独立地变化. 需要理解,什么叫抽象与它的实现分离,并不是说,让抽象类与其派生类分离,因为这没任何意义.实现指的是抽象类和它的派生类用来实现自己的对 ...

  5. 大话设计模式读书笔记之单例模式

    1.定义: 保证一个类只有一个实例,并提供一个访问它的全局的访问点. 通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象.一个最好的办法就是,让类自身负责保存它的唯一实例.这个 ...

  6. 大话设计模式读书 笔记(六) 工厂方法模式

    工厂方法模式(Factory Method) 书中通过一个学雷锋的例子,来引出工厂方法模式. 工厂方法模式:定义了一个用于创建对象的接口,让子类决定实例化哪一个类.工厂方法使一个类的实例化延迟到其子类 ...

  7. 大话设计模式读书笔记之观察者模式

    1.定义:观察者模式定义了一种一对多的依赖关系,让多个观察者对象同事监听某一个主题对象.这个主题对象在状态发生变化时,会通知所有观察者对象,使他们能够自动更新自己. 2.UML类图 3.简单代码实现: ...

  8. 大话设计模式读书笔记之原型模式

    由于大话这本书是以C#语言为基础写就的,本设计模式的例子中使用了一些c#中的API,因此就不再引用此书中的例子了,参考了一篇博客园中的大神写就的浅显易懂的JAVA版原型模式,在此奉上链接,以供大家学习 ...

  9. 大话设计模式读书笔记2----单一职责原则(SRP)

    单一职责原则(SRP):就一个类而言,应该仅有一个引起它变化的原因.如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或抑制这个类完成其他职责的能力.当变化发生时,设计会遭 ...

最新文章

  1. CUDA刷新:GPU计算生态系统
  2. JQuery实现父级选择器(广告实现)
  3. 没想到你是这样的npm install
  4. Codeforces Round #197 (Div. 2): C. Xenia and Weights(记忆化搜索)
  5. Android Sutiod报错:Dx unsupported class file version 52.0(解决)
  6. 计算机在无纸化办公系统中应用属于,浅析计算机技术在无纸化办公中的应用
  7. Logistic Regression 逻辑回归 简单易懂的笔记 by hch
  8. js实现微信表情发送
  9. 登录双token方案
  10. uniapp H5微信支付
  11. Kaiming He 何恺明
  12. 迅捷ocr文字识别软件是如何将图片转成文字的?
  13. 爬取京东商城中的书籍信息
  14. 熊猫烧香.威金.落雪.SXS.ARP.网络执法管.AUTORUN.INF等高危病毒清除
  15. Debian 12采用 Ubuntu三重缓冲
  16. postgresql启动1053错误
  17. 微信直接语音变女声教程
  18. Windows 安全中心空白无选项解决办法
  19. 【R语言数据科学】(十六):交叉验证再回首
  20. 懒人法解决IPTV和宽带的单线复用问题

热门文章

  1. 安装centos 8 stream boot iso报错
  2. 计算机考试应该注意些什么问题,全国计算机二级C考试要注意哪些问题?
  3. Oracle 19c 问题解决
  4. c#程序操作文件进行压缩和解压
  5. NCspeed软件+视频教程
  6. 使用 TiDB 作为 ZaloPay 商户平台核心数据库
  7. rk3399上安装docker+ubuntu18.04+opencv+ tensorflowa
  8. 关于使用用友华表Cell控件按需打印行的方法
  9. 文本分析——分词并去停用词返回嵌套列表并保存到本地
  10. vue利用自定义指令全局去除el-input框前后空格