OOA论文开题报告怎么写写

OOA&OOD书籍一览 zz
我的图书馆
OOA&OOD书籍一览 zz
中国UML论坛&
OO书籍一览&
发言者:adams&
发表时间:日&10时20分30秒
来自:(202.104.108.163)
OOA&OOD书籍推荐,在UML播种机中对国内书籍有简要的介绍。以下是对书籍的一些看法,希望对大家有所帮助。注:书名号内的书为出现在UML播种机的“国内书籍”中。
------------------------------------------------------------------------------------------------
《面向对象建模与设计》洪永清、黄德才、吕丽民&编著&——北京:人民邮电出版社。1998/11
这本书翻译水平一般,术语没有正规化,阅读较困难。但如果能赖住性子,你会发现它的方法实际是OMT的方法。
方法:它通过静态行为、动态行为、功能方面来描述、分解系统。并且,有相关简要的例子。
符号:它的标记符号是OMT的符号,与UML已非常相似。在读完此书后,你会对UML、OOA/D有不同的认识。
-------------------------------------------------------------------------------------------------
《面向对象系统分析与设计》&Ronald&J.Norman&著&周之英&肖奔放&柴洪钧&译
这本书有相应的英文影印版。但它的翻译水平足以让你叹为观止。这本书与
“面向对象的分析”,“面向对象的设计”,两本小册子,Peter&Coad,Edward&Yourdon著,邵维忠等译,北大出版社,原书1991年写就。国内第一本关于面向对象分析和设计的书。
“实用面向对象软件工程教程”,Edward&Yourdon,&Carl&Argila著,电子工业出版社,原书1995年12月写就。
“面向对象的系统分析”,邵维忠,杨芙清,清华大学,广西科技出版,1998年12月第一版。
应该是一个体系。它们均采用的COAD/YOURDON方法论。
“面向对象的分析”,“面向对象的设计”比较早,不是非常有条理,阅读起来比较容易混淆。
“实用面向对象软件工程教程”实际上是YOURDONG的实践,它提供了两个例子。单独的阅读,容易有盲人摸象的感觉。
“面向对象的系统分析”两位中国OO大师所做,自有它的价值,更加适合我国国情。但还是内容还是有些陈旧,毕竟它基于“面向对象的分析”,“面向对象的设
计”两本小册子。如果三本书一同阅读,你会感觉——天下文章一大抄——不知COAD&&&YOURDON是抄谁的文章!?
------------------------------------------------------------------------------------------------
还有一些外国的原著,在没有OO基础的前提下阅读比较困难。
建议阅读顺序
|-&《面向对象建模与设计》
|-&《面向对象系统分析与设计》&-&&“面向对象的分析”,“面向对象的设计”&-&&“面向对象的系统分析”&-&“实用面向对象软件工程教程”
在上述的基础上,可以读一读《面向对象系统分析与设计》的原版,如果有机会还可以看看OOSE、BOOCH的方法。这样,会对OOA/D有全新的认识。
========
推荐《模式设计》
发言者:cancan28
发表时间:日&14时39分36秒
来自:(61.141.206.84)
回应:OO书籍一览&(发言者:adams&,于&日&10时20分30秒)
近来可好!最近看了《模式设计》这本书觉得挺不错的,是关于可复用对象设计的。翻译一般,但仔细读下去却发现了许多关心或忽略过的问题在这里可以找到解答。
最近在看邵维忠、杨芙清两位先生合著的《面向对象的系统分析》,感觉还不错,有点大开眼界的意思。
不知还有哪些好书?
不知《模式设计》与G.o.F的《设计模式》有何区别?booch的《面向对象分析与设计》还不错何必要追求那么多了,能实实在在的掌握其中一本就已经很好了敏捷软件开发原则\模式和实现 Robert&C.MartinOOD启思录深入浅出设计模式(英文影印版)
Uml三友的书
booch&的《面向对象的分析和设计》中文版早已有了,阐述面向对象的基本概念像封装、信息隐&藏、对象、uml早期概念都很不错的
jackboson&的《面向对象的软件工程》中文版还没见到,不过应该比斑竹推荐的基本书应该更值得读。
邵维忠、杨芙清两位先生合著的《面向对象的系统分析》,是垃圾,太教科书化、比较古板。要是把gof4&的&设计模式&&中提到的每个例子、包括各类库中运用的模式研习一遍,那绝对也是理论高手,k_eckel做过这个工作
OOP&面向对象系列:
面向对象方面著名的专家:
Grady&Booch,&Ivar&Jacobson,&James&Rumbaugh,&Jim&Rumbaugh,
Martin&Fowler,&Craig&Larman,&
[Ambler,2001]
The&Object&Primer:&The&Application&Developer's&Guide&to
Object&Orientation&and&the&UML,&Second&Edition&by&Scott&W.&Ambler&
面向对象软件开发教程
(UML,&Java)
[Booch,1994]&
Booch,&G.&Object-Oriented&Analysis&and&Design&with&Applications,
(Second&Edition)&Addison-Wesley,&Menlo&Park&CA,&1994.
面向对象分析和设计&--&实例应用
(Booch,&C++)
[Martin,1995]&
Martin,&R.C.&Designing&Object-Oriented&C++&Applications&Using&
the&Booch&Method,&Prentice&Hall,&Englewood&Cliffs,&NJ,&1995.
(Booch,&C++)
[Liberty,1998]&
Beginning&Object-Oriented&Analysis&and&Design&with&C++&
by&Jesse&Liberty&1998
(UML,&Visual&C++)
[Lau,2000]
The&Art&of&Objects&by&Yun-Tung&Lau&
(UML,&Java)
[Brock,&1990]
Designing&Object&Oriented&Software&by&Rebecca&Wirfs-Brock
面向对象软件设计经典
[Brock,1998]
Object&Design&by&Rebecca&Wirfs-Brock
(对CRC卡,&协作和灵活性这些主题的见解)
[Riel,1996]
Object-Oriented&Design&Heuristics&&by&Arthur&Riel,&Addison&Wesley,&1996
这本书针对面向对象设计提供60个经验法则,並以C++&实例说明.
[Jacobson,1995]&
Jacobson,&I.,&Ericsson,&M.&and&Jacobson,&A.&The&Object&Advantage:&
business&process&Reengineering&with&object&technology,&Addison-Wesley,&1995.
[Meyer,1997]&
Meyer&B.&Object-Oriented&Software&Construction&2/e,&Prentice&Hall,&
Englewood&Cliffs,&NJ,&1997
(OOP,&Eiffel语言)
[Jacobson,1992]
Object-Oriented&Software&Engineering
面向对象的软件工程
(OMT,&C++)
[Rumbaugh,1991]&
Rumbaugh&J.,&Blaha&M.,&Premerlani&W.,&Eddy&F.&and&Lorensen&W.&(1991)&
Object-Oriented&Modeling&and&Design,&Prentice&Hall.
面向对象的建模和设计
(OMT,&C++)
[Harmon,1996]
The&Object&Technology&&&Casebook──Lessons&from&Award-Winning&Business&Applications
by&Paul&Harmon&and&William&Morrissey,&John&Wiley&&&Sons,&1996&
本书收集了1994年至1995年&object&World&研讨会上竞赛的优胜者实例,
以流传于世,做为别人的借鉴.邵维忠老师的《面向对象的系统分析》《面向对象的分析》是翻译的Coad的译作。
《面向对象的系统设计》与《面向对象的设计》也是相同的关系找到一本好书:
《面向模式的软件体系》三卷。
从软件架构,模块设计,语言特性三个层面介绍了模式(不限于“设计模式”)
发表评论:
馆藏&21444
TA的最新馆藏《面向对象分析设计与编程OOA/OOD/OOP/AOP(第二版)》 吴炜煜【摘要 书评 试读】图书
iPhone/iPad/Mac
Android手机或平板电脑
请输入您的手机号码,获取Kindle阅读软件的下载链接。
通知出版社:
没有Kindle设备?,或者下载免费 。
出版社: 清华大学出版社; 第2版 (日)
平装: 312页
语种: 简体中文
25.8 x 18.2 x 1.4 cm
品牌: 清华大学出版社
ASIN: B00V38B9BM
亚马逊热销商品排名:
图书商品里排第1,206,607名 ()
目录
第1章面向对象技术概论 1.1引论 1.1.1软件概念的发展 1.1.2软件开发原理的4次变革 1.1.3面向对象语言的3个里程碑 1.2面向对象的基本概念 1.2.1对象、类、消息 1.2.2封装性、继承性和多态性 1.2.3常用术语简释和定义 1.2.4概念内涵的区别 1.3面向对象的分析方法 1.3.1OOA方法评介 1.3.2OOA步骤 1.3.3OOA模型 1.3.4OOA视图 1.3.5OOA提交 1.4面向对象的设计初步 1.4.1OOD模型 1.4.2什么是优良的OOD 1.4.3对象标识设计 1.4.4复杂对象的构造设计 1.4.5一个GIS的OOD模型实例 1.5教学建议 习题 第2章面向对象软件工程 2.1面向对象软件工程特点 2.1.1面向对象软件工程概述 2.1.2对象建模技术 2.1.3RUP简介 2.1.4面向对象软件工程实例 2.2系统分析阶段 2.2.1OOA过程模型 2.2.2研究问题论域及用户需求 2.2.3对象识别的客观性方法 2.2.4识别对象的内部特征 2.2.5识别对象的外部特征 2.2.6信息建模的规范化过程 2.3系统设计阶段和步骤 2.3.1系统划分 2.3.2设计阶段 2.3.3设计步骤 2.4评审和修正OOA模型 2.4.1分析模型的一致性和完整性 2.4.2OOA模型的评审策略 2.4.3从OOA到OOD的过渡 2.5系统文档编制、系统实现和测试 2.5.1编制设计文档 2.5.2系统实现 2.5.3系统测试 习题 第3章统一建模语言 3.1UML语言概述 3.1.1UML发展历史 3.1.2建模语言的重要性 3.1.3UML的4层架构模型 3.1.4UML的视图 3.1.5UML的图形表示 3.1.6UML的模型元素 3.1.7UML的扩展机制与通用机制 3.2UML静态建模 3.2.1用例图 3.2.2类图 3.2.3对象图 3.3UML的动态建模 3.3.1序列图 3.3.2状态图 3.3.3活动图 3.3.4协作图 3.4UML物理架构建模 3.4.1组件图 3.4.2配置图 3.5UML的应用及实例 3.5.1需求分析 3.5.2UML静态建模表示 3.5.3UML动态建模表示 3.5.4UML物理架构建模表示 习题 第4章C++基本知识速成 4.1C++语言概述 4.1.1C++的面向对象特征 4.1.2C++语言对C语言在非面向对象方面的增强 4.2C++程序构架及词法符号约定 4.2.1C++程序示例 4.2.2C++程序的一般结构 4.2.3C++的词法符号约定 4.3C++的数据类型 4.3.1C++的数据类型及类型修饰符 4.3.2常量 4.3.3变量 4.4C++的运算符和表达式 4.4.1C++中的基本运算符 4.4.2C++表达式 4.5C++的语句及程序流程控制 4.5.1if条件分支语句 4.5.2switch开关分支语句 4.5.3循环控制语句 4.5.4跳转控制语句 4.6输入输出流简介 4.6.1无格式输入输出 4.6.2指定格式输入输出 习题 第5章聚合数据类型与操作函数 5.1数组类型与简单线性表处理 5.1.1线性表结构的C++处理方法 5.1.2数组的定义与使用 5.1.3多维数组 5.1.4字符数组 5.2指针类型与地址算法 5.2.1指针的概念与定义 5.2.2指针变量的运算规则 5.2.3指针与数组的关系 5.2.4指针与字符串 5.2.5指针数组 5.2.6多级指针 5.2.7void型和const型指针 5.3函数类型与应用方法 5.3.1函数的定义与调用 5.3.2函数类型与参数传递 5.3.3内联型函数 5.3.4递归调用 5.3.5函数重载 5.3.6函数指针 5.4结构类型及链表处理 5.4.1结构变量定义及使用 5.4.2结构数组 5.4.3结构指针 5.4.4结构的嵌套与递归 5.4.5链表类数据处理 5.4.6联合 5.4.7位域 5.4.8枚举类型 习题 第6章类与对象的构造设计 6.1类的构造和创建 6.1.1类设计的基本概念 6.1.2类的说明与对象定义 6.1.3成员函数的功能与定义方式 6.1.4对类成员的访问 6.2构造函数和析构函数 6.2.1构造函数的特性 6.2.2构造函数的设计和使用 6.2.3析构函数的特性和用法 6.3类构造的存储设计 6.3.1类的静态成员 6.3.2对象的动态存储分配 6.4类中类用法 6.4.1类对象作为成员 6.4.2类的自引用 6.5类与对象的进一步用法 6.5.1类对象指针 6.5.2对象数组 6.5.3友元函数 6.5.4对象作函数参数 6.6类与结构、联合的关系 6.6.1结构与类 6.6.2联合与类 6.7类设计应用实例解析 习题 …… 第7章继承性和派生类 第8章多态性与虚函数 第9章面向方面编程方法 第10章面向对象编程环境与工具 附录A面向对象分析/设计课程实习大作业 参考文献
目前还没有用户评论
查找其它相似商品
面向对象分析设计与编程OOA/OOD/OOP / AOP(第二版) [平装]
库存中仅剩 2 件(更多商品正在运送途中)。
此商品可享受图书满59元
查看产品详情页面完毕后,在此处了解返回您感兴趣的页面的方式。
查看产品详情页面完毕后,在此处了解返回您感兴趣的页面的方式。对OO,OOA,OOD,OOP的学习和理解 - 简书
对OO,OOA,OOD,OOP的学习和理解
首先要明白每个简写的含义,OO :Objec - Oriented ,面向对象,基于对象概念,以对象为中心,以类和继承为构造机制,来认识,理解,刻画客观世界和设计,构建相应的软件系统的一门方法;本意-- 模拟人类的思维方式,使开发,维护,修改更加容易.OOA:Object - Oriented Analysis, 面向对象分析,强调的是在系统调查资料的基础上,针对OO方法所需要的素材进行的归类分析和整理,而不是对管理业务现状和方法的分析---其实就是进一步对OO进行细化,初步得出OO的方法(或者简单的理解:在得出的文档中对接口粗略定义)OOD:Object - Oriented Design,面向对象设计,OO方法中一个中间过渡环节,其主要作用是对OOA分析的结果进一步的规范和整理,以便能够被OOP直接接受---整理和定义OO的属性和方法OOP:object - Oriented Programming,把组件的实现和接口分开,并且让组件具有多态性---(抽象,封装,继承,多态)面向接口编程.OOAObject-Oriented Analysis:面向对象分析方法是在一个系统的开发过程中进行了系统业务调查以后,按照面向对象的思想来分析问题。OOA与结构化分析有较大的区别。OOA所强调的是在系统调查资料的基础上,针对OO方法所需要的素材进行的归类分析和整理,而不是对管理业务现状和方法的分析。OOA(面向对象的分析)模型由5个层次(主题层、对象类层、结构层、属性层和服务层)和5个活动(标识对象类、标识结构、定义主题、定义属性和定义服务)组成。在这种方法中定义了两种对象类之间的结构,一种称为分类结构,一种称为组装结构。分类结构就是所谓的一般与特殊的关系。组装结构则反映了对象之间的整体与部分的关系。OOA在定义属性的同时,要识别实例连接。实例连接是一个实例与另一个实例的映射关系。OOA在定义服务的同时要识别消息连接。当一个对象需要向另一对象发送消息时,它们之间就存在消息连接。OOA 中的5个层次和5个活动继续贯穿在OOD(画向对象的设计)过程中。OOD模型由4个部分组成。它们分别是设计问题域部分、设计人机交互部分、设计任务管理部分和设计数据管理部分。一、OOA的主要原则。(1)抽象:从许多事物中舍弃个别的、非本质的特征,抽取共同的、本质性的特征,就叫作抽象。抽象是形成概念的必须手段。抽象原则有两方面的意义:第一,尽管问题域中的事物是很复杂的,但是分析员并不需要了解和描述它们的一切,只需要分析研究其中与系统目标有关的事物及其本质性特征。第二,通过舍弃个体事物在细节上的差异,抽取其共同特征而得到一批事物的抽象概念。抽象是面向对象方法中使用最为广泛的原则。抽象原则包括过程抽象和数据抽象两个方面。过程抽象是指,任何一个完成确定功能的操作序列,其使用者都可以把它看作一个单一的实体,尽管实际上它可能是由一系列更低级的操作完成的。数据抽象是根据施加于数据之上的操作来定义数据类型,并限定数据的值只能由这些操作来修改和观察。数据抽象是OOA的核心原则。它强调把数据(属性)和操作(服务)结合为一个不可分的系统单位(即对象),对象的外部只需要知道它做什么,而不必知道它如何做。(2)封装就是把对象的属性和服务结合为一个不可分的系统单位,并尽可能隐蔽对象的内部细节。(3)继承:特殊类的对象拥有的其一般类的全部属性与服务,称作特殊类对一般类的继承。在OOA中运用继承原则,就是在每个由一般类和特殊类形成的一般—特殊结构中,把一般类的对象实例和所有特殊类的对象实例都共同具有的属性和服务,一次性地在一般类中进行显式的定义。在特殊类中不再重复地定义一般类中已定义的东西,但是在语义上,特殊类却自动地、隐含地拥有它的一般类(以及所有更上层的一般类)中定义的全部属性和服务。继承原则的好处是:使系统模型比较简练也比较清晰。(4)分类:就是把具有相同属性和服务的对象划分为一类,用类作为这些对象的抽象描述。分类原则实际上是抽象原则运用于对象描述时的一种表现形式。(5)聚合:又称组装,其原则是:把一个复杂的事物看成若干比较简单的事物的组装体,从而简化对复杂事物的描述。(6)关联:是人类思考问题时经常运用的思想方法:通过一个事物联想到另外的事物。能使人发生联想的原因是事物之间确实存在着某些联系。(7)消息通信:这一原则要求对象之间只能通过消息进行通信,而不允许在对象之外直接地存取对象内部的属性。通过消息进行通信是由于封装原则而引起的。在OOA中要求用消息连接表示出对象之间的动态联系。(8)粒度控制:一般来讲,人在面对一个复杂的问题域时,不可能在同一时刻既能纵观全局,又能洞察秋毫。因此需要控制自己的视野:考虑全局时,注意其大的组成部分,暂时不详察每一部分的具体的细节;考虑某部分的细节时则暂时撇开其余的部分。这就是粒度控制原则。(9)行为分析:现实世界中事物的行为是复杂的。由大量的事物所构成的问题域中各种行为往往相互依赖、相互交织。二、面向对象分析产生三种分析模型1、对象模型:对用例模型进行分析,把系统分解成互相协作的分析类,通过类图/对象图描述对象/对象的属性/对象间的关系,是系统的静态模型2、动态模型:描述系统的动态行为,通过时序图/协作图描述对象的交互,以揭示对象间如何协作来完成每个具体的用例,单个对象的状态变化/动态行为可以通过状态图来表达3、功能模型(即用例模型à作为输入)。三、OOA的主要优点(1)加强了对问题域和系统责任的理解;(2)改进与分析有关的各类人员之间的交流;(3)对需求的变化具有较强的适应性;(4)支持软件复用。(5)贯穿软件生命周期全过程的一致性。(6)实用性;(7)有利于用户参与。四、OOA方法的基本步骤在用OOA具体地分析一个事物时,大致上遵循如下五个基本步骤:第一步,确定对象和类。这里所说的对象是对数据及其处理方式的抽象,它反映了系统保存和处理现实世界中某些事物的信息的能力。类是多个对象的共同属性和方法集合的描述,它包括如何在一个类中建立一个新对象的描述。第二步,确定结构(structure)。结构是指问题域的复杂性和连接关系。类成员结构反映了泛化-特化关系,整体-部分结构反映整体和局部之间的关系。第三步,确定主题(subject)。主题是指事物的总体概貌和总体分析模型。第四步,确定属性(attribute)。属性就是数据元素,可用来描述对象或分类结构的实例,可在图中给出,并在对象的存储中指定。第五步,确定方法(method)。方法是在收到消息后必须进行的一些处理方法:方法要在图中定义,并在对象的存储中指定。对于每个对象和结构来说,那些用来增加、修改、删除和选择一个方法本身都是隐含的(虽然它们是要在对象的存储中定义的,但并不在图上给出),而有些则是显示的。OOD面向对象设计(Object-Oriented Design,OOD)方法是OO方法中一个中间过渡环节。其主要作用是对OOA分析的结果作进一步的规范化整理,以便能够被OOP直接接受。面向对象设计(OOD)是一种软件设计方法,是一种工程化规范。这是毫无疑问的。按照Bjarne Stroustrup的说法,面向对象的编程范式(paradigm)是[Stroustrup, 97]:l 决定你要的类;l 给每个类提供完整的一组操作;l 明确地使用继承来表现共同点。由这个定义,我们可以看出:OOD就是“根据需求决定所需的类、类的操作以及类之间关联的过程”。OOD的目标是管理程序内部各部分的相互依赖。为了达到这个目标,OOD要求将程序分成块,每个块的规模应该小到可以管理的程度,然后分别将各个块隐藏在接口(interface)的后面,让它们只通过接口相互交流。比如说,如果用OOD的方法来设计一个服务器-客户端(client-server)应用,那么服务器和客户端之间不应该有直接的依赖,而是应该让服务器的接口和客户端的接口相互依赖。这种依赖关系的转换使得系统的各部分具有了可复用性。还是拿上面那个例子来说,客户端就不必依赖于特定的服务器,所以就可以复用到其他的环境下。如果要复用某一个程序块,只要实现必须的接口就行了。OOD是一种解决软件问题的设计范式(paradigm),一种抽象的范式。使用OOD这种设计范式,我们可以用对象(object)来表现问题领域(problem domain)的实体,每个对象都有相应的状态和行为。我们刚才说到:OOD是一种抽象的范式。抽象可以分成很多层次,从非常概括的到非常特殊的都有,而对象可能处于任何一个抽象层次上。另外,彼此不同但又互有关联的对象可以共同构成抽象:只要这些对象之间有相似性,就可以把它们当成同一类的对象来处理。一、OOD背景知识计算机硬件技术却在飞速发展。从几十年前神秘的庞然大物,到现在随身携带的移动芯片;从每秒数千次运算到每秒上百亿次运算。当软件开发者们还在寻找能让软件开发生产力提高一个数量级的“银弹”[Brooks, 95]时,硬件开发的生产力早已提升了百倍千倍。硬件工程师们能够如此高效,是因为他们都很懒惰。他们永远恪守“不要去重新发明轮子”的古训。Grady Booch把这些黑箱称为类属(class category),现在我们则通常把它们称为“组件(component)”。类属是由被称为类(class)的实体组成的,类与类之间通过关联(relationship)结合在一起。一个类可以把大量的细节隐藏起来,只露出一个简单的接口,这正好符合人们喜欢抽象的心理。所以,这是一个非常伟大的概念,因为它给我们提供了封装和复用的基础,让我们可以从问题的角度来看问题,而不是从机器的角度来看问题。软件的复用最初是从函数库和类库开始的,这两种复用形式实际上都是白箱复用。到90年代,开始有人开发并出售真正的黑箱软件模块:框架(framework)和控件(control)。框架和控件往往还受平台和语言的限制,现在软件技术的新潮流是用SOAP作为传输介质的Web Service,它可以使软件模块脱离平台和语言的束缚,实现更高程度的复用。但是想一想,其实Web Service也是面向对象,只不过是把类与类之间的关联用XML来描述而已[Li, 02]。在过去的十多年里,面向对象技术对软件行业起到了极大的推动作用。在可以预测的将来,它仍将是软件设计的主要技术——至少我看不到有什么技术可以取代它的。二、OOD到底从哪儿来?有很多人都认为:OOD是对结构化设计(Structured Design,SD)的扩展,其实这是不对的。OOD的软件设计观念和SD完全不同。SD注重的是数据结构和处理数据结构的过程。而在OOD中,过程和数据结构都被对象隐藏起来,两者几乎是互不相关的。不过,追根溯源,OOD和SD有着非常深的渊源。1967年前后,OOD和SD 的概念几乎同时诞生,它们分别以不同的方式来表现数据结构和算法。当时,围绕着这两个概念,很多科学家写了大量的论文。其中,由Dijkstra和 Hoare两人所写的一些论文讲到了“恰当的程序控制结构”这个话题,声称goto语句是有害的,应该用顺序、循环、分支这三种控制结构来构成整个程序流程。这些概念发展构成了结构化程序设计方法;而由Ole-Johan Dahl所写的另一些论文则主要讨论编程语言中的单位划分,其中的一种程序单位就是类,它已经拥有了面向对象程序设计的主要特征。这两种概念立刻就分道扬镳了。在结构化这边的历史大家都很熟悉:NATO会议采纳了Dijkstra的思想,整个软件产业都同意goto语句的确是有害的,结构化方法、瀑布模型从70年代开始大行其道。同时,无数的科学家和软件工程师也帮助结构化方法不断发展完善,其中有很多今天足以使我们振聋发聩的名字,例如Constantine、Yourdon、DeMarco和Dijkstra。有很长一段时间,整个世界都相信:结构化方法就是拯救软件工业的 “银弹”。当然,时间最后证明了一切。而此时,面向对象则在研究和教育领域缓慢发展。结构化程序设计几乎可以应用于任何编程语言之上,而面向对象程序设计则需要语言的支持[1],这也妨碍了面向对象技术的发展。实际上,在60年代后期,支持面向对象特性的语言只有Simula-67这一种。到70年代,施乐帕洛阿尔托研究中心(PARC)的 Alan Key等人又发明了另一种基于面向对象方法的语言,那就是大名鼎鼎的Smalltalk。但是,直到80年代中期,Smalltalk和另外几种面向对象语言仍然只停留在实验室里。到90年代,OOD突然就风靡了整个软件行业,这绝对是软件开发史上的一次革命。不过,登高才能望远,新事物总是站在旧事物的基础之上的。70年代和80年代的设计方法揭示出许多有价值的概念,谁都不能也不敢忽视它们,OOD也一样。三、OOD和传统方法有什么区别?还记得结构化设计方法吗?程序被划分成许多个模块,这些模块被组织成一个树型结构。这棵树的根就是主模块,叶子就是工具模块和最低级的功能模块。同时,这棵树也表示调用结构:每个模块都调用自己的直接下级模块,并被自己的直接上级模块调用。那么,哪个模块负责收集应用程序最重要的那些策略?当然是最顶端的那些。在底下的那些模块只管实现最小的细节,最顶端的模块关心规模最大的问题。所以,在这个体系结构中越靠上,概念的抽象层次就越高,也越接近问题领域;体系结构中位置越低,概念就越接近细节,与问题领域的关系就越少,而与解决方案领域的关系就越多。但是,由于上方的模块需要调用下方的模块,所以这些上方的模块就依赖于下方的细节。换句话说,与问题领域相关的抽象要依赖于与问题领域无关的细节!这也就是说,当实现细节发生变化时,抽象也会受到影响。而且,如果我们想复用某一个抽象的话,就必须把它依赖的细节都一起拖过去。而在OOD中,我们希望倒转这种依赖关系:我们创建的抽象不依赖于任何细节,而细节则高度依赖于上面的抽象。这种依赖关系的倒转正是OOD和传统技术之间根本的差异,也正是OOD思想的精华所在。四、OOD步骤细化重组类细化和实现类间关系,明确其可见性增加属性,指定属性的类型与可见性分配职责,定义执行每个职责的方法对消息驱动的系统,明确消息传递方式利用设计模式进行局部设计画出详细的类图与时序图五、OOD设计过程中要展开的主要几项工作(一)对象定义规格的求精过程对于OOA所抽象出来的对象-&-类以及汇集的分析文档,OOD需要有一个根据设计要求整理和求精的过程,使之更能符合OOP的需要。这个整理和求精过程主要有两个方面:一是要根据面向对象的概念模型整理分析所确定的对象结构、属性、方法等内容,改正错误的内容,删去不必要和重复的内容等。二是进行分类整理,以便于下一步数据库设计和程序处理模块设计的需要。整理的方法主要是进行归类,对类一&一对象、属性、方法和结构、主题进行归类。(二)数据模型和数据库设计数据模型的设计需要确定类-&-对象属性的内容、消息连接的方式、系统访问、数据模型的方法等。最后每个对象实例的数据都必须落实到面向对象的库结构模型中。(三)优化OOD的优化设计过程是从另一个角度对分析结果和处理业务过程的整理归纳,优化包括对象和结构的优化、抽象、集成。对象和结构的模块化表示OOD提供了一种范式,这种范式支持对类和结构的模块化。这种模块符合一般模块化所要求的所有特点,如信息隐蔽性好,内部聚合度强和模块之间耦合度弱等。集成化使得单个构件有机地结合在一起,相互支持。六、OO方法的特点和面临的问题OO方法以对象为基础,利用特定的软件工具直接完成从对象客体的描述到软件结构之间的转换。这是OO方法最主要的特点和成就。OO方法的应用解决了传统结构化开发方法中客观世界描述工具与软件结构的不一致性问题,缩短了开发周期,解决了从分析和设计到软件模块结构之间多次转换映射的繁杂过程,是一种很有发展前途的系统开发方法。但是同原型方法一样,OO方法需要一定的软件基础支持才可以应用,另外在大型的MIS开发中如果不经自顶向下的整体划分,而是一开始就自底向上的采用OO 方法开发系统,同样也会造成系统结构不合理、各部分关系失调等问题。所以OO方法和结构化方法目前仍是两种在系统开发领域相互依存的、不可替代的方法。七、OOD能给我带来什么?问这个问题的人,脑子里通常是在想“OOD能解决所有的设计问题吗?”没有银弹。OOD也不是解决一切设计问题、避免软件危机、捍卫世界和平……的银弹。OOD只是一种技术。但是,它是一种优秀的技术,它可以很好地解决目前的大多数软件设计问题——当然,这要求设计者有足够的能力。OOD可能会让你头疼,因为要学会它、掌握它是很困难的;OOD甚至会让你失望,因为它也并不成熟、并不完美。OOD也会给你带来欣喜,它让你可以专注于设计,而不必操心那些细枝末节;OOD也会使你成为一个更好的设计师,它能提供给你很好的工具,让你能开发出更坚固、更可维护、更可复用的软件。OOP面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构。OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。OOP 达到了软件工程的三个主要目标:重用性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。OOP 主要有以下的概念和组件:组件 - 数据和功能一起在运行着的计算机程序中形成的单元,组件在 OOP 计算机程序中是模块和结构化的基础。抽象性 - 程序有能力忽略正在处理中信息的某些方面,即对信息主要方面关注的能力。封装 - 也叫做信息封装:确保组件不会以不可预期的方式改变其它组件的内部状态;只有在那些提供了内部状态改变方法的组件中,才可以访问其内部状态。每类组件都提供了一个与其它组件联系的接口,并规定了其它组件进行调用的方法。多态性 - 组件的引用和类集会涉及到其它许多不同类型的组件,而且引用组件所产生的结果得依据实际调用的类型。继承性 - 允许在现存的组件基础上创建子类组件,这统一并增强了多态性和封装性。典型地来说就是用类来对组件进行分组,而且还可以定义新类为现存的类的扩展,这样就可以将类组织成树形或网状结构,这体现了动作的通用性。由于抽象性、封装性、重用性以及便于使用等方面的原因,以组件为基础的编程在脚本语言中已经变得特别流行。Python 和 Ruby 是最近才出现的语言,在开发时完全采用了 OOP 的思想,而流行的 Perl 脚本语言从版本5开始也慢慢地加入了新的面向对象的功能组件。用组件代替“现实”上的实体成为 JavaScript(ECMAScript) 得以流行的原因,有论证表明对组件进行适当的组合就可以在英特网上代替 HTML 和 XML 的文档对象模型(DOM)。

我要回帖

更多关于 读书报告怎么写 的文章

 

随机推荐