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 ...
随机推荐
- GWAS+自然选择:62个样本的GWAS分析,没信号,如何巧妙的发文章
欢迎来到"bio生物信息"的世界 6天前,BMC Genomics 推了一篇文献"Population history and genetic adaptation of ...
- Nginx学习之入门
1. 概念 (1) 什么是nginx? Nginx (engine x) 是一款轻量级的Web 服务器 .反向代理服务器及电子邮件(IMAP/POP3)代理服务器. (2) 什么是反向代 ...
- Spring Boot整合UEditor不修改源码
1.创建Springboot项目,目录结构如下(在resources中static/ueditor/jsp/config.json) 2.pom文件引入 <dependency> < ...
- [PHP] Laravel 体现 MySQL、Sqlite 数据的大小写敏感
要想实现数据比对的大小写敏感,方式是设置数据库字段类型 或者 字段校验字符集. MySQL 和 Sqlite 所支持的 collations 形式是不同的,你可以通过以下文档了解到. MySQL co ...
- kafka生产部署
kafka真实环境部署规划 1. 操作系统选型 因为kafka服务端代码是Scala语言开发的,因此属于JVM系的大数据框架,目前部署最多的3类操作系统主要由Linux ,OS X 和Windows, ...
- perl oneline
可参考博客:http://blog.csdn.net/carzyer/article/details/5117429 Perl常用命令行参数概览 -e 指定字符串以作为脚本(多个字符串迭加)执行 -M ...
- Pycharm2018中DataBase的使用
1.点击右侧边栏的DataBase,在出现的Database窗口下点击绿色小加号,选择Data Source,选择需要的数据库类型,此处选择Sqlite 2.配置数据库连接信息 3.选择schema, ...
- charles 4.2.1 Ubuntu破解版安装
charles 4.2.1 Ubuntu破解版安装 下载 charles-proxy-4.2.1_amd64.tar.gz 破解版 charles.jar 破解包 解压 sudo tar -zxvf ...
- PHP设计模式 - 解释器模式
给定一个语言, 定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子. 角色: 环境角色(PlayContent):定义解释规则的全局信息. 抽象解释器(Empress):定 ...
- Asp Core部署到IIS服务器
之前有文章写了.Asp Core Kestrel服务器可以独立运行在linux下,也可以部署到Docker上面通过容器管理,当然也可以直接部署到IIS中 一:安装环境 1)首先需要在服务器安装对应环境 ...