导航:首页 > 研究方法 > 面向对象分析与设计方法结论

面向对象分析与设计方法结论

发布时间:2022-03-15 04:23:06

A. 面向对象分析方法的步骤和特点

使用MVC进行项目开发已经有一段时间了,在这段时间里感触最深的就是自己对宏观性面向对象分析方法的缺乏。面向对象分析是当今流行的系统分析方法之一,下面就谈谈在做项目的过程中我的一些小经验。

在面对简单系统时程序员可以很顺利的提出问题的解决方案,并且一般情况下都是可行的。这是由于问题域关系简单,所涉及到的内部构造、联系比较容易解释。而对于当前越来越复杂的系统,其问题域也就显示的越来越复杂,而且内部的关系也不是很容易解释,有些大的系统常常超出了人的解决问题的能力。在这种情况下,以往的面对过程的解决方法已经不能满足日益增长的复杂系统分析的需要,在这种情况下,面向对象的分析方法就显得尤为总要了。

在面向对象设计领域中,在横向上把问题域分为数个不同的、低耦合、高内聚的问题域,而在纵向上又继续分解各个不同的小的问题域,最后分解为叶节点问题域,从而解决问题。在面对对象分析方法中,用数个对象间的消息传递来完成整个问题。

下面看一看复杂系统的5个属性:

1. 杂性经常是以层次的形式表现出来,复杂系统是由相互关联的子系统组成,而这些子系统又是由他们各自的子系统构成,并由此类推到最底层的基本构件。

2. 对系统中最基本的构件的选择是任意的,而且在很大程度上取决于系统观察者的判断力。

3. 一般而言,各构件内的连接总是要强于构件间的连接。在从构件的低频动态中分离出高频动态时,这一属性是相当有用的。这是因为高频动态涉及到各部件的内部结构,而低频动态涉及到构件间的交互。

4. 层次系统通常都是由仅仅少数不同的子系统通过不同的排列组合方式组成。

5. 我们发现正运行的复杂系统总是由以前运行的简单系统演化而来……任何胡乱凑合设计出来的复杂系统都不可能正常运转,也不可能被修补好。我们必须由运行中的简单系统开始。

对于第一点,正像我上面所说的那样,系统是层次结构的。能够给一个复杂的系统进行正确的层次分析,才能够保证对系统的正确估计,包括可行性、可维护性、可扩展性……等等。而且对于日后对该系统进行维护(maintenance)、演化(evolution)、维持(preservation)都能够很好的支持。

对于其中的第二点,强调了观察者的判断力,其实我认为其中也包括观察者的身份角度。对于一个系统而言,观察者并不是只进行分析设计的工程师,编码阶段的程序员,还应该包括用户等所有这些同该系统有关的人员。作为不同的人员,对于系统就有不同的观察点、观察角度、身份等特殊因素。因此在不同身份的人(指参与者)甚至同一身份的人眼中说观察到的系统特性都是不尽相同的。在大学里大家都接触过透明性的概念,这就是不同观察者所观察角度不同的直观反应。对于用户来说,基本上底层的操作、算法、通讯对于他们来说都是透明的,他们根本不用理会(其实也不知道)内部用了什么。而对于一个负责某模块的程序员来说就不会考虑其他模块的实现,对于他们来说其他模块是透明的,他们只需要负责管理好提供的模块接口就OK了。

对于第三点,讲的就是面对对象分析设计的方向,在面对对象分析设计系统时,被分解的各个模块一定要做到高内聚、低耦合。有良好高内聚、低耦合系统常常会很容易维护,一个地方改动通常不需要牵扯到大的改动,维护行强。而且对于像VC程序这种更要求效率的程序来说,高内聚、低耦合也可以提高程序的运行期效率,应为对象内部的调用一般情况下会相比模块间的调用占用更少的执行时间,这样将高频动态封装在一个对象内部就会一定程度上提高程序运行期执行效率。

第四点则说明了面向对象程序设计对程序设计可复用性的优点。在这点中所“层次系统由仅仅少数不同的子系统构成”那么多数子系统在不同的复杂系统中都是能够重复使用的。比如说建筑一栋大厦和建筑桥梁,虽然两者都是复杂的系统,但是对于其结构中就会有很多相似甚至相同之处,没有必要建筑好大厦回头建筑桥梁的时候又要重新设计每一快砖瓦。

第五点提醒我们在系统设计时,尽量使用以往能够正常运行的子系统来重新构件新的系统。这一点不仅说明第四点中的复用性,而且也说明了一个我们常常要犯的错误。就是将并没有通过严格测试的子系统,匆忙的加入到大系统中,这样做不利于对系统的基层,常常引入了其他错误,使得系统频频崩溃,最严重会导致系统的重新分析。

这是我对面向对象的一点心得体会,虽然我们大家在平时工作中所面对的问题、问题域不同,使用的开发工具不同,但是面向对象是一种思维方式,有利于分析、解决问题的一种方法,并不和任何语言挂钩(当然语言对于面向对象特性的支持程度有所不同)。所以希望各位同事能够尽量使用科学的方法分析解决问题,形成一种设计模式,以供大家互相交流。

软件设计是一种艺术,也是一门工程学。

B. 面向对象分析与设计的简介

OOAD(Object Orient Analysis & Design,面向对象的分析和设计,面向对象分析与设计)是现代软件企业广为采用的一项有效技术。OOAD方法要求在设计中要映射现实世界中指定问题域中的对象和实体,例如:顾客、汽车和销售人员等。这就需要设计要尽可能地接近现实世界,即以最自然的方式表述实体。所以面向对象技术的优点即为能够构建与现实世界相对应的问题模型,并保持他们的结构、关系和行为为模式。
大师说:没有不变的需求,世上的软件都改动过3次以上,唯一一个只改动过两次的软件的拥有者已经死了,死在去修改需求的路上。
目前众多的软件项目有什么样的问题呢?早些时候上ERP的企业在企业发展的时候发现原有的ERP系统需要改进,可是要改进或者是更改现有的ERP系统,唯一的方法就是重新开发一个ERP系统。这对于企业来说是笔不小的支出。此时,落后的信息系统就成为制约企业发展的重要因素。是什么原因造成了这种情况呢?主要的因素是传统的系统分析是在假定需求不变的情况下进行的,这样可以把企业的资源配置到最优的程度。可是在现代瞬息万变的社会,一个企业固守旧有模式,势必会在竞争中处于劣势(因此现在也出现了组件化的ERP,这是题外话)。既然企业的需求是变化的、不稳定的,那么以变化的需求为基础建立起来的企业信息系统当然也就不稳定了。这时候,有个问题就产生了,前面我们已经说过,需求是项目的根本,既然需求都是不稳定的,那么何以建立起稳定的企业信息系统呢?
要回答这个问题,首先要比较面向过程和面向对象的开发方法的差别,传统的面向过程的开发方法在前20年大行其道,为中国企业的信息化建设立下了汗马功劳。之所以称为面向过程,是因为开发的焦点集中于过程,开发者集中于以函数为核心的过程,例如前些年很多人试图编写一些通用转账函数来满足银行的需求。面向过程的开发语言包括:Cobol、Pascal、C及C的变形语言。面向对象的概念是在近10年才进入中国的,而它的思想至今也没有真正意义上得到普及。简单的说,面向对象就是面向世界,世界上的任何事物都是对象,因此面向对象是很自然的思想,是符合我们的思维习惯的。面向对象的语言包括了Smalltalk、C++、Java,还有Object Pascal,以及刚刚诞生的C#。
需求是不稳定的,那么需求之中是不是没有稳定的东西呢?有的,就是对象。世界都是由对象组成的,而对象都是持久的,例如动物、植物已经有相当长的时间。虽然对象也在变化,动物,植物也在不断的进化。但对象在一个相当长的时期内都存在,动植物的存在时间肯定比任何一家企业长久。面向对象的开发方法的精髓就是从企业的不稳定需求中分析出企业的稳定对象,以企业对象为基础来组织需求、构架系统。这样得出的系统就会比传统的系统要稳定得多,因为企业的模式一旦变化,只需要将稳定的企业对象重新组织就行了。这种开发的方法就被称为OOAD(Object Orient Analysis & Design 面向对象的分析和设计),而分析出的企业对象就被称为Common Business Object。

C. 面向对象分析与设计,烦请帮忙。

面向对象分析与设计
有更具体的要求把,
你说下吧我看下我帮你。

D. 对比传统的结构化分析和设计方法的特点,谈谈面向对象方法学的主要优点。

结构化程序设计特点:
优点: 与非结构化程序相比,结构化程序在调试、可读性和可维护性等方面都有很大的改进。

缺点:代码重用性不高:以过程为中心设计新系统,除了一些标准函数,大部分代码都必须重新编写。
由于软、硬件技术的不断发展和用户需求的变化,按照功能划分设计的系统模块容易发生变化,使得开发出来的模块的可维护性欠佳。
面向过程模式将数据与过程分离,若对某一数据结构做了修改,所有处理数据的过程都必须重新修订,这样就增加了很多的编程工作量。

面向对象的优点:
而面向对象围绕现实世界的概念来组织模块,采用对象描述问题空间的实体,用程序代码模拟现实世界中的对象,使程序设计过程更自然、更直观。
面向过程是以功能为中心来描述系统,而面向对象是以数据为中心来描述系统。相对于功能而言,数据具有更强的稳定性。
面向对象模拟了对象之间的通信。就象人们之间互通信息一样,对象之间也可以通过消息进行通信。这样,我们不必知道一个对象是怎样实现其行为的,只需通过对象提供的接口进行通信并使用对象所具有的行为功能。而面向过程则通过函数参数和全局变量达到各过程模块联系的目的。
面向对象把一个复杂的问题分解成多个能够完成独立功能的对象(类),然后把这些对象组合起来去完成这个复杂的问题。采用面向对象模式就象在流水线上工作,我们最终只需将多个零部件(已设计好的对象)按照一定关系组合成一个完整的系统。这样使得软件开发更有效率。

E. 面向对象分析与设计面向对象设计包括哪些内容

一、总述

面向对象分析的输入是用户的功能需求,输出是简单的、理性化的分析模型,此阶段的工作更多侧重于如何理解软件的功能需求;

面向对象设计的输入是面向对象分析的结果,蔬菜水果最终的、细化后的设计模型,此阶段的工作更多侧重于如何得到一个合适的、完整的解决方案。

二、主要区别

(1) 在侧重点上,面向对象分析侧重于理解问题,描述软件要做什么,而面向对象设计侧重于理解解决方案,描述软件要如何做。

(2) 面向对象分析一般只考虑理想饿设计,不关心技术和实现层面的细节,而面向对象设计需要得到更具体、更详尽,更接近于真实的代码的设计方案。

(3) 在设计结果的描方式上,面向对象分析阶段侧重于描述对象的行为,而面向对象设计阶段侧重于描述对象的属性和方法。

(4) 面向对象分析只关注功能性需求,而面向对象设计既关注功能性需求,也关注非功能性需求。

(5) 面向对象分析产生的系统模型通常规模较小,而面向对象设计产生的系统模型规模较大,内容也比较详尽、完整。

三、分析设计工具(RationalRose + UML)

1、需求分析阶段

常借助于“用例图”、“顺序图”对功能模型进行建模;

用例描述,一般包括:用例名称,系统范围,用户目标,前置条件,执行过程,扩展情况,后置条件。

顺序图着眼于整个系统。

2、面向对象分析阶段(包含需求分析阶段的用例建模)

常借助于“类图、对象图”,“顺序图、协作图”,“状态图”进行静态模型建模和动态模型建模。

这里的类图主要指通过用例分析得到的实体类、控制类和边界类。

顺序图也着眼于各个分析类对象间的协作。

3、面向对象设计阶段

常借助于“类图”,“顺序图、协作图”,“状态图”来细化各个类以及对象间的协作、关系的可见性;

这里的类图,要具体到属性、方法,类之间的关系依赖(继承、组合、聚合)

这里的顺序图要具体到各个类的实例之间的消息传递、函数调用。

面向对象设计阶段常借助一些设计模式达到软件的可扩展行,应对软件的可预测到的变化。

F. 面向对象分析与设计有怎样关系

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

G. 为什么应该尽量使用面向对象语言来实现面向对象分析和设计的结果

因为 用面向对象的思想能更好的模拟现实世界的实体对象 面向对象可以实现代码的重用 面向对象能更好的实现软件的可维护性、可扩展性 和重用行

H. 面向对象分析与设计的意义是什么

在创建一个应用软件系统前,必须进行充分的分析,即明确所要解决的问题是什么。例如,开发一个图书信息管理系统软件,这个系统要实现什么样的功能?这就是一个分析问题。
设计强调的是问题的逻辑解决方案,即系统怎样才能达到要求。例如,图书信息管理系统如何实现远程查询?设计最终可以用硬件或软件方法来实现。
面向对象的分析与设计的精髓是按照对象的观点考虑问题域和逻辑解决方案。分析旨在发现并描述问题域中的对象。例如,在图书馆信息系统中,这些对象包括图书、借阅者、图书管理员等。
设计的重点在于定义逻辑软件对象,这些对象(具有属性和方法)最终能够用面向对象程序设计语言实现,即编写它们的类。

I. 怎样理解面向对象分析和设计比语法和API更重要这句话

当你还是个只能写十几行代码输出HelloWorld或者九九乘法表的初学者的时候,你所关注的是编程语言本身的语法、可以调用的 API(如C语言中的printf、Java中的system.out.printf)等等非常基础,非常低层的问题。

当你是个能写出几百行代码,能完成一定功能的程序(比如实现一个简略的哈夫曼算法)的初窥门径的学习者,你所关心的是函数与函数之间的配合,也即面向过程的程序设计。比如用哪个函数打开文件、哪个函数处理数据、哪个函数保存文件、哪个函数检查错误输入,以及彼此功能之间的分割与配合等等。

当你能掌握的程序规模越来越大的时候,面向过程的程序设计也已经不能满足你的需求了。你的程序会自然地按功能、性质的不同而被划归为诸如:用户配置、输入输出、核心模块等等不同的模块(而实际应用中 核心模块又应该继续划分),而每个模块的代码又需要保存自身的数据。这个时候,面向对象的设计方法自然而然就成了程序的整体设计方法。

面向对象分析就是如何把实际需求划分成不同的模块,面向对象设计就是如何不同的模块如何用代码实现、模块间如何配合等等。

可以发现,面向对象的程序设计其实就是如何用机器语言模拟现实事物,解决复杂的现实问题。

我可能仍然没有回答为何“面向对象分析和设计比语法和API更重要”这个问题,但是相信你在以后的进步过程中,会逐渐体会到这一点。

J. 面向对象分析与设计,

不是标准答案,仅供参考.
AADBBC

阅读全文

与面向对象分析与设计方法结论相关的资料

热点内容
基因组表达的检测方法 浏览:408
教学的基本教学方法 浏览:910
小型焊机使用方法 浏览:162
30岁以上锻炼方法 浏览:467
如何做凉拌萝卜丝的方法 浏览:885
如何更好规范孩子学习方法 浏览:861
火车铁轨安装方法 浏览:353
全站仪贯通测量方法 浏览:258
数学配方法怎么求 浏览:120
增强电脑网络性能的方法 浏览:12
骑越野自行车的正确方法 浏览:557
判别分析方法组合 浏览:662
湿疹最好的治疗方法怎么治如何治 浏览:544
白驳风的治疗较新方法 浏览:501
退烧刺血的方法视频 浏览:768
铝泡打粉检测方法 浏览:655
有没有白嫖手机的方法 浏览:810
正确的接电线方法视频 浏览:423
插入式熔断器故障点及解决方法 浏览:273
市场指导价计算方法 浏览:500