面向对象的分析过程

面向对象的分析过程
面向对象的分析过程

面向对象的分析过程

摘要

分析了面向对象技术应用于仿真领域的种种优点,亦即我们选择采用面向对

象的方法进行改造的原因。一些面向对象方法存在的不足。

关键词:仿真,面向对象,岸边集装箱起重机,训练器

面向对象的开发方法是以对象作为最基本的元素,它是分析问题、解决问题的核心。

面向对象=对象(Object)

+分类(classification)

+继承(inheritance)

+通过消息的通信(communication with messages)

从下图中我们可以看出,面向对象的开发方法明显不同。

面向对象的仿真为仿真人员提供了开发模块化可重用的仿真模型的工具,它把系统看成由相互作用的对象所组成,而对象则往往表示现实系统中的真实实体。从而提高了仿真模型的可理解性、可扩充性和模块性,并且便于实现仿真与计算机图形和人工智能的结合。采用面向对象的方法,原因如下:

1.可理解性

面向对象仿真对设计者、实现者,以及最终用户来说都改进了仿真的可理解性。因为仿真系统中的对象往往直接表示现实系统中的真实实体,这些实体在面向对象的仿真系统中可以用外观上类似于人们熟悉的实际系统的对象的图形或图像来表示,用户可以通过图形界面与仿真模型进行交互,利用图形或图像来直接建立仿真模型,这对于熟悉实际系统的用户来说是很容易理解的。

2.可重用性和可扩充性

在面向对象的仿真中,可以建立起一个模型库用以保存以前建立的模型,模型库中的模型可以作为建立新模型的可重用构件,通过面向对象技术内在的继承机制可以容易地和系统地修改现有的对象(类)以创建新的对象。并且可以加入现有的类库中。类库提供了仿真建模所需要的一般设施。通过修改现有的类,可以建立各种应用中所需要的特殊对象。

3.模块性

面向对象的仿真是模块化,特殊的过程来寻找相应的信息,不会影响其它的对象。

4.图形用户界面

对象作为模块,对象的所有信息都保存在该对象中,在面向对象的仿真系统中往往表示实际系统中的真实实体,因而在系统中可以用相似的图形或图像来表示,因此更便于建立非常直观的图形用户界面,用户可以直接在屏幕上建立系统的图形概念,直观地构造仿真模型。

5.仿真与人工智能的结合

在面向对象的仿真中,对象封装了它们的功能,而功能可以包含智能。因而利用人工智能和专家系统的方法可以在功能中嵌入智能,使对象也能具有决策和学习能力。仿真与人工智能的结合可以增强仿真的能力。在基于知识的仿真系统和专家仿真系统方面,许多学者己进行了广泛的研究,表明了人工智能和专家系统在辅助仿真建模、仿真结果的解释和仿真模型灵敏度分析等方面的重要作用。

6.并行仿真

由于对象封装了所有的信息,因而每个对象都能分配给自己的处理程序执行它的功能。这样,对象在某种程序上可以相对独立的运行。正是由于对象之间的这种相对独立性,产生了并行仿真执行的可能性。仿真的并行执行可以极大的降低仿真时间,允许仿真更多的对象,能够实现更详细的仿真。

3. 2面向对象的方法选择

3. 2. 1方法比较

八十年代末以来,随着面向对象技术成为研究的热点出现了几十种支持软件开发的面向对象方法。下面介绍几种经典的分析和设计方法:

1 .OMT/Rumbaugh

OMT(Object Modeling Technique)方法最早是由Loomis,Shan和Rumbaugh在1987年提出的,曾扩展应用于关系数据库设计。J. Runmbaugh在1991年正式把OMT应用于面向对象的分析和设计。这个方法是在实体关系模型上扩展了类、继承和行为而得到的。

OMT覆盖了分析、设计和实现三个阶段。OMT包括了一组定义的很好的并且相互关联的概念,他们是类(class)、对象(ob ject)、一般化(generalization)、继承(inheritance)、链(link)、链属性(link attribute)、聚合(aggregation)、操作(operation)、事件(event)、场景(scene)、属性(attribute)、子系统(subsystem)、模块(module)等。

OMT方法包含四个步骤:分析、系统设计、对象设计和实现。OMT定义有三种模型,这些模型贯穿于每个步骤,在每个步骤中被不断的净化和扩充。这三种模型是: 对象模型,用类和关系来刻画系统的静态结构。

动态模型,用事件和对象刻画系统的动态特性。

功能模型,按照对象的操作来描述如何从输入给出输出结果。

OMT是一种比较成熟的方法,用几种不同的观念来适应不同的建模场合。但应用所有的OMT技术来建立一个一致的模型是非常困难的,而且各阶段三个模型之间的关系也不是十分清晰。为建立一个一致的模型,OMT的许多概念和语义还需要形式的定义。

2. OOD/Booch

OOD(Object Oriented Design)方法是Grady Booch从1983开始研究,1991年后走向成熟的一种方法。Booch方法在面向对象的设计中主要强调多次重复和开发者的创造性。方法本身是一组启发性的过程式建议。方法并不依从硬性的条件限制,OOD的一般过程如下:

1)在一定抽象层次上标识类与对象。

2)标识类与对象的语义。

3)标识类与对象之间的关系。

4)实现类与对象。

这个过程是递归的。设计过程从发现类和对象,形成问题域的字典开始,直到不再发现新的抽象与机制,或者说,所有发现的类和对象己经可以由现有的复用类和对象实现

为止。

OOD为开发者提供了丰富的图形表示。从不同的侧面观察模型都可以获得模型在某一方面特性的丰富视图。OOD方法并不是一个开发过程,只是在开发面向对象系统时应遵循的一些技术和原则。OOD方法是从外部开始,逐步求精每个类直到系统被实现。它的缺点在于不能有效的找出每个对象和类的操作。

3. RDD/Wirfs一Brock

RDD(Responsibility-Driven Design)方法是Wirfs-Brock在1990年提出的。这是一个按照类、责任以及合作关系对应用进行建模的方法。RDD方法分为探索阶段和精化阶段。ftDD的设计规范主要包括:类层次图、合作图、类规范、子系统规范、合同规范。RDD是一种用非形式的技术和指导原则开发合适的设计方案的设计技术。寻找类及其特性的策略主要依赖设计者的个人技巧。RDD用交互填写CRC卡的方法完成设计,这对大型系统设计不太适用。RDD也引入了一些新的概念和技术,例如合同、子系统等,使得开发过程可以并发完成。

RDD采用传统的方法确定对象类,有一定的局限性。另外,均匀的把行为分配给类也是十分困难的。

4. GOAD/Coad一Yoordon

OOAD(Object-Oriented Analysis and Design)方法是由Peter Coad和Ed Yourdon在1991年提出的。这是一种逐步进阶的面向对象建模方法。OOA使用了基本的结构化原则,并把他们同面向对象的观点结合起来。OOA方法主要包括下面五个步骤:确定类与对象、标识结构、定义主题、定义属性、定义服务。其结果是结构化的图文挡。

模型自顶向下包括五个层次:

主题层(只有主题);

类与对象层(上层中加入类与对象):

结构层(上层中加入结构);

属性层(上层中加入属性);

服务层(上层中加入服务);

OOA没有特别的支持来刻画对象的动态特性。

OOA完成系统分析。OOD负责系统设计。OOD包括四个步骤:

1)设计问题域(细化分析结果);

2)设计人机交互部分(设计用户界面);

3)设计任务管理部分(确定系统资源的分配):

4)设计数据管理部分(确定持久对象的存储)。

OOA把系统横向划分为五个层次,OOD把系统纵向划分为四个部分,从而形成一个清晰的系统模型。

5.OOSE/Jacobson

OOSE(Object-Oriented Software Engineering)是Jacobson在1992年提出的一种用例驱动的面向对象开发方法。

每个用例都是使用系统的一条途径。用例的一个执行过程可以看作是用例的实例。系统开发是一个复杂的任务。通过在不同层次逐步构造模型可以控制这种复杂性。

OOSE开发过程中有五种模型,这些模型是自然过渡和紧密祸合的。包括:需求模型、分析模型、设计模型、实现模型、测试模型。DOSE是一种实用的面向对象的系统开发方法。

其中,Booch, Coad/Yourdon, OMT,和Jacobson的方法在面向对象软件开发界得到了广泛的认可。特别值得一提的是统一的建模语言UML (Unified Modeling Language),该方法结合了Booch, OMT,和Jacobson方法的优点,统一了符号体系,并从其它的方法和

工程实践中吸收了许多经过实际检验的概念和技术。UML现在是一个国际标准,它正在对象管理小组(Object Management Group)的指导下进行修订和扩展。准确的说,UML是面向对象分析与设计的一种标准表示。

3. 2. 2 UML及其工具介绍

UML作为用于创建系统的逻辑模型的一般语法,通常随着在分析和设计期间对各种要点的理解,来描述计算机系统。它独立于其他任何特定的目标语言、软件工程或工具,但它具有充分的一般性和灵活性,用用户定义的扩展能对其进行裁剪,以适合几乎所有的语一言、工具或过程需求。对我们使用者来讲,UML就是一组标准化了的标记模型、设计的符号。更具体的说,实际上就是一些图。所谓的使用UML描述设计,展现的就是一系列相互协调的图。UML共有五类九种图,最重要的就是四种图,也就是UML语法中最重要的四种模型:

1)用例图:用用例捕捉用户使用系统的方式。以用户和开发者能理解的方式,用这样的用例形成对计算机系统的需求的外在定义。

2)类图:用类图定义系统的静态结构模型。静态结构模型识别对象、类以及他们之间的关系。

3)交互图(通常为顺序图):用交互图捕捉功能需求。把他们用作工具,用以帮助决定怎样在类(对象)间分布支持用例所必需的功能。他们也可以作为一种机制,用一种方式把必需的系统功能映射到对象上,以产生在功能上的内聚的、可维护的、可复用的和可扩展的类。

4)状态(动态)图:用状态图捕获系统的动态视图。构成模型的状态图表示系统状态上的功能性依赖。从以对象为中心的观点(而不是以用例为中心的观点)来看,他们也表示系统的功能。这有助于进行详细设计,以确保对操作的条件限制进行正确地编码、对封装动态状态的类编码而言,这也体现了可维护性、内聚和健壮性。忽略了这点,整体上就丧失了对各个体的功能项的深入理解。比较常用的两种UML工具分别是:Rational公司的Rose,一种是微软公司的

Vision Rose一度成为UML的代名词,但由于Visio和微软的Office套件的结合比较紧密,便于生成文档报告,后者更为流行。在“岸边集装箱起重机”训练器的仿真建模中我们应用Visio作为辅助工具。

3. 3用例建模

面向对象分析由三个步骤组成:

用例建模:用一个用例图(use-case diagram)和相关的情景形式表示这个信息。这个步骤有时称为功能建模,他在很大程度上是面向行为的。

类建模:确定类和他们的属性以及类之间的相互关系和交互作用。以类图的形式表示这个信息。这个步骤很大程度上是面向数据的。

动态建模:确定由每个类或子类发出的或对他们进行的行为(动作)。以状态图的形式表示这个信息。这个步骤是面向行为的。

第一步是收集用户的需求,用用例描述岸边集装箱起重机的工作情景。根据我们对现场的观察,相关资料的查阅,以及与用户的沟通,最终得到系统的用例图。

3.4面向对象的软件过程

软件工程过程规定了在获取、供应、开发、操作和维护软件时,要实施的过程、活动和任务。其目的是为各种人员提供一个公共的框架,以便用相同的语一言进行交流。这框架由几个重要的过程组成,这些主要过程包含获取、供应、开发、操作和维护软件所用的基本的、一致的要求。软件工程的开发过程可分为瀑布模型法、原型法、螺旋模型法、喷泉模型法等。

喷泉模型是一种以用户需求为动力,以对象作为驱动的模型,适合于面向对象的开发方法。它克服了瀑布模型不支持软件重用和多项开发活动集成的局限性。喷泉模型使开发过程具有迭代性和无间隙性。迭代意味着模型中的开发活动常常需要多次重复,在迭代过程中,相关功能不断的随之加入演化的系统,完善软件系统。无间隙是指在分析、设计、实现等开发活动之间不存在明显的界限。也就是说,它不像瀑布模型那样,需求分析活动结束后刁’开始设计活动,设计活动结束后刁‘开始编码活动,而是允许各开发活动交叉、迭代地进行。这也体现了面向对象开发技术在缩短开发时间、降低开发费用方面的优越性。如图1-3描述了面向对象的开发过程。

图I-4则更为详细的描述了面向对象软件过程(OOSP)的生命周期,它由一系列过

程模式组成。

1. 4面向对象技术在仿真领域的研究现状与发展

进入90年代以来,面向对象仿真技术的研究和开发有了惊人的进步,目前在许多领域开发的仿真建模语一言和环境大部分支持OOS (Object Oriented Simulation)。在通信系统、计算机系统、电力系统、军事系统、环境和生态系统等领域已经开发出不少面向对象仿真环境,例如:多媒体图形仿真,建立大规模多用户3D应用的分布式交互仿真环境等。现在许多面向对象语言都支持仿真类库的开发,有时,也可以使用一些特殊的面向对象仿真语一言和仿真环境,这些仿真语启‘和环境还提供了对数据库及其它软件和硬件设备的集成和通信工具。美国Carnegie Mellon大学首先开始研究基于知识的仿真系统(KBS),相继推出了仿真建模专家系统(ESS),自动生成仿真模型的专家系统(MGES)等。近十几年来,我国的面向对象仿真研究、开发和应用也有很大的进展,支撑OOS的工具己不少实现商品化了。例如:(1)网络仿真技术被用在基于共享的仿真环境,如虚拟工厂教学系统;(2)面向对象仿真在处理复杂系统模型时,是一个极好的工具。将这类模型分成几个子模型,做到仿真程序结构与真实系统结构相似。如解决互相联系的异步电动机组的仿真控制问题等。同时,在科技、生产、社会各方面面向对象仿真技术的应用,使仿真技术的应用能力拓展,渗透性增加,无处不在,无孔不入。

第三章面向对象仿真建模

面向对象的仿真(Object-Oriented Simulation)在理论上突破了传统仿真方法的观念,它根据组成系统的对象及其相互作用关系来构造仿真模型,模型的对象通常表示实际系统中相应的实体,从而弥补了模型和实际系统之间的差距。面向对象的仿真具有内在的可扩充性和可重用性。因而为仿真大规模的复杂系统提供了极为方便的手段。仿真建模的主要任务是构造能够反映系统的结构和行为的模型,构造仿真模型的一种自然的方式是使模型的结构尽可能与实际系统的结构一致,因而要求构造模型的基本模块与实际系统的组成部分相对应,面向对象的仿真提供了实现这种建模方法的途径。

3. 1面向对象的基本概念

面向对象方法是一种运用对象、类、继承、封装、聚合、消息传递、多态性等概念来构造系统的软件开发方法。这种方法是计算机的求解更接近人的思维方式。它使得软件开发的设计阶段更加紧密的与实现阶段相联系。

3.1.1对象

对象是现实世界中一个实际存在的事物,他可以是有形的,也可以是无形的。对象是构成世界的一个独立单位,它具有自己的静态特征和动态特征。静态特征即可以用某种数据来描述的特性,动态特性即对象所表现的行为或对象所具有的功能。

一个对象由一组属性和对这组属性进行操作的一组服务构成。

属性是用来描述对象静态特性的一个数据项。

服务是用来描述对象动态特性的一个操作序列。

一个对象可以有多项属性和多项服务。一个对象的属性和服务被封装成一个整体,对象的属性值只能由这个对象的服务存取。

3. 1 .2类

类是具有相同属性和服务的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分。

在面向对象编程语一言中,类是一个独立的程序单元,它应该有一个类名并包括属性说明和服务说明两个主要部分。类的作用是定义对象。类与对象的关系如同一个模具与用这个模具铸造出来的铸件之间的关系。类给出了属于该类的全部对象的抽象定义,而对象则是符合这种定义的一个实体。所以一个对象是一个类的实例。

事物既具有共同性,也有特殊性。运用抽象的原则舍弃对象的特殊性,抽取其共同性,则得到一个适应一批对象的类。

同时,我们也可以这样来理解类与对象的概念。现实世界中的事物可分为两大类,即物质和意识。物质表达的是具体的事物;意识描述的是某一抽象的概念。例如“自行车”和“这辆白色的自行车”,“这辆白色的自行车”是物质,它是具体的客观存在;“自行车”是意识,它是一个抽象的概念,是对客观存在的事物的一种概括。这些现实世界中的事物可直接映射到面向对象中的“对象”,现实世界中的意识可对应面向对象系统中的抽象概念一一“类”。“自行车”在面向对象系统中可用自行车类来表示,“一辆白色的自行车”在面向对象系统中则是一个具体的对象,是自行车类的一个实例。

3. 1. 3封装、信息隐藏

封装是面向对象方法的一个重要原则。它有两个含义:第一,把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位(即对象);第二个涵义也称作“信息隐藏”,即尽可能隐藏对象的内部细节,对外形成一个边界(或者说形成一道屏障),只保留有限的对外接口使之与外部发生联系。这主要是指对象的外部不能直接的存取对象的属性,只能通过几个允许外部使用的服务与对象发生联系。确切的说,封装就是把对象的属性和服务结合成一个独立的系统单位,并尽可能隐蔽对象的内部细节。

3. 1. 4消息

消息就是向对象发出的服务请求。当一个对象给另一个对象发送消息时,发送者请求消息接受者执行指定的操作,并(有可能)返回信息。当接受者接收消息时,它以它所知道的方式执行被请求的操作。这样的请求不规定如何执行一个操作。来自发送者的这种信息总是被隐藏的。

3. 1. 5继承、泛化

继承是面向对象的一个重要特色,是代码重用的重要方法。继承关系是子对象可以完全或部分的复用父对象的属性和操作。子对象可以用自己的操作替代父对象的操作。继承可能会带来另一个问题一一多态,这在下面阐述。

泛化是较通用的类和较具体的类之间的一种关系,子类是超类的一个种类,子类的一个对象可以在超类被允许的任何地方时用。

泛化是“is a”关系。泛化使得重新陈述已经定义的特性变得不必要了,为超类定义的属性和操作可以在子类中重用,子类被成为继承了他的父类的属性和方法。

聚合和组合

如同世间万物存在着千丝万缕的联系,作为现实世界的反映,对象相互之间也存在着相互关联的关系。聚合是关联的“一部分”关系(即“is part of" )。表示超集类和子集类之间的全体与部分关系。一个超集类包含一个自己类(或一组类)。

这个包含特性可以是强的(值聚合)或弱的(引用聚合),在UML中,值聚合成为组合,而引用聚合成为聚合。

从系统建模的观点看,聚合是一种特殊的并含有其他语义的关联。特别地,聚合是传递的和反对称的。

组合有另外一个存在依赖特性,一个子集类的对象不能在没有被连接到其他超类对象的情况下存在,这就意味着如果一个超集对象被删除,则他的自己对象也必须被删除。多态

多态:不同的对象可以以不同的方式响应同一消息,是对象间可以交互而不需要知道他们的确切类型。

表现在程序实现上,就是不同的对象可以调用相同名称的函数,并可导致完全不同的行为的现象,称之为多态。这大大提高了我们解决复杂问题的能力。在代码实现时,它

常用虚函数来实现。

继承带来多态,绑定操作的工作必须延迟到运行是进行,这就是动态绑定。多态是通过动态绑定实现的。

3. 4类建模

在这个步骤,提取类和他们的属性。确定类的一个方法是从用例推断他们,即仔细研究全部情景,不管是正常的还是异常的,并确定在用例中发挥的作用。它属于系统的静态特征。我们在找到了类之后,要确定其属性、操作,以及类之间的关系。在面向对象建模中,这是非常重要、非常关键的一步。类的提取,类之间关系的确定,将直接影响后面代码的实现。

3. 4. 1类提取

识别对象是任何面向对象方法中最重要也是最困难的一步。通过同问题域专家的交互式对话在问题域中识别所有的“潜在对象”。在寻找对象的尝试中,正确的运用抽象原则,舍弃那些与系统责任无关的事务,同时,对于与系统责任有关的事务,并不是把他们的任何特征都在相应的对象中表达出来。发现对象以后,经过分析,我们提取出有用的属性,以及相关的方法,将其封装在一个类中。

在类提取时,我们要按照一定的原则,选取合适的粒度和层次。根据类描述的抽象层次的不同,它们的粒度是不同的。简而言之,避免大类长方法,也就是说要避免包含许多方法、许多属性的大类。最重要的是要有一个良好的类层次结构。

3. 4. 2聚合

图。-4中,菱形实心箭头个表示的是类之间的聚合关系。箭头指向整体类,另-端则是部分类。聚合关系也称为整体一部分关系,组装一部分关系。识别聚合关系的常用方法是寻找“由…构成”,“包含”,“是…的一部分”等词句。聚合减少了复杂性。

我们可以看出,在岸边集装箱起重机系统中存在的聚合关系有:

1.训练系统由装卸设备和装卸设备组成;

2.岸边集装箱起重机是由大车、小车、吊具、大梁俯仰、指示灯组成的:

3.大车运行机构和夹轨器是大车的一部分;

4.吊具是由旋锁、导板、钢丝绳组成的。

3. 4. 3继承

一个类是可以独立的,也可以位于一个继承层次,继承层次由一些具有父子关系的类组成。继承是一种非常方便高效的机制,通过创建子类,对父类进行特化或扩展。图中,空心三角形箭头则表示泛化/特化关系,即继承关系,继承允许类之间共享同一代码。

在图3-4中,泛化被画成连接到父类伤得连线端点上的一个空心三角形。也就是说,带空心三角形的箭伞示继承关系。箭头指向父类,另一端指向子类。子类继承了父类的属性和操作。值得注意的是,继承作用到类上而不是对象上,而且它作用到类型上而不是值上。在“岸边集装箱起重机”系统中的泛化特化:

1.装卸设备父类有岸边集装箱起重机类和龙门起重机类两个子类;装卸工具类的子类一龙门起重机类,在此处设置该子类,是为了今后开发“龙门起重机仿真训练器”留下接口,在以后的开发中,利用代码重用,可以大大降低开发成本,缩短开发时间,充分体现面向对象研究方法的优越性。

2.船舶类、集卡类、集装箱类继承了装卸工具类中承载能力属性、位置属性等,在子类中不需要再对这些属性进行定义;

3.集装箱类根据编号方法不同又有板上集装箱类,板下集装箱类,以及一种特殊的舱盖板类;

4.指示灯父类有着箱灯类,开锁灯类,闭锁灯类三个子类。着箱灯类、开锁灯类、闭锁

灯类中无需再对状态属性进行定义,因为他们继承自指示灯类,在指示灯类中已经做了定义。

3. 4. 4封装和数据隐藏

面向对象编程中模块的基本单元是类,通过类这种机制,我们将数据和处理这些数据的过程封装为一个有机的整体一一类。

在类图中,每个类单元中间为他们的属性,第三栏为他们的处理属性及操作。如大梁俯仰类,我们将其运动速度属性、俯仰角度属性以及拉起大梁操作、放下大量操作封装在一个单元中,封装在其中的属性是隐藏的,并对不隐藏的封装成员函数提供支持。前面的“#”表示protected,“一”表示private,“+”表示publico public即对用户是可见的。private 对用户是不可见的。接口暴露给用户,而实现对用户隐藏。面向对象语言中的类是支持信息隐藏的模块。c++语言使用关键字public和private来对类的属性和操作进行存取访问控制,其中public用于显示类的接口,private关键字用于隐藏类的实现。

3. 4. 5多态

多态意为拥有多种形态。在面向对象语言中,多个不同的函数可以具有现同的函数名。在继承层次结构中,所有的类,包括父类及其一切子类,提供他们自己的适当版本的多态方法是常见。多态使得共享的代码可以被剪裁,以适应每一单个类的特殊情况。

如图3-4类图中所示,装卸工具类的移动处理,与其子类船舶类、集卡类、集装箱类的移动处理都是各不相同的,所以在装卸工具类中我们仅定义出该函数,而是在其子类中以相同的函数名、不同的方法实现。

6. 2面向对象方法的不足

在开发中,我们发现面向对象模型比以往的模型有了很大的进步,显示出了种种优越性,面向对象的仿真更趋方便,逼真度高。虽然避免了结构化法方法的缺陷,但也带来了一些新的问题:

1.对象之间的联系是一种点对点的直接联系,当系统中对象数目增加时,通讯链接数将以平方级激增。也就是说抽象类时,类的数目不能过多,在构造类图时,层次不能过多,要控制好粒度。同时,类实例化时要控制好数目,以减少系统的复杂度及冗余度。例如:根据原型系统,最初分为前大梁类与后大梁类,但是我们发现,这增加了设计的复杂性,带来了许多开销,同时在使用CRC卡进行排列模拟时发现,前大梁类与后大梁类使用的频度不高,而且与其他类的联系也比较相似,于是将其合并为大梁类。

2.为支持通讯,每个对象实体都要维护一个包含所有对象实体功能服务信息的功能服务信息库,这部分信息不但重复,而且还要保证其一致性。这些开销都损害了系统的效率。例如:在吊具对象中要包含大车对象、小车对象、大梁对象等等的功能服务的信息库,而小车对象中同样也要包含这些。

3.更大的问题是对象的接口没有一致的标准,造成向系统中扩充对象时的随意与不规范,不利于系统的维护以及对象的复用。例如:整个系统是由一个个开发小组进行的,虽然大家采用的是同一开发语言,遵循同一个系统分析、系统设计文档,但是大家的编程习惯不同、造成编码也会有所不同。

4.对象方法项目管理存在一定困难。在通过“逐步精化”的对象开发中,各开发阶段之间没有清晰的边界,而且项目文档也是连续进行的。所以对进行分工与任务划分带来一定的麻烦。

6. 3未来发展方向

面向对象的仿真是计算机仿真领域中热点。而且,国内外学者对计算机仿真技术的研究正方兴未艾,不断有新的仿真技术思想和研究成果被提出。分布式仿真的加入,专家系统的引进,都将使仿真系统的功能更为强大,与现实世界的相似度越高。可以预见,随着

现代科技的发展,计算机仿真技术必将获得更大的发展和应用。

面向对象分析与设计简答题

1、什么面向对象? 面向对象不仅是以些具体的软件开发技术与策略,而且以一套关于如何看待软件系统与现实世界的关系,以什么观点来研究问题并进行求解,以及如何进行系统构造的软件方法学。 2、软件开发方法学的基本方法有哪些? 1)软件工程和瀑布方法学2)新方法学:螺旋式、迭代式、递增式、合并式3)面向对象方法学:UML、RUP、XP 3、为什么需要OOA、OOD。 OOA就是运用面向对象的方法进行需求分析,OOA加强了对问题域和系统责任的理解,有利于人员之间的交流,对需求变化的适应性较强,很好的支持软件复用。 OOD就是运用面向对象的方法进行系统设计,OOD.符合人们习惯的思维方法,便于分解大型的复杂多变的问题;易于软件的维护和功能的增减;可重用性好;与可视化技术相结合,改善了工作界面。 4、从概念层次、规格层次、实现层次三个角度如何理解对象的概念? 从概念层次来看,一个对象就是一系列的责任; 从规格层次来看,一个对象是一系列可以被其他对象或该对象自己调用的方法;从实现层次来看,一个对象是一些代码和数据。 5、如何绘制类图和对象图?简述其步骤。 类图绘制:1发现类,找到备选类,确定候选类2关联分析,确定关联关系,多重性分析3职责分析4限定与修改,导航性分析,约束,限定符; 对象图绘制:1发现类和对象2对其细化,分析,确定关系。 6、简述重定义方法与重载的区别。 重定义:1参数列表必须完全与被重写的方法相同2返回类型必须一直域被重写的方法的类型相同3访问修饰符的限制一定要大于被重写方法的访问修饰符4重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查性异常:重载:1必须有不同参数列表2可以有不同的返回类型,只要参数列表不同即可3可有不同访问修饰符4可抛出不同的异常。 7.简述抽象方法与虚方法的联系与区别 虚方法有一个实现部分可以为子类实现有共同的方法,并为派生提供了覆盖该方法的选,抽象方法只是强制派生覆盖方法;抽象方法只能在抽象类中声明,而虚方法不是;抽象方法不能声明方法实体,虚方法可以;包含抽象方法的类不能实例化,但虚方法可以。 8、简述使用继承的规则。 1)、不要过度使用;2)、子类应是超类的一个类型;3)、子类应是超类的扩展; 4)、尽量少从具体类继承,最好继承接或抽象类。

面向对象分析与设计

第三章 UML是一种建模语言,用于对软件系统制品进行规约。可视化构造和文档化,也可以用于业务建模以及其他非软件系统的建模。因此他只是一种建模语言,而不是一种建模方法 UML用于建立系统的分析模型和设计模型,而不是用于编程 UML的主题部分并不是一种形式化语言,它只是部分的采用了形式化语言的定义方式,而且也不是严格的形式化 第四章 抽象是面向对象方法中使用最为广泛的原则: 1:系统中的对象是对现实世界中事物的抽象 2:类是对象的抽象 3:一般类是对特殊类的抽象 4:属性是事物静态特征的抽象 5:操作是事物动态特征的抽象 粒度控制: 人在面对一个复杂的问题时,不可能在同一时刻纵观全局,又能洞察秋毫。因此需要控制自己的视野;考虑全局时,注重其大的组成部分;暂时不去详细考察每一部分的具体细节;考虑某个部分的细节时暂时撇开其余部分和宏观上的问题,这就是粒度控制。 行为分析: 采用如下行为分析原则,以控制行为的复杂性: 以对象为单位描述系统中的各种行为; 通过消息描述对象之间的行为依赖关系 认识行为的起因,区分主动行为和被动行为 认识系统的并发行为 用况图: 把用况、参与者以及它们之间的关系用一些图形符号进行可视化表示, 便得到用况图(use case diagram)

用况图是直接描述需求的,因此它是一个需求模型 模型图中表达不尽的信息,需要以文字和表格等方式做进一步描述,这就是模型规约。 OOA与OOD的关系: 不同的目标、内容和抽象层次: 通过OOA和OOD所得到的系统模型分别成为OOA模型和OOD模型,它们都是对系统的抽象描述,但是属于不同的抽象层次。 OOA的主要内容是研究问题域和系统责任,运用面向对象的观点发现问题域中与系统责任有关的对象,认识对象的内部特征和各类对象之间的关系,目标是建立一个直接映射问题域,符合用户需求的OOA模型。 OOD的主要内容是以OOA为基础,针对选定的实现平台进行系统设计,目标是产生一个能够在选定的软硬件平台上实现的OOD模型。 系统的体系结构是对系统的部件和连接部件以及这些部件通过连接件进行交互的规约。 第五章 需求分析(requirements analysis)是软件工程中的经典术语之一,其确切含义应该是对用户需求进行分析,旨在产生一份明确、规范的需求定义。 无论是结构化方法中的数据流图还是面向对象方法中的类图,都不是直接描述用户需求,而是描述了一个满足用户需求的系统模型。确切的讲,这些工作应该叫做系统分析 系统边界(system border)是指系统内部的所有成分与系统以外各种事物之间的分界线。在系统边界以内,是系统本身包含的全部对象;在系统边界以外,是与系统进行信息交换的各种事物,即人员、设备和外系统等各种参与者。 系统成分是指在系统模型中给出定义并且在程序中加以实现的系统元素。

面向对象系统分析与设计试卷与答案

面向对象分析与设计试题B卷 一、单项选择题( 在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号。每小题1 分,共20 分) 3.下列不属于面向对象技术的基本特征的是()。 A. 封装性 B. 模块性 C. 多态性 D. 继承性 4. 面向对象程序设计将描述事物的数据与( ) 封装在一起,作为一个相互依存、不可分割的整体来处理。 A. 信息 B. 数据隐藏 C. 对数据的操作 D. 数据抽象 5. 关于面向对象方法的优点,下列不正确的叙述是()。 A. 与人类习惯的思维方法比较一致 B. 可重用性好 C. 以数据操作为中心 D.可维护性好 8. 下列不属于类的成员函数的是( )。 A. 构造函数 B. 析构函数 C. 友元函数 D. 拷贝构造函数 9. 继承机制的作用是( )。 A. 信息隐藏 B. 数据封装 C. 派生新类 D. 数据抽象 14. ()是从用户使用系统的角度描述系统功能的图形表达方法。 A. 类图 B. 对象图 C. 序列图 D. 用例图 15. ( ) 是表达系统类及其相互联系的图示,它是面向对象设计的核心,建立状态图、协作图 和其他图的基础。 A.对象图 B. 组件图 C. 类图 D. 配置图 16.()描述了一组交互对象间的动态协作关系,它表示完成某项行为的对象和这些对象 之间传递消息的时间顺序。 A.对象图 B. 协作图 C. 状态图 D. 序列图 17.()就是用于表示构成分布式系统的节点集和节点之间的联系的图示,它可以表示系 统中软件和硬件的物理架构。 A. 组件图 B. 协作图 C. 状态图 D. 配置图 18. 在用UML进行数据库的分析与设计过程中,( ) 就是进行数据库的需求分析,使用用 例图、类图、顺序图、活动图等建立业务模型。 A. 逻辑数据模型设计 B 业务Use Case模型设计 C. 物理数据模型设计 D. 物理实现设计 19. 使用UML进行关系数据库的()时,需要设计出表达持久数据的实体类及其联系,并把它们映射成为关系数据库表(Table)、视图(View)等。 A. 业务Use Case模型设计 B. 逻辑数据模型设计 .

uml《面向对象的分析与设计》考题与答案

《面向对象的分析与设计》练习题 一、选择题 1.UML 语言不支持的建模方式有(D )。 A. 静态建模 B.动态建模 C. 模块化建模 D. 功能建模 2.一个设计得好的OO系统具有( B )。 A. 低内聚、低耦合的特征 B.高内聚、低耦合的特征 C. 高内聚、高耦合的特征 D.低内聚、高耦合的特征 3.下列不属于面向对象技术的基本特征的是(B)。 A. 封装性 B. 模块性 C. 多态性 D. 继承性 4. 面向对象程序设计将描述事物的数据与( C ) 封装在一起,作为一个相互依存、不可分割的整体来处理。 A. 信息 B. 数据隐藏 C. 对数据的操作 D. 数据抽象 5. 关于面向对象方法的优点,下列不正确的叙述是(C )。 A. 与人类习惯的思维方法比较一致 B. 可重用性好 C. 以数据操作为中心 D.可维护性好 6.用例之间的关系不包括以下哪种关系?D A.泛化 B.包含 C. 扩展 D. 聚集和组合 7.顺序图中不包括以下哪种元素?(A) A.用例 B. 对象 C. 生命线 D. 消息 8. 用例图中不包括以下哪种元素?(B) A. 用例 B. 类 C. 参与者 D. 关联 9. 继承机制的作用是( C )。 A. 信息隐藏 B. 数据封装 C. 派生新类 D. 数据抽象 10. 面向对象方法学中,对象之间仅能通过(C)相联系。 A. 类 B.抽象 C. 消息 D. 封装 11. 脚本与用例之间的关系类似与(A)之间的关系。

A. 对象与类 B. 参与者与用例 C. 顺序图和抽象类 D. 消息和对象 12. 下列元素中,(D )不属于消息的组成。 A. 提供服务的对象 B. 服务 C. 输入信息 D. 事件 13. (D )描述了一组交互对象间的动态协作关系,它表示完成某项行为的对象和这些对象之间传递消息的时间顺序。 A.对象图 B. 协作图 C. 状态图 D. 顺序图 14. (D)是从用户使用系统的角度描述系统功能的图形表达方法。 A. 类图 B. 对象图 C. 序列图 D. 用例图 15. ( C ) 是表达系统的类及其相互联系的图示,它是面向对象设计的核心,建立状态图、协作图和其他图的基础。 A.对象图 B. 组件图 C. 类图 D. 配置图 二、简答题 1.简答控制软件复杂性的基本方法,面向对象技术如何体现这些方法的。 基本方法:分解,抽象,模块化,信息隐蔽。面向对象的软件开放方法在描述和理解问题域时采用的方法是:对问题域进行自然分割,以更接近人类的思维方式建立问题域模型,从而使设计出的软件尽可能直接地描述现实世界,具有更好的可维护性,能适应用户需求的变化。 2.举例说明类中覆盖和重载的区别。 public class A{ String name; public String getValue();{ return”getValue is”+name;} } public class B extend A { String address; public String getValue();{

最新面向对象分析与设计课程总结

面向对象分析与设计 课程总结 0923010208 指导老师:庄育飞 这学期学院开设了面向对象分析与设计(UML)这门课,通过老师的讲解,自己一些相关书籍的阅读和实践作业的完成,逐步对课程有了由浅及深的认识。我觉得学习这门课还是受益匪浅的。 面向对象(Object Oriented,OO)是一门以实践为主课程,课程中可以分开两块OOA(面向对象系统分析)和OOD(面向对象系统设计)。 OOA(面向对象系统分析)主要内容: 研究问题域和用户需求,运用面向对象的观点和原则发现问题域中与系统责任有关的对象,以及对象的特征和相互关系.OOA不涉及针对具体实现采取的设计决策和有关细节,独立于具体实现的系统模型。是一个完整确切反映问题域和用户需求的系统模型。OOA的优势:复

用、可扩展、可维护性、弹性。 OOD(面向对象系统设计):以OOA模型为基础,按照实现的要求进行设计决策,包括全局性的决策和局部细节的设计,与具体的实现条件相关。OOD的步骤:细化重组类→细化和实现类之间的关系,明确其可见性→增加属性,指定属性的类型和可见性→分配职责,定义执行每个职责的方法→对消息驱动的系统,明确消息传递的方式→利用设计模式进行局部设计→画出详细的类图和时序图。 面向对象的分析与设计方法将致力于解决传统软件研发过程中由于软件模块化结构化程度不高带来的软件重用性差、软件可维护性差、开发出的软件不能满足用户需要等方面问题。面向对象的概念包括:对象、对象的状态和行为、类、类的结构、消息和方法。对象概念将包含对象唯一性、抽象性、继承性、多态性的重要特征。面向对象的要素包含:抽象、封装性、共享性三方面。 在设计模式的研究过程中,我们组选择的是迭代器(Iterator)的设计模式研究。完成设计研究后,我对迭代器的设计模式有了更为深刻的理解。迭代器(Iterator)提供一个方法顺序访问一个聚合对象的各个元素,而又不暴露该对象的内部表示。并了解到迭代器设计模式一般在以下三类场合使用较多。 ●访问一个聚合对象的内容而无需暴露它的内部表示。 ●支持对聚合对象的多种遍历。因为遍历状态是保存在每一个迭代器对象 中的。

面向对象分析与设计

面向对象提纲 需求分析:了解用户的需求,对现实问题进行分析,确定用户需求 一、用例模型:业务用例、业务场景、系统用例、用例规约(用例描述) 根据不同的情况,用例描述可以有三个级别:1)简单描述2)中间描述3)完全展开描述系统分析:将需求分析的结果确定系统的范围和主要功能。 二、分析模型 1)静态视图(类图) 2)动态视图(系统顺序图) 1.1建立静态视图(问题域建模) 定义这些系统需求而建立的类图称为域模型类图或简称域模型 类之间的关系:依赖、泛化、关联(聚合、组合) 2.1动态视图(系统顺序图)

三、OO模型的集成 OO需求模型中的关系 依赖性通常从顶部流到底部,双向箭头表示在两个方向都产生影响。 四、面向对象分析步骤: 第一步域模型 A、分析域模型得到静态视图(类图) B、画出实体对应的类及其之间的关系,注意此阶段强调的是静态关系 第二步基于用例的需求分析 通过对需求的调查,业务用例的构建和活动图的绘制,最终得到系统用例图 在用例图的下方,应附上每个用例的用例描述 第三步输入和输出:系统顺序图 域模型类图:

用例图:系统顺序图: 从分析到设计

五、面向对象设计 OO程序是由一系列协同完成某一任务的程序对象组成 OO设计目标:识别并确定所有对象,并生成每个用例,比如用户界面对象、问题域对象及DB访问对象 六、OO设计过程和模型 设计步骤:⑴创建设计类图的基础版本,或初步模型 ⑵开发交互图 ⑶根据开发交互图时得到的信息,返回设计类图并开发方法名称 ⑷用包图将设计类图分割成相关的功能 输入的模型: 交互图:用例图、用例描述、活动图、系统顺序图、设计类图 设计类图:域模型类图、交互图 包图:设计类图 七、设计类和设计类图 7.1 设计类图符号:1. 构造型 2. 标准的构造型 构造型:按照模型元素的特征进行归类的一种方式,用《》符号描述 2. 标准的构造型 (0)设计模型中的标准构造型 ⑴实体类 ⑵边界类 ⑶控制类 ⑷数据访问类 设计模型中的标准构造型:

面向对象的分析过程

面向对象的分析过程 摘要 分析了面向对象技术应用于仿真领域的种种优点,亦即我们选择采用面向对 象的方法进行改造的原因。一些面向对象方法存在的不足。 关键词:仿真,面向对象,岸边集装箱起重机,训练器 面向对象的开发方法是以对象作为最基本的元素,它是分析问题、解决问题的核心。 面向对象=对象(Object) +分类(classification) +继承(inheritance) +通过消息的通信(communication with messages) 从下图中我们可以看出,面向对象的开发方法明显不同。 面向对象的仿真为仿真人员提供了开发模块化可重用的仿真模型的工具,它把系统看成由相互作用的对象所组成,而对象则往往表示现实系统中的真实实体。从而提高了仿真模型的可理解性、可扩充性和模块性,并且便于实现仿真与计算机图形和人工智能的结合。采用面向对象的方法,原因如下: 1.可理解性 面向对象仿真对设计者、实现者,以及最终用户来说都改进了仿真的可理解性。因为仿真系统中的对象往往直接表示现实系统中的真实实体,这些实体在面向对象的仿真系统中可以用外观上类似于人们熟悉的实际系统的对象的图形或图像来表示,用户可以通过图形界面与仿真模型进行交互,利用图形或图像来直接建立仿真模型,这对于熟悉实际系统的用户来说是很容易理解的。 2.可重用性和可扩充性 在面向对象的仿真中,可以建立起一个模型库用以保存以前建立的模型,模型库中的模型可以作为建立新模型的可重用构件,通过面向对象技术内在的继承机制可以容易地和系统地修改现有的对象(类)以创建新的对象。并且可以加入现有的类库中。类库提供了仿真建模所需要的一般设施。通过修改现有的类,可以建立各种应用中所需要的特殊对象。 3.模块性 面向对象的仿真是模块化,特殊的过程来寻找相应的信息,不会影响其它的对象。 4.图形用户界面

面向对象的分析与设计大作业文档

面向对象的分析与设计课程结课大作业 学号______________ 学生姓名___________ 专业______________ 班级______________ 塔里木大学教务处制

《面向对象的分析与设计》课程结课作业\ 题 分\号 值\—— 一 二三四五六七总结总分 总分5 020100 得分 提示:1、请将答案写在此文档的相应位置,图形需在Rational Rose下绘制,大小可以根据个人需求定制(宽不超过页面1/3);2、请将相关的文档,包括程序的相关文档进行压缩,并将压缩文档上传到“大作业电子版文档”文件夹下命名为“班级-学号-姓名”,纸质版于2015年6月12日上午10:00 —13:00交到逸夫楼109。 一、选题(此题5分) 请根据你抽中的题号,请将其所对应的题目写到下方,并将你要描述的界面进行截图。 题目:照相(即手机的“相机”软件) XPERIA Z系列手机的自带相机软件。图中第五行第 该相机软件为SONY 二列 的软件。 相机

用例图用到的界面:A D E F 类图用到的界面:B C D E F 序列图和协作图用到的界面:A C 状态图用到的界面:A C 活动图用到的界面:AB C D E F 部署图用到的界面:A DEF ./ * 1SVf 九—X IJ .鈕 EuH o StiilE 拍 untflimhwiiBMiiriifn Qi -A 1 i a口X nt^tt帕.9* 自怕 笑Kt*n 关闻寸慎毛连拍JI 人■注册 O Q ? O■□Q :9 c口X 快走总谕 填理杯记? ?D 将害?瞳用朴 isn^g C? 内序科11诬? 4k a C3 Q)gv> W BF \j o Q ! A ◎ a o X 白拘Jt 笑隘快门(鞭牆)X nn-:? nt窒恙 (>o ■ U K>Qi A B 手动 创息啟 JR

面向对象分析与设计_期末复习_2017-2018-2

《面向对象分析与设计》期末复习 2017-2018学年-第2学期 1、题型介绍: 选择题20 * 1分= 20分 填空题5* 2分= 10分 简答题 4 * 7分= 28分 建模分析论述题4题(第1题10分,第2题8分,第3题8分,第4题16分,共42分)= 40分 2、选择题 1、()不是对象具有的特性。 A.标识 B.继承 C.顺序 D.多态性 2、封装是把对象的()结合在一起,组成一个独立的对象。 A.属性和操作 B.信息流 C.消息和事件 D.数据的集合 3、()不是面向对象的典型方法。 A.Coad& Yourdon 方法 B.维也纳方法 C.OMT方法 D.Booch方法 4、UML中有4种关系,分别是依赖、泛化、关联和() A.集成 B.合作 C.实现 D 抽象 5、下列关于状态图的说法中,正确的是() A.状态图是UML中对系统的静态方面进行建模的5种图之一。 B.状态图是活动图的一个特例,状态图中的多数状态是活动状态。 C.状态图是对一个对象的生命周期进行建模,描述对象在其生存期间的动态行为。 D.状态图强调对有几个对象参与的活动过程建模,而活动图更强调对单个反应型对象建模。 6、UML的()模型图由类图、对象图、包图、组件图、和部署图组成。 A.用例 B.静态 C.动态 D.系统。 7、UML的()模型图活动图、顺序图、状态图、写协作图组成。 A.用例 B.静态 C.动态 D.系统。 8、UML的最终产物就是最后提交的可执行的软件系统和() A.用户手册 B.类图 C.动态图 D.相应的软件文档资料

9、在UML的需求分析建模中,()模型图必须与用户反复交流并加以确认。 A.配置 B.用例 C.包 D.动态 10、下面不是用例之间主要关系的是() A.扩展 B.包含 C.依赖 D.泛化 11、对于一个电子商务网站而言,以下不适合作为用例的选项是() A.登录 B.预定商品 C.购物车 D.结账 12、UML的客户需求分析模型包括()模型、类图、对象图和活动图。 A.用例 B.静态 C.动态 D.系统 13、UML客户需求分析产生的用例模型描述了系统的() A.状态 B.体系结构 C.静态模型 D.功能要求 14、在UML的需求分析模型中,用例建模必须与()反复交流并加以确认。 A.软件生产商 B.用户 C.软件开发人员 D.问题领域的专家 15、在UML的需求分析建模中,对用例模型中的用例进行细化说明应使用() A.活动图 B.状态图 C.配置图 D.组件图 16、类图应该画在Rational Rose的()视图中。 A、Use Case View B、Login View C、Component View D、Deployment View 17、类通常可以分为实体类、()和边界类。 A 、父类B、子类C、控制类D、祖先类 18、对象特征的要素是()。 A、状态 B、行为 C、标识 D、属性 19、下列关于接口的关系说法不正确的是()。 A、接口是一种特殊的类 B、所有接口都是有构造型<>的类 C、一个类可以通过实现接口从而支持接口所指定的行为 D、在程序运行的时候,其他对象不仅需要依赖于此接口,还需要知道该类对接口实现的其他信息 20、下列关于类方法的声明,不正确的是()。 A、方法定义了类所许可的行动 B、从一个类创建的所有对象可以使用同一组属性和方法 C、每个方法应该有一个参数 D、如果在同一个类中定义了类似的操作,则它们的行为应该是类似的 21、UML的系统分析进一步要确立的3个系统模型是()、对象动态模型和系统功能模型。 A、数据模型 B、对象静态模型 C、对象关系模型 D、体系结构模型 22、UML的客户需求分析、系统分析和系统设计阶段产生的模型,其描述图符()。 A、完全相同 B、完全不同 C、不可以通用 D、稍有差异 23、类和对象都有属性,它们的差别是:类描述了属性的类型,而对象的属性必有()。 A、正负号 B、动作 C、具体值 D、私有成员 24、UML系统设计的一般步骤包括系统对象设计、系统体系结构设计和系统设计的()和审查等 A、建模 B、完善 C、优化 D、迭代 25、顺序图和协作图主要用于对用例图中()的建模,用它们来描述用例图的行为。

面向对象分析方法

https://www.360docs.net/doc/5d8691662.html,面向对象分析方法1/2 面向对象分析方法(Object-Oriented Analysis,OOA),是在一个系统的开发过程中进行了系统业务调查以后,按照面向对象的思想来分析问题。OOA与结构化分析有较大的区别。OOA所强调的是在系统调查资料的基础上,针对OO方法所需要的素材进行的归类分析和整理,而不是对管理业务现状和方法的分析。 OOA(面向对象的分析)模型由5个层次(主题层、对象类层、结构层、属性层和服务层)和5个活动(标识对象类、标识结构、定义主题、定义属性和定义服务)组成。在这种方法中定义了两种对象类之间的结构,一种称为分类结构,一种称为组装结构。分类结构就是所谓的一般与特殊的关系。组装结构则反映了对象之间的整体与部分的关系。 OOA在定义属性的同时,要识别实例连接。实例连接是一个实例与另一个实例的映射关系。 OOA在定义服务的同时要识别消息连接。当一个对象需要向另一对象发送消息时,它们之间就存在消息连接。 OOA 中的5个层次和5个活动继续贯穿在OOD(画向对象的设计)过程中。OOD模型由4个部分组成。它们分别是设计问题域部分、设计人机交互部分、设计任务管理部分和设计数据管理部分。 一、OOA的主要原则。 (1)抽象:从许多事物中舍弃个别的、非本质的特征,抽取共同的、本质性的特征,就叫作抽象。抽象是形成概念的必须手段。 抽象原则有两方面的意义:第一,尽管问题域中的事物是很复杂的,但是分析员并不需要了解和描述它们的一切,只需要分析研究其中与系统目标有关的事物及其本质性特征。第二,通过舍弃个体事物在细节上的差异,抽取其共同特征而得到一批事物的抽象概念。 抽象是面向对象方法中使用最为广泛的原则。抽象原则包括过程抽象和数据抽象两个方面。 过程抽象是指,任何一个完成确定功能的操作序列,其使用者都可以把它看作一个单一的实体,尽管实际上它可能是由一系列更低级的操作完成的。 数据抽象是根据施加于数据之上的操作来定义数据类型,并限定数据的值只能由这些操作来修改和观察。数据抽象是OOA的核心原则。它强调把数据(属性)和操作(服务)结合为一个不可分的系统单位(即对象),对象的外部只需要知道它做什么,而不必知道它如何做。 (2)封装就是把对象的属性和服务结合为一个不可分的系统单位,并尽可能隐蔽对象的内部细节。 (3)继承:特殊类的对象拥有的其一般类的全部属性与服务,称作特殊类对一般类的继承。 在OOA中运用继承原则,就是在每个由一般类和特殊类形成的一般—特殊结构中,把一般类的对象实例和所有特殊类的对象实例都共同具有的属性和服务,一次性地在一般类中进行显式的定义。在特殊类中不再重复地定义一般类中已定义的东西,但是在语义上,特殊类却自动地、隐含地拥有它的一般类(以及所有更上层的一般类)中定义的全部属性和服务。继承原则的好处是:使系统模型比较简练也比较清晰。 (4)分类:就是把具有相同属性和服务的对象划分为一类,用类作为这些对象的抽象描述。分类原则实际上是抽象原则运用于对象描述时的一种表现形式。 (5)聚合:又称组装,其原则是:把一个复杂的事物看成若干比较简单的事物的组装体,从而简化对复杂事物的描述。 (6)关联:是人类思考问题时经常运用的思想方法:通过一个事物联想到另外的事物。能使人发生联想的原因是事物之间确实存在着某些联系。

面向对象分析与及设计习题及答案

面向对象分析与及设计习题及答案 一、单项选择题 1.到20世纪末,面向对象软件工程已经逐渐发展成熟,特别是(D)的 形成和广泛使用,采用面向对象分析与编程的软件开发方法已成为软件开发的主流方法。 A. Simula67语言 B. Smalltalk语言 C. Java语言 D. 统一建模语言(UML)的标准 2. 面向对象的运动产生了多种面向对象的语言, 其中(C)是一种混合性面向对象语言, 既支持面向过程的程序设计方法,又支持面向对象的程序设计方法,有广泛应用的基础和丰富开发环境的支持,因而使面向对象的程序设计能得到很快普及。 A. Smalltalk B. Eiffel C. C++ D. Java 3.下列不属于面向对象技术的基本特征的是(B)。 A. 封装性 B. 模块性 C. 多态性 D. 继承性 4. 面向对象程序设计将描述事物的数据与(C) 封装在一起,作为一个相互依存、不可分割的整体来处理。 A. 信息 B. 数据隐藏 C. 对数据的操作 D. 数据抽象 5. 关于面向对象方法的优点,下列不正确的叙述是(C)。 A. 与人类习惯的思维方法比较一致 B. 可重用性好 C. 以数据操作为中心 D.可维护性好 6. (D)是从用户使用系统的角度描述系统功能的图形表达方法。 A. 类图 B. 对象图 C. 序列图 D. 用例图 7. (C) 是表达系统类及其相互联系的图示,它是面向对象设计的核心,建立状态图、协作图 和其他图的基础。 A.对象图 B. 组件图 C. 类图 D. 配置图 8.(D)描述了一组交互对象间的动态协作关系,它表示完成某项行为的对象和这些对象之 间传递消息的时间顺序。 A.对象图 B. 协作图 C. 状态图 D. 序列图 9.(D)就是用于表示构成分布式系统的节点集和节点之间的联系的图示,它可以表示系统 中软件和硬件的物理架构。 A. 组件图 B. 协作图 C. 状态图 D. 配置图 10. 使用UML进行关系数据库的(B)时,需要设计出表达持久数据的实体类及其联系,并把它们映射成为关系数据库表(Table)、视图(View)等。 A. 业务Use Case模型设计 B. 逻辑数据模型设计 C. 物理数据模型设计 C. 物理实现设计 11.一个设计得好的OO系统具有(B) A. 低内聚、低耦合的特征 B. 高内聚、低耦合的特征 C. 高内聚、高耦合的特征 D. 低内聚、高耦合的特征 12.下面()不是UML的基本构成元素。(A) A. 控制语言 B. 基本构造块 C. 规则 D. 公共机制

结构化方法与面向对象方法的比较分析

结构化方法与面向对象方法的比较分析 吴松娇 (凯里学院信息工程学院,09本(1)班,2009406012) 摘要:剖析了结构化方法和面向对象方法这两种软件开发方法具体的分析设计过程,讨论 了各自在不同软件开发中的应用及局限性,提出了在选用面向对象方法开发大型软件系统的同时可结合结构化方法.通过对具体实例的剖析,揭示DFD 与UML 之间的对应关系,从而提 出结构化软件分析方法与面向对象软件分析方法存在的对应关系,在软件需求分析方法上实现了二者的相互转换,这种对应与转换关系对现有结构化软件的维护及再工程具有指导意义。 关键词:软件开发; 结构化方法; 面向对象方法; 问题域 20 世纪60 年代以来,软件的发展一直受到开发综合症“软件危机”的影响. 为了提高软件质量,软件开发方法不断推陈出新,其中结构化方法[1 ,2 ]经过30 多年的研究及应用,最为成熟且影响最大,直到现在仍有许多系统是用它开发的. 而面向对象方法[1 ,3 ]是在结构化方法、信息建模方法等基础上发展起来的,近10 年来发展较快,现已呈现出取代结构化方法的趋势. 本文具体分析两者在软件开发中的差别以及面向对象方法的优越性. 1 结构化方法 结构化方法基于功能分解设计系统结构,通过不断把复杂的处理逐层分解来简化问题,它 从内部功能上模拟客观世界. 用结构化开发的软件运行效率较高, 且能够增加软件系统的 可 靠性. 1. 1 结构化分析 它是面向数据流进行需求分析的方法,在该阶段力求寻找功能及功能之间的说明. 它主要 采用的工具是数据流图DFD(Data Flow Diagram) ,利用DFD 描述边界和数据处理过程的关系. 1. 2 结构化设计 结构化设计是将数据流图表示的信息转换成程序结构的设计描述,在该阶段力求寻找功 能的实现方法,采用系统结构图表示系统所具有的功能和功能之间的关系. 设计过程分两步完成,第一步以需求分析的结果作为出发点,构造出一个具体的系统设计方案,决定系统的模块结构(包括决定模块的划分、模块间的数据传递及调用关系) . 第二步详细设计即过程设计,在总体设计的基础上,确定每个模块的内部结构和算法,最终产生每个模块的程序流程图. 因此,结构化方法比较适合于像操作系统、实时处理系统等这样的以功能为主的系统. 1. 3 结构化方法的局限 (1) 结构化方法在需求分析中对问题域的认识和描述不是以问题域中固有的事物作为基本 单位,而是打破了各项事物之间的界限,在全局范围内以数据流为中心进行分析,所以分析 结果不能直接反映问题域. 同时,当系统较复杂时,很难检验分析的正确性. 因此,结构化分析 方法容易隐蔽一些对问题域的理解偏差,与后续开发阶段的衔接也比较困难; (2) 结构化方法 中设计文档很难与分析文档对应,因为二者的表示体系不一致. 结构化方法的结果2数据流 图

面向对象分析设计小结

?1、面向对象方法的基本观点: ?Coad-Y ourdon认为:面向对象=对象+类+继承+通信。 ?2、面向对象方法的特点包括: ?(1)、符合人们对客观世界的认识规律; ?(2)、对需求变化具有很强的适应性; ?(3)、支持软件复用; ?(4)、可维护性好。 ?3、对象、类、封装、继承、消息、多态性的基本概念。 对象是客观世界中具有可区分性的、能够唯一标识的逻辑单元,是现实世界中的一个事物(站在计算机技术角度,即对事物的模拟)。 类是一组具有相同属性和相同操作的对象的集合。 封装是把对象的属性和操作结合在一起,组成一个独立的单元。 继承是指子类(派生类、特化类)自动拥有其父类(基类、泛化类、超类)的全部属性和操作,即一个类可以定义为另一个更一般的类的特殊情况。 消息是对象之间采用消息传递来发生相互作用—互相联系、互发消息、响应消息、协同工作,进而实现系统的各项服务功能。 多态性是一种方法,使在多个类中可以定义同一个操作或属性名,并在每一个类中有不同的实现。 ?4、面向对象系统开发过程。 ?5、运用名词词组法来定义类(对象): ?例:音像商店出租/出售业务信息系统中的类的确定。 ?总目标:?A.提供及时培训。?B.实施的系统必须友好,易学易用。?C.实施的系统必须考虑安全问题。

?具体目标: ?1.1.1 提供一个自动系统协助顾客出售/出租结帐。 ?2.1.1 提供和维护一个自动的会员数据库。?a. 按要求提供最新会员信息。? b. 有添加、改变、删除会员信息的能力。 2.1.2 提供会员信息报表(但不限于)?a. 最少光顾的会员。?b. 最经常光顾的会员。?c. 有问题会员(欠钱,出租过期)? 4.1.1 提供、维护出售和出租项的库存数据库。?a. 按要求提供最新库存信息?b. 有添加、改变、删除库存信息(出售和出租)的能力 4.1.2 提供库存信息报表(但不限于)?a. 最不受欢迎的出租项?b. 最受欢迎的出租项?c. 过期的出租项?d. 出售和出租项的“订购”产品(采购报表) 5.1.1 提供出售报表(但不限于)?a. 用产品码表示的一段时间(天、星期、月)内销售情况?b. 用产品码表示的一段时间(天、星期、月)内出租情况相应的侯选对象清单为:安全问题、自动系统、顾客出售/出租结帐、会员数据库、会员信息、会员信息报表、库存数据库、出售和出租项、库存信息、库存信息报表、采购报表、出售报表。 ?6、对多值属性的处理方法:用部分-整体方法。 例:发票/发票行 第2章统一建模语言UML 1、UML描述的软件基本模型:用例视图、逻辑视图、构件视图、进程视图、 部署视图 2、UML的基本符号。 3、RUP项目开发过程的特征:用例驱动的系统、以体系结构为中心、螺旋 上升式的开发过程、以质量控制和风险管理为保障措施。

面向对象的分析设计实现--图书管理系统

实验报告面向对象的分析设计实现—图书管理系统 一.需求分析 1.1系统需求描述 一般图书馆管理系统主要用于对图书馆日常工作的管理,主要任务是用计算机对读者、图书等各种信息进行日常管理,如查询、修改、增加、删除、图书借阅和归还的管理等。本系统实现了图书馆的信息化管理,完成了图书馆管理系统的基本功能。 一般图书馆管理系统主要包括用户登录子系统、用户管理子系统、图书管理子系统、图书借阅与归还、图书和用户信息查询子系统四个部分,各部分主要功能如下: 用户登录子系统:用于数据库的连接,主界面的设计和不同身份用户的登录管理。 用户管理子系统:用于用户信息的管理,如用户添加、用户信息修改、用户删除。 图书管理子系统:用于图书信息的管理,如新书入库、图书信息修改、图书信息删除。 图书借阅与归还子系统:用于用户借阅和归还图书。 图书和用户信息查询:图书和用户信息的查询。 1.2系统功能结构图

图 1.1 图书管理系统分析系统流程图 1.3 系统解决方案 以上述一般的图书管理系统分析为构思原型。为简化系统,忽略掉其他复杂琐碎的功能需求,仅保留图书信息的录入、修改和读者借、续借、还的功能。读者与管理员通过界面对象调用控制类对象,控制对象进行各种操作并把信息写入数据库。 二.系统设计 2.1 系统E-R图 图 1.2 用户实体图

图1.3 书籍实体图 图 1.4 实体属性图 2.2数据库表结构 表2.1 图书信息表

表2.2 用户借阅表 表2.3用户信息表 2.3用例文档 本系统共设置四个活动者。分别是TT_People、TT_Registrar、TT_Reader 和TT_Database。其中TT_People泛指与系统发生关系的人;TT_Registrar为系统管理员,负责添加、修改图书信息;TT_Reader为所有读者,读者可能发生借书、续借、还书的行为;TT_Database为存储各种信息的数据库对象。另:考虑到现实图书馆中还存在“图书馆管理员”这一角色,但其所起的作用仅为代替读者完成各种系统操作,故没有设置此活动者。 系统中共有五个用例。TT_Addinfo、TT_Modifyinfo、TT_Borrow、TT_Renew 和TT_Return。TT_Addinfo表示管理员添加图书信息;TT_Modifyinfo表示修改图书信息;TT_Borrow表示读者借阅图书;TT_Renew表示读者续借图书;TT_Return表示读者归还图书。

uml面向对象的分析与设计考题与答案

u m l面向对象的分析与设计考题与答案 集团文件版本号:(M928-T898-M248-WU2669-I2896-

《面向对象的分析与设计》练习题 一、选择题 1.UML 语言不支持的建模方式有(D )。 A. 静态建模 B.动态建模 C. 模块化建模 D. 功能建模 2.一个设计得好的OO系统具有( B )。 A. 低内聚、低耦合的特征 B.高内聚、低耦合的特征 C. 高内聚、高耦合的特征 D.低内聚、高耦合的特征 3.下列不属于面向对象技术的基本特征的是( B)。 A. 封装性 B. 模块性 C. 多态性 D. 继承性 4. 面向对象程序设计将描述事物的数据与 ( C ) 封装在一起,作为一个相互依存、不可分割的整体来处理。 A. 信息 B. 数据隐藏 C. 对数据的操作 D. 数据抽象 5. 关于面向对象方法的优点,下列不正确的叙述是(C )。 A. 与人类习惯的思维方法比较一致 B. 可重用性好 C. 以数据操作为中心 D.可维护性好 6.用例之间的关系不包括以下哪种关系?D A.泛化 B.包含 C. 扩展 D. 聚集和组合 7.顺序图中不包括以下哪种元素?(A) A.用例 B. 对象 C. 生命线 D. 消息

8. 用例图中不包括以下哪种元素?(B) A. 用例 B. 类 C. 参与者 D. 关联 9. 继承机制的作用是 ( C )。 A. 信息隐藏 B. 数据封装 C. 派生新类 D. 数据抽象 10. 面向对象方法学中,对象之间仅能通过(C )相联系。 A. 类 B.抽象 C. 消息 D. 封装 11. 脚本与用例之间的关系类似与(A)之间的关系。 A. 对象与类 B. 参与者与用例 C. 顺序图和抽象类 D. 消息和对象 12. 下列元素中,(D )不属于消息的组成。 A. 提供服务的对象 B. 服务 C. 输入信息 D. 事件 13. ( D )描述了一组交互对象间的动态协作关系,它表示完成某项行为的对象和这些对象之间传递消息的时间顺序。 A.对象图 B. 协作图 C. 状态图 D. 顺序图 14. ( D)是从用户使用系统的角度描述系统功能的图形表达方法。 A. 类图 B. 对象图 C. 序列图 D. 用例图 15. ( C ) 是表达系统的类及其相互联系的图示,它是面向对象设计的核心,建立状态图、协作图和其他图的基础。

面向对象分析与设计试卷(A)及答案

华南农业大学期末考试试卷(A卷)-答案 2007学年第1学期考试科目:面向对象分析与设计考试类型:(闭卷)考试时间:120 分钟 学号姓名年级专业 一、判断题(每题1分,共10分。对的标“T”,错的标“F”,将答案写入下表) 1. 一个状态图最多只能由一个初态和一个终态。(F) 2. 协作图中的消息必须要有消息顺序号。(T)

3. 两个参与者(actor)之间可以有包含(include)关系、扩展(extend)关系或泛化(generalization)关系,而包含关系和扩展关系是依赖(dependency)关系的版型。(F) 4. 参与者(actor)和用例(use case)之间的关系是关联(association)关系。(T) 5. 类A和类B之间的关系如图1所示,则称类B中的getName()方法是对类A中的 getName()方法的重载(overload)。(F) 图2 活动图 图1 getName()方法之间的关 系 6. 如图2所示,活动Gesture和Stream audio可以并发进行。(T) 7. 一个软件系统,如果只有源代码,缺乏其他相应的辅助文档,如缺乏顺序图和类图,则可以利用Rose进行逆向工程得到顺序图和类图,但得到的顺序图和类图会比较简单。(F) 8. CMM描述了五个级别的软件过程成熟度,即初始级、可重复级、

已定义、已管理级、优化级。(T) 9. UML由用例视图、物理视图、组件视图、进度视图和配置视图组成。(F) 10. 在设计类图时,可以不用对类图中的每个关联进行命名,但如果需要命名的话,最好用一个“动词”给关联命名。(T) 二、单项选择题(每题2分,共30分。将正确答案填入下表) 1. 一个设计得好的OO系统具有(B) A. 低内聚、低耦合的特征 B. 高内聚、低耦合的特征 C. 高内聚、高耦合的特征 D. 低内聚、高耦合的特征 2.下面()不是UML的基本构成元素。(A) A. 控制语言 B. 基本构造块 C. 规则 D. 公共机制 3. 面向对象的特点主要概括为(C)。 A. 可分解性、可组合性、可分类性 B. 继承性、封装性、多 态性

第07章 面向对象的分析和设计

软件工程 第7章面向对象的分析和设计

内容摘要 ?面向对象的基本概念 ?面向对象的分析和设计过程?UML概述 ?用例建模 ?静态建模 ?动态建模 ?物理体系结构建模

面向对象方法 ?面向对象软件开发方法(Object-Oriented Software Development)即OOSD,它是一种运用对象、类、继承、封装、聚合、消息传递、多态性等概念来构造系统的软件开发方法。?其组成部分如下: –面向对象分析(OOA) –面向对象设计(OOD) –面向对象程序设计(OOP) 即:OOSD = OOA + OOD + OOP。

Peter Coad和Edward Yourdon提出用下列等式识认面向对象方法: 面向对象=对象(object) +分类(classification) +继承(inheritance) +通过消息的通信(communication with messages) 可以说,采用这四个概念开发的软件系统是面向对象的

?面向对象并非是一个新的概念,实际上它已有30多年的历史。寻其根源可追溯到60年代的挪威,当时挪威计算中心的Kristen Nygaard和Ole-Johan Dahl开发了一种称作Simula67的语言。Simula67首次引入了类、协同程序、子类(虽然 没有继承)和虚过程等概念,这很象今天的面向对象语言。 ?70年代中期,Xerox Palo Alto研究中心的研究人员Alan Kay团队设计了Smalltalk语言,该语言的每个元素都被当作一个对象来实现,其程序设计环境及相关的各个方面都是面向对象的。

相关文档
最新文档