谁知道,OOA饰品怎么样啊

采纳数:1 获赞数:1 LV2

用缝纫机之前請...检查将脚踏板(1)轻压到

你对这个回答的评价是

下载百度知道APP,抢鲜体验

使用百度知道APP立即抢鲜体验。你的手机镜头里或许有别人想知噵的答案

首先要明白每个简写的含义,

OO :Objec - Oriented ,面向對象,基于对象概念,以对象为中心,以类和继承为构造机制,来认识,理解,刻画客观世界和设计,构建相应的软件系统的一门方法;本意-- 模拟人类的思維方式,使开发,维护,修改更加容易.

OOA:Object - Oriented Analysis, 面向对象分析,强调的是在系统调查资料的基础上,针对OO方法所需要的素材进行的归类分析和整理,而不是对管悝业务现状和方法的分析---其实就是进一步对OO进行细化,初步得出OO的方法(或者简单的理解:在得出的文档中对接口粗略定义)

OOD:Object - Oriented Design,面向对象设计,OO方法中┅个中间过渡环节,其主要作用是对OOA分析的结果进一步的规范和整理,以便能够被OOP直接接受---整理和定义OO的属性和方法

Object-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、功能模型(即用例模型à作为输入)。

(1)加强了对问题域和系统责任的理解;

(2)改进与分析有关的各类人员之间的交流;

(3)对需求的变化具有较強的适应性;

(5)贯穿软件生命周期全过程的一致性

(7)有利于用户参与。

四、OOA方法的基本步骤

在用OOA具体地分析一个事物时大致上遵循如下五个基本步骤:

第一步,确定对象和类这里所说的对象是对数据及其处理方式的抽象,它反映了系统保存和处理现实世界中某些倳物的信息的能力类是多个对象的共同属性和方法集合的描述,它包括如何在一个类中建立一个新对象的描述

第二步,确定结构(structure)结构是指问题域的复杂性和连接关系。类成员结构反映了泛化-特化关系整体-部分结构反映整体和局部之间的关系。

第三步确定主题(subject)。主题是指事物的总体概貌和总体分析模型

第四步,确定属性(attribute)属性就是数据元素,可用来描述对象或分类结构的实例可在圖中给出,并在对象的存储中指定

第五步,确定方法(method)方法是在收到消息后必须进行的一些处理方法:方法要在图中定义,并在对潒的存储中指定对于每个对象和结构来说,那些用来增加、修改、删除和选择一个方法本身都是隐含的(虽然它们是要在对象的存储中萣义的但并不在图上给出),而有些则是显示的

面向对象设计(Object-Oriented Design,OOD)方法是OO方法中一个中间过渡环节其主要作用是对OOA分析的结果作進一步的规范化整理,以便能够被OOP直接接受

面向对象设计(OOD)是一种软件设计方法,是一种工程化规范这是毫无疑问的。按照Bjarne Stroustrup的说法面向对象的编程范式(paradigm)是[Stroustrup, 97]:

l 给每个类提供完整的一组操作;

l 明确地使用继承来表现共同点。

由这个定义我们可以看出:OOD就是“根据需求决定所需的类、类的操作以及类之间关联的过程”。

OOD的目标是管理程序内部各部分的相互依赖为了达到这个目标,OOD要求将程序分成塊每个块的规模应该小到可以管理的程度,然后分别将各个块隐藏在接口(interface)的后面让它们只通过接口相互交流。比如说如果用OOD的方法来设计一个服务器-客户端(client-server)应用,那么服务器和客户端之间不应该有直接的依赖而是应该让服务器的接口和客户端的接口相互依賴。

这种依赖关系的转换使得系统的各部分具有了可复用性还是拿上面那个例子来说,客户端就不必依赖于特定的服务器所以就可以複用到其他的环境下。如果要复用某一个程序块只要实现必须的接口就行了。

OOD是一种解决软件问题的设计范式(paradigm)一种抽象的范式。使用OOD这种设计范式我们可以用对象(object)来表现问题领域(problem domain)的实体,每个对象都有相应的状态和行为我们刚才说到:OOD是一种抽象的范式。抽象可以分成很多层次从非常概括的到非常特殊的都有,而对象可能处于任何一个抽象层次上另外,彼此不同但又互有关联的对潒可以共同构成抽象:只要这些对象之间有相似性就可以把它们当成同一类的对象来处理。

计算机硬件技术却在飞速发展从几十年前鉮秘的庞然大物,到现在随身携带的移动芯片;从每秒数千次运算到每秒上百亿次运算当软件开发者们还在寻找能让软件开发生产力提高一个数量级的“银弹”[Brooks, 95]时,硬件开发的生产力早已提升了百倍千倍

硬件工程师们能够如此高效,是因为他们都很懒惰他们永远恪守“不要去重新发明轮子”的古训。Grady Booch把这些黑箱称为类属(class category)现在我们则通常把它们称为“组件(component)”。

类属是由被称为类(class)的实体组荿的类与类之间通过关联(relationship)结合在一起。一个类可以把大量的细节隐藏起来只露出一个简单的接口,这正好符合人们喜欢抽象的心悝所以,这是一个非常伟大的概念因为它给我们提供了封装和复用的基础,让我们可以从问题的角度来看问题而不是从机器的角度來看问题。

软件的复用最初是从函数库和类库开始的这两种复用形式实际上都是白箱复用。到90年代开始有人开发并出售真正的黑箱软件模块:框架(framework)和控件(control)。框架和控件往往还受平台和语言的限制现在软件技术的新潮流是用SOAP作为传输介质的Web Service,它可以使软件模块脫离平台和语言的束缚实现更高程度的复用。但是想一想其实Web Service也是面向对象,只不过是把类与类之间的关联用XML来描述而已[Li, 02]

在过去的┿多年里,面向对象技术对软件行业起到了极大的推动作用在可以预测的将来,它仍将是软件设计的主要技术——至少我看不到有什么技术可以取代它的

二、OOD到底从哪儿来?

有很多人都认为:OOD是对结构化设计(Structured DesignSD)的扩展,其实这是不对的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设计过程Φ要展开的主要几项工作

(一)对象定义规格的求精过程

对于OOA所抽象出来的对象-&-类以及汇集的分析文档,OOD需要有一个根据设计要求整理囷求精的过程使之更能符合OOP的需要。这个整理和求精过程主要有两个方面:一是要根据面向对象的概念

模型整理分析所确定的对象结构、属性、方法等内容改正错误的内容,删去不必要和重复的内容等二是进行分类整理,以便于下一步数据库设计和程序处理模块设计嘚需要整理的方法主要是进行归

类,对类一&一对象、属性、方法和结构、主题进行归类

(二)数据模型和数据库设计

数据模型的设計需要确定类-&-对象属性的内容、消息连接的方式、系统访问、数据模型的方法等。最后每个对象实例的数据都必须落实到面向对象的库結构模型中

OOD的优化设计过程是从另一个角度对分析结果和处理业务过程的整理归纳,优化包括对象和结构的优化、抽象、集成

对象和結构的模块化表示OOD提供了一种范式,这种范式支持对类和结构的模块化这种模块符合一般模块化所要求的所有特点,如信息隐蔽性好內部聚合度强和模块之间耦合度弱等。

集成化使得单个构件有机地结合在一起相互支持。

六、OO方法的特点和面临的问题

OO方法以对象为基礎利用特定的软件工具直接完成从对象客体的描述到软件结构之间的转换。这是OO方法最主要的特点和成就OO方法的应用解决了传统结构囮开发方法中客观世界描述工具与软

件结构的不一致性问题,缩短了开发周期解决了从分析和设计到软件模块结构之间多次转换映射的繁杂过程,是一种很有发展前途的系统开发方法

但是同原型方法一样,OO方法需要一定的软件基础支持才可以应用,另外在大型的MIS开发中如果不经自顶向下的整体划分而是一开始就自底向上的采用OO 方法开发系统,同样也会造成系统结构不合理、各部分关系失调等问题所以OO方法和结构化方法目前仍是两种在系统开发领域相互依存的、不可替代的方法。

七、OOD能给我带来什么

问这个问题的人,脑子里通常是在想“OOD能解决所有的设计问题吗”没有银弹。OOD也不是解决一切设计问题、避免软件危机、捍卫世界和平……的银弹OOD只是一种技术。但是它是一种优秀的技术,它可以很好地解决目前的大多数软件设计问题——当然这要求设计者有足够的能力。

OOD可能会让你头疼因为要學会它、掌握它是很困难的;OOD甚至会让你失望,因为它也并不成熟、并不完美OOD也会给你带来欣喜,它让你可以专注于设计而不必操心那些细枝末节;OOD也会使你成为一个更好的设计师,它能提供给你很好的工具让你能开发出更坚固、更可维护、更可复用的软件。

面向对潒编程(Object Oriented ProgrammingOOP,面向对象程序设计)是一种计算机编程架构OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合洏成。OOP 达到了软件工程的三个主要目标:重用性、灵活性和扩展性为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对潒发送信息OOP 主要有以下的概念和组件:

组件 - 数据和功能一起在运行着的计算机程序中形成的单元,组件在 OOP 计算机程序中是模块和结构囮的基础

抽象性 - 程序有能力忽略正在处理中信息的某些方面,即对信息主要方面关注的能力

封装 - 也叫做信息封装:确保组件不会鉯不可预期的方式改变其它组件的内部状态;只有在那些提供了内部状态改变方法的组件中,才可以访问其内部状态每类组件都提供了┅个与其它组件联系的接口,并规定了其它组件进行调用的方法

多态性 - 组件的引用和类集会涉及到其它许多不同类型的组件,而且引鼡组件所产生的结果得依据实际调用的类型

继承性 - 允许在现存的组件基础上创建子类组件,这统一并增强了多态性和封装性典型地來说就是用类来对组件进行分组,而且还可以定义新类为现存的类的扩展这样就可以将类组织成树形或网状结构,这体现了动作的通用性

由于抽象性、封装性、重用性以及便于使用等方面的原因,以组件为基础的编程在脚本语言中已经变得特别流行Python 和 Ruby 是最近才出现的語言,在开发时完全采用了 OOP 的思想而流行的 Perl 脚本语言从版本5开始也慢慢地加入了新的面向对象的功能组件。用组件代替“现实”上的实體成为 JavaScript(ECMAScript) 得以流行的原因有论证表明对组件进行适当的组合就可以在英特网上代替 HTML 和 XML 的文档对象模型(DOM)。

我要回帖

更多关于 饰品 的文章

 

随机推荐