在与uml进行了第一次的接触后,就被uml的博学多才给迷住了,uml居然可以做这么多的东西。才思敏捷的uml是设计软件的好帮手。

你还在为自己的类图不会设计而感到无助吗?你还在为你的对象不好确定而感到苦恼吗?你还在为软件各个对象之间的交互屡不清而睡不着觉吗?你还在为软件的部署而感到上愁吗?——去使用uml吧,帮你快速的搞清楚所有软件设计的困扰,你还在等什么!!

据说这是有人为uml专门设计的广告词,我看可能性不大——uml的便捷几乎让所有设计人员倾倒,哪里还需要什么广告呢?

好的,书归正传,我们来说一下uml的概述。

老规矩,先来张图:

概述主要为我们介绍了什么是uml;uml的构成;uml与面向对象的关系以及uml的各种图的应用。

先来看一下uml是啥:

uml全称unified modeling language 统一建模语言。uml并不是方法,也不是一堆图片,而是一个建模语言。

它是面向对象的程序设计催生的,他的历史就像是中国的历史上的文化一样,先是诸子百家,百花齐放的时代,那时uml只是其中的一种,再往后就是儒家、法家、墨家等几位大家的出现,uml在这个时期还是booch和omt这两个分开的建模工具。再往后就是罢黜百家,独尊儒术。uml在这个时期正式形成。当真是一个分久必合的过程啊。

uml有一个作用,就是建模,那么问题就来了:啥是模型呢?为啥要建模?模型又怎么去建立?他需要遵循什么原则呢?

模型是什么呢?我们都叠过纸飞机,纸飞机就是飞机的模型。那么模型有啥用呢,为什么要去建立模型?模型可以用较少的成本,让我们对事物有个很好的了解。模型的建立遵循抽象、分解、形式化的原则。

uml有了大概的了解后,咱么就说说当下最火的面向对象。

说面向对象的第一步,就是要明了啥是对象?什么又是面向对象的概念?面向对象的设计涉及什么关系?它有什么特性?如何评测?

先说啥是对象?简单的说,我们生活中的名词差不多都是对象,比如:鸡、鸭、鱼、鸟等等。面向对象就是把现实生活中的东西用代码表示出来。如何描述呢?我们在描述一个人的时候,一般会这么说:这个人叫啥、有多高、住在哪、有啥特长等。面向对象的设计同样也是如此,只不过我们是描述给计算机听的。因为电脑不能自己去寻找信息,只能接收我们的输入信息,所以我们要说的比较详细一点:

首先,我们要告诉电脑,存在这样一个种类,我们称之为人类,他们都有名字、有身高、有住址、特长等。电脑就会把我们的输入记录下来。

然后,我们接着跟电脑说:现在我要说人类里面的一个具体的人了。电脑就会把我们之前告诉他的人类的记录调出来,人类都有名字、身高、住址、特长等属性。然后就会给你个提示:你之前告诉我说人类都有名字、身高、住址、特长。那么你说的这个人的名字、身高、住址、特长分别是啥啊?

我们就像填空题一样告诉电脑他的名字叫张三、身高一米七三、住在第三大街、特长是睡觉。前面所说的人类就是类,而后面的具体的那个叫做张三的人就是实例化的对象。涉及到面向对象的概念还有很多,比如:消息、封装、继承、多态、聚合等。

那么它们之间涉及的关系呢?都有啥?

面向对象中的关系有:依赖、继承、关联、实现。

面向对象有啥特征吗?有的。他的特征就是:封装、继承和多态。这三个特征的含义如下:

封装:张三有身高、体重、年龄、配偶、住址、等等属性。平时也用不到所有的,所以就把这些属性都写好后,放起来,大家不必知道这个类都有啥属性,只是在使用的时候可以通过接口去调用。这就是封装。

继承:我们刚才说的人类,人类都有身高。人类又可以分为男人类和女人类,那么男人类和女人类也都会有身高这个属性。这就是继承。

多态:张三走在路上,被人打了一下,张三就哭了;李四走在路上,被人打了一下,李四就把打他的人揍哭了。同样都是被人打了一下,张三的回应是哭,李四的回应是把打他的人揍哭。这种在相同的条件下的不同反应就是多态。

面向对象的发展,催生了uml。uml又是如何构成的呢?

先来看着张图:

uml的组成分为:构造块、规则和机制。

构造块分为事物,关系,和图。

具体的内容,还要在学习各种图的时候才能详细的了解。

规则就简单了,就是人定的一些约定。便于统一的开发应用。uml的机制有:1.修饰2.注释3.规格说明4.扩展机制。修饰就是下划线啊、斜体啊等。注释和规格说明都是比较常见的就不在赘述了。扩展机制是允许uml使用人员自定义一些构成造型、标记值和约束。为元素添加新的定义。

uml的概述可以让我们对uml有一个大概的了解,便于后面的学习。

uml视频系列(二)——uml的概述的更多相关文章

  1. sql server 备份与恢复系列二 事务日志概述

    1.1  日志文件与数据文件一致性 在上一章备份与恢复里了解到事务日志的重要性,这篇重点来了解事务日志. 事务日志记录了数据库所有的改变,能恢复该数据库到改变之前的任意状态.在sql server实例 ...

  2. [时序图笔记] 步步为营UML建模系列五、时序图(Squence diagram)【转】

    概述 顺序图是一种详细表示对象之间以及对象与参与者实例之间交互的图,它由一组协作的对象(或参与者实例)以及它们之间可发送的消息组成,它强调消息之间的顺序. 顺序图是一种详细表示对象之间以及对象与系统外 ...

  3. UML学习(二)-----类图

    UML学习(二)-----类图 http://www.cnblogs.com/silent2012/archive/2011/09/07/2169946.html http://www.cnblogs ...

  4. 【UML】NO.53.EBook.6.UML.2.001-【Thinking In UML 大象 第二版】- 概述

    1.0.0 Summary Tittle:[UML]NO.53.EBook.6.UML.2.001-[Thinking In UML 大象 第二版]- 概述 Style:DesignPattern S ...

  5. UML视频

    https://www.bilibili.com/video/av34973179/?p=1 北京 圣思园 UML视频

  6. [知识库分享系列] 二、.NET(ASP.NET)

    最近时间又有了新的想法,当我用新的眼光在整理一些很老的知识库时,发现很多东西都已经过时,或者是很基础很零碎的知识点.如果分享出去大家不看倒好,更担心的是会误人子弟,但为了保证此系列的完整,还是选择分享 ...

  7. 图机器学习(GML)&图神经网络(GNN)原理和代码实现(前置学习系列二)

    项目链接:https://aistudio.baidu.com/aistudio/projectdetail/4990947?contributionType=1 欢迎fork欢迎三连!文章篇幅有限, ...

  8. Netty4.x中文教程系列(一) 目录及概述

    Netty4.x中文教程系列(一)目录及概述 Netty 提供异步的.事件驱动的网络应用程序框架和工具,用以快速开发高性能.高可靠性的网络服务器和客户端程序. Netty是一个NIO客户端 服务端框架 ...

  9. [知识库分享系列] 二、Web(高性能Web站点建设)

    知识库分享系列: [知识库分享系列] 二..NET(ASP.NET) [知识库分享系列] 一.开篇 分享介绍 此知识库之所以为 Web 系列,因为和 .NET 没有完全的关系,其中的技术和实践实用于各 ...

随机推荐

  1. FreeRTOS基础以及UIP之协程--C语言剑走偏锋

    在FreeRTOS中和UIP中,都使用到了一种C语言实现的多任务计数,专业的定义叫做协程(coroutine),顾名思义,这是一种协作的例程, 跟具有操作系统概念的线程不一样,协程是在用户空间利用程序 ...

  2. asp.net-mvc验证码 asp.net-mvc c#验证码

    验证码看不清换一组 写一个类 public class ValidateCode { public ValidateCode() { } /// <summary> /// 验证码的最大长 ...

  3. [转]tar 分包压缩与合并

    要将目录logs打包压缩并分割成多个1M的文件,可以用下面的命令:  tar cjf - logs/ |split -b 1m - logs.tar.bz2. 完成后会产生下列文件:  logs.ta ...

  4. HTML5 EventSource的用法

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  5. IOS开发中Xcode常用插件安装与管理(转)

    XCode中插件管理工具:Alcatraz    转自http://www.cocoachina.com/industry/20140506/8325.html 苹果现在的成绩得益于其始终如一的坚持. ...

  6. UVa 10925 - Krakovia

    题目大意:关于大数的加法和除法的,用Java的BigInteger可以方便地解决. import java.io.*; import java.util.*; import java.math.*; ...

  7. Swing 布局时 组件大小问题

    在JFrame中放置了几个JPanel ,想调整JPanel大小,一直无效. 问题在于: 因为JPanel A的四周没有添加任何组件,所以JPanel B会把JPanel A填满.这种情况想固定JPa ...

  8. PHP函数 mysql_real_escape_string 与 addslashes 的区别

    addslashes 和 mysql_real_escape_string 都是为了使数据安全的插入到数据库中而进行的过滤,那么这两个函数到底是有什么区别呢? 首先,我们还是从PHP手册入手: 手册上 ...

  9. XML文档的PHP程序查询代码

    PHP文档: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " http://www ...

  10. Brackets - 强大免费的开源跨平台Web前端开发工具IDE (HTML/CSS/Javascript代码编辑器)

    Brackets 是一个免费.开源且跨平台的 HTML/CSS/JavaScript 前端 WEB 集成开发环境 (IDE工具).该项目由 Adobe 创建和维护,根据MIT许可证发布,支持 Wind ...