一.概述

  

二.核心概念

  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】的更多相关文章

  1. 职位-IT:软件设计师

    ylbtech-职位-IT:软件设计师 软件设计师是指能根据软件开发项目管理和软件工程的要求,按照系统总体设计规格说明书进行软件设计,编写程序设计规格说明书等相应的文档的实用性人才.还能够组织和指导程 ...

  2. 2、软件设计师要阅读的书籍 - IT软件人员书籍系列文章

    软件设计师在项目组中的地位比软件工程师相对要高一些.但是他们所要阅读的书籍差别还是比较大的.同样的,软件设计师也要阅读比较多的书籍,以能够完成项目的任务为目的,同时还要提高自身在项目组中的竞争地位,而 ...

  3. 软件设计师.NET认证考试测试卷(试题及答案)

    软件设计师.NET认证考试测试卷 注意事项:用蓝.黑色钢笔答题.保持卷面整洁. 得分 阅卷人 一.单项选择(40分,每小题1分) 1.以下标识符中不全是关键字的是(D  ) A.case for in ...

  4. 软件设计师真题试题&&答案

    软件设计师2013上半年上午试题及答案详解 下午试题 2013下半年上午答案 试题 下午答案 试题 2014上半年上午答案 2015上半年上午答案 2016上半年上午试题

  5. 《软件设计师》——UML

    包含和扩展的区别,在于是否“必须”,如果是必须则是包含,如果不是必须则是扩展. 粗横线表示产生多个并行的任务.

  6. [设计语言][统一建模语言][软件开发方法学][UML] UML

    背景介绍 UML是一种统计建模语言. WIKI: https://en.wikipedia.org/wiki/Unified_Modeling_Language UML是OMG (object man ...

  7. 软件设计师14-UML建模

    UML图 用例图 用例图:参与者.用例 用例之间的关系:包含关系.扩展关系.泛化关系. 用例的包含关系:查询数据外借信息包含用户登录. 用例的扩展关系:修改之前要先查询,则修改信息包含查询信息用例 类 ...

  8. 软考网络工程师、软件设计师等官方指定教材pdf文件

    软考计算机网络工程师教材pdf 链接:https://pan.baidu.com/s/1-UXeNye414UWYxYRC6bHuA 提取码:5z9w 软考计算机软件设计师第五版pdf 链接:http ...

  9. 软件设计师考试计算机系统知识——CPU

    第一章: 计算机系统知识 1.1.1计算机系统硬件的基本组成 运算器.控制器.存储器.输入设备.输出设备 1.1.2 中央处理器 ①CPU的功能: a.程序控制:CPU通过执行指令来控制程序执行的顺序 ...

随机推荐

  1. 自动化远程部署shell脚本

    历史原因,有一段时间,项目开发采用一种模式:项目开发及代码版本管理在外网,而主要测试在内网.所以为了同步开发进度,每天会将所有服务在外网jenkins上打包好,然后将服务jar包拷进内网,由于内网服务 ...

  2. Android apk在线升级

    APK 在线升级 APK 在线升级几乎是所有程序必备的功能. 在线升级功能能解决已有的问题并提供更丰富的新功能. 基本的流程是: 检测到新版本信息 弹出升级提示窗口 点击 No 不进行升级,完毕! 点 ...

  3. 关于Objective-C新增的__kindof关键字

    Objective-C随着Xcode 7的升级带来了许多新特性,当然此次更新最最大的就是引入了Objective-C的轻量级泛型,确切地说是Objective-C类的轻量级泛型.除此之外,还有一个小特 ...

  4. Laya的版本管理

    参考: Laya项目发布详解 发布时,勾选开启版本管理 点击上图“是否开启版本管理”右边的+号. 可以选择加入版本管理,或者排除版本管理的文件夹. 比如我要排除bin/test这个文件夹下的文件,不使 ...

  5. python语言使用yaml 管理selenium元素

    1.所有元素都在PageElement下的.yaml,如图 login_page.yaml文件: username: dec: 登录页 type: xpath value: //input[@clas ...

  6. [LeetCode] 351. Android Unlock Patterns 安卓解锁模式

    Given an Android 3x3 key lock screen and two integers m and n, where 1 ≤ m ≤ n ≤ 9, count the total ...

  7. 【VS开发】Visual C++内存泄露检测—VLD工具使用说明

    Visual C++内存泄露检测-VLD工具使用说明 一.        VLD工具概述 Visual Leak Detector(VLD)是一款用于Visual C++的免费的内存泄露检测工具.他的 ...

  8. docker下安装nginx并实现https访问

    一.启动容器 docker run --detach --name wx-nginx -p 443:443 -p 80:80 -v /home/nginx/data:/usr/share/nginx/ ...

  9. 自动化运维工具之SaltStack简介与安装

    1.SaltStack简介 官方网址:http://www.saltstack.com官方文档:http://docs.saltstack.comGitHub:https:github.com/sal ...

  10. string 与 int double 的转化

    #include <iostream> #include <string> #include <sstream> using namespace std; int ...