面向对象分析
软件工程-面向对象分析

3)需求陈述作用:需求陈述仅仅是理解用户需求的出发点,千万不可 将此陈述当成完整、准确、有效和一成不变的文档。
单击此处编辑母版标题样 10.2.2 需求陈述书写举例 式 下图所示为自动取款机(ATM)系统(作为OO分析和OO设计实例)
单击此处编辑母版标题样
10.3 建立对象模型
式对象模型的作用:对象模型描述问题域中的“类与对象”以及它
们之间的相互关系,表示了目标系统的静态数据结构。
建立对象模型的信息来源:需求陈述、应用领域的专业知识以及 关于客观世界的常识,是建立对象模型时的主要信息来源。
单击此处编辑母版标题样 式建立对象模型的步骤:由于对象模型有5个层次。典型的工作步骤是:
动态模型和功能模型中都包含了对象模型中的操作(即服务或方法)。
单击此处编辑母版标题样 2)对象模型的5个层次:主题层、类与对象层、结构层、属性层和服务 式层,如下图所示。这5个层次按照从上到下或从抽象到具体的层面一
层比一层更细地给出了对象模型的更多细节。在概念上,这5个层次 是整个模型的5张水平切片。
分析抽取和确定问题域中的对象类; 确定对象类之间的关系(关联或结构); 对于大型复杂问题还要进一步划分出若干个主题; 确定对象类和关联类中的属性; 利用适当的继承关系进一步合并和组织类; 对类中操作需等到建立了动态模型和功能模型之后再确定。 注意:上述建立对象模型的步骤顺序是不严格限定的,因为分析建模过
图10.2 ATM系统
单击此处编辑母版标题样 式自动取款机(ATM)系统需求陈述:
某银行拟开发一个自动取款机系统,它是一个由自动取款机、中央计 算机、分行计算机及柜员终端组成的网络系统。ATM和中央计算机由总 行投资购买。总行拥有多台ATM,分别设在全市各主要街道上。分行负 责提供分行计算机和柜员终端。柜员终端设在分行营业厅及分行下属 的各个储蓄所内。该系统的软件开发成本由各个分行分摊。
什么是面向对象「什么是面向对象分析方法」

什么是面向对象「什么是面向对象分析方法」面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。
面向对象其实是现实世界模型的自然延伸现实世界中任何实体都可以看作是对象对象之间通过消息相互作用另外,现实世界中任何实体都可归属于某类事物,任何对象都是某一类事物的实例如果说传统的面向过程式编程语言是以过程。
在我理解,面向对象是向现实世界模型的自然延伸,这是一种“万物皆对象”的编程思想在现实生活中的任何物体都可以归为一类事物,而每一个个体都是一类事物的实例面向对象的编程是以对象为中心,以消息为驱动,所以程序=对。
面向对象是指一种程序设计范型,同时也是一种程序开发的方法对象指的是类的集合它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性灵活性和扩展性起初,“面向对象”是专指在程序设计中采用封装。
面向对象相比于面向过程,是两种不同的处理问题的角度面向过程更注重事情的每一个步骤和以及顺序,面向对象更注重事件有哪些参与者,以及各自需要什么比如洗衣机洗衣服,面向过程将会把任务解析成一系列步骤,打开洗衣机放。
面向对象Object Oriented,OO是当前计算机界关心的重点,它是90年代软件开发方法的主流面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围如数据库系统交互式界面应用结构应用平台分布式系统网络管理结构CAD。
你好面向对象就是指把一个应用程序看成是由许多“对象object”组成的,然后去对这些对象编程,让它们具有一定的功能类是具有相同或相似性质的对象的抽象就是类因此,对象的抽象是类,类的具体化就是对象,也可以说。
面向对象如果我没记错的话应该是一门Java语言吧,我记得上大学学计算机的时候学过一点,当然不是计算机专业的,学的水过地皮湿,都是点皮毛而已,具体的你可以找一下计算机相关方面的书来看一下。
面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在。
面向对象分析方法

面向对象分析方法面向对象分析方法是以系统的用户和目的为出发点的一种分析技术,它主要用于分析系统中的物体(对象)之间的关系,以及这些物体所具有的通用性质,以便将它们组织为一个可使用的整体系统。
在软件开发中,面向对象分析方法用于发现和描述系统中的对象,以及它们之间的关系,并将这些对象组织为可重用的模块,以便用于系统的设计和实现。
面向对象分析方法包括四个主要步骤: 1、识别对象:根据系统的用户和目的,识别系统中的对象,并确定它们之间的关系。
2、分析对象:对系统中的对象进行进一步分析,以便更好地理解它们之间的关系。
3、确定对象的功能:确定系统中的对象应该具有的功能,以及它们之间的关系应该如何实现。
4、设计对象结构:考虑到对象之间的关系,设计系统的对象结构,以便将它们组织为可重用的模块。
面向对象分析方法有助于定义和分析系统中的对象以及它们之间的关系,从而准备进行软件设计和实现。
它能够帮助开发人员更好地理解系统的用户和目的,以及系统的功能和结构,从而有效地实现软件开发过程。
首先,面向对象分析可以帮助开发人员确定和识别系统中的对象,以及它们之间的关系。
通过分析用户和目的,开发人员可以确定用户可能会使用的对象,以及这些对象之间的关系。
在确定系统中的对象之后,开发人员可以分析这些对象,以便更好地理解它们之间的关系。
其次,面向对象分析可以帮助开发人员确定系统中的对象应该具有的功能,以及它们之间的关系应该如何实现。
通过分析用户和目的,开发人员可以确定每个对象应具有的功能,以及它们之间的关系应该如何实现。
最后,面向对象分析可以帮助开发人员设计系统的对象结构,以便将它们组织为可重用的模块。
在设计对象结构时,开发人员需要考虑到对象之间的关系,以及它们应该如何被组织和重用。
总之,面向对象分析方法是一种帮助开发人员确定和分析系统中的对象以及它们之间的关系的技术,从而为软件设计和实现提供依据。
它可以帮助开发人员确定系统中的对象,以及它们应该具有的功能和结构,从而有助于软件开发过程的有效实施。
第10章 面向对象分析

第10章 面向对象分析
第10章 面向对象分析
• 面向对象软件开发技术
– 面向对象分析(OOA) – 面向对象设计(OOD) – 面向对象实现(OOP)
面向对象技术是一个有全新概念 的开发模式,其特点是:
(1)方法是对软件开发过程所有阶段进 行综合考虑而得到的; (2)从生存期的一个阶段到下一个阶段 所使用的方法与技术具有高度的连 续性;
取消交易
顾客可在按下选择键前任何一个时刻,拉动退币杆取 消交易收回硬币。
自动售货系统系统
-端1 * -端2
自动售货系统::售货
*
顾客
-端2
-端1 *
自动售货系统::供货
*
供货人
-端1 * -端2
自动售货系统::取货款
*
收银员
自动售货系统系统
-端1 *
-端2
售货
*
<<extends>>
售散装饮料
顾客
• 业务中的执行者扮演什么角色?这些角色可以 看作类,如客户、操作员等。
(2)筛选对象类,确定最终对象类 我们可以用以下选择特征来确定最终的对象: 1) 保留的信息:仅当必须记住有关潜在对象的 信息,系统才能运作时,则该潜在对象在分 析阶段是有用的; 2) 需要的服务:潜在对象必须拥有一组可标识 的操作,它们可以按某种方式修改对象属性 的值; 3) 多个属性:在分析阶段,关注点应该是“较 大的”信息(仅具有单个属性的对象在设计 时可能有用,但在分析阶段,最好把它表示 为另一对象的属性);
定义服务
• 对象=属性+操作(服务) • 因为在动态模型和功能模型中更明确地描 述了每个类中应该提供哪些服务,所以在 建立了这两个模型后才能最终确定类中应 有的服务。 • 事实上,在确定类中应有的服务时,既要 考虑该类实体的常规行为,又要考虑在本 系统中特殊需要的服务。
软件工程-面向对象分析

第7章面向对象分析•7.1.1 面向对象分析过程面向对象的分析主要以用例模型为基础。
开发人员在收集到的原始需求的基础上,通过构建用例模型从而得到系统的需求。
进而再通过对用例模型的完善,使得需求得到改善。
所谓用例是指系统中的一个功能单元,可以描述为参与者与系统之间的一次交互。
用例常被用来收集用户的需求。
①首先要找到系统的操作者,即用例的参与者。
参与者是在系统之外,透过系统边界与系统进行有意义交互的任何事物。
②可以把参与者执行的每一个系统功能都看作一个用例。
可以说,用例描述了系统的功能,涉及系统为了实现一个功能目标而关联的参与者、对象和行为。
③确定了系统的所有用例之后,就可以开始识别目标系统中的对象和类了。
把具有相似属性和操作的对象定义为一个类。
边界类示意图控制类示意图目标系统的类可以划分为边界类、控制类和实体类。
Ø边界类代表了系统及其操参与者的边界,描述参与者与系统之间的交互。
它更加关注系统的职责,而不是实现职责的具体细节。
通常,界面控制类、系统和设备接口类都属于边界类。
Ø控制类代表了系统的逻辑控制,描述一个用例所具有的事件流的控制行为,实现对用例行为的封装。
通常,可以为每个用例定义一个控制类。
Ø实体类描述了系统中必须存储的信息及相关的行为,通常对应于现实世界中的事物。
确定了系统的类和对象之后,就可以分析类之间的关系了。
对象或类之间的关系有依赖、关联、聚合、组合、泛化和实现。
①依赖关系是“非结构化”的和短暂的关系,表明某个对象会影响另外一个对象的行为或服务。
②关联关系是“结构化”的关系,描述对象之间的连接。
③聚合关系和组合关系是特殊的关联关系,它们强调整体和部分之间的从属性,组合是聚合的一种形式,组合关系对应的整体和部分具有很强的归属关系和一致的生命期。
比如,计算机和显示器就属于聚合关系。
④泛化关系与类间的继承类似。
⑤实现关系是针对类与接口的关系。
明确了对象、类和类之间的层次关系之后,需要进一步识别出对象之间的动态交互行为,即系统响应外部事件或操作的工作过程。
面向对象分析

面向对象分析:是确定需求或者业务的角度,按照面向对象的思想来分析业务。
例如:OOA只是对需求中描述的问题,进行模块化的处理,描述问题的本质,区别每个问题的不同点相同点,确定问题中的对象。
OOA与结构化分析有较大的区别。
OOA所强调的是在系统调查资料的基础上,针对OO方法所需要的素材进行的归类分析和整理,而不是对管理业务现状和方法的分析。
基本步骤:
在用OOA具体地分析一个事物时,大致上遵循如下五个基本步骤:
第一步,确定对象和类。
这里所说的对象是对数据及其处理方式的抽象,它反映了系统保存和处理现实世界中某些事物的信息的能力。
类是多个对象的共同属性和方法集合的描述,它包括如何在一个类中建立一个新对象的描述。
第二步,确定结构(structure)。
结构是指问题域的复杂性和连接关系。
类成员结构反映了泛化-特化关系,整体-部分结构反映整体和局部之间的关系。
第三步,确定主题(subject)。
主题是指事物的总体概貌和总体分析模型。
第四步,确定属性(attribute)。
属性就是数据元素,可用来描述对象或分类结构的实例,可在图中给出,并在对象的存储中指定。
第五步,确定方法(method)。
方法是在收到消息后必须进行的一些处理方法:方法要在图中定义,并在对象的存储中指定。
对于每个对象和结构来说,那些用来增加、修改、删除和选择一个方法本身都是隐含的(虽然它们是要在对象的存储中定义的,但并不在图上给出),而有些则是显示的。
面向对象分析方法

面向对象分析方法1/2面向对象分析方法(Object-Oriented Analysis,OOA),是在一个系统的开发过程中进行了系统业务调查以后,按照面向对象的思想来分析问题。
OOA与结构化分析有较大的区别。
OOA所强调的是在系统调查资料的基础上,针对OO方法所需要的素材进行的归类分析和整理,而不是对管理业务现状和方法的分析。
OOA(面向对象的分析)模型由5个层次(主题层、对象类层、结构层、属性层和服务层)和5个活动(标识对象类、标识结构、定义主题、定义属性和定义服务)组成。
在这种方法中定义了两种对象类之间的结构,一种称为分类结构,一种称为组装结构。
分类结构就是所谓的一般与特殊的关系。
组装结构则反映了对象之间的整体与部分的关系。
OOA在定义属性的同时,要识别实例连接。
实例连接是一个实例与另一个实例的映射关系。
OOA在定义服务的同时要识别消息连接。
当一个对象需要向另一对象发送消息时,它们之间就存在消息连接。
OOA 中的5个层次和5个活动继续贯穿在OOD(画向对象的设计)过程中。
OOD模型由4个部分组成。
它们分别是设计问题域部分、设计人机交互部分、设计任务管理部分和设计数据管理部分。
一、OOA的主要原则。
(1)抽象:从许多事物中舍弃个别的、非本质的特征,抽取共同的、本质性的特征,就叫作抽象。
抽象是形成概念的必须手段。
抽象原则有两方面的意义:第一,尽管问题域中的事物是很复杂的,但是分析员并不需要了解和描述它们的一切,只需要分析研究其中与系统目标有关的事物及其本质性特征。
第二,通过舍弃个体事物在细节上的差异,抽取其共同特征而得到一批事物的抽象概念。
抽象是面向对象方法中使用最为广泛的原则。
抽象原则包括过程抽象和数据抽象两个方面。
过程抽象是指,任何一个完成确定功能的操作序列,其使用者都可以把它看作一个单一的实体,尽管实际上它可能是由一系列更低级的操作完成的。
数据抽象是根据施加于数据之上的操作来定义数据类型,并限定数据的值只能由这些操作来修改和观察。
OOA、OOD、OOP分别是什么?

OOA、OOD、OOP分别是什么?
什么是⾯向对象分析(OOA)?
"⾯向对象分析是⼀种分析⽅法,这种⽅法利⽤从问题域的词汇表中找到的类和对象来分析需求。
"
什么是⾯向对象设计(OOD)?
“⾯向对象设计是⼀种设计⽅法,包括⾯向对象分解的过程和⼀种表⽰法,这种表⽰法⽤于展现被设计系统的逻辑模型和物理模型、静态模型和动态模型”。
这⾥定义2个要点:
(1)⾯向对象设计导致了⾯向对象分解
(2)⾯向对象设计使⽤了不同的表⽰法来表达逻辑设计(类和对象结构)和物理设计(模块和处理架构)的不同模型,以及系统的静态和动态特征。
什么是⾯向对象编程(OOP)?
”⾯向对象编程是⼀种实现的⽅法,在这种⽅法中,程序被组织成许多组互相协作的对象,每个对象代表某个类的⼀个实例,⽽类则属于⼀个通过继承关系形成的层次结构“
这⾥定义有三个要点:
(1)利⽤对象作为⾯向对象编程的基本逻辑构建块,⽽不是利⽤算法
(2)每个对象都是某个类的⼀个实例
(3)类与类之间可以通过继承关系联系在⼀起。
它们之间的关系基本上,⾯向对象分析的结果可以作为开始⾯向对象设计的模型,⾯向对象的设计结果可以作为蓝图,利⽤⾯向对象编程⽅法最终实现⼀个系统。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6.2面向对象方法学的主要优点
•
•
1.
2. 稳定性好(功能——对象)
•
• •
3. 可重用性好
4. 较易开发大型软件产品 5.
•
1.
•
• • • • •
2.
(1) 定义1 这个定义主要是从面向对象程序设计的角度看“对 象” (2) 定义2 对象是对问题域中某个东西的抽象,这种抽象反映 了系统保存有关这个东西的信息或与它交互的能力。 这个定义着重从信息模拟的角度看待“对象”。
接下来再考虑每个属性的访问权限(即可访问性)。 面向对象程序的一个基本特征就是具有信息隐藏能力,这 同时也是面向对象程序的一个突出优点。通常,不允许从 对象外面直接访问对象的属性,只能通过对象向外界公开 提供的接口访问对象的属性。 但是,父类的某些属性被子类继承之后,在子类中往 往需要频繁地使用这些属性。如果子类使用从父类继承来 的属性时也需要通过接口,则会明显降低效率。因此,这 些属性的访问权限应该是“在本类及其子类中可以直接访 问,超出上述范围则不能直接访问”。在本例中,X坐标 、Y坐标、可见性(Visible)和半径(Radius)等属性的 访问权限就应该是这样的,而起始角度(StartAngle)和 结束角度(EndAngle)这两个属性,因为没有子类需要使 用它们,访问权限应该是“仅在本类中可以直接访问”。
图6.3 实现继承机制的原理
6.4 面向对象建模
• 为了更好地理解问题,人们常常采用建立问题模型的方法。
5.1
一个面向对象的程序实例
为了介绍面向对象的软件工程方法学,我们首先从一个 面向对象的程序设计实例谈起。假设对一个简单的图形程序 的需求如下所述: 在显示器荧光屏上圆心坐标为(100,100)的位置画一 个半径为 40 的圆,在圆心坐标为( 200 , 300 )的位置画一 个半径为 20 的圆,在圆心坐标为( 400 , 150 )的位置画一 条弧,弧的起始角度为 30度,结束角度为120度,半径为50 。 怎样设计上述这个程序呢?
类似地,在圆类中定义了读/写圆心坐标、读/ 写半径和读/写可见性等服务之后,
在弧类中只需定义读/写起始角度和读/写结束 角度等弧类特有的服务。需要注意的是, 虽然在图5.1中圆类和弧类都有名字相同的服务 “显示”和“隐藏”,但是它们的具体功能是不同的 (显示或隐藏的图形形状不同)。 因此,在把弧类作为圆类的子类之后,仍然需要 在这两个类中分别定义“显示”和“隐藏”服务。
图5.1 圆类和弧类
5.1.2 设计类等级
类中定义的服务,是允许施加于该类对象的数据上的操作, 是该类所有对象共享的,并不需要为每个对象都复制操作的代 码。 除了把对象分类之外,还应该进一步按照子类(或称为派 生类)与父类(或称为基类)的关系,把若干个相关的对象类 组成一个层次结构的系统(也称为类等级)。 为了利用继承机制减少冗余信息,必须建立适当的类等 级。 只要不违背领域知识和常识,就应该抽取出相似类的公 共属性和公共服务,以建立这些相似类的父类,并在类等级的 适当层次中正确地定义各个属性和服务。
图5.2 简单图形程序的类等级
5.1.3 定义属性和服务
在上述设计类等级的过程中,已经把需要的属性和 服务分配到类等级的适当层次上了。但是,为了能最终 实现这个程序,还必须进一步定义属性和服务。 1. 定义属性 首先考虑定义属性的问题,所谓定义属性就是确定 每个属性的数据类型和数据结构,同时还要确定每个属 性的访问权限。 参见图5.2,在“位置”类中应该定义属性“坐标” 。由于程序处理的是平面上的点,因此坐标由X坐标和Y 坐标组成。我们用屏幕上的像素作为坐标值的单位,这 样每个坐标值都是整数。根据上述分析,位置类中包含 的属性坐标,由两个简单的整型变量来定义,我们把它 们分别命名为X和Y。
•
• (3) 定义3 • 对象∷=<ID,MS,DS,MI> • 其中,ID • MS • DS • MI是对象受理的消息名集合(即对外接口) • 这个定义是一个形式化的定义。
图6.2 用自动机模拟对象
• 3. 对象的特点
• · 以数据为中心。
• · 对象是主动的。 • · 实现了数据封装。 • · 本质上具有并行性。 • · 模块独立性好。
进一步分析“点”的属性, 一类信息描述了点在哪儿(位置)。 另一类信息描述了点的状态(可见性)。 从位置( Location )类派生出屏幕上的点类,它继承 了位置类中定义的每样东西(属性和服务),并且加进了 该类特有的新内容。
综上所述,得到图5.2所示的类 等级。为简明起见,图中没有列出 读/写属性值的常规服务。注意, 图中用一端为空心三角形的连线表 示继承关系,三角形的顶角紧挨着 基类。
分析需求陈述得知,圆和弧都应该提供在荧光屏 上“画自己”的服务。 所谓画自己,就是用当前的前景颜色在屏幕上显 示自己的形状。 这个例子是一个相当简单的图形应用程序,它的 功能很简单,在需求陈述中只提出了这一项最基本的要 求。 但是,根据常识我们知道,一个图形既可以在屏 幕上显示出来,也可以隐藏起来(实际上是用背景颜色 显示)。 在属性中我们已经设置了“可见性”这个属性来 标志图形当前是否处于可见状态,因此,相应地也应该 提供“隐藏自己”这样一个服务。
第三篇 面向对象方法案例
一、传统的软件工程方法学曾经给计算机软件产业 带来了巨大的进步,使用结构化范型开发的许多中、小规 模的软件项目获得了成功,从而部分地缓解了软件危机。 二、但是,当把结构化范型应用于大型软件产品的 开发时,似乎很少取得成功。 三、此外,使用传统的软件工程方法学开发软件时, 生产率提高的幅度远远不能满足社会对计算机软件日益增 长的需要,软件重用的程度还很低,所开发出的软件产品 仍然很难维护。 四、面向对象的软件开发方法在20世纪60年代后期 首次提出,经过将近20年的发展,这种技术逐渐得到广泛 应用。到了20世纪90年代,面向对象的软件工程方法学已 经成为人们在开发软件时首选的方法学。
物都是对象。
复杂的对象可以由比较简单的对象以某种方
式组合而成。
按照这种观点,可以认为整个世界就是一个
最复杂的对象。
· 按照子类(或称为派生类)与父类(或称为基类)的关系,
把若干个对象类组成一个层次结构的系统(也称为类等
级)。在这种层次结构中,通常下层的派生类具有和上 层的基类相同的特性(包括数据和方法),这种现象称 为继承(Inheritance)。但是,如果在派生类中对某些 特性又做了重新描述,则在派生类中的这些特性将以 新描述为准,也就是说,低层的特性将屏蔽高层的同
1. 这个程序中只涉及两类实体(用面向对象术语说,是 两类对象),它们分别是圆(Circle)和弧(Arc)。 2. 在问题域中有圆类的两个实例和弧类的一个实例。所 谓“实例”也就是具体的对象。 3. 从需求陈述中不难看出,圆的基本属性是圆心坐标和 半径,弧的基本属性是圆心坐标、半径、起始角度和结束角 度。 4. 但是,通常不可能在需求陈述中找到所有属性,还必 须借助于领域知识和常识,才能分析得出所需要的全部属性 。众所周知,一个图形既可以在荧光屏上显示出来,也可以 不显示出来。也就是说,一个图形可以处于两种可能的状态 之一(可见或不可见)。因此,本问题中的圆和弧都应该再 增加一个属性——可见性。
“点”类中的属性“可见性”只有两个可能取的值: true(真,即可见)和false(假,即不可见)。通常把只 能取值true或false的数据类型称为布尔型。我们把可见性 属性命名为Visible。 圆的属性“半径”同样用像素为单位,因此也是整型 的简单变量,我们把它命名为Radius。 弧的属性“起始角度”和“结束角度”都用度为单位 ,在本例中假设角度只取整数值,因此,这两个属性都用 简单的整型变量来表示,我们分别把它们命名为 StartAngle和EndAngle。
在我们这个简单例子中,仅涉及圆和弧两类图形,当开 发更复杂的图形程序时,将涉及更多的图形种类。 但是,无论何种图形都有“坐标”和“可见性”等基本 属性。当然,针对不同图形“坐标”的物理含义可能不同。 例如,对圆来说指圆心坐标,对矩形来说指某个顶点的 坐标。坐标和可见性实质上是荧光屏上一个“点”的属性, 如果我们把这两个基本属性抽象出来,放在点( Point)类 中定义,并把点类作为各种图形类的公共父类,则可进一步 减少冗余信息,并能增加程序的可扩充性。 类似地,读/写坐标和读/写可见性等服务也应该放在 点类中定义。当然,点类中还需要定义其专用的显示和隐藏 服务。
把程序分解成一系列对象,每个对象都既有自己的数 据(描述该对象所代表的实体的属性),又有处理这些数 据的函数(通常称为服务或方法,它们实现该对象应有的 行为)。 不同对象之间通过发送消息向对方提出服务要求,接 受消息的对象主动完成指定功能提供所要求的服务。 程序中所有对象分工协作,共同完成整个程序的功能。 事实上,对象是组成面向对象程序的基本模块。
.1
面向对象方法学概述
面向对象(Object-Oriented,缩写为OO)方法学的出 发点和基本原则,是尽可能模拟人类习惯的思维方 式,使开发软件的方法与过程尽可能接近人类认识 世界解决问题的方法与过程,也就是使描述问题的 问题空间(也称为问题域)与实现解法的解空间(也 称为求解域)
·
认为客观世界是由各种对象组成的,任何事
此外,为了便于使用,通常对象的每个属性都是可以 访问的。 当然,可以访问并不是可以从对象外面随意读/写对 象的属性,那样做将违反信息隐藏原理,也违背由对象主 动提供服务而不是被动地接受处理的面向对象设计准则。 所谓可以访问是指提供了读/写对象属性的服务。
我们可以用图来形象地描绘程序中的对象(严格地说 是对象类),如图5.1所示。 图中用一个矩形框代表 一个对象类, 矩形框被两条水平线段 分割成三个区域, 最上面那个区域中写类 名, 中部区域内列出该类对 象的属性, 下部区域内列出该类对 象提供的服务。
5.1.1 用对象分解取代功能分解 传统的程序设计方法把精力集中于设计解题算法(即处理 数据的过程),因此也称为面向过程的程序设计方法。 这样做实质上也是在用计算机的观点进行程序设计工作。 因为计算机的工作过程是一步一步进行的,为了完成指定的 功能必须告诉它详细的解题步骤,也就是必须向计算机详细 描述解题算法。 解题步骤