面向对象分析与设计(第3版)(修订版) - (EPUB全文下载)
文件大小:0.44 mb。
文件格式:epub 格式。
书籍内容:
面向对象分析与设计(第3版)(修订版)
第1篇 概念
第1章 复杂性
第2章 对象模型
第3章 类与对象
第4章 分类
第2篇 方法
第5章 表示法
第6章 过程
第7章 实战
第3篇 应用
第8章 系统架构——基于卫星的导航
第9章 控制系统——交通管理
第10章 人工智能——密码分析
第11章 数据采集——气象监测站
第12章 Web应用——休假跟踪系统
附录A 面向对象编程语言
附录B 进一步阅读
注解
术语表
后折页
封底
第1篇 概念
Isaac Newton(艾萨克·牛顿)爵士私下向一些朋友承认:他知道重力的表现,但不知道重力的原理!
——Lily Tomlin
The Search for Signs of Intelligent Life in the Universe
在面向对象(OO)技术发展的早期,许多人最初是通过程序设计语言来接触“OO”的。他们发现了这些新的语言可以做的事情,并尝试应用这些语言来解决实际的问题。随着时间的推移,语言得到了改进,开发技术不断演进,出现了一些最佳实践,面向对象方法学正式诞生了。
今天,面向对象开发是一个丰富而强大的开发模型。本部分将回顾支撑这一切的底层理论,并深入讨论面向对象开发模型中各项工作的原理。
第1章 复杂性
医生、土木工程师和计算机科学家在一起,争论什么是这个世界上最古老的职业。医生说:“在圣经中,上帝用亚当的肋骨创建了夏娃。这显然需要外科手术,所以我当然可以宣称,我的职业是世界上最古老的职业。”土木工程师打断道:“但在‘创世纪’中更早的部分,描述了上帝从混沌中创造了天堂和人间的秩序。这是首次应用土木工程,也是土木工程最伟大的应用。因此,亲爱的医生,您错了,我的职业才是世界上最古老的职业。”计算机科学家斜靠在她的椅子上,微笑着,然后充满自信地说:“啊哈,但你们觉得是谁创造了那片混沌?”
“系统越复杂,就越容易全面崩溃”[5]。建筑师一般不会想要为一幢100层的大楼添加一个新的地下室,因为这样做成本会很高,无疑将失败。但让人吃惊的是,软件系统的用户在提出类似的改动时,都不会多想一下。相反,他们会说,这只是一个简单的编程问题。
由于我们不能控制软件的复杂性,所以导致了项目延迟、超出预算,并导致陈述的需求中存在缺陷。我们常常把这种情况称为软件危机,但老实说,问题持续了这么长时间,必须称之为正常情况。不幸的是,这种危机导致了人力资源(最宝贵的商品)的浪费,丧失了许多机会。没有足够好的开发者来创建用户需要的所有新软件,而且在任何组织机构中,相当一部分开发者必须经常维护或照看老的软件。考虑到软件对大多数产业化国家经济基础的间接和直接贡献,同时考虑到软件可以极大地增强个人的能力,我们不能让这种情况继续下去。
1.1 复杂系统的结构
怎样才能改变这种可怕的现状?由于根本问题来自于软件固有的复杂性,所以我们建议,先研究其他学科中复杂系统是如何组织的。实际上,如果看看周围的世界,就会发现许多成功的、相当复杂的系统。其中一些系统是人类的作品,诸如航天飞机、英法海底隧道和大型商业组织等。自然界中有许多更为复杂的系统,如人类的循环系统和古巴辣椒的结构。
1.1.1 个人计算机的结构
个人计算机是一个具有相当复杂度的设备。大多数个人计算机由同样的主要部件组成:中央处理器(CPU)、显示器、键盘和某种二级存储设备——通常是CD或DVD驱动器和硬盘驱动器。我们可以任取其中一个部件进行进一步分解。例如,CPU通常包括主存储器、算术逻辑单元(ALU)以及一条连接外围设备的总线。这些部分又可以进一步分解,ALU可以分解为寄存器和随机控制逻辑,而它们又由更为基础的部件组成,如NAND门、反相器等。
这里我们看到了复杂系统的层次化特征。个人计算机能正常发挥功能,是因为它的每个主要部件之间协同工作。这些分离的部件形成一个逻辑整体。实际上,我们之所以能够理解计算机的工作方式,是因为可以将它分解为能够独立研究的部件。因此,我们可以独立地研究显示器的操作和硬盘驱动器的操作。类似地,我们可以在不考虑主存储器子系统的情况下研究ALU。
复杂系统不仅仅是层次化的,而且这种层次也代表了不同的抽象级别,一层构建于另一层之上,每一层都可以分开来理解。在每一个抽象层都可以发现一组设备,相互协作,为更高的抽象层提供服务。我们选择某个抽象层来满足特定的需求。例如,我们追踪主存储器中的一个时钟问题,可能会查看计算机的逻辑门级架构,但是如果要找的是电子表格应用中一个问题的根源,这个抽象层就不合适了。
1.1.2 植物和动物的结构
在植物学中,科学家们试图通过研究植物的形态,即植物的外观和结构,来理解植物之间的相似与不同。植物是复杂的多细胞生物,通过各种植物器官系统之间的协作,实现光合作用和蒸发等复杂的行为。
植物包含三种主要的结构(根、茎和叶),每种结构都有不同的、特有的结构。例如,根包括支根、根毛、根尖和根冠。类似地,叶的横切面表明它有表皮、叶肉和维管束。这些结构又由一些细胞构成,在每个细胞内部还可以发现另一层的复杂度,包括叶绿体、细胞核等。像计算机的结构一样,植物的各部分组成了一种层次结构,层次结构中的每一层都有着各自的复杂性。
同一层抽象中的所有部分之间,以某种定义良好的方式进行交互。例如,在最高的抽象层,根负责从泥土中吸收水分和矿物质;根与茎交互,茎将这些原材料送到叶子;叶子利用茎输送的水分和矿物质,通过光合作用制造养料。
给定抽象层的内外之间总有清晰的边界。例如,可以说叶子的各个部分协同工作,作为一个整体提供叶子的功能,但与根的各组成部分之间很少有或没有直接的交互。简而言之,在不同抽象层的不同部分之间,存在着清晰的关注点分离。
在计算机中,我们会在CPU和硬盘驱动器的设计中找到NAND门。类似地,在植物结构层次的各个部分之中,也有大量相同的特点。这是造物主实现简洁表示的方式。例如,细胞是植物中所有结构的基本单元,植物的根、茎、叶最终都是由细胞构成的。但是,尽管这些基本要素都是细胞,这些细胞却有许多不同的类 ............
以上为书籍内容预览,如需阅读全文内容请下载EPUB源文件,祝您阅读愉快。
书云 Open E-Library » 面向对象分析与设计(第3版)(修订版) - (EPUB全文下载)