软件设计师【UML】
一.概述

二.核心概念
1.用例图
1.包含关系
当可以从两个或两个以上的用例中提取公共行为时,应该使用包含关系来表示他们。其中这个提取出来的公共用例称为抽象用例,而把原始用例称为基本用例或基础用例。
使用include表示,箭头指向抽象用例!
2.扩展关系
如果一个用例明显地混合了两种或两种以上的不同场景,即根据情况可能发生多种分支,则可以将这个用例分为一个基本用例和一个或多个扩展用例。
使用extend表示,箭头指向基本用例!
3.泛化关系
当多个用例共同拥有一个类似的结构和行为时,可以将它们的共性抽象成为父用例,其它的用例作为泛化关系的子用例。
三角箭头指向父用例!
2.类图与对象图
1.依赖关系
有两个元素X,Y,如果修改元素X的定义可能会引起另一个元素Y定义的修改,则称元素Y依赖元素X。
使用带实心箭头的虚线表示。
2.泛化关系
泛化关系是继承关系的反关系。
使用带空心箭头的实线表示泛化,箭头指向父类。
3.关联关系(包括聚合和组合)
使用一条实线表示关联关系。
4.聚合关系
聚合表示类之间是整体和部分的关系。部分可以独立于整体。
使用带空心菱形的实线表示。
5.组合关系
组合表示类之间是整体和部分的关系,部分完全依赖整体,不能单独存在。
使用带实心菱形的实线表示。
6.实现关系
实现关系是用来规定接口和实现接口的类或组件之间的关系。
使用带空心箭头的虚线表示。
三.设计模式





创建型模式:工厂方法,抽象工厂,单例模式,构建模式,原型模式。
结构型模式:适配器模式,合成模式,装饰者模式,代理模式,享元模式,门面模式,桥接模式。
行为型模式:
策略模式,模板方法,迭代器,责任链模式,命令模式,备忘录模式,状态模式,访问者模式,解释器模式,调停者模式,观察者模式。
1.简单工厂
简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建出哪个产品类的实例。
优点:能够使客户端独立于产品的创建过程,并且在系统中引入新产品时无需对客户端进行修改。
缺点:当有新产品加入到系统中时,必须修改工厂类,以加入必要的处理逻辑。
2.工厂模式
工厂模式可以很好地解决简单工厂模式的缺点。
3.抽象工厂模式
工厂模式针对的是一个产品的等级结构,而抽象工厂模式则针对的是多个产品等级结构。
4.单例模式
某个类只能有一个实例,必须自己创建这个实例,且必须自行向整个系统提供这个实例。
5.构建模式
构建模式把一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。构建模式是一步步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不知道内部的具体构建细节。
6.原型模式
原型模式指定创建对象的种类,并且通过复制这些原型创建新的对象。原型模式允许一个对象再创建可定制的对象,根本无需指定任何创建的细节。
7.适配器模式
适配器模式将一个接口转换成为客户想要的另一个接口,适配器模式使接口不兼容的那些类可以一起正常工作。
8.合成模式
合成模式组合多个对象形成树型结构以表示整体-部分的结构关系。合成模式对单个对象和合成对象的使用具有一致性。
9.装饰者模式
装饰者模式动态地给一个对象增加其它职责,就增加对象来说,装饰者模式比生成子类更为灵活。
10.代理模式
代理模式为其他对象提供一个代理或地方以控制对这个对象的访问。当客户向代理对象第一次提出请求时,将实例化为真实的对象,并将请求传给它,以后所有的客户请求都经过proxy传给封装了的真实对象。
11.享元模式
享元模式运用共享技术有效地支持大量细粒度的对象。系统只使用少量的对象,而这些对象都相近,状态变化很小,对象使用的次数较多。
12.门面模式
门面模式也称为外观模式,提供一个统一的接口去访问多个子系统的多个不同的接口。门面模式定义了一个高层次的接口,使得子系统更容易被使用。
13.桥接模式
桥接模式将抽象部分与实现部分分离,使得它们两部分可以独立变化。
14.策略模式
策略模式定义一系列的算法,将每一个算法封装起来,并让它们可以相互替换。策略模式让算法独立于使用它的客户而变化。
15.模板方法模式
模板方法模式定义一个操作中算法的骨架,已将一些步骤延缓到子类中实现。模板方法让子类重新定义一个算法的某些步骤而无需改变算法的结构。
16.迭代器模式
迭代器模式提供一种方法可以访问聚合对象,而不用暴露这个对象的内部表示。
17.责任链模式
责任链模式能避免请求发送者和接受者耦合在一起,让多个对象都有可能接受请求,将这些对象连接在一起形成一条链,并且沿着这条链传递请求,直到有对象处理为止。
18.命令模式
命令模式将一个请求封装成一个对象,因此可以参数化多个客户的不同请求,将请求排队,记录请求日志,并且支持撤销操作。
19.备忘录模式
备忘录模式在不破坏封装的前提下,捕获并且保存一个对象的内部状态,这样可以将对象恢复到原先保存的状态。
20.状态模式
状态模式能够使一个对象的内在状态改变时允许改变其行为,使这个对象看起来像是改变了类。
21.访问者模式
访问者模式说明一个操作执行于一个对象结构的成员中。访问者模式让你定义一个类的新操作而无需改变它操作的这些成员类。
22.解释器模式
给出一种语言,定义这种语言的文法的一种表示,定义一个解释器,用来解释使用这种语言的句子,这就是解释器模式。
23.调停者模式
调停者模式定义一个对象封装一系列多个对象如何相互作用。使得对象之间不需要显式地相互引用,从而使其耦合更加松散。
24.观察者模式
观察者模式定义对象间的一种一对多依赖关系,使得每当一个对象改变状态,则其相关依赖对象皆得到通知并被自动更新。
四.类图
1.依赖

2.关联

3.聚合、组合

4.泛化

5.实现

软件设计师【UML】的更多相关文章
- 职位-IT:软件设计师
ylbtech-职位-IT:软件设计师 软件设计师是指能根据软件开发项目管理和软件工程的要求,按照系统总体设计规格说明书进行软件设计,编写程序设计规格说明书等相应的文档的实用性人才.还能够组织和指导程 ...
- 2、软件设计师要阅读的书籍 - IT软件人员书籍系列文章
软件设计师在项目组中的地位比软件工程师相对要高一些.但是他们所要阅读的书籍差别还是比较大的.同样的,软件设计师也要阅读比较多的书籍,以能够完成项目的任务为目的,同时还要提高自身在项目组中的竞争地位,而 ...
- 软件设计师.NET认证考试测试卷(试题及答案)
软件设计师.NET认证考试测试卷 注意事项:用蓝.黑色钢笔答题.保持卷面整洁. 得分 阅卷人 一.单项选择(40分,每小题1分) 1.以下标识符中不全是关键字的是(D ) A.case for in ...
- 软件设计师真题试题&&答案
软件设计师2013上半年上午试题及答案详解 下午试题 2013下半年上午答案 试题 下午答案 试题 2014上半年上午答案 2015上半年上午答案 2016上半年上午试题
- 《软件设计师》——UML
包含和扩展的区别,在于是否“必须”,如果是必须则是包含,如果不是必须则是扩展. 粗横线表示产生多个并行的任务.
- [设计语言][统一建模语言][软件开发方法学][UML] UML
背景介绍 UML是一种统计建模语言. WIKI: https://en.wikipedia.org/wiki/Unified_Modeling_Language UML是OMG (object man ...
- 软件设计师14-UML建模
UML图 用例图 用例图:参与者.用例 用例之间的关系:包含关系.扩展关系.泛化关系. 用例的包含关系:查询数据外借信息包含用户登录. 用例的扩展关系:修改之前要先查询,则修改信息包含查询信息用例 类 ...
- 软考网络工程师、软件设计师等官方指定教材pdf文件
软考计算机网络工程师教材pdf 链接:https://pan.baidu.com/s/1-UXeNye414UWYxYRC6bHuA 提取码:5z9w 软考计算机软件设计师第五版pdf 链接:http ...
- 软件设计师考试计算机系统知识——CPU
第一章: 计算机系统知识 1.1.1计算机系统硬件的基本组成 运算器.控制器.存储器.输入设备.输出设备 1.1.2 中央处理器 ①CPU的功能: a.程序控制:CPU通过执行指令来控制程序执行的顺序 ...
随机推荐
- redis中get值显示为16进制字符串的解决方法
Linux系统中,通过xshell登录redis,当根据某个key进行get取值时,取到的值为“\xc2\xed\xc0\xad\xcb\xb9\xbc\xd3”格式的十六进制字符串,原因是值中的中文 ...
- LoadRunner之录制你的第一个脚本
LoadRunner安装完成之后,肯定就迫不及待的想要上手试用了.下面就是讲一下LR脚本录制的流程和基本的设置. 1.先放一张脚本录制以及运行的流程图 2.脚本录制步骤 1)以管理员身份打开LR软件, ...
- thinkphp5---安装到宝塔出现Warning: require(): open_basedir错误
使用thinkphp5安装到宝塔的linux上,出现以下错误: Warning: require(): open_basedir restriction in effect. File(/www/ww ...
- Nginx 反向代理 一个IP代理多个域名,不区分端口,类似windows虚拟机。
简介: IP有限,所以我们以前使用端口来区分不同的虚拟主机,提供不同的WEB服务. 小范围还凑活,一旦规模扩大,地址记不住了吧?端口记不住了吧? 这个时候我们可以使用DNS,域名解析,毕竟记名字比记I ...
- Coder 健康 知识
- CSS製作動畫效果(Transition、Animation、Transform)
CSS 2D Transforms https://www.w3schools.com/css/css3_2dtransforms.asp CSS 3D Transforms https://www. ...
- 基于thrift的node.js rpc服务
1.在node.js 服务下创建node_modules文件,npm install thrift 下载thrift到该文件下. 2.编写idl文件.user.thrift 内容如下: struct ...
- [LeetCode] 278. First Bad Version 第一个坏版本
You are a product manager and currently leading a team to develop a new product. Unfortunately, the ...
- [LeetCode] 387. First Unique Character in a String 字符串的第一个唯一字符
Given a string, find the first non-repeating character in it and return it's index. If it doesn't ex ...
- mac的brew安装tomcat以及idea设置
Tomcat安装 brew search tomat 有tomcat@7. tomcat@8. tomcat最新版本(即tomcat9)三个版本 brew install tomcat 启动tomca ...
