UML——从类图到C++
简易软件开发流程
实践中,use case and description、class diagram与sequence diagram三者搭配,几乎是UML项目的基本类型,所以在分工或外包的设计文档中,通常少不了这三款UML图。常见的开发程序是并行建构use case、description与class diagram,接着才构建sequence diagram以及按图编码,如下图所示。

一个软件系统,对外提供各种服务(use case描述)。外部行为由于环境、市场、政策等等因素具有动态行为以及不可预测性。无论系统对外服务多么不确定性,运作方式差异多么大,他所依赖的系统内部结构都是稳定的。一个系统只有一个内部结构,class diagram正是描述系统内部这种未定的静态结构。软件开发过程中,class diagram不是一蹴而就的,需要与use case、sequence diagram多次迭代更新后才能逐步稳定下来。
上图涉及的三种UML图功能如下:
use case:表示系统对外提供的服务
sequence diagram:表示软件内部对象交互的情况。
class diagram:用来呈现系统内部的静态结构,而这样的静态结构通常可以直接对应代码,因此,从程序员的角度来看,类图是最值得关注的UML图。
association
在OO的认识论中,世界的本质是由对象组成的,平时看上去相互无关的独立对象在不同驱动力和规则的作用下体现出不同的运动过程,然后这些过程便展现出了我们这个生动的世界。在软件设计中,我们往往采用领域术语做类,识别类的具体手段有软件专家Sally Shlaer和Stephen J.Mellor提出的对象种类理论,以及软件专家Peter Coad提出的transaction patterns。本文的重点不是如何设计类,而是如何刻画类与类之间的关系。

类与类之间的关系,有过C++等面向对象语言基础的人很容易理解。上图对应的inheritance、access level、virtual class在C++中都有语法支撑,大多数C++程序员很容易理解这些概念。
对象之间的关系则要丰富的多。C++中我们使用类来描述某种事物的共同特性,使用对象来描述具体事务的共同特性的实际值,有的甚至还有个性的实际值。对象很少独立存在,通常会与其他种类的对量产生关系,达到1+1>2的效果。本文重点讲述对象与对象之间的关系,不过虽说是对象之间的关系,但是体现在class diagram上还是在类与类之间建立联系,用来表达两个类所产生对象之间的关系。
static relationship
static relationship包括association、aggregation、composition。这三种关系在C++类定义代码里面可以直接体现出来,才C++中attributes、static relationship的实现方法相同,都当作静态的数据来处理,因此static relationship也会想attributes一样收到access level的限制,进而影响到子类继承后的使用情况。static relationship中最常见的又是association,只要两个对相见需要协作,都能和association扯上勾
UML——从类图到C++的更多相关文章
- [UML]UML系列——类图class的关联关系(聚合、组合)
关联的概念 关联用来表示两个或多个类的对象之间的结构关系,它在代码中表现为一个类以属性的形式包含对另一个类的一个或多个对象的应用. 程序演示:关联关系(code/assocation) 假设:一个公司 ...
- [UML]UML系列——类图class的依赖关系
相关文章 [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.extend) [UML]UML系列—— ...
- [UML]UML系列——类图class的泛化关系
系列文章 [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.extend) [UML]UML系列——类图C ...
- [UML]UML系列——类图class的实现关系Realization
系列文章 [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.extend) [UML]UML系列——类图Class ...
- UML(一) 类图及类间关系
原创文章,同步发自作者个人博客,http://www.jasongj.com/uml/class_diagram/ UML类图 UML类图介绍 在UML 2.*的13种图形中,类图是使用频率最高的UM ...
- UML的类图关系分为: 关联、聚合/组合、依赖、泛化(继承)
UML的类图关系分为: 关联.聚合/组合.依赖.泛化(继承).而其中关联又分为双向关联.单向关联.自身关联:下面就让我们一起来看看这些关系究竟是什么,以及它们的区别在哪里. 1.关联 双向关联:C1- ...
- 20170908工作日记--UML画类图、HTTP协议、Volley源码走读
随手搜了一下,Android studio居然能够自动帮追我们生成UML的类图,简直太棒了http://www.gcssloop.com/course/UsePlantUMLInAS(Win),具体做 ...
- [UML]UML系列——类图Class
相关文章 [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.extend) 一.类图的概念及组成 1.类图的概念 类图是描述类.接 ...
- Uml学习-类图简介
类图(Class Diagram)简介 类图是面向对象分析(OOA,Object-Oriented Analysis)和面向对象设计(OOP,Object-Oriented Deisgn)思想的重要 ...
- UML的类图、时序图表示方法以及惯例
<UML类图图示样例>说明:http://wenku.baidu.com/link?url=DEaRFyVIAH4kZ7TolplfFhFhmAk3gFaNSOH7XPzfTnCWY4CB ...
随机推荐
- elasticsearch中mapping的_source和store的笔记(转)
原文地址: https://www.cnblogs.com/zklidd/p/6149120.html 0.故事引入 无意中看到了ES的mapping中有store字段,作为一个ES菜鸡,有必要对这个 ...
- EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器软件正式环境安装部署攻略
背景介绍 EasyDSS流媒体服务器软件,提供一站式的转码.点播.直播.时移回放服务,极大地简化了开发和集成的工作.其中,点播功能主要包含:上传.转码.分发.直播功能,主要包含:直播.录像, 直播支持 ...
- 破解MySQL登录密码的几种方法
工具列表 Medusa Ncrack Hydra Metasploit Medusa medusa -h 192.168.1.106 –U /root/Desktop/user.txt –P /ro ...
- ASP.NET Core 中间件Diagnostics使用 异常和错误信息
ASP.NET Core 中间件(Middleware)Diagnostics使用.对于中间件的介绍可以查看之前的文章ASP.NET Core 开发-中间件(Middleware). Diagnost ...
- c#内存泄漏分析
背景 给客户开发了一个WPF应用,每隔一段时间就会很卡,推测是内存泄漏引起.需要监测内存使用情况. 使用的工具 Ants Memory Profiler 百度网盘下载地址 使用教程 入门使用 参考文档 ...
- zuul重连配置
#retry #该参数用来开启重试机制 spring.cloud.loadbalancer.retry.enabled=true #断路器的超时时间,断路器的超时时间需要大于ribbon的超时时间,不 ...
- 域名解析中的cname解析和显性URL跳转和隐性URL跳转三者有什么区别
通俗的来讲,cname解析还是属于dns解析,只是把某个域名解析到另外一个域名对应的某个IP的空间中,所以还需要在服务器端(比如nginx)做域名解析(比如把baidu.com做一个cname解析到i ...
- SGU 127. Telephone directory --- 模拟
<传送门> 127. Telephone directory time limit per test: 0.25 sec. memory limit per test: 4096 KB C ...
- Python 入门(2):数据类型
一 Number(数字) 1.1 数字类型的创建 a = 10 b = a b = 5 print(a) 10 print(b) 5 1.2 Number 类型转换 a = 5.2 b = 5 c = ...
- DRF框架(一)——restful接口规范、基于规范下使用原生django接口查询和增加、原生Django CBV请求生命周期源码分析、drf请求生命周期源码分析、请求模块request、渲染模块render
DRF框架 全称:django-rest framework 知识点 1.接口:什么是接口.restful接口规范 2.CBV生命周期源码 - 基于restful规范下的CBV接口 3.请求组件 ...