前言

软件开发过程中,在生命周期中,我们大都知道要写文档,但是针对这种团队集体完成的事情,如果中间出现了人员流动问题,这时侯有文档仅仅是不够的。为了让大多数开发人员和用户能直观的了解软件开发的进度和流程就引入了UML(Unified Modeling Language)统一建模语言。

分析

横向:

软件开发过程中,在整体状态可以划分为外部和内部两大部分,其中内部自认为可以分为动态行为和静态结构。其中每个开发部分都需要UML中图让开发过程尽最大的可视化。如下图:

纵向:

   初识UML,一开始就知道有九种图,但是九种图都是干什么的呢?九种图都应用在哪几个阶段呢?就像师父问我,各个阶段都有哪些文档知道吗?为什么要写文档?大致的划分了一下,如图:
               

基点

   UML是基于面向对象的一门语言,其中在面向对象的设计技术中,面对对象的基本原则是(区别于面向过程的显著的特点)抽象、封装、模块性、层次性。
1、面向对象和类有什么异同点:
对象和类:
   对象是具有状态、标识和行为的一个实物。
   类是一组具有相同属性、行为、关系和语义的对象的描述。
注:一个对象是一个类的实例。
2、什么是抽象?
   将真实的客观环境抽象成一个名词,比如下面一个购买商品应用情景:
                   
3、什么是封装?
   对客户隐藏实现,客户看到只是接口,对于里面的东西一概不知。比如遥控控制电视,我们都能控制电视,但是这种功能具体怎么实现的呢?我们一概不知。
4、什么是模块性?
   就是将我们的系统分为不同的功能模块,然后进行面向对象设计。对于一个购买东西的流程。可以如图:
                   
5、什么是层次性?
                 

关系

a、关联关系:“实线+箭头”
   这一种特别常用的关系,但是关系并不是很突出,为了让开发者对图一针见血,需要很强的关系来形容。如下图就是关联关系:
                     
b、聚合关系:“空心菱形+实线+箭头”
   聚合关系,部分可以独立于整体而存在。如下图:
                      
c、组合关系:“实心菱形+实线+箭头”
   部分不可以独立于整体而存在。如下图:
                      
d、泛化关系:“空三角+实线”
   泛化关系就是"is kind of"继承关系。
e、依赖关系:“虚线+箭头”
   一种使用关系,一个事物规格说明的变化可能影响到使用它的另一个事物,但反之未必。

总结

   至此,我们已经了解到了开发阶段的每个阶段需要什么UML图,UML图中的四大关系的应用和具体表示方法。在后面的学习中,开始我们对UML九大图中每个图的详细认识吧。未完待续~~~
   本人是一枚菜鸟,如果不合适的地方,望大神斧正!
                        若安好,便是晴!





UML——前两章的更多相关文章

  1. Java学习笔记,前两章总结

    第一章 Java平台概论 1.Java不仅仅是个程序语言,代表解决问题的平台,代表了原厂.各个厂商.社群.开发者与用户沟通的成果. 2.Java三大平台,从J2SE.J2EE.J2ME到Java SE ...

  2. Python大战机器学习——基础知识+前两章内容

    一  矩阵求导 复杂矩阵问题求导方法:可以从小到大,从scalar到vector再到matrix. x is a column vector, A is a matrix d(A∗x)/dx=A d( ...

  3. 事隔五年之后,开启第2版DSP数字信号处理和CMSIS-NN神经网络教程,同步开启三代示波器,前15章发布(2019-11-04)

    说明:1.第1版DSP教程发布于2014年末,纪念下:https://www.cnblogs.com/armfly/p/11274826.html2.这几年在信号处理的应用上积累了一些经验,也发现了很 ...

  4. JavaScript 中实现继承的方式(列举3种在前一章,我们曾经讲解过创建类的最好方式是用构造函数定义属性,用原型定义方法。)

    第一种:对象冒充 function ClassA(sColor) { this.color = sColor; this.sayColor = function () { alert(this.col ...

  5. HBase in Action前三章笔记

    近期接触HBase,看了HBase In Action的英文版.開始认为还行,做了些笔记.可是兴许看下去,越来越感觉到实战这本书比較偏使用上的细节,对于HBase的具体设计涉及得很少.把前三章的一些笔 ...

  6. 读了两章的 How Tomcat Works

    周一发现了一本书.How Tomcat Works 惯例先到豆瓣搜书评.结果书评出奇的好.然后下载了PDF.从简介中看,本书的每个章节都会不断的围绕怎么建造一个Tomcat讲解.我本人比较喜欢这种造轮 ...

  7. 《Writing Idiomatic Python》前两部分的中文翻译

    汇总了一下这本小书前两部分的内容: 翻译<Writing Idiomatic Python>(一):if语句.for循环 翻译<Writing Idiomatic Python> ...

  8. sqlserver -- 学习笔记(七)获取同组数据的前两条记录

    不啰嗦,直接上图,大概实现效果如下: 有上面这样一份数据,将他们按照userAccount和submitTime进行分组,然后提前每组数据的前两条记录 提取后数据如下: 实现的SQL如下: selec ...

  9. WORD中如何让前两页不显示页码

    WORD中如何让前两页不显示页码   上稿人:ojn 点击率: 15191   我们有时在用word编辑文档时,会遇上第一.二页无需显示页码,第三页才是正文的第一页时,该如何正确插入页码呢? 以wor ...

随机推荐

  1. java.sql.SQLException: Column count doesn't match value count at row 1 Query: insert into category values(null,?,?,?) Parameters: [1111111, 1111, 软件]

    java.sql.SQLException 问题: java.sql.SQLException: Column count doesn't match value count at row 1 Que ...

  2. JS中的prototype、__proto__与constructor属性

    作为一名前端工程师,必须搞懂JS中的prototype.__proto__与constructor属性,相信很多初学者对这些属性存在许多困惑,容易把它们混淆,本文旨在帮助大家理清它们之间的关系并彻底搞 ...

  3. JSP分页1

    分页 1.什么分页? 第N页/共M页 首页 上一页 1 2 3 4 5 6 7 8 9 10 下一页 尾页 口 go 分页的优点:只查询一页,不用查询所有页! 2.分页数据 页面的数据都是由Servl ...

  4. struts2--Basic(一)

    Struts是流行和成熟的基于MVC设计模式的WEB应用程序框架. 帮助我们减少在运用MVC设计模式来开发Web应用的时间. 1.下载添加jar包 2. 准备配置文件 web.xml <filt ...

  5. QListWidget拖放

    setDragEnabled() 允许拖 setAcceptDrops()允许放 setDragDropMode(QAbstractItemView.DragDrop)设置拖拽模式 setSelect ...

  6. docker 基本概念

    image 操作系统 应用 registeries image 的远程仓库 containers 类似一个目录,一个容器包含了 应用运行所需要的一切东西, 容器之间互相独立 image包换一系列的层, ...

  7. Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]

    使用hibernate的时候,报出这个错误Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvir ...

  8. G 唐纳德与子串(easy)(华师网络赛---字符串,后缀数组)(丧心病狂的用后缀自动机A了一发Easy)

    Time limit per test: 1.0 seconds Memory limit: 256 megabytes 子串的定义是在一个字符串中连续出现的一段字符.这里,我们使用 s[l…r] 来 ...

  9. BZOJ5314: [Jsoi2018]潜入行动

    BZOJ5314: [Jsoi2018]潜入行动 https://lydsy.com/JudgeOnline/problem.php?id=5314 分析: 裸树形背包,设\(f[x][i][0/1] ...

  10. 命令行启动nodejs方式 小总结

    之前启动nodejs都是写一个命令行文件,如nodejs.cmd,内容为:start node E:\node\app.js. 今天突然想到之前也用过另外一种方式启动,就是在命令行通过cd命令先找到n ...