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 ...
随机推荐
- cordova 的安桌动画
1.cordova 的安桌动画cordova plugin add cordova-plugin-lottie-splashscreenhttps://github.com/timbru31/cord ...
- (二)Java数据结构和算法——数组
一.数组的实现 上一篇博客我们介绍了一个数据结构必须具有以下基本功能: ①.如何插入一条新的数据项 ②.如何寻找某一特定的数据项 ③.如何删除某一特定的数据项 ④.如何迭代的访问各个数据项,以便进行显 ...
- Sigmoid函数的替代:overflow encountered in exp in computing the logistic function
RuntimeWarning: overflow encountered in exp in computing the logistic function 以下是sigmoid函数的标准写法,但是如 ...
- 【转】解决深入学习PHP的瓶颈?
转自:https://www.cnblogs.com/aksir/p/6774115.html PHP给学习者的感觉是:初学的时候很容易,但是学了2-3年,就深刻感觉遇到了瓶颈,很难深入,放弃又可惜. ...
- [ARM-Linux开发]Linux open函数
Linux open函数 open 函数用于打开和创建文件.以下是 open 函数的简单描述 #include <fcntl.h> int open(const char *pathnam ...
- 第N个丑数
#include <bits/stdc++.h> using namespace std; #define ll long long /* 把只包含质因子2.3和5的数称作丑数(Ugly ...
- GitBook的使用
首先安装gitbook npm install -g gitbook-cli 检查是否安装成功 gitbook -V 然后就要建立一个文件夹进到文件夹目录下 让此文件夹初始化下 gitbook ini ...
- strlen()与sizeof()
一.strlen() strlen()为计算字符串长度的函数,以‘\0’为字符串结束标志.注意:其传入参数必须是字符串指针(char*), 当传入的是数组名时,实际上数组退化成指针了. 二.sizeo ...
- 测试代码的练习2——python编程从入门到实践
11-3 雇员:编写一个名为Employee的类,其方法__init__() 接受名.姓和年薪,并将它们都存储在属性中.编写一个名为give_raise()的方法,它默认将年薪增加5000美元,但也能 ...
- Locust性能测试_参数关联
前言 前面[Locust性能测试2-先登录场景案例]讲了登录的案例,这种是直接传账号和密码就能登录了,有些登录的网站会复杂一点, 需要先从页面上动态获取参数,作为登录接口的请求参数,如[学信网:htt ...