设计模式:UML是怎么回事?设计原则?

还未毕业,想着至少大学毕业前,设计模式多多了解,所以做相关笔记。

UML相关概念

UML(Unified *统一* Modeling *建模* Language 语言):一种可视化的标准建模语言,它是一种分析和设计语言,通过UML可以构造软件系统的蓝图。

1.软件工程就像盖楼提前设计蓝图一样需要使用模型来描述一个软件

2.在设计模式中,使用UML来分析和设计每个模式的结构,描述每一个模式实例,并对部分模式进行深入的解析

UML结构之视图

这里并没有过多解释各种图,实际上对名称的了解结合真实案例,更容易记忆深刻。

并且在设计模式的学习中,仅仅类图、顺序图、状态图使用最为频繁,更多的图遇到了再深入学习吧。

在UML建模过程中,使用不同的视图从不同的角度来描述软件系统。

UML包括5种视图:用户视图、结构视图、行为视图、实现视图、环境视图

1. 用户视图:以用户的观点表示系统的目标,它是所有视图的核心,该视图描述系统的需求。

  • 用例图(Use Case Diagram)

2. 结构视图:表示系统的静态行为,描述系统的静态元素,如包、类与对象,以及它们之间的关系

  • 类图(Class Diagram)
  • 对象图(Object Diagram)
  • 包图(Package Diagram)
  • 组合结构图(Composite Structure Diagram)

3. 行为视图:表示系统的动态行为,描述系统的组成元素如对象在系统运行时的交互关系

  • 状态图(State Diagram)
  • 活动图(Activity Diagram)
  • 顺序图(Sequence Diagram)又称时序图或序列图
  • 通信图(Communication Diagram)
  • 定时图(Timing Diagram)
  • 交互概览图(Interaction Overview Diagram)

4. 实现视图:表示系统中逻辑元素的分布,描述系统中物理文件以及它们之间的关系

  • 组件图(Component Diagram)

5. 环境视图:表示系统中物理元素的分布,描述系统中硬件设备以及它们之间的关系

  • 部署图(Deployment Diagram)

类图

类图是使用频率最高的UML图形之一。

类与类图

类之间的关系

记得课堂上直接看程序的UML图,总是不明白类图各个类之间不同箭头表明的意思,导致理解上很吃力。所以首先来熟悉类之间不同的箭头含义,对我们理解或者自己画类图如有神助!

其实不光是类图,任何UML图,先去理解各种图的各种符号元素(不同的箭头,方框,圆形)代表的真实含义,才能对整个图有个大局观。

1. 关联关系:用于表示一类对象与另一类对象之间有关系,基本上就是类的属性使用了其他对象

有双向关系、单向关系、自关联、多重性关联、聚合关系、组合关系

  • 双向关联
  • 单向关联
  • 自关联
  • 多重性关联

    • 1..1 : 表示**1个**对象与该类对象有关系
    • 0..* : 表示**0个或多个**与该类对象有关系
    • 1..* : 表示**1个或多个**与该类对象有关系
    • 0..1 : 表示**没有或1个**与该类对象有关系
    • m..n : 表示**最少m,最多n个**与该类对象有关系
  • 聚合关系:类之间整体和部分的关系,成员对象可以脱离整体独立存在
  • 组合关系:也表示类之间整体和部分的关系,组合的部分和整体具有统一的生存期。如人和嘴巴的关系,同存亡。

2. 依赖关系:表示一个事物使用另一个事物时使用依赖关系,基本上就是方法需要传递另一个对象

3. 泛化关系:表示继承关系

4. 接口与实现关系:类实现了接口

顺序图(时序图)

看示例图就够了, 注意不同的箭头代表不同的意思,之后看源码正确使用即可。

状态图

同样看示意图即可,注意并不是一定要正向改变状态呢,也可以由之后的状态向前画箭头改变状态

状态模块还可以嵌套状态图,这种被称为复合状态。

## 面向对象设计原则

实习过了才发现,很多法则,在不知不觉中就在用了。再看设计模式这本书比课堂学确实轻松一些了。

如果你现在不太能理解,那就先编程吧,尤其工作中被师兄师姐们的代码调教下,再回头看!

七大法则:单一职责、开闭、里氏替换、依赖倒转、接口隔离、合成复用、迪米特法则。

遵守设计原则的目的:实现软件的可维护性可复用性

1.单一职责原则:

类的职责要单一,不能将太多的职责放在一个类中。

2.开闭原则:

软件实体对扩展是开放的,但对修改是关闭的,即在不修改一个软件实体的基础上去扩展其功能。

3.里氏代换原则:

​ 在软件系统中,一个可以接受基类对象的地方必然可以接受一个子类对象。

4.依赖倒转原则:

​ 要针对抽象层编程,而不要针对具体类编程。

5.接口隔离原则:

​ 使用多个专门的接口来取代一个统一的接口。

6.合成复用原则:

​ 在系统中应该尽量多使用组合和聚合关联关系,尽量少使用甚至不使用继承关系

7.迪米特法则:

​ 一个软件实体对其他实体的引用越少越好,或者说如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用,而是通过引入一个第三者发生间接交互。有点中间加一层的意思

图书馆的uml概念类图怎么画_设计模式:UML?设计原则?相关推荐

  1. 图书馆的uml概念类图是什么_产品经理必学UML:类图

    本篇文章主要介绍了UML静态视图中的类图,包括类图的概念.用途及相关元素,供大家一起参考和学习. UML(Unified Modeling Language)又称统一建模语言或标准建模语言,可以看做用 ...

  2. UML类图、JAVA DesignMode 设计模式、设计原则

    全文2.6W余字,读完需要20分钟,介绍23种设计模式,每个模式都有案例与真实使用场景,能够帮助初学者快速了解设计模式,建立起对代码中设计模式的初步理解,要明确:设计模式只是帮助我们更好的设计代码架构 ...

  3. 图书馆的uml概念类图怎么画_UML科普文,一篇文章掌握14种UML图

    前言 上一篇文章写了一篇建造者模式,其中有几个UML类图,有的读者反馈看不懂了,我们今天就来解决一哈. 什么是UML? UML是Unified Model Language的缩写,中文是统一建模语言, ...

  4. 【学习小记】UML——概念类图

    这学期接触了<系统设计与分析>这门课,重要,但是觉得挺不好学的,因为好像很多决策都不存在很明确的界限.所以,多思多想多交流吧,看一些相关的案例还是有些帮助的.现在把自己学习时的一些想法与大 ...

  5. 聊天系统服务器端类图怎么画,在线聊天系统的设计与实现.docx

    PAGE 在线聊天系统的设计与实现 本科毕业设计 目录TOC \o "1-3" \h \u 目录 1 前 言 1 2. 需求分析 2 2.1 系统运行环境需求 2 2.2 模块功能 ...

  6. java中类图概念,程序员眼中的UML(4)--类图释疑之一,Attribute和Property之区别

    程序员眼中的UML(4) --类图释疑之一,Attribute和Property之区别 上一篇中提出了很多问题,其中最令人费解的可能就是Attribute和Property之区别了吧.我在网络上寻找良 ...

  7. 设计模式(二)——UML类图怎么画

    UML类图怎么画 一.注释(comment) 注释就是对类图的补充说明,可以附加在任何元素上,用右上角有折角的矩形来表示,其内放置说明文字,通过虚线连接被注释的元素. 二.类(Class) 在面向对象 ...

  8. UML软件工程--类图

    UML 基础:类图 选自:IBM 这是关于统一建模语言.即UML 里采用的基本图的一系列文章的一部分.在我 先前关于序列图的文章 里,我把重点从 UML 1.4 版,转移到 OMG的采用UML 2.0 ...

  9. php类图怎么画,类图怎么画?

    类图怎么画? 步骤: 1.打开visio画图软件,在左边的导航中选择"软件"选项,在右边会有很多图,我们会看到UML图,点击选择进入. 2.我们会进入画图的界面,在上面导航区有个百 ...

最新文章

  1. 转: 用css把图片转为灰色图
  2. 【EF Code First】 一对一、一对多的多重关系配置
  3. nginx虚拟主机概念和类型介绍
  4. Spring MVC的框架组件
  5. 百度视频携手神策数据,引领基于 AI 的短视频推荐技术新潮流
  6. python 常用代码
  7. [导入]正则表达式学习心得体会(2)
  8. Linux的文件权限与目录配置
  9. candence 知识积累3
  10. 命令行解决mysql中文乱码
  11. java为什么要用数据源_【Java】就配置了一个数据源,为什么提示 there is more than one bean of “DataSource” type...
  12. 华为hs8545m如何复位_在华为东莞松山湖基地,见证一场始于AI质检的智能制造变革...
  13. C# web 读取excel并导入数据库
  14. html input提交按钮无法使用,无法找到并单击提交按钮使用mshtml.HTMLInputElement
  15. 还在纠结用H264还是H265?大家早就在把VP9和H265作比较啦!
  16. less06 引入(importing)
  17. 操作系统OS作业整合
  18. 【Android Gradle 插件】Splits 配置 ④ ( Splits#language{} 脚本块配置 | 根据语言进行分包 | LanguageSplitOptions 配置简介 )
  19. Jenkins持续集成入门到精通
  20. 台式计算机开关键,台式电脑怎么开机

热门文章

  1. .aspx页面 引用命名空间 (Import 指令,web.config)
  2. 【转】SQLite3简介及在.Net程序中的使用(自增列的创建)
  3. oopc——3.封装
  4. entity framework mysql guid,c# – 自动生成不是Entity Framework中主键的GUID列
  5. 33个PPT下载丨2018年PostgreSQL中国技术大会PPT
  6. Oracle RAC环境下如何定位并杀掉最终阻塞的会话
  7. 数据库流行度5月排行榜:Oracle企稳PostgreSQL飙升
  8. 追本溯源:Oracle 只读表空间的探索实践
  9. 解析云原生2.0架构设计的8大关键趋势
  10. 做开发,这几种锁机制你不得不了解一下