




已阅读5页,还剩139页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
硕士课程 面向对象程序设计 主要内容第一部分:面向对象分析Object-Oriented Analysis, OOA第二部分:面向对象设计Object-Oriented Design, OOD第三部分:面向对象程序设计Object-Oriented Programming, OOP第一部分 面向对象分析Object-Oriented Analysis系统的复杂性根据信息论的观点,复杂度可以定义为系统表明自身方式数目的对数,或是系统可能状态数目的对数: K=logN,式中 K是复杂度, N是不同的可能状态数。一般来说,一个系统越复杂,它所携带的信息越多。若两个系统各自有 M个和 N个可能状态,那么,组合系统的状态数目是两者之积 MN,其复杂度为, K=logMN。从可操作性的角度,复杂性可以定义为: 寻找最小的程序或指令集来描述给定的 “结构 ”,即一个数字序列。若用比特计算的话,这个程序的大小相对于数字序列的大小就是其复杂性的量度 。 克拉默在其经典著作 混沌与秩序生物系统的复杂结构 ( Chaos and Order: The Complex Structure of Living Systems)一书中,给了几个简单例子,用于分析相应程序的复杂性。系统的复杂性例 1:序列 aaaaaaa这是一个亚(准)复杂性系统,相应的程序为:在每一个 a后续写 a。这个短程序使得这个序列得以随意复制到无穷。例 2:序列 aabaabaabaab与第 1个例子相比,该例要复杂一些,但仍可以很容易地写出程序:在两个 a后续写 b并重复这一操作。例 3: aabaababbaabaababb这个例子与例 2相似,也可以用很短的程序来描述:在两个 a后续写 b并重复。每当第三次重写 b时,将第二个 a替换为 b。这样的序列具有可定义的结构,有对应的程序来表示。例 4: aababbababbbabaaababbab这个例子,无结构,若想编程,则必须将字符串全部列出。结论:一旦一个程序的大小与试图描述的系统相提并论时,则无法编程。或者说,当系统的结构不能被描述,或描述它的最小算法与系统本身具有相同的信息比特数时,则称该系统为根本复杂系统。在达到根本复杂之前,人们仍可以编写出能够执行的程序,否则,做不到。软件的复杂性在计算机中,软件系统的状态又比硬件系统的状态往往要多若干数量级。另外,由于软件系统中的实体,其扩展不像硬件系统那样,可以由相同元素重复添加,从而使计算机中软件的复杂度呈非线性增长。因此,找到控制和降低软件复杂性的方法,也就找到了控制和降低计算机系统复杂性最根本的方法。于是,我们可以将问题的焦点放在计算机软件上。关于软件的复杂性,布鲁克斯( Frederick P.Brooks)在其著作 人月神话 (The Mythical Man-month)一书中,从复杂度、一致性、可变性、不可见性等方面作了系统地分析,揭示了软件所固有的困难。下面,简述之:软件的复杂性( 1)复杂度布鲁克斯认为,没有两个软件部分是相同的(至少在语句级别上),若有相同的,人们会把它们合并成一个供调用的子函数,因此,认为复杂是软件的根本属性。软件开发面对的是客观世界模型的构建问题,相对于物理学,物理学家可以忽视大量实体内容的描述,仅仅关注诸如力、时间、质量、速度等非常有限内容的描述,从而大大降低问题的复杂度,而软件工程师却不能这样做。构成软件复杂度的实体及其关系的描述不仅引发了大量学习和理解上的负担,而且随着软件规模的增长,使得团队成员之间的沟通以及管理变得越来越困难,从而使软件的开发逐渐地演变成一场灾难。要避免这场灾难,其关键就在于能否控制和降低该软件系统的复杂性。软件的复杂性( 2)一致性大型软件开发中,为保持各子系统之间的一致性,软件必须随接口的不同、时间的推移而变化。增加了软件的复杂性。( 3)易变性与计算机硬件、建筑、汽车等实体相比, 软件实体经常会面对持续的变更压力 。人们一般认为,已购买的计算机硬件、建筑、汽车等实体修改起来成本太高,于是打消了修改这些产品的念头。而对软件实体,人们却不这样认为,因为它是一个纯粹思维活动的产物,可以无限扩展。( 4)不可见性软件是看不见的,当利用图示方法来描述软件结构时,也无法充分表现其结构,从而使软件的复杂度大大超过计算机硬件的复杂度,使得人们之间的沟通面临极大的困难。软件开发难点:概念结构规格、设计和测试布鲁克斯指出软件复杂度是软件生产的主要困难 ,不仅如此,他还分析了在软件领域,人们所取得的进展,并且认为,这些进展只是解决了软件复杂度的一些次要方面的问题,如果说有重大进展的话,那就是从汇编语言到高级语言的进展,其他的进展只能算是一种渐进。的确如此,高级语言抽象掉了汇编语言所关心的寄存器、位、磁盘等概念,使软件开发的生产率提高了若干倍,同时,软件的可靠性、简洁性也大为提高,相对于汇编语言,高级语言有效地降低了软件的复杂性。布鲁克斯认为,对于一个软件系统的开发来说, 最为困难的是对其 概念结构 (概念模型)的规格、设计和测试,而不是对概念结构的实现,以及对这种实现的测试 。当然,他也承认,在实现的过程中会出现语法的错误,但是,相对于概念结构方面的错误,则要小得多。软件的概念结构在软件开发的前期,要对用户的需求进行分析,然后,将这种需求抽象为一种信息结构,这种结构被称为概念结构。其主要特点为:( 1)能真实、充分地反映现实世界,包括事物和事物之间的联系,能满足用户对数据的处理要求;( 2)易于理解,从而可以用它和不熟悉计算机的用户交换意见;( 3)易于更改,当应用环境和应用要求改变时,能容易地对概念结构进行修改和扩充;( 4)易于向计算机支持的数据结构转换。软件的概念结构软件概念结构的特点决定了这种结构的设计在很多情况下是很难采用形式化的方法,而采用非形式化的系统化方法,如结构化方法、面向对象方法等,却可以有效地控制和降低概念结构设计的复杂性,最后,完成编码、使软件形式化。系统化方法进入大学 “软件工程 ”等课程已有几十多年的时间了,然而使用系统化方法的真正原因却被人们忽视了,这种忽视阻碍了人们自觉地应用系统化方法的基本原理去控制和降低软件开发复杂性的自觉性和能动性。软件开发的系统化方法遵循的原则在软件中,存在着大量不能简化的实体,我们把这些实体称之为 元素 ,那么,软件系统就是由这些相互联系、相互作用的若干元素组成的,具有特定功能的统一整体。而软件系统的概念结构则是指系统内各组成部分(元素和子系统)之间相互联系、相互作用的框架。要使一个软件系统的复杂性下降,无非也就是分割,通俗点讲,也就是将一个大系统划分为若干小的子系统,最终,使人们易于理解和交流。下面,给出软件开发的系统化方法需要遵循的几个基本原则:( 1)抽象第一的原则所谓抽象,就是要对实际的事物进行人为处理,抽取所关心的、共同的、本质特征的属性,并对这些事物及其特征属性进行描述。由于抽取的是共同的、本质特征的属性,从而大大降低了系统元素的绝对数量。软件开发的系统化方法遵循的原则( 2)层次划分的原则如果一个系统过于复杂,以至于很难处理,那么,就得先将它分解为若干子系统。如何进行分解?什么是好的分解?可参照集合分解的等价类概念 。使用满足等价关系的 3个条件(自反性、对称性和传递性),将集合划分为若干互不相交的子集(等价类),则子集具有某种共同性质的属性,并可以完全恢复到原来状态。这种划分的重要意义在于,使我们将注意力集中于子集中那些具有共同性质的属性及子集之间实质性的关联,从而使无序变为有序,最终大大地降低系统复杂性。在计算机系统中,人们希望在层次的划分中遵循等价类划分的 3个基本原则;另外,为便于记忆,希望划分后的层次数目控制在心理学中有关短时记忆最大容量 72范围之内,像计算机网络层次结构、计算机体系结构等均遵循这样的原则。软件开发的系统化方法遵循的原则( 3)模块化原则模型化原则就是根据系统模型说明的原因和真实系统提供的依据,提出以模型代替真实系统进行模拟实验,达到认识真实系统特性和规律性的方法。模型化方法是系统科学的基本方法。系统科学研究主要采用的是符号模型而非实物模型。研究系统的模型化方法,通常是指通过建立和分析系统的数学模型来解决问题的方法和程序。用计算机程序定义的模型称为基于计算机的模型。所有的数学模型均可转化为基于计算机的模型,并通过计算来研究系统。另外,计算实验对一些无法用真实实验来检验的系统来说还是惟一可行的检验手段。软件开发的系统化方法遵循的原则针对软件,在考虑模块化时,还要充分考虑来自 Meyer给出的以下 5个原则。( 1)模块可分解性。要控制和降低系统的复杂性,就必须有一套相应的将问题分解成子问题的系统化机制,这种机制是形成模块化设计方案的关键。( 2)模块可组装性。要充分利用现存的(可复用的)设计构件能被组装成新系统,要尽可能避免一切从头开始的模块化设计方案。( 3)模块可理解性。要使系统中的模块能够作为一个独立的单位(不用参考其他模型)被理解,从而使系统中的模块易于构造和修改。( 4)模块连续性。在对系统进行小的修改时,要尽可能只涉及到单独模块的修改,而不要涉及到整个系统,从而保证修改后副作用的最小化。( 5)模块保护。在模块出现问题时,要将其影响尽可能控制在该模块的内部,要使错误引起的副作用最小化。结构化方法 Structured Methodology结构化方法是计算学科的一种典型的系统开发方法。它采用了系统科学的思想方法,从层次的角度,自顶向下地分析和设计系统。结构化方法包括 结构化分析 (Structured Analysis,简称 SA)、 结构化设计 (Structured Design,简称 SD)和 结构化程序设计 (Structured Program Design,简称 SP)三部分内容。其中, SA和 SD主要属于学科抽象形态的内容, SP则主要属于学科设计形态方面的内容。在结构化方法中,有两大类典型方法,一类是以Yourdon的结构化设计、 Gane/Sersor结构化分析方法以及 Demarco结构化分析方法为代表的 面向过程(面向数据流)的方法 ;另一类是以 Jackson方法和 Warnier-Orr方法为代表的 面向数据结构的方法 。结构化方法是其他系统开发方法的基础。结构化方法的产生和发展1. 结构化程序设计方法的形成结构化方法起源于结构化程序设计语言 。在使用 SP之前,程序员都是按照各自的习惯和思路来编写程序,没有统一的标准,这样编写的程序可读性差,更为严重的是程序的可维护性极差,经过研究发现,造成这一现象的根本原因是程序的结构问题。1966年, C.Bhm和 G.Jacopini提出了关于 “程序结构”的理论,并给出了任何程序的逻辑结构都可以用顺序结构、选择结构和循环结构来表示的证明。在程序结构理论的基础上, 1968年,戴克斯特拉提出了 “GOTO语句是有害的 ”的问题,并引起普遍重视, SP逐渐形成,并成为计算机软件领域的重要方法,对计算机软件的发展具有重要的意义。伴随着 SP的形成,相继出现了 Modula-2、 C以及Ada等结构化程序设计语言。结构化方法的产生和发展2. 结构化设计方法的形成结构化程序设计需要事先设计好每一个具体的功能模块,然后将这些设计好的模块组装成一个软件系统。接下来的问题是,如何设计模块。源于结构化程序设计思想的结构化设计方法就是要解决模块的构建问题。 1974年, W.Stevens、 G.Myers和L.Constantine等人在 IBM系统 ( IBM System)杂志上发表了 结构化设计 ( Structured Design)论文,为结构化设计方法奠定了思想基础。此后这一思想不断发展,最终成为一种流行的系统开发方法。结构化方法的产生和发展3. 结构化分析方法的形成结构化设计方法建立在系统需求明确的基础上。如何明确系统的需求,就是结构化分析所要解决的问题。结构化分析方法产生于 20世纪 70年代中期,最初的倡导者有Tom Demarco、 Ed Yourdon等人。结构化分析在 20世纪80年代又得到了进一步的发展,并随着 Ed Yourdon于1989年所著的 现代结构化分析 ( Modern Structured Analysis)的出版而流行开来。现代结构化分析更强调建模的重要性。 结构化方法遵循的基本原则结构化方法的基本思想就是将待解决的问题看作一个系统,从而用系统科学的思想方法来分析和解决问题。结构化方法遵循以下基本原则。 ( 1)抽象原则:抽象原则是一切系统科学方法都必须遵循的基本原则,它注重把握系统的本质内容,而忽略与系统当前目标无关的内容,它是一种基本的认知过程和思维方式。( 2)分解原则: 分解原则是结构化方法中最基本的原则 , 它是一种先总体,后局部的思想原则 。在构造信息系统模型时,它采用自顶向下,分层解决的方法。( 3)模块化原则:模块化是结构化方法最基本的分解原则的具体应用,它主要出现在结构化设计阶段中,其目标是将系统分解成具有特定功能的若干模块,从而完成系统指定的各项功能。结构化方法的核心问题模型问题是结构化方法的核心问题。建立模型(简称建模)是为了更好地理解我们要模拟的现实世界。建模通常是从系统的需求分析开始,在结构化方法中,就是使用SA方法构建系统的环境模型;然后使用 SD方法,确定系统的行为和功能模型;最后使用 SP方法,进行系统的设计,并确定用户的现实模型。结构化方法的核心问题1. 环境模型SA的主要任务就是要完成系统的需求分析,并构建现实世界的环境模型。在结构化方法中,环境模型包括需求分析、环境图和事件列表等内容。( 1)需求分析:系统分析的第一步,它的主要任务是明确用户的各种需求,并对系统要做什么作一个清晰、简洁和无二义性的文档说明。需求分析阶段的用户一般是高级主管、人事主管和执行官,且基本上每个人都不直接参与新系统开发。( 2)环境图:数据流图的一种特殊形式。环境图模拟系统的一个大致边界,并展示系统和外部的接口、数据的输入和输出以及数据的存储。( 3)事件列表:发生在外部世界,但系统必须响应的叙述性列表。事件列表是对环境图的一个补充。结构化方法的核心问题2. 行为和功能模型SD的主要任务就是要在系统环境模型的基础上建立系统的行为和功能模型,完成系统内部行为的描述。实现系统行为和功能模型的主要工具有:数据字典、数据流图、状态变迁图和实体 联系模型等。( 1)数据字典数据字典是一个包含所有系统数据元素定义的仓库。数据元素的定义必须是精确的、严格的和明确的。一个实体一般应包括以下几个部分的内容: 名字; 别名; 用途; 内容描述; 备注信息。结构化方法的核心问题2. 行为和功能模型( 2)数据流图:是 SA和 SD的核心技术,它采用面向处理过程的思想来描述系统,它是一种描述信息流和数据从输入到输出变换的应用图形技术。( 3)状态变迁图:及时地描述了对象的状态,它着重系统的时间依赖行为。状态变迁图源于实时系统的建模,并被广泛应用于商业信息处理领域中。状态变迁图看起来非常像数据流图,然而,它们之间却存在着本质的不同。数据流图着重于数据流和数据转换的过程,而状态变迁图着重于状态的描述,如激励发生时的开始状态和系统执行响应后的结果状态。状态变迁图的条件和一个过程的输入数据流相对应,同时,还与控制流的流出相对应。( 4)实体联系模型:被用来模拟系统数据部件之间的相互关系。实体联系模型独立于当前的系统状态,并与具体的计算机程序设计语言无关。结构化方法的核心问题3. 实现模型SP的主要任务就是要在系统行为和功能模型的基础上建立系统的实现模型。实现该模型的主要工具有:( 1)处理器模型:在多处理器系统和网络环境中,还需要将处理器分成不同的组,以便确定操作在哪个处理器上进行。( 2)任务模型:任务模型建立在处理器模型的基础之上,它将所有过程都划分成操作系统的任务。( 3)结构图:结构图是使用图形符号来描述系统的过程和结构的工具。结构图常由数据流图转换而来,它展示了模块的划分、层次和组织结构以及模块间的通信接口,从而有助于设计者和程序开发人员进行系统的设计。在结构图中,通常有一个主模块在最高层,由该主模块启动程序并协调所有的模块。低级模块则包含更详细的功能设计。结构化方法的核心问题3. 实现模型( 4)模块设计:在结构化方法中, SP阶段的目标就是将系统分解成更容易实现和维护的模块。 SP方法要求每个模块执行单一的功能,而且不同模块间的依赖性要尽可能低。( 5)实现阶段:实现阶段包括系统的编码、测试和安装。这一阶段的产物主要是能够模拟现实世界的软件系统。除此之外,软件文档和帮助用户熟悉系统的客户培训计划也是这一阶段的产物。面向对象的方法面向对象是近 20年来国内外 IT行业最为关注的技术之一,面向对象技术是一种按照人们对现实世界习惯的认识论和思维方式来研究和模拟客观世界的方法学。 它将现实世界中的任何事物都视为 “对象 ”,将客观世界看成是由许多不同种类的对象构成的,每一个对象都有自己的内部状态和运动规律,不同对象之间的相互联系和相互作用就构成了完整的客观世界。面向对象的思想按设计思想来分,传统的软件系统开发可分为自顶向下和自底向上两种。流行的结构化方法采用自顶向下的设计思想。但是 ,面向对象方法既不是自顶向下方法也不是自底向上方法。尽管它兼有这两者的一些特点。 一方面,面向对象方法鼓励人们从问题的基本的、简单的方面入手,用对象来考虑如何描述问题的解决,然后抽象并确定类,得到具有一般性的解决问题的方法,这正是自底向上的本质; 另一方面,面向对象的方法又要求人们面向目标,考虑为达到这一目标如何建立这些基本的对象,这正体现了自顶向下的思想。面向对象方法从一开始就强调结构与代码的共享与重用 。它与传统的结构化设计思想比起来,有着明显的优点。 代码的可重用性好: 随着开发平台以及应用要求越来越复杂,应用程序的规模变得越来越庞大,代码重用成了提高程序设计效率的关键。可维护性和可扩充性好: 用传统的面向过程语言开发出来的软件很难维护,是长期困扰人们的一个严重问题,也是软件危机的突出
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 风险应对策略的选择试题及答案
- 高考语文考场应用试题及答案
- 湖北省咸宁市咸安区2025年八下数学期末统考试题含解析
- 制定个人学习与发展路径计划
- 细分市场的品牌定位研究计划
- 提升领导力的实践方法计划
- 计算机科学专业进阶学习策略试题及答案
- 计算机辅助翻译(CAT)软件应用试题及答案
- 2024年陕西科技大学辅导员考试真题
- 风险管理中的人才培养与发展试题及答案
- 各级无尘室尘埃粒子测量表
- 成人本科学士学位英语词汇
- 第7课《溜索》一等奖创新教学设计
- WMO五年级初级测评专项训练
- 班主任节PPT幻灯片课件
- 北师大高中英语必修一 (Celebrations)课件(第8课时)
- 中兴(ZXA10-XPON)高级工程师认证考试题库(含答案)
- 单值-移动极差X-MR控制图-模板
- 建筑水电安装施工专项方案
- 离婚协议书电子版可打印
- 天然气输气管道
评论
0/150
提交评论