《大象Think in UML》阅读笔记之一
Think in UML这一书以UML为载体,将面向对象的分析设计思想巧妙地融合在建模UML当中,通过一些实例将软件系统的开发过程中的一些知识有机地结合起来。全书共分为四篇:准备篇、基础篇、进阶篇和总结篇。
准备篇讲述面向对象分析的一些基本概念及学习建模需要了解的一些基本知识。书籍Think in UML的开头为大象希形,其中提到了和UML师出同门的一门语言RUP,经过上网查找资料得知,RUP英文全称为Rational Unified Process,中文译为统一软件开发过程,是一个面向对象且基于网路的程序开发方法论,是Rational软件公司创造的软件工程方法。借由RUP中文档、模型、软件层次、迭代、构件、架构、测试等等的官方文档的晦涩和枯燥,即使开发者明白RUP可以说是一种软件高级人才的金手指,却也无法把完全掌握这种堪称致命性的缺点来引出Think in UML这本书的便利和简单易懂,所以本书的名称为Think in UML来使从事软件方面工作的人容易理解和掌握,这本书最大的优点也是最诱人的地方就在于把RUP的精髓理解透彻,摸清了软件开发过程的开发框架、软加架构、设计模式、系统分析建模与设计的来龙去脉。
众所周知,这几年来从事软件开发工作的人员都把一个词和软件紧紧联系起来,这个词就是“面向对象”,面向对象中的对象指的是类的集合,根据网络上的资料翻阅,面向对象(Object Oriented,OO)这个概念和应用已经超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等一系列领域,随着计算机技术的不断提高,计算机被用于解决越来越复杂的问题,一切事物皆对象,将现实世界的事物抽象成对象,现实世界的关系抽象成类、继承,帮助人们实现对于现实世界的抽象和数字建模。面向对象能够有效地提高编程的效率,通过类的封装技术,消息机制可以快速开发出一个全新的系统。既然面向对象的技术是如此之重要,那么UML就不得不提了,因为UML是软件开发过程中面向对象分析和设计的重要工具,书中有一句话是UML是面向对象思想和方法的具体化和符号化,学习UML的过程就是掌握面向对象思想和方法的过程,而UML统一建模语言我们在大二就已经学习过。
从此书中我们可以发现不论对于面向过程还是面向对象,作者并没有偏向任何一方,而是认为他们都是人们在采用不同的方法来认识和描述这个世界的时候所采用的工具而已,都只是表象而不是本质,同时举例了UML的创始人之一的Grady Booch 在2004年IBM Developer Works Live大会的访谈中讲过的一段流传甚广的一段话:

从本质上来说面向过程和面向对象是一个古已有之的认识论的问题,面向对象方法的兴起只是因为我们需要这种方法来解决一些问题。
简而言之,面向过程的方法就是认为我们所生存的世界是由一个个相互关联的小的系统组成的,并且面向过程的方法认为每个组成世界的小系统之间都有着明确的开始和结束,开始和结束之间有着严谨的因果关系。作者举了一个例子,就像一个简单的数据的系统,这个系统能够实现增删查改的功能,计算机是通过数据来记录这个过程的变化。数据变化的过程中每一步必然都会产生、修改或者读取一部分数据,当这个过程完成后,数据酒后顺着这个过程链传递到下一个过程,循环往复,数据不断变更,但是随着信息的更新和发展,大数据已经成为一个主流的问题,一份数据经常被多个过程共享,他们之间的问题越来越复杂,经常出现相互矛盾的数据需求,所以面向过程的方法已经不足以满足软件开发人员对于系统的高要求性,我们更需要的是一种On-Demand Business(随需应变的商务)。这种时候面向对象的方法就产生了。
面向对象的方法与面向过程方法不同,它把世界看做一个个相互独立的对象,并且对象之间相互没有因果关系,只有在一些外部力量的驱使下,这些对象之间才会根据某种规律相互传递信息,而这些对象之间的互动促成了这个世界的一个“过程”,显而易见,在没有这种外力的作用下,对象之间则始终保持着“静止”的状态。面向对象的方法只需要研究“一个对象”,不会像面向过程那样遭遇大数据的问题,“这个对象”的复杂度和结构是有限的,彼此是相互独立的。
《大象Think in UML》阅读笔记之一的更多相关文章
- 《大象Think in UML》阅读笔记(三)
Think in UML 阅读笔记(三) 把从现实世界中记录下来的原始需求信息,再换成一种可以知道开发的表达方式.UML通过被称为之概念化的过程来建立适合计算机理解和实现的模型,这个模型被称为分析模型 ...
- 《大象Think in UML》阅读笔记之二
Think in UML阅读笔记(二) 上一次读到面向对象和面向过程的区别和各自的优势,结合实例分析了面向过程在面对大数据的时候,已经不足以满足人们的需求,所以引入了面向对象,面向对象的方法把世界看做 ...
- 阅读笔记 1 火球 UML大战需求分析
伴随着七天国庆的结束,紧张的学习生活也开始了,首先声明,阅读笔记随着我不断地阅读进度会慢慢更新,而不是一次性的写完,所以会重复的编辑.对于我选的这本 <火球 UML大战需求分析>,首先 ...
- 《uml大战需求分析》阅读笔记05
<uml大战需求分析>阅读笔记05 这次我主要阅读了这本书的第九十章,通过看这章的知识了解了不少的知识开发某系统的重要前提是:这个系统有谁在用?这些人通过这个系统能做什么事? 一般搞清楚这 ...
- <<UML大战需求分析>>阅读笔记(2)
<<UML大战需求分析>>阅读笔记(2)> 此次读了uml大战需求分析的第三四章,我发现这本书讲的特别的好,由于这学期正在学习设计模式这本书,这本书就讲究对uml图的利用 ...
- uml大战需求分析阅读笔记01
<<UML大战需求分析>>阅读笔记(1) 刚读了uml大战需求分析的第一二章,读了这些内容之后,令我深有感触.以前学习uml这门课的时候,并没有好好学,那时我认为这门课并没有什 ...
- Mina源码阅读笔记(一)-整体解读
今天的这一节,将从整体上对mina的源代码进行把握,网上已经有好多关于mina源码的阅读笔记,但好多都是列举了一下每个接口或者类的方法.我倒是想从mina源码的结构和功能上对这个框架进行剖析.源码的阅 ...
- JDK1.8源码阅读笔记(2) AtomicInteger AtomicLong AtomicBoolean原子类
JDK1.8源码阅读笔记(2) AtomicInteger AtomicLong AtomicBoolean原子类 Unsafe Java中无法直接操作一块内存区域,不能像C++中那样可以自己申请内存 ...
- [阅读笔记]Software optimization resources
http://www.agner.org/optimize/#manuals 阅读笔记Optimizing software in C++ 7. The efficiency of differe ...
- Hadoop阅读笔记(七)——代理模式
关于Hadoop已经小记了六篇,<Hadoop实战>也已经翻完7章.仔细想想,这么好的一个框架,不能只是流于应用层面,跑跑数据排序.单表链接等,想得其精髓,还需深入内部. 按照<Ha ...
随机推荐
- 记一次异机rman还原后的操作
当时从主库通过rman备份到目前测试库还原之后,由于备份是在备库备份的,所以数据库还原后状态为readonly,standby_file_management参数为auto.首先需要通过alter d ...
- 使用RT3070使开发板上网
原文地址:http://www.cnblogs.com/NickQ/p/8973880.html 使开发板上网 USB驱动部分 在arch/arm/mach-s3c2440/mach-smdk2440 ...
- 20155308 加分题-mybash的实现(第五周)
20155308 加分题-mybash的实现(第五周) 实验要求 使用fork,exec,wait实现mybash 写出伪代码,产品代码和测试代码 发表知识理解,实现过程和问题解决的博客(包含代码托管 ...
- Java 中的extends 和 implements
初学Java语言, 代码中的extends和implements让我感到很迷惑,现在终于弄明白它们之间的区别和用法了. //定义一个Runner接口 public inerface Runner { ...
- JavaScript总结(二)
JavaScript的数据类型 ✍ 原始数据类型值: JavaScript有5中原始数据类型,通过调用typeof运算符返回值查看变量类型: ➣ Undefined ➔ 'undefined': Un ...
- 洛谷 2953 [USACO09OPEN]牛的数字游戏Cow Digit Game
洛谷 2953 [USACO09OPEN]牛的数字游戏Cow Digit Game 题目描述 Bessie is playing a number game against Farmer John, ...
- CF 1138 E. Museums Tour
E. Museums Tour 链接 分析: 按时间建出分层图,每个点形如(u,t),表示u在在t个时刻的点,tarjan缩点.每个强连通分量中的点都能经过,然后DAG上dp. 代码: #includ ...
- JavaScript流程控制及函数
1 流程控制 1.1 条件语句 分支结构 单向分支 if (条件表达式) { code...} 双向分支 if (条件表达式){ } else { } <!DOCTYPE html& ...
- pathon之多线程详解
一.线程理论 1.什么是线程 线程指的是一条流水线的工作过程 进程根本就不是一个执行单位,进程其实是一个资源单位--------将资源集合到一起: 一个进程内自带一个线程,线程才是CPU上的执行单位 ...
- 【JUC源码解析】ForkJoinPool
简介 ForkJoin 框架,另一种风格的线程池(相比于ThreadPoolExecutor),采用分治算法,工作密取策略,极大地提高了并行性.对于那种大任务分割小任务的场景(分治)尤其有用. 框架图 ...