《大象Think in UML》阅读笔记之二
Think in UML阅读笔记(二)
上一次读到面向对象和面向过程的区别和各自的优势,结合实例分析了面向过程在面对大数据的时候,已经不足以满足人们的需求,所以引入了面向对象,面向对象的方法把世界看做一个个独立的对象,并且对象之间相互没有因果关系,只有在一些外部力量的驱使下,这些对象之间才会根据某种规律相互传递信息,而这些对象之间的互动促成了这个世界的一个“过程”,面向对象的方法只需要研究“一个对象”,不会像面向过程那样遭遇大数据的问题,“这个对象”的复杂度和结构是有限的,彼此是相互独立的。
在上一个组装汽车的例子中,对象是按照一定的规则组装出了一辆汽车,在这个例子中,我们可以发现一些问题,例如:零件是如何产生的???这种符合“规则”的标准零件是如何被设计制造出的???等等......这些问题的产生提醒了我们一件事,那就是“现实世界和对象世界是不一样的”。因此我们需要解决的问题有三个:Why(为什么?)、How(怎么做?)、What(是什么?)。在面对一个问题的时候,我们进行设计的时候设计的类的个数、方法的个数为什么是这么多个???我们没有一种固定的方法来确定这些东西,有经验的设计师根据经验,没有经验的我们只能通过不断的测试来证明我们设计出来的那些类实现了我们的某些需求,但是如果你设计的类不能满足我们的需求,我们就可能需要重新设计,这样花费的成本是难以估量的,而且我们有时候还不能真正确定我们设计的类已经满足了我们的需求,我现在是一名大三的学生,我们现在正在学习《软件设计模式》这门课,,正在学习GOF,里面有很多的类设计的模式和开始的原则来实现类的高低聚、低耦合。但是我们总是不太明白我们写的程序为什么是这样子的,其中的类是什么意思?为什么是这样?探究其本质,不过是因为现实世界和对象世界之间有着一道鸿沟,它叫“抽象”。抽象是面向对象的精髓所在,为了理解这种“抽象”,我们需要(1)一种把现实世界映射到对象世界的方法;(2)一种从对象世界描述现实世界的方法;(3)一种验证对象世界行为是否正确反映了现实世界的方法;要理解这些,我们引出了UML,UML背后所代表的面向对象分析设计方法。UML是一种建模用的语言,而所有的语言都是由基本词汇和语法两个部分构成的,UML定义了一些建立模型所需要的、表达某种特定含义的基本元素;这些元素称为元模型,相当于语言中的基本词汇,例如用例、类等。另外,UML还定义了这些元模型互相之间关系的规则,以及如何用这些元素和规则绘制图形以建立模型来映射现实世界;这些规则和图形称为表示法或试图(View),相当于语言中的语法。UML这种语言是用来写说明文的,用自然世界和计算机路基都能够理解的表达方式来说明现实世界。
不论什么年代、什么领域,统一一词已经不只是一个简简单单的词汇,而是一个可以让不同的人或物理解同一种东西,统一的目的就是形成标准;在软件工程这个行业里面,任何一种组件化开发模式背后都有一个标准在规范和指导,可以说没有标准就没有现代工业化。随着软件工程的不断承受,软件行业的需求、分析、设计、开发这些过程也被分离开来并专业化了。
可视化,从字面上来看,所谓可视化就是肉眼可见的,但是在这里可视化的含义是指,UML通过他的元模型和表示法,把那些通过文字或其他表达方式很难表达清楚的,隐晦的潜台词用简单直观的图形表达和暴露出来,准确而直观地描述复杂的含义,把文字变成图形,这就是UML可视化的真正含义。
我们通过软件建立模型来对客观事物建立一种抽象的方法,要建立模型的前提是知道如何抽象现实世界,我们站在很高的抽象的层次,以高度归纳的视角来看这个世界的运作,就会发现现实世界不管多复杂,无论是哪个行业、无论做什么业务、其本质无非是由人、事、物和规则组成的。其中人是中心,随着人的动作的开始,就会使用一些东西产生一些,而人的动作要遵循一定的规则。人驱动系统,事体现工程,物记录结果,规则是控制。建立模型的关键就是弄明白有什么人,什么人做什么事,什么事产生什么物,中间有什么规则,再把人、事、物之间的关系定义出来,一个模型就出来了。
《大象Think in UML》阅读笔记之二的更多相关文章
- Hadoop阅读笔记(二)——利用MapReduce求平均数和去重
前言:圣诞节来了,我怎么能虚度光阴呢?!依稀记得,那一年,大家互赠贺卡,短短几行字,字字融化在心里:那一年,大家在水果市场,寻找那些最能代表自己心意的苹果香蕉梨,摸着冰冷的水果外皮,内心早已滚烫.这一 ...
- Linux协议栈代码阅读笔记(二)网络接口的配置
Linux协议栈代码阅读笔记(二)网络接口的配置 (基于linux-2.6.11) (一)用户态通过C库函数ioctl进行网络接口的配置 例如,知名的ifconfig程序,就是通过C库函数sys_io ...
- Apollo源码阅读笔记(二)
Apollo源码阅读笔记(二) 前面 分析了apollo配置设置到Spring的environment的过程,此文继续PropertySourcesProcessor.postProcessBeanF ...
- [置顶] Linux协议栈代码阅读笔记(二)网络接口的配置
Linux协议栈代码阅读笔记(二)网络接口的配置 (基于linux-2.6.11) (一)用户态通过C库函数ioctl进行网络接口的配置 例如,知名的ifconfig程序,就是通过C库函数sys_io ...
- 【unix网络编程第三版】阅读笔记(二):套接字编程简介
unp第二章主要将了TCP和UDP的简介,这些在<TCP/IP详解>和<计算机网络>等书中有很多细致的讲解,可以参考本人的这篇博客[计算机网络 第五版]阅读笔记之五:运输层,这 ...
- 《梦断代码Dreaming In Code》阅读笔记(二)
这段时间一口气读了5章,所以想着现在一块写阅读笔记. 在阅读的这段时间,我一直是晚上进行阅读,很多时候都是读完一看已经一个小时了,效果还不错.闲话不表,说说阅读心得. 关于底层语言或是低级语言,我之前 ...
- Head First HTML与CSS阅读笔记(二)
上一篇Head First HTML与CSS阅读笔记(一)中总结了<Head First HTML与CSS>前9章的知识点,本篇则会将剩下的10~15章内容进行总结,具体如下所示. div ...
- 论文阅读笔记(二十一)【CVPR2017】:Deep Spatial-Temporal Fusion Network for Video-Based Person Re-Identification
Introduction (1)Motivation: 当前CNN无法提取图像序列的关系特征:RNN较为忽视视频序列前期的帧信息,也缺乏对于步态等具体信息的提取:Siamese损失和Triplet损失 ...
- 02《UML大战需求分析》阅读笔记之二
UML虽然是一种新的工具,但同时也代表了一种新的先进的思考方法,所以学习UML的关键不在于学习语法,而是要改变思维习惯.所以我觉得我还需要系统地培养几方面的能力,如书面表达能力,归纳总结能力,“面向对 ...
随机推荐
- css3--js-jq动画效果
最近写网页时才发现原来css3的动画效果感觉还不错哦!但自己以前学的时候却没有当作重点,现在从新学习一下: 1:原理: 创建动画的原理是,将一套 CSS 样式逐渐变化为另一套样式.在动画过程中,您能够 ...
- ios开发网络篇—HTTP协议 - 转
一.URL 1.基本介绍 URL的全称是Uniform Resource Locator(统一资源定位符) ,通过1个URL,能找到互联网唯一的1个资源 ,URL就是资源的地址,位置,互联网上的每个资 ...
- 理解IaaS、PaaS、SaaS 的区别
作者:何足道链接:https://www.zhihu.com/question/21641778/answer/62523535来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...
- JavaWeb基础—HttpServletRequest
HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中, 通过这个对象提供的方法,可以获得客户端请求的所有信息. ...
- mysql java 类型对照 int
Java MySQL数据类型对照 类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述 VARCHAR L+N VARCHAR java.lang.S ...
- 12-[数据库]--图形工具Navicat
1.Navicat介绍 在生产环境中操作MySQL数据库还是推荐使用命令行工具mysql,但在我们自己开发测试时,可以使用可视化工具Navicat,以图形界面的形式操作MySQL数据库 官网下载:ht ...
- CSS快速入门-实用技巧
1.整体布局 大部分的布局都是由三部分组成,header.body.footer. 代码布局:写三个div <!DOCTYPE html> <html lang="en&q ...
- UWP 剪贴板 Clipboard
Clipboard使用Windows.ApplicationModel.DataTransfer.Clipboard 设置文本 DataPackage dataPackage = new DataPa ...
- node.js学习笔记——前序
一.什么是node.js 简单的说 Node.js 就是运行在服务端的 JavaScript. Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台. Node.js是一 ...
- 动态加载与插件系统的初步实现(四):解析JSON、扩展Fiddler
按文章结构,这部分应该给出WCFRest项目示例,我想WinForm示例足够详尽了,况且WCFRest还不需要使用插件AppDomain那一套,于是把最近写的Fiddler扩展搬上来吧. Fiddle ...