面向对象分析
软件工程-面向对象分析
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)类与类之间可以通过继承关系联系在⼀起。
它们之间的关系基本上,⾯向对象分析的结果可以作为开始⾯向对象设计的模型,⾯向对象的设计结果可以作为蓝图,利⽤⾯向对象编程⽅法最终实现⼀个系统。
软件工程概论_8_面向对象需求分析
• 一.面向对象分析模型的组成结构 • 二.面向对象分析模型描述工具 • 三.面向对象分析的基本过程
• 四. 面向对象分析方法
• 五. 小结
一.面向对象分析模型的组成结构
数据模型
属性、操作、协作者
功能模型
类/对象 模型
对象关系模型
使用实例
对象-行为模型
行为模型
二.面向对象分析模型描述工具
1. 用例图
2.面向对象建模 (1)建模与模型 建模是将问题域的解空间定义成一种模型,以帮助系统分析 人员更好地理解问题。 模型是为了理解问题而对问题所做出的一种抽象,而且是对 问题的一种无歧义的描述。模型由一组图示符号和组织这些 符号的规则组成。利用它们来定义和描述问题域中的术语和 概念。 建模的目的主要是为了减少复杂性。 (2)面向对象模型
2) 面向对象分析的五个层次 面向对象分析由五个主要活动组成,即确定类-&-对象、识别 结构、识别主题、定义属性和定义服务(方法)。对于一个复杂 问题的面向对象的模型可用五个层次表示:类-&-对象层、结 构层,主题层、属性层和服务层,见图3.3.8。
主题层 subject level 类-&-对象层object 结构层 structure 属性层 attribute 服务层 serves
•使用具有确切含义的名词。
• 尽量使用能表示类的含义的日常用语作名字,不要使用空洞的或含 义模糊的词作名字。例如,“库房”比“房屋”或“存物场所”更确切。
•必要时用名词短语作名字。
• 为使名字的含义更准确,必要时用形容词加名词或其他形式的名词 短语作名字。例如,“最小的领土单元”、“储藏室”、“公司员工”等 都是比较恰当的名字。
签定保险单 销售统计
客户
面向对象分析
面向对象分析
面向对象分析是计算机科学领域中使用最广泛的一种分析技术,它是一种结构化的分析方法,是系统分析的更新与系统设计的预备工作。
面向对象分析可以帮助我们更好地理解和分析现有系统,并为系统重构提供指导。
面向对象分析是一种以对象为中心,以建模和分析实体、对象和对象之间的关系为主要任务的分析方法。
它的主要目的是将概念抽象为实体,然后利用视图及关系描述它们之间的关系。
面向对象分析包括分析、设计、建模过程,分析过程也称为面向对象分析(OOA)。
面向对象分析强调对对象的分析,对象可以看作对实际世界中的实际事物的抽象。
对象可以由属性和行为组成,属性描述了对象的内部状态,行为描述了它如何处理消息。
在面向对象分析中,这种抽象事物被描绘为类,每个类有一组共享的属性和行为。
面向对象分析和设计的主要工作是抽象建模,确定对象之间的关系,并利用抽象和关系建模系统。
建模可以帮助我们清楚地了解系统结构,以及每个系统元素之间的联系。
一旦建模完成,可以使用模型来设计、分析和实现高级的系统。
面向对象分析是一种结构化的分析方法,用于理解和描述系统的行为,从而有效地构建高质量的系统。
它的关键是建立系统的实体、关系和视图,从而提出系统的结构,并提出系统实现的可行方案。
总体而言,面向对象分析是一种重要而普遍应用的管理技术,它是系统分析和设计过程中的重要组成部分。
对对象的分析有助于进行
更好的系统设计,增强了系统容量,提高了系统灵活性和性能,为组建现代软件系统提供了可行的工具。
软件工程第10章 面向对象分析
10.1 面向对象分析的基本过程
10.1.1.概述
面向对象分析,就是抽取和整理用户需求并建立问题域 精确模型的过程。 面向对象分析过程从分析陈述用户需求的文件开始。 接下来,系统分析员应该深入理解用户需求,抽象出目
标系统的本质属性,并用模型准确地表示出来。 在面向对象建模的过程中,系统分析员必须认真向领域
首先,面向对象分析通过控制读者能见到的层次数目 来控制可见性。
其次,面向对象分析增加了一个主题层,它可以从一 个相当高的层次描述总体模型,并对读者的注意力加 以指导。
10.1 面向对象分析的基本过程
在概念上可以认为,面向对象分析大体上按照下列顺 序进行:
寻找类与对象,识别结构,识别主题,定义属性, 建立动态模型,建立功能模型,定义服务。 但是,分析不可能严格地按照预定顺序进行,大型、 复杂系统的模型需要反复构造多遍才能建成。 分析也不是一个机械的过程。系统分析员必须与领域 专家及用户反复交流,以便澄清二义性,改正错误的 概念,补足缺少的信息。
主要内容
10.1 面向对象分析的基本过程 10.2 需求陈述 10.3 建立对象模型 10.4 建立动态模型 10.5 建立功能模型 10.6 定义服务
10.2 需求陈述
10.2.1. 书写要点
需求陈述应该阐明“做什么”而不是“怎样做”!
应该描述用户的需求而不是提出解决问题的方法。 应该指出哪些是系统必要的性质,哪些是任选的性质。 应该避免对设计策略施加过多的约束,也不要描述系
10.3 建立对象模型
10.3.1. 确定类与对象
类与对象是在问题域中客观存在的,系统分析员的主 要任务就是通过分析找出这些类与对象。 首先找出所有候选的类与对象; 然后从候选的类与对象中筛选掉不正确的或不必
面向对象分析与设计
面向对象分析与设计面向对象分析与设计(Object-oriented analysis and design)是软件工程领域中的一种方法论,用于解决软件系统开发过程中的问题和需求。
本文将对面向对象分析与设计的基本概念、流程和常用方法进行介绍,并附带答案和解析。
第一部分:面向对象分析(Object-oriented analysis)面向对象分析是软件开发过程中的第一步,旨在理解问题域并建立领域模型。
面向对象分析有以下几个重要概念:1. 对象(Object):对象是系统中的一个实体,包含数据和方法。
对象可以是具体的实物、虚拟的概念或一组相关的数据和行为。
2. 类(Class):类是一种抽象的定义,描述了一组具有相同特征和行为的对象。
3. 属性(Attribute):属性是对象的特征,用于描述对象的状态。
4. 方法(Method):方法是对象的行为,用于描述对象可以执行的操作。
面向对象分析的主要流程包括以下步骤:1. 需求收集:收集系统的需求,与利益相关者沟通,了解系统的功能和性能要求。
2. 领域建模:对现实世界的问题域进行抽象和建模,识别出系统中的对象和它们之间的关系。
3. 需求分析与规约:通过使用用例、活动图和状态图等工具对需求进行分析和规约,明确功能和交互细节。
4. 领域模型验证:与利益相关者验证领域模型的准确性和实用性,确保模型能够满足系统需求。
第二部分:面向对象设计(Object-oriented design)面向对象设计是在面向对象分析的基础上,进一步细化领域模型,为系统的实现提供指导。
面向对象设计有以下几个常用方法:1. 类图(Class diagram):类图用于展示类、属性和方法之间的关系。
类图包括类的名称、属性和方法,并通过关联、继承和聚合等关系展示类之间的联系。
2. 对象图(Object diagram):对象图用于展示类的实例和对象之间的关系。
对象图是类图的实例化表示,展示了系统在某一时刻的对象及其特定的属性值。
面向对象系统分析
面向对象系统分析允许在运行时动态地添加或删除对象, 这使得系统更加灵活,能够更好地适应变化。
挑战
复杂性Biblioteka 过度设计性能问题面向对象系统分析涉及的概 念和机制较多,如类、对象、 继承、多态等,学习曲线相 对较陡峭。
面向对象设计鼓励对问题进 行深入思考和抽象,但过度 设计可能导致系统过于复杂, 降低可维护性和可读性。
面向对象系统分析
目录
• 面向对象的基本概念 • 面向对象分析方法 • 面向对象设计原则 • 面向对象系统设计案例 • 面向对象系统分析的优势与挑战
01
面向对象的基本概念
对象与类
对象
现实世界中事物的抽象,具有状态和 行为。
类
对象的抽象,定义了对象的共同属性 和方法。
封装、继承与多态
封装
01
隐藏对象的内部状态,只通过公共接口与外界交互,保证数据
示例
如果有一个方法接受一个动物类 型的参数,那么传入一个狗(动 物的一个子类)类型的对象是完 全合法的。
接口隔离原则
定义
客户端不应该依赖于它不使用的接口。
目的
降低类之间的耦合度,提高系统的可维护性和可扩展性。
示例
一个用户接口不应该依赖于未使用的功能接口,这样可以避 免不必要的依赖和潜在的冲突。
依赖倒置原则
分析类间关系
确定类与类之间的关系,如继承、聚合、关联 等。
设计类的结构
根据需求设计类的层次结构和类之间的组织结构。
系统功能分析
详细描述每个功能的输入、输出 和处理逻辑。
将复杂的功能分解为更小的功能 或操作。
从业务需求中提取系统需要实现 的功能。
功能分解 识别系统功能
功能描述
面向对象的分析方法
面向对象的分析方法面向对象的分析方法是一种软件开发方法,它的主要目标是通过识别和描述系统内部的对象,以及它们之间的关系和行为,来构建高质量的软件系统。
面向对象的分析方法常用于对系统进行分析和设计,能够提高系统的稳定性、可维护性和扩展性。
下面我将详细介绍面向对象的分析方法。
面向对象的分析方法主要包括以下几个方面:1. 抽象:面向对象的分析方法通过建立模型来描述系统中的对象及其特征。
在分析过程中,需要从现实世界中抽象出合适的对象,并确定它们的属性和行为。
通过抽象,可以将系统中的复杂问题简化,并提高对问题的理解和处理能力。
2. 继承:继承是面向对象的分析方法中的一个重要特性。
通过继承,可以在已有的类的基础上创建新的类,并从已有的类中继承属性和方法。
这样可以避免重复编码,提高代码的可重用性和维护性。
3. 封装:封装是面向对象的分析方法中的另一个重要特性。
通过封装,可以将类的属性和方法封装起来,只暴露必要的接口给外部。
这样可以降低系统的耦合度,提高系统的安全性和可靠性。
4. 多态:多态是面向对象分析方法的另一个重要特性。
多态通过将对象的具体类型隐藏起来,只保留对象的抽象类型。
这样可以实现程序的动态性和灵活性,提高系统的可扩展性和可维护性。
面向对象的分析方法是系统开发过程中的一个关键环节,它可以帮助开发者更好地理解和分析系统需求,并将其转化为可执行的软件系统。
在面向对象的分析方法中,常用到的建模工具有UML(统一建模语言),通过使用UML工具,可以将系统中的对象、类、关系和行为进行可视化描述,使开发者更易于理解和交流。
在面向对象的分析方法中,首先需要进行需求分析,明确系统的功能需求和非功能需求。
然后通过抽象、继承、封装和多态等方法,将需求转化为系统的类和对象,并描述它们之间的关系和行为。
在这个过程中,需要充分考虑系统的扩展性和灵活性,以及用户的使用习惯和需求变化。
在进行面向对象的分析方法时,还需要注意一些常见问题。
面向对象分析与设计
面向对象分析与设计一、引言面向对象分析与设计(Object-Oriented Analysis and Design,简称OOAD)是软件工程中的一种方法论,用于解决复杂系统的设计与开发问题。
本文将介绍面向对象分析与设计的概念、原则和过程,并结合实际案例说明其重要性和应用。
二、概念解析1. 面向对象分析(Object-Oriented Analysis,简称OOA):通过识别和描述系统所涉及的对象及其相互关系,以及对象的属性和行为,从而确定系统需求和问题领域的分析方法。
2. 面向对象设计(Object-Oriented Design,简称OOD):基于面向对象分析的结果,通过定义类、抽象数据类型、方法、接口等概念,设计出系统的结构和组织,以及类之间的关系和交互方式。
三、面向对象分析与设计的原则1. 单一职责原则(Single Responsibility Principle,简称SRP):一个类只负责一项职责,保证类的内聚性和高内聚性。
2. 开放封闭原则(Open-Closed Principle,简称OCP):系统中的类、模块等应该对拓展开放,对修改封闭,通过继承、接口等方式实现。
3. 里氏替换原则(Liskov Substitution Principle,简称LSP):所有引用基类的地方必须能透明地使用其子类的对象,即子类必须能够替换基类。
4. 依赖倒置原则(Dependency Inversion Principle,简称DIP):高层模块不应该依赖于底层模块,二者都应该依赖于抽象;抽象不应该依赖于具体,具体应该依赖于抽象。
5. 接口隔离原则(Interface Segregation Principle,简称ISP):客户端不应该依赖于它不需要的接口,接口应该进行细化拆分以适应不同的场景和客户端需求。
6. 迪米特法则(Law of Demeter,简称LoD):一个对象应该对其他对象有尽可能少的了解,减少耦合性,降低系统的复杂度。
三种面向对象方法
三种面向对象方法面向对象方法是一种用于建模和设计软件系统的思考方式,它将实体、行为和关系抽象成对象、方法和属性,使得软件系统更易于理解和维护。
在面向对象方法中,对象是模拟现实生活中的实体或概念,方法描述了对象的行为和功能,属性表示对象的状态和特征。
在这篇文章中,我将介绍三种常用的面向对象方法:面向对象分析(OOA)、面向对象设计(OOD)和面向对象编程(OOP)。
面向对象分析(OOA)是建模软件系统的第一步,它主要关注问题领域中的实体、行为和关系。
在OOA中,分析师通过调查、访谈和观察来收集需求,并将其转化为对象模型,以便更好地理解需求和系统的组成部分。
在面向对象分析过程中,分析师通常使用一些工具和技术来表达需求,例如用例图、类图、状态图等。
通过OOA,分析师可以确保系统具有一致性、完整性和可靠性,从而为后续的设计和编码工作奠定基础。
面向对象设计(OOD)是在OOA的基础上进一步细化和设计软件系统的架构、模块和接口。
设计师需要将对象模型转化为软件设计模式,以便更好地实现系统的功能和需求。
在面向对象设计过程中,设计师通常会使用一些方法和原则来指导设计,例如单一职责原则、开闭原则、依赖倒置原则等。
通过OOD,设计师可以使系统更加模块化、扩展性强和易于维护,从而降低系统的复杂度和风险。
面向对象编程(OOP)是使用面向对象的思维方式和技术来实现软件系统的一种方法。
在OOP中,软件系统由一组对象组成,这些对象通过消息传递和方法调用来协作完成任务。
在面向对象编程过程中,程序员通常会定义类、创建对象,并编写方法来实现系统的功能。
OOP提供了封装、继承和多态等机制,使得程序更易于理解、扩展和重用。
通过OOP,程序员可以实现系统的具体功能,并保证系统具有良好的性能和可维护性。
总的来说,面向对象方法是一种非常有效和实用的软件开发方法,它将系统的复杂性分解为对象、方法和属性,使得系统更易于设计、实现和维护。
通过面向对象分析、设计和编程,开发团队可以更好地了解用户需求,设计系统架构,并编写高质量的代码。
1.3 面向对象的分析方法
1.3 面向对象的分析方法面向对象分析作为一个比较全面的方法,面向对象分析由五个主要步骤组成,即确定类与对象,识别结构,识别主题,定义属性和定义方法。
一旦建立了模型,就可以由五个层次来表示,它们是:主题层主题给出分析模型的总体概貌。
对象层对象是数据及其处理的抽象。
它反映了系统保存和处理现实世界中某些事物的信息的能力。
结构层结构表示问题域的复杂性。
类—成员结构反映了一般——特殊关系,整体——部分结构反映了整体和部分的关系。
属性层属性就是数据元素,可用来描述对象或分类结构的实例,可在图中给出并在对象的存储中定义。
方法层方法是在收到消息后必须进行的处理,在图上定义它并在对象的存储中指定。
一、确定类与对象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 用对象分解取代功能分解 传统的程序设计方法把精力集中于设计解题算法(即处理 数据的过程),因此也称为面向过程的程序设计方法。 这样做实质上也是在用计算机的观点进行程序设计工作。 因为计算机的工作过程是一步一步进行的,为了完成指定的 功能必须告诉它详细的解题步骤,也就是必须向计算机详细 描述解题算法。 解题步骤