当前位置:文档之家› 软件工程 第八章 面向对象的设计方法

软件工程 第八章 面向对象的设计方法

软件工程 第八章 面向对象的设计方法
软件工程 第八章 面向对象的设计方法

第八章面向对象的设计方法

本章采用基于UML的面向对象设计方法的将分析模型转换为设计模型。如第五章所述,面向对象的分析模型主要由顶层架构图、用例与用例图、领域概念模型构成;设计模型则包含以包图表示的软件体系结构图、以交互图表示的用例实现图、完整精确的类图、针对复杂对象的状态图和用以描述流程化处理过程的活动图等。为完成这一转换过程,设计人员必须处理以下任务:

(1)针对分析模型中的用例,设计实现方案。实现方案用 UML交互图表示。

(2)设计技术支撑设施。在大型软件项目中,往往需要一些技术支撑设施来帮助业务需求层面的类或子系统完成其功能。这些设施本身并非业务需求的一部分,但却为多种业务需求的实现提供公共服务。例如,数据的持久存储服务、安全控制服务和远程访问服务等。在面向对象设计中,需要研究这些技术支撑设施的实现方式以及它们与业务需求层面的类及子系统之间的关系。

(3)设计用户界面。

(4)针对分析模型中的领域概念模型以及第(2)、(3)两个步骤引进的新类,完整、精确地确定每个类的属性和操作,并完整地标示类之间的关系。此外,为了实现软件重用和强内聚、松耦合等软件设计原则,还可以对前面形成的类图进行各种微调,最终形成足以构成面向对象程序

设计的基础和依据的详尽类图。

面向对象的软件设计过程如图8-1-1所示。

图 8-1-1 面向对象的软件设计过程

第一节设计用例实现方案

UML 的交互图(顺序图、协作图)适于用例实现方案的表示。因此,本节首先介绍交互图的语言机制,然后探讨用例实现方案的设计方法。该设计方法包含如下3个步骤:

(1)提取边界类、实体类和控制类;

(2)构造交互图;

(3)根据交互图精华类图。

一、顺序图

顺序图用来描述对象之间动态的交互关系,着重表现对象间消息传递的时间顺序。在顺序图中,参与交互的对象位于顶端的水平轴上,垂直轴表示时间,时间推移的方向是自上而下的。顺序图中的对象一般以“对象

名:类名”的方式标识,但也可以仅采用缩写形式“对象名”或者“:类名”。对象的下方用垂直虚线表示对象的生命线,即对象在某段时间内存在。对象生命的终结用生命线下方的叉号“′”表示。附着在对象生命线上的矩形框表示对象在此段时间内活跃。对象间的通信表现为对象的生命线之间的消息传递。在消息边上需附加消息名和消息参数,有时也以顺序号强调消息的时序。消息的源对象和目标对象可以相同,这种消息称为自调用(self-call)。可以在消息名前面的方括号中书写条件表达式,表明仅当条件成立时,该消息才发送。还可以在方括号的前面或者直接在消息名的前面加上迭代标记“*”,以表示一条消息对同一类的多个对象的多次发送。顺序图的左边可带有描述信息,以阐明消息发送的时刻、动作执行情况、两条消息之间的时间间隔以及约束信息等。还可以在消息边上附加文字注解信息,以增强顺序图的可理解性。典型的顺序图如图 8-1-2所示。

UML的消息有如下4种类型:

(1)简单消息(simple message)。以一种简单、抽象的函数表示对象之间的信息传递,不考虑通信过程的内部细节。简单消息在 UML顺序图中用普通的有向箭头表示。

(2)同步消息(synchronus message)。消息源发出消息后,必须等待消息处理过程完毕并返回处理结果,才可继续执行后续操作。前面所述的自调用消息应该是同步的。同步消息的表示图元与简单消息相同,这表明UML在缺省状态下认为简单消息即为同步消息。

(3)异步消息(synchonous message)。消息源发出消息后,不必等待消息处理过程的返回,即可继续执行自己的后续操作。异步消息主要用于描述实时系统中的并发行为。异步消息在 UML顺序图中用一种特别的单向箭头表示,见图8-1-2中的“msg1”。

图 8-1-2 典型的顺序图

(4)返回消息(return message)。表示前面发送的消息的处理过程完成后的返回结果。返回消息应该是同步。在许多情况下,可以隐藏返回消息,但也可显式地标出返回消息以示强调。返回消息用虚线有向箭头表示,见图8-1-2中的“msg6”。

一个对象可以通过发送标准消息“new”来创建另一个对象。当一个对象被删除或自我删除时,该对象生命线上的相应时间点应该用叉号(对象生命线终结符)标识。

二、协作图

协作图用于描述相互合作的对象间的交互关系和链接关系。虽然顺序图和协作图都用来描述对象间的交互关系,但它们的侧重点不同。顺序图强调消息交互的时间序列,而协作图则强调交互对象间的静态链接关系。

从外观看,协作图并不采用单独的维度来表示时间的推移,因此,协作图中的对象可以在二维平面中自由占位。对象之间的链接用于表示消息传递的通道,消息标示于链接之上,消息的箭头指明消息的传递方向。协作图中,消息的描述内容包含名称、参数、返回值以及序列号是可选的。

虽然协作图不突出强调消息传递的时间序,但借助于序列号同样可以表达时间序:序列号较大的消息发生于较晚的时刻。消息序列号可以采用线性编号,但采用适当的多级编号会使消息之间的结构关系更清晰,例如,在图 8-1-3中,“ 1.1msg2 ”是“对象1”为了处理“ 1.mag1 ”而发送的第二条消息,“1.1.1msg3”表明mag3“是对象2”为了处理“1.1 msg2”而发送的第一条消息,依此类推。

如果一个对象在消息的交互过程中创建,则可在对象名称之后标以{new}。类似地,如果一具对象在交互期间被删除,则可在对象名称之后标以{ destroy}。

典型的协作图如图8-1-3所示,该协作图与图8-1-2等价。

图 8-1-3 典型的协作图

三、提取边界类、实体类和控制类

边界类用于描述目标软件系统与外部环境之间的交互,并负责实现如下功能:

(1)界面控制。包括输入数据的格式及内容转换、输出结果的呈现以及软件运行过程中界面的变化与切换等。

(2)外部接口。实现目标软件系统与外部系统或外部设备之间的信息交流和互操作。主要关注跨越目标软件系统边界的通信协议。

(3)环境隔离。将目标软件系统与操作系统、数据库管理系统、应用服务器中间等环境软件进行交互的功能与特性封装于边界类之中,使目标软件系统的其余部分尽可能的独立于环境软件。

在UML 类图中,边界类往往附加UML 构造型<>作为特别标识。

例如,“家庭保安系统”中的边界类有“输入键盘接口类”、“传感器接口类”、“警报器接口类”、“报警电话接口类”和“显示面板接口类”。

实体在表示目标软件系统中具有持久意义的信息项及其操作。实体类的操作具有“内向收敛”特征,它们仅向目标软件系统的其余部分提供读/写信息项内容的必要的操作接口,并不涉及业务逻辑处理。实体类的UML构造型为<>。

例如,“家庭保安系统”中的“异常事件”即为实体类。

控制类作为完成用例任务的责任承担者,协调、控制其他类共同完成用例规定的功能或行为。对于比较复杂的用例,控制类通常并不处理具体的任务细节,但是它应知道如何分解任务,如何将子任务分派给适当的辅助类,以及如何在辅助类之间进行消息传递和协调。控制类的 UML构造型为<>。

例如,“家庭保安系统”中的“用户命令处理器”和“监测器”均为

控制类。

在讨论了边界类、实体类和控制类和基本概念之后,下面介绍如何从分析模型中的用例描述和领域概念模型出发获取这些类。

通常情况下,执行者与用例之间的一种通信连接对应一个边界类。但是,如果两个以上的用例与同一执行者交互,并且这些交互具有共同的行为、完成相同或类似的任务,就可以考虑用同一边界类实现用例与执行者之间的交互。这就意味着边界类的作用范围可以超越单个用例。

实体类主要来源于领域概念模型。有时也需要认真研读用例描述,从中发掘具有持久意义的信息项。如果执行者的属性需要持久保存,也可以建立相应于执行者的实体类。假设一个实体类A仅仅被系统中的另一个类B 引用,并且系统无需关心类 A有行为特征,那么为了简化设计模型,应将类A中的信息项直接作为类B的属性。反之,如果类 A被系统中的多个类引用,或者类 A具有不容忽略的行为特征,那么应将类A作为独立的实体类。

一般而言,一个用例通常对应一个控制类。如果不同用例的任务较多类似之处,也可以考虑在多个用例的实现方案中共享一个控制类。不过,此种情况应审慎对待,因为对于不同的且例,其事件流的逻辑结构鲜有雷同,它们所需要的控制、协调行为往往会有差异。此外,对于那些事件流

非常简单的用例,可以不设独立的控制类,直接在边界类中设臵控制、协调功能,边界类在实体类的帮助下完成用例要求的功能及行为。

四、构造交互图

在标识边界类、实体类和控制类之后,接下来的任务是将分析模型中的用例描述转化成UML交互图,以交互图作为用例的精确实现方案。

如前所述,用例描述中已包含事件流说明。事件流中的事件应直接对应于交互图中的消息,而事件间的先后关系体现为交互图中的时序,对消息的响应则构成消息接收者的职责。这种职责在后续的设计活动中将被确立为类的方法。

对于比较复杂的用例而言,仅仅依靠控制类、边界类和实体并不能很好地解决问题,因为我们不能使单个控制类过于宏大和复杂,让它既承担控制、协调的任务,又承担复杂的计算任务。因此,在设计复杂用例的实施方案时,应考虑为控制类设臵一些独立的辅助类,让控制类将一些任务委托给辅助类完成。例如,在图 5-3-4所示的“家庭保安系统”类图中,“系统配臵管理器”和“日志管理器”就是这种意义上的辅助类。

在UM顺序图中,用例的主动执行者应位于最左侧,紧邻其右的类的作为用户界面的边界类,再往右是控制类。控制类的右侧应旋转辅助类和实体类,它们的右侧是人秋外部接口和环境隔离层的边界类,最右侧是痊于

目标软件系统边界之外的被动执行者。如此布局之后,在顺序图中不应该出现穿越控制类生命线的消息,即主动执行者向边界类发出命令,边界类将命令进行适当转换后传送至控制类,控制类通过消息请求辅助类、实体类的帮助,协调、控制它们共同完成来自主动执行者的命令。在此过程中,控制类或辅助害可以向右侧的边界类发送消息,将信息或外部处理请求由边界类传向外部系统(被动执行者)。按照上述而已规则绘制的典型的顺序图如图8-1-4所示。

图 8-1-4 典型布局规则下的顺序图

在用例描述中,许多用例除主事件流外,往往还包含备选事件流,以说明在某些特殊或异常情况下的事件和响应动作序列。为易于理解,在设计模型中应该用分离的UML交互图分别表示事件流和每个备选事件流。

由于顺序图能够非常直观地表达事件(消息)的时序,所以它比协作图更多地用于描述用例的实现方案。但是,当需要强调类之间的联系或连接时,就需要绘制协作图。协作图的而已规则是:控制类位于中心,主动执行者和作为用户界面的边界类位于左上方,作为外部接口和环境隔离层的边界类位于右上方,辅助类和实体类分别位于控制类的左下方和右下方。按照此而已规则绘制的典型的协作图如图8-1-5所示。

图 8-1-5 典型布局规则下的协作图

在“家庭保安系统”中用例“传感器监测”和“命令处理”的实现方案分别见图8-1-6和图8-1-7。为简洁起见,图8-1-6和图8-1-7未表示这两个用例中的日志功能,图 8-1-7也未考虑配臵命令的处理,有兴趣的读者可自行添加。

图 8-1-6 “传感器监测”用例的顺序图

图 8-1-7 “命令处理”用例的顺序图五、精华类图

在UML交互图中,对每个类的对象都规定了它必须响应的消息以及类的对象之间的消息传递通道。前者对应于类的操作,后者则对应于类之间的连接关系。因此,可以利用交互图精华分析模型中的类图,将交互图中出现的新类添加到原有类图中,并且对相关的类进行精华,定义其属性和操作。

原则上,每个类都应该有一个操作来响应交互图中指向其对象的那条消息。但是,这并不意味着消息与操作一定会一一对应,因为类的一个操作可能具有响应多条消息的能力。同理,两个类之间的一条连接关系也可以为多条消息提供传递通道。为了简化设计模型,也为了提高重用程度,设计人员应该尽量使用已有的操作来响应新消息,并尽量使用已存在的连接路径作为消息传递的通道。如果两个类之间存在明确、自然的聚合或组合关系,则可以在类图中直接用相应的 UML图元符号表示类间的聚合或组成关系,这两个关系均可提供消息传递通道。

接下来讨论如何根据交互图确立类的属性。类的操作完成消息响应责任的能力来源于两方面的知识,一是类本身具有的信息,即类的属性;二是类能够找到的其他类,通过其他类协助其完成消息响应,在综合考虑这两个因素之后,类的操作应该明确哪些子任务可通过消息传递路径委托给其他类完成,哪些子任务必须由自身完成。根据后一种子任务的需要结合领域和业务知识即可推导出类应具有的属性。

在图5-3-4的基础上,得出“家庭保安系统”的类图如图8-1-8所示。为简洁起见,图 8-1-8仅标出控制类“监测器”和“用户命令处理器”的方法以及实体类“异常事件”的属性,有兴趣的读者可自行添加其余的属性和方法。

图 8-1-8 “家庭保安系统”的精化类图

第二节设计技术支撑方案

在许多软件项目中,应用功能往往都需要一组技术支撑机制为其服务。例如,分布式应用软件(包括电子商务应用、企业 ERP系统等)而言,需要数据持久存储服务、安全控制服务、分布式事务管理服务、并发与同步控制服务和可靠消息服务等。这些技术支撑设施并非业务需求的直接组成部分,但形态各异的业务处理功能全都依赖于它们提供的公共技术服务。让每个业务功能的设计者直接面对裸机、基本操作系统或基本网络

环境来完成软件实现方案是不可思议的。

技术支撑方案应该为多个用例的软件实现提供技术服务,所以它应该成为整个目标软件系统中全局性的公共技术平台。当用户需求发生变化时,技术支撑方案应具有良好的稳定性。这就要求软件设计者选用开放性和可扩充性较好的技术支撑方案。如果目标软件系统的顶层架构采用分层方式,那么技术支撑方案应该位于层次结构中的较低层次。

技术支撑方案的设计一方面取决于目标软件系统对公共技术服务的需求,另一方面取决于设计人员对软件技术手段的把握和选取。例如,对分布式应用系统而言,设计人员必须了解分布构件技术和基于应用服务器的软件开发技术等。本节的后续部分将分别以数据持久存储服务、并发与同步控制服务为例探讨技术支撑方案的设计方法,然后介绍技术支撑方案与用例实现方案的融合。

一、数据持久存储服务

设计数据持久存储服务的目的是将目标软件系统中依赖于系统运行环境的数据存取部分与其他部分相分离。数据存取通过一般的数据管理系统(如文件系统、关系数据库或面向对象数据库)实现,实现细节因数据存储介质的不同种类而异,但这些细节被集中在数据持久存储服务中,系统的其他部分与存储介质的种类和数据存储的实现方法无关。这样,既有利于软件的扩充、移植和维护,又简化了软件设计、编码和测试的过程。

无论基于哪一种数据管理方法,数据持久存储服务的设计都包括定义数据格式和定义数据存取操作两部分。

定义数据格式。根据目标软件系统对数据存储的需求,考虑持久存储介质的特性,设计数据的存储格式。例如,针对文件系统,需要定义用于保存数据的文件类别以及每类文件的记录格式;针对关系数据库,需要定义表格的字段名称、类型、关键字和约束条件等;针对面向对象数据库(Object-Oriented Data Base OODB),数据格式的定义相对简单,因为OODB直接支持对象的存储和读取。

定义数据存取操作。数据持久存储服务至少包含数据的存储和读取两种操作。存储操作负责将实体对象中的属性数据写至持久存储介质,读取操作则负责从持久存储介质中的序列化数据恢复对象的属性值。可以定义适用于所有实体类的存取操作,也可以分别针对不同的实体类定义不同的存取操作。数据存取操作一般以服务类的形式工业基础系统的其他部分提供数据持久存储服务。

在引久持久存储服务之后,目标软件系统的其他部分对持久存储介质的访问必须通过该服务进行,不能直接访问。

二、并发与同步控制服务

与数据持久存储服务类似,设计并发与同步控制服务的目的是将目标软件系统中依赖于系统运行环境的并发与同步控制部分和其他部分相分离,其他部分中有关并发与同步控制功能的实现均通过该服务来完成。当然,如果目标软件系统无需考虑并发问题,则可忽略此设计步骤。

一般而言,并发与同步控制服务提供的功能应包括:进程/线程的定义与启动;进程/线程的终止、进程/线程的状态查询、同步点的设臵及进程/线程在同步点的信息交换等。这些功能应封装在服务类之中。

三、技术支撑方案与用例实现方案的融合

技术支撑方案往往包含数个公共技术服务子系统。这些子系统无论其规模大小和内部复杂度高低,都应该提供数量较少的外部接口。所有的上层应用功能对公共技术服务的调用均通过访问这些外部接口而实现。因此,为了事例技术支撑方案和用例实施方案,只需对相应的 UML交互图作少许修改,在图中添加必需的公共技术服务子系统接口,让控制类的对象与该接口所代表的公共服务对象进行消息交互。对数据持久存储服务,与之交互的可以是实体类或者控制类。至于这些接口在交互图中的布局位臵,则依据其所提供服务的性质的不同而有所变化:

(1)先考虑数据持久存储服务。在引入此服务以后,用例中有关数据持久的实现有两种策略:一是让控制类对象调用此服务实现数据存取,二是让实体类对象直接调用此服务。在前一种策略下,实体类对象在数据

保存的过程中先向控制类对象提供数据,再由控制类对象调用服务将数据存至持久介质(如数据库、文件等)数据读取的过程则为此过程的逆过程。在后一策略下,实体类对象负责自己的数据的读取和保存。相比较而言,后一种策略理为简洁、自然。对一图 8-1-4,如果右侧的边界类与公共数据持久存储服务子系统的接口类的功能多有重叠,则应该考虑将二者合并。

(2)再考虑安全控制服务。此类服务的子系统接口在顺序图中应位于控制类的紧邻右侧。

(3)最后考虑分布式事务管理服务、并发与同步控制服务及可靠消息服务。它们的接口类在顺序图中可以位于控制类与右边边界类之间的任意位臵,但不应插在两个辅助类或两个实体类的中间。

下面讨论技术支撑方案的类图与迄今获得的其他类图的事例问题。如果前者比较简单,可以考虑将技术支撑方案的类图直接与其他类图合并,并建立公共技术服务类与其他类之间的必要连接。此时,有必要在公共技术服务类上以 UML构造型进行特殊标识。如果公共技术服务子系统中包含较多的服务类,它们应单独构成类图,利用 UML的包机制进行适当分组,并将这些包臵于系统的体系结构图的较低层次(相对而言,应用功能应位于较高层次)。

第三节设计用户界面

需求分析和软件设计阶段都必须考虑人机交互问题。在需求分析阶段要确定人机交互的属性和外部服务,而在设计阶段要给出有关人机交互的所有系统成份,包括用户如何操作系统、系统如何响应命令和系统显示信息的报表格式等。

用户界面设计的策略与步骤如下:

(1)熟悉用户并对用户分类。设计人员应深入用户环境,考虑用户需要完成的任务、完成这些任务需要什么工具支持以及这些工具对用户是否适用。事实上,不同类型的用户要求也不同,一般可按技术熟练程度、工作性质和访问权限对用户进行分类,以便尽量照顾到所有用户的合理要求,并优先满足某些特权用户。

(2)按用户类别分析用户的工作流程与习惯。在用户分类的基础上,从每类中选取一个用户代表,建立包括下列内容的调查表,并通过对调查结果的分析判断用户地操作界面的需求和喜好:

〃姓名

〃期望软件用途;

〃特征(如年龄、文化程度、限制等);

〃主要要求与喜好;

〃技术熟练程度;

〃任务客观场景描述。

(3)设计命令系统工进行优化。在设计一个新命令系统时,应尽量遵循用户界面的一般原则和规范,必要时可参考一些优秀的商品软件。根据用户分析结果确定初步的命令系统,然后再优化。命令系统既可为若干菜单、菜单栏,也可为一组按钮。优化命令系统时首先应考虑命令的顺序,一般常用居先,命令的顺序与用户工作习惯一致;其次,根据外部服务之间的聚合关系组织相应的命令,总体功能对应父命令,部分功能对应子命令;然后,充分考虑人类记忆的局限性(即所谓“7±2”原则或“3′3”原则),命令系统最好组织为一棵两层的多叉树;最后,应尽可能减少用户完成一个操作所需的动作(如单击鼠标、拖曳鼠标和敲击键盘等)并为熟练用户提供操作的快捷方式。

(4)设计用户界面的各种细节。此步骤包括设计一致的用户界面、耗时操作的状态反馈、“undo”机制、帮助用户记忆的操作序列和自封闭的集成环境等。此类问题的详细讨论见第十二章人机界面设计。

第3章 面向对象程序设计基础

第3章面向对象程序设计基础

第3章面向对象程序设计基础 【1】什么是Java程序使用的类?什么是类库? 答:类是将一类事物的特性描述出来,然后如果用这个类来定义对象,则该对象就拥有了这个类所描述的所有特性。 在Java系统中,系统定义好的类根据实现的功能不同,可以划分成不同的集合,每个集合称为一个包,所有包合称为类库。 【2】如何定义方法?在面向对象程序设计中方法有什么作用? 答:方法的定义由两部分组成:方法声明和方法体。 方法的声明如下: 返回值类型方法名(参数类型形式参数1,参数类型形式参数2…){ 程序代码; 返回值; } 在面向对象程序设计中,方法的作用是完成对类和对象属性操作。 【3】简述构造方法的功能和特点。下面的程序片段是某学生为student类编写的构造方法,请指出其中的错误。 void Student(int no,String name) {

studentNo=no; studentName=name; return no; } 答:构造方法的功能是:构造方法是一个特殊的方法,主要用于初始化新创建的对象; 特点:构造方法的方法名要求与类名相同,用户不能直接调用,只能通过new运算符调用,而且构造方法是不返回任何数据类型,甚至也不返回void数据类型,即不能在构造方法前加void。 错误之处:(1)构造方法Student()前不能加void,(2)不能用return语句,(3)类名Student 首字母S改成小写s. 【4】定义一个表示学生的student类,包括的域有学号、姓名、性别、年龄,包括的方法有获得学号、姓名、性别、年龄及修改年龄。编写Java程序创建student类的对象及测试其方法的功能。 class Student { String id; String name; String sex; int age; void talk(){

软件工程报告面向对象设计

软件工程报告面向对象设计 在分析阶段之后,使用面向对象设计(OOD)将概念模型进一步发展为面向对象模型。在OOD中,将分析模型中与技术无关的概念映射到实现类上,确定约束并设计接口,从而形成解决方案领域的模型。简而言之,构建了详细的说明,指定如何在具体技术上构建系统 面向对象设计的阶段可以标识为- ●系统上下文的定义 ●设计系统架构 ●识别系统中的对象 ●设计模型的构建 ●对象接口规范 系统设计 面向对象的系统设计涉及定义系统的上下文,然后设计系统的体系结构。 ●上下文-系统的上下文具有静态和动态部分。使用整个系统的简单框图设计 系统的静态上下文,该框图被扩展为子系统的层次结构。子系统模型由UML 包表示。动态上下文描述了系统如何与其环境交互。它使用用例图建模 ●系统架构-系统架构是根据系统上下文根据架构设计和领域知识设计的。通 常,系统分为几层,每层分解以形成子系统。 面向对象的分解 分解意味着按照分而治之的原则,将一个大型的复杂系统划分为具有较小复杂性的较小组件的层次结构。系统的每个主要组成部分都称为子系统。面向对象的分解可识别系统中的各个自治对象以及这些对象之间的通信。 分解的优点是- ●各个组件的复杂度较低,因此更易于理解和管理。 ●它可以使具有专业技能的劳动力分工。 ●它允许替换或修改子系统,而不会影响其他子系统。 识别并发 并发允许多个对象同时接收事件,并允许同时执行多个活动。并发在动态模型中标识并表示。

为了启用并发,每个并发元素都分配有单独的控制线程。如果并发处于对象级别,则为两个并发对象分配两个不同的控制线程。如果单个对象的两个操作本质上是并发的,则该对象将在不同的线程之间拆分。 并发与数据完整性,死锁和饥饿问题相关。因此,无论何时需要并发,都需要制定明确的策略。此外,并发需要在设计阶段本身进行识别,并且不能留给实施阶段。 识别模式 在设计应用程序时,针对某些类别的问题采用了一些公认的解决方案。这些是设计模式。模式可以定义为可以在某些类型的应用程序开发问题中使用的一组文档化的构建基块。 一些常用的设计模式是- ?外墙图案 ?模型视图分离模式 ?观察者模式 ?模型视图控制器模式 ?发布订阅模式 ?代理模式 控制事件 在系统设计期间,需要识别并适当处理可能发生在系统对象中的事件。 事件是具有时间和空间位置的重大事件的说明。 可以建模的事件有四种类型,即- 信号事件-被一个对象抛出并被另一个对象捕获的命名对象。 呼叫事件-表示操作调度的同步事件。 时间事件-代表时间流逝的事件。 更改事件-表示状态更改的事件。 处理边界条件 系统设计阶段需要解决整个系统以及每个子系统的初始化和终止问题。记录的不同方面如下- ●系统的启动,即系统从非初始化状态到稳态的过渡。 ●系统终止,即关闭所有正在运行的线程,清理资源以及要发送的消息。

软件工程 第八章 面向对象的设计方法

第八章面向对象的设计方法 本章采用基于UML的面向对象设计方法的将分析模型转换为设计模型。如第五章所述,面向对象的分析模型主要由顶层架构图、用例与用例图、领域概念模型构成;设计模型则包含以包图表示的软件体系结构图、以交互图表示的用例实现图、完整精确的类图、针对复杂对象的状态图和用以描述流程化处理过程的活动图等。为完成这一转换过程,设计人员必须处理以下任务: (1)针对分析模型中的用例,设计实现方案。实现方案用 UML交互图表示。 (2)设计技术支撑设施。在大型软件项目中,往往需要一些技术支撑设施来帮助业务需求层面的类或子系统完成其功能。这些设施本身并非业务需求的一部分,但却为多种业务需求的实现提供公共服务。例如,数据的持久存储服务、安全控制服务和远程访问服务等。在面向对象设计中,需要研究这些技术支撑设施的实现方式以及它们与业务需求层面的类及子系统之间的关系。 (3)设计用户界面。 (4)针对分析模型中的领域概念模型以及第(2)、(3)两个步骤引进的新类,完整、精确地确定每个类的属性和操作,并完整地标示类之间的关系。此外,为了实现软件重用和强内聚、松耦合等软件设计原则,还可以对前面形成的类图进行各种微调,最终形成足以构成面向对象程序

设计的基础和依据的详尽类图。 面向对象的软件设计过程如图8-1-1所示。 图 8-1-1 面向对象的软件设计过程 第一节设计用例实现方案 UML 的交互图(顺序图、协作图)适于用例实现方案的表示。因此,本节首先介绍交互图的语言机制,然后探讨用例实现方案的设计方法。该设计方法包含如下3个步骤: (1)提取边界类、实体类和控制类; (2)构造交互图; (3)根据交互图精华类图。 一、顺序图 顺序图用来描述对象之间动态的交互关系,着重表现对象间消息传递的时间顺序。在顺序图中,参与交互的对象位于顶端的水平轴上,垂直轴表示时间,时间推移的方向是自上而下的。顺序图中的对象一般以“对象

面向对象的设计方法与C++编程

北京邮电大学200X-200X学年第一学期 《面向对象的设计方法与C++编程》期末考试试卷+扩展+复习题 试题一:填空题(没空一分,共20分) 请在括号内填入你认为正确的内容。 1.软件工程是指导(计算机软件)开发和维护的(工程学科)。 2.应用软件工程方法开发软件系统的根本目的是为了改善下述四项软件品质因素: 提高所开发的软件系统的(效率); 降低所开发的软件系统的(成本); 改善所开发的软件系统的(质量); 缩短所开发的软件系统的(开发周期)。 3.抽象的对象模型由(属性)和(方法)两个部分构成。 4.一个消息必须具备的两个要素是(接受消息的对象标识)和(接受消息的对象的方 法标识)。 5.一个对象拥有另一个对象的(部分)或(全部)的属性和方法的关系则称为(继 承)关系。 6.失去(创建具体对象实例的(制造对象))能力的类成为抽象类。 7.一个类的属性不能出现对象拷贝则被称为(类属性)。 8.面向对象技术的三大特征是(封装)、(继承)和(多态)。 9.共生包容关系中的被包容类对象与包容类对象是(同时连带)生成的。 10.同时出现在两个具有关联关系的对象内的相同属性被称为(连接属性)。 课程复习--补充题: 1.软件的生存周期是一个软件产品从(定义)、(开发)、(使用)到(废弃)的时 间的总合。 2.C++语言中的静态成员函数是(类方法)的具体实现。 3.连接属性是(关联/链接)关系的两个对象内的属性。 4.边界类与(actor(角色))对呈一一对应关系。 5.复合聚合关系中的(聚合)类对象极其依赖(被聚合)类对象,在实现上往往具有 被同时(构造)的特征,因而具有极高的(耦合度)。 试题二:是非判断题(每题1分,共20分) 请在题后的括号内填入√(你认为正确时)或×(你认为错误时)。 1.消息必须含有返回信息。(错) 2.一个类必然具有生成对象的能力。(错)(抽象类不具备) 3.在包容关系中的被包容类也具有封装性。(对) 4.关联关系只是一个动作的抽象。(错) (表示两个类之间的联系,通过这种联系,一个类可以访问到另外一个类的属性和方法。) 5.一个类也可以接收消息。(对) 6.关联关系中的作用名标识了该关联关系的终点对象的恰当地位。(对)

(完整版)《面向对象程序设计》答案

实验一熟悉VC++IDE开发环境 一、实验目的 1、熟悉VC++6.0集成开发环境,熟练掌握VC++6.0项目工作区、各种编辑器、菜单栏和工具栏的使用。 2、掌握如何编辑、编译、连接和运行一个C++程序。 3、通过运行简单的C++程序,初步了解C++源程序的结构和特点。 二、实验要求 1、分析下列程序运行的结果。 程序一: #include int add(int x,int y=8); void main() { int x=4; cout< void main() { int *p,i; i=5; p=&i; i=*p+10; cout<<"i="< void main(void) { int i=10; int &r=i; r++; cout<<"i="< void func(); int n=1; void main() { static int a; int b= -9; cout <<"a:"<

什么是面向对象程序设计

1 什么是面向对象程序设计,它与传统的结构式程序有什么不同。 面向对象程序设计是一种适用于设计、开发各类软件的范型。它是将软件看成是一个由对象组成的社会:这些对象具有足够的智能,能理解从其他对象接受的信息,并以适当的行为作出响应;允许低层对象从高层对象继承属性和行为。通过这样的设计思想和方法,将所模拟的现实世界中的事物直接映射到软件系统的解空间。 与传统的结构式程序设计相比,面向对象程序设计吸取了结构式程序设计的一切优点(自顶向下、逐步求精的设计原则)。而二者之间的最大差别表现在: ·面向对象程序采用数据抽象和信息隐藏技术使组成类的数据和操作是不可分割的,避免了结构式程序由于数据和过程分离引起的弊病。 · 面向对象程序是由类定义、对象(类实例)和对象之间的动态联系组成的。而结构式程序是由结构化的数据、过程的定义以及调用过程处理相应的数据组成的 2 用面向对象方法建立模型的思维过程是怎样的。 用面向对象方法建立拟建系统的模型的过程就是从被模拟现实世界的感性具体中抽象要解决的问题概念的过程。这种抽象过程分为知性思维和具体思维两个阶段,其中:·知性思维是从感性材料中分解对象,抽象出一般规定,形成了对对象的普遍认识。·具体思维是从知性思维得到出的一般规定中揭示的事物的深刻本质和规律,其目的是把握具体对象的多样性的统一和不同规定的综合。 3 解释以下概念: ①对象:在现实世界中,对象就是可以感觉到的实体。每个对象具有一个特定的名字以 区别于其他对象;具有一组状态用来描述它的某些特性;具有一组操作,每一个操作决定对象的一种功能或行为(为自身服务的操作和为其他对象提供服务的操作)。而在面向对象系统中,对象是可以标识的存储区域。每个对象的状态被保存在此区域中,而实现一类对象行为的操作(代码)被保存在另外相关的存储器区域中。 ②消息:消息是要求某个对象执行其某种功能操作(方法)的规格说明。因此,消息是 由消息的接收者、消息要求提供的操作(消息名)和必要的参数组成的。 ③类:在现实世界中,类是对一组具有共同特性(属性和行为)的客观对象的抽象。而 在面向对象系统中,类是由程序员自定义的具有特定结构和功能的类型,是一种代码共享的手段。 ④实例:任何一个对象都是该对象所属类的一个具体实例。 ⑤公有消息:是由对象外向对象发送的消息,用于激活该对象的某种方法。 ⑥私有消息:是由对象向自身发送的消息,用于内部操作;该类消息不能从对象外向该 对象发送。 ⑦消息序列:在面向对象系统中一个事件的发生总会有多个对象的多次相互作用才能完 成,使得这些对象能够相互作用的消息组成的序列被称为消息序列。 4 类与实例的关系如何? 类是创建对象的模板,而对象是实现类的实例。属于同一类的不同实例必须具有: ·相同的操作集合; ·相同的静态属性集合; ·不同的对象名和属性动态值。

软件与软件工程-面向对象设计

第9章面向对象设计

9.1 面向对象设计与结构化设计 与结构化的设计相比,面向对象的设计更符合复杂的、随机性较强和考虑并发性的系统软件设计,而不适合逻辑性很强的系统软件设计。结构化软件设计一般从系统功能入手,按照需求将系统功能分为若干个子功能模块。但是,用户的需求是在不断变化的。需求的改变往往会对功能模块产生影响,从而对整个系统产生影响,而面向对象的设计基于类、对象、封装、继承等概念,相比之下,需求的变化对系统的局部影响并不容易扩展到全局。因此,面向对象设计方法比结构化设计方法更具有优势,使用范围更广。 由于在类中封装了属性和方法,因此在面向对象的类设计中已经包含了面向过程中的过程设计。此外,与面向过程中的数据设计所不同的是,面向对象设计中的数据设计并不是独立进行的,面向对象设计中的

9.2 面向对象设计与面向对象分析的关系 设计阶段的任务是及时把分析阶段得到的需求转变成符合各项要求的系统实现方案。与传统的软件工程方法不同的是,面向对象的方法不强调需求分析和软件设计的严格区分。实际上,面向对象的需求分析和面向对象的设计活动是一个反复迭代的过程,从分析到设计的过渡,是一个逐渐扩充、细化和完善分析阶段所得到的各种模型的过程。严格的意义上来讲,从面向对象分析到面向对象设计不存在转换问题,而是同一种表示方法在不同范围的运用。面向对象设计也不仅仅是对面向对象分析模型进行细化。 面向对象分析到面向对象设计是一个平滑的过渡,即没有间断没有明确的分界线。面向对象分析建立系统的问题域对象模型,而面向对象设计是建立求解域的对象模型。

?9.3.1 面向对象设计的过程 面向对象的设计过程一般进行以下几个步骤。 (1)建立软件体系结构环境图 在软件体系结构设计开始的时候,设计应该定义与软件进行交互的外部实体(其他系统、设备和人员等)以及交互的特性。一般在分析建模阶段可以获得这些信息,并使用软件体系结构环境图对环境进行建模,描述系统的出人信息流、用户界面和相关的支持处理。一旦建立了软件体系结构的环境图,描述出所有的外部软件接口,软件架构师就可以通过定义和求精实现软件体系结构的构件来描述系统的结构。这个过程可一直迭代,直到获得一个完善的软件体系结构。在设计的初始阶段,软件架构师用软件体系结构环境图对软件与外部实体交互的方式进行建模。

3面向对象软件工程笔试

面向对象软件工程笔试题 姓名班级学号 一、单项选择题(每题1.5分,计30分) 1. 在面向对象的系统中,系统责任的良好分配原则是()。 A. 在类之间均匀分配 B. 集中分配在少数控制类中 C. 根据时序图的消息进行分配 D. 根据个人喜好进行分配 2. 能够保证某些类在系统中只存在一个实例的模式是:() A.抽象工厂(Abstract Factory)模式B.单态(Singleton)模式 C.建筑者(Builder)模式D.工厂方法(Factory Method)模式 3. 在UML中,用于描述对象和对象之间的交互,并且将重点放在消息的顺序上,强调时间,描述消息是如何在对象间发送和接收的模型是:() A.类图B.用例图C.状态图D.时序图 4.()意味着一个操作在不同的类中可以有不同的实现方式。 A.多态性B.多继承C.类的复用D.封装 5.在UML中,类A的一个操作以类B作为参数,调用类B的一个操作,且这两个类之间不存在其他关系,那么类A和类B之间是()关系。 A.聚合B.泛化C.实现D.依赖 6. 在UML中,类A中持有着类B作为属性,那么类A和类B之间是()关系。 A.普通关联B.泛化C.实现D.依赖 7. 在下面的描述中,不属于用例模型所能回答的问题是() A.参与者执行的主要任务或功能是什么? B.参与者希望从系统中获取什么样的信息? C.用例所描述的功能是怎样实现的? D.参与者之间的泛化关系是什么样的? 8. 在面向对象设计中,下列那个设计处于最基础的地位:() A.责任设计B.消息设计C.类及对象设计D.子系统设计 9.能够“将抽象部分与实现部分分离,使它们都可以独立变化”的设计模式是:() A.组合(Composite)模式B.命令(Command)模式C.桥(Bridge) 10.在面向对象软件开发方法中,类与类之间的结构关系主要有:() A.继承和聚合B.继承和一般C.聚集和消息传递D.继承和方法调用 11.能够在不改变类层次结构的前提下,在运行时根据需要透明地为类层次结构上的各个类 动态添加新功能的模式是:() A.访问者(Visitor)模式B.职责链(Chain of Responsibility)模式 C.观察者(Observer)模式D.策略(Strategy)模式 12.将对象组合成树型结构以表示“整体-部分”的层次结构,使得用户对单个对象和组合对象 的使用具有一致性的模式是:() A.组合(Composite)模式B.桥(Bridge)模式 C.命令(Command)模式D.适配器(Adapter)模式 13. 能够在运行时动态地为对象扩展功能的设计模式是:() A.代理(Proxy)模式B.装饰(Decorator)模式C.组合(Composite)模式D.桥(Bridge)模式

-面向对象方法范本(软件工程之业务流程)

题目 XX系统的研究与分析

第一章引言 1.1项目背景 社会治安综合治理是党中央依据我国社会主义初级阶段的理论,对新中国成立以来,特别是改革开放以来社会治安工作的经验,并从新时期社会治安的实际出发,提出的解决我国社会治安问题的总的战略方针。 高校治安综合治理以社会治安综合治理的存在为前提。高校治安综合治理是一项政治任务,是解决高校治安问题的根本出路,是具有中国特色的解决高校治安问题的新途径。实践证明,高校治安综合治理为维护高校政治稳定和校园治安环境、创造良好的教学科研秩序做出了重要贡献。尤其是当前形势下,高校治安综合治理在维护校园稳定、构建和谐校园中将发挥重要的积极作用。 经过探索与实践,全党和全社会对高校治安综合治理基本达成了共识。高校治安综合治理是社会治安综合治理的重要方面,高校和谐稳定是社会和谐稳定的重要基础,关系到全党和全国工作大局,关系到和谐社会建设,关系到青年大学生的健康成长,关系到高等教育事业的持续协调发展。 20 多年来,高校治安综合治理积累了丰富、成功的经验,这是一笔非常宝贵的财富。但是,随着我国政治经济体制改革的不断深化、社会主义法制建设的日臻完善、高等教育管理体制改革的继续深入,高校治安综合治理面临着严峻的挑战。如何把高校的综治工作做好,以评促建、以评促管是主要的手段之一,而在综治工作的考评过程中涉及到大量的数据和材料,以及各种的评分标准,目前都是采用纸质稿加电子稿人工考评的方式,每次的考评需要花费大量的人力物力,通过信息化的手段,建立一套综治的考评系统是很有必要的。 1.2同类系统研究与应用现状 <旨在突出同类系统研究与应用现状,应该多参考相关文献,引用比较多,注意引用格式>

面向对象程序设计教程答案

面向对象程序设计教程(C++语言描述)题解与课程设计指导 第1章 面向对象程序设计概论 一、名词解释 抽象封装消息 【问题解答】 面向对象方法中的抽象是指对具体问题(对象)进行概括,抽出一类对象的公共性质并加以描述的过程。 面向对象方法中的封装就是把抽象出来的对象的属性和行为结合成一个独立的单位,并尽可能隐蔽对象的内部细节。 消息是面向对象程序设计用来描述对象之间通信的机制。一个消息就是一个对象要求另一个对象实施某种操作的一个请求。 二、填空题 (1)目前有面向过程的结构化程序设计方法和面向对象的程序设计方法两种重要的程序设计方法。 (2)结构化程序设计方法中的模块由顺序、选择和循环3种基本结构组成。(3)在结构化程序设计方法中,程序可表示为程序=数据结构+算法;而面向对象的程序设计方法,程序可表示为程序=对象+消息。

(4)结构化程序设计方法中的基本模块是过程;而面向对象程序设计方法中的基本模块是类。 (5)面向对象程序设计方法具有抽象性、封装性、继承性和多态性等特点。 三、选择题(至少选一个,可以多选) (1)面向对象程序设计着重于( B )的设计。 A. 对象 B. 类 C. 算法 D. 数据 (2)面向对象程序设计中,把对象的属性和行为组织在同一个模块内的机制叫做(C )。 A. 抽象 B. 继承 C. 封装 D. 多态 (3)在面向对象程序设计中,类通过( D )与外界发生关系。 A. 对象 B. 类 C. 消息 D. 接口 (4)面向对象程序设计中,对象与对象之间的通信机制是(C )。 A. 对象 B. 类 C. 消息 D. 接口 (5)关于C++与C语言的关系的描述中,(D )是错误的。 A. C语言是C++的一个子集 B. C语言与C++是兼容的 C. C++对C语言进行了一些改进 D. C++和C语言都是面向对象的 【结果分析】 C语言是面向过程的。C++语言是一种经过改进的更为优化的C语言,是一种混合型语言,既面向过程也面向对象。 (6)面向对象的程序设计将数据结构与( A )放在一起,作为一个相互依存、不可分割的整体来处理。

面向对象程序设计教程答案

面向对象程序设计教程(C++吾言描述)题解与课程设计指导 面向对象程序设计概论 一、 名词解释 抽象封装消息 【问题解答】 面向对象方法中的抽象是指对具体问题(对象)进行概括,抽出一类对象的公 共性质并加以描述的过程。 面向对象方法中的封装就是把抽象出来的对象的属性和行为结合成一个独立的 单位,并尽可能隐蔽对象的内部细节。 消息是面向对象程序设计用来描述对象之间通信的机制。一个消息就是一个对 象要求另一个对象实施某种操作的一个请求。 二、 填空题 ( 1) 目前有面向过程的结构化程序设计方法和面向对象的程序设计方法两种 重要的程序设计方法。 (2) 结构化程序设计方法中的模块由顺序、选择和循环 3 种基本结构组成。 ( 3) 在结构化程序设计方法中,程序可表示为程序 =数据结构 +算法; 而面向 对象的程序设计方法,程序可表示为程序 =对象 +消息。 ( 4) 结构化程序设计方法中的基本模块是过程; 而面向对象程序设计方法 中的基本模块是类。 ( 5) 面向对象程序设计方法具有抽象性、封装性、继承性和多态性等特点。 三、 选择题(至少选一个,可以多选) ( 1) 面向对象程序设计着重于( B )的设计。 A. 对象 B. 类 C. 算法 D. 数据 ( 2) 面向对象程序设计中,把对象的属性和行为组织在同一个模块内的机制 叫做( C )。 A. 抽象 B. 继承 C. 封装 D. 多态 ( 3) 在面向对象程序设计中,类通过( D )与外界发生关系。 A. 对象 B. 类 C. 消息 D. 接口 ( 4) 面向对象程序设计中,对象与对象之间的通信机制是( C )。 A. 对象 B. 类 C. 消息 D. 接口 (5)关于C++与 C 语言的关系的描述中,(D )是错误的。 A. C 语言是C++勺一个子集 B. C 语言与C++是兼容的 C. C++对C 语言进行了一些改进 D. C++和C 语言都是面向对象的 【结果分析】 C 语言是面向过程的。C++吾言是一种经过改进的更为优化的 C 语言,是一种混 合型语言,既面向过程也面向对象。 ( 6) 面向对象的程序设计将数据结构与( A )放在一起,作为一个相互依 存、不可分割的整体来处理。 A. 算法 B. 信息 C. 数据隐藏 D. 数据抽象 第1

面向对象程序设计(答案)

学号:姓名: 第三章面向对象程序设计作业 一、判断题 1、一个Java源程序可有多个类,但只仅有一个public类,而且程序名与public类名相同。对 2、如果类A和类B在同一个包中,则除了私有成员外,类A可以访问类B中所有的成员。对 3、接口中的成员变量全部为常量,方法为抽象方法。对 4、抽象类可以有构造方法,可以直接实例化。错 5、对static方法的调用可以不需要类实例。对 6、包含抽象方法的类一定是抽象类。对 7、方法中的形参可以和方法所属类的属性同名。对 8、接口无构造器,不能有实例,也不能定义常量。错 9、类的实例对象的生命周括实例对象的创建、使用、废弃、垃圾的回收。对 10、Java应用程序的入口main方法只有一种定义法。对 二、选择题 1、下列答案正确的是(A ) A) 在同一个Java源文件中可以包含多个类,只能有一个被声明为public B) 在同一个Java源文件中只能包含一个类,并被声明为public C) 在同一个Java源文件中可以包含多个类,都可以被声明为public D) 在同一个Java源文件中可以包含多个类,只能有一个被声明为default 2、Java实现动态多态性是通过( B )实现的。 A) 重载B) 覆盖 C) 接口D) 抽象类 3、下列哪一个是正确的方法重载描述( A ) A) 重载方法的参数类型必须不同 B) 重载方法的参数名称必须不同 C) 返回值类型必须不同 D) 修饰词必须不同 4、final关键字不可以用来修饰( D ) A) 类B) 成员方法 C) 域D) 接口 5、接口的所有成员方法都具有( B )属性 A) private, final B) public, abstract C) static, protected D) static 6、Java的封装性是通过(A )实现的 A) 访问控制B) 设计内部类 C) 静态域和静态方法D) 包 7、下列接口或类不属于.*包的是( D ) A) Collection B)Vector C) Map D) Integer 8、下述哪一组方法,是一个类中方法重载的正确写法( A ) A) int addValue( int a, int b ){return a+b;}

浅析软件工程中面向对象的思想和方法

浅析软件工程中面向对象的思想和方法 面向对象(Object Oriented,OO)是当前计算机界关心的重点,它是90年代软件开发方法的主流。面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围。如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。在20 世纪60 年代以前, 软件开发者构造的软件系统大多都是较小的, 且相对简单。编程语言及编程环境也相对简单, 随着软件复杂性的增长, 为了更好地维护代码, 软件开发也需要方法来进行约束。传统的方法中, 结构化方法和基于建模方法是典型的软件开发方法。结构化方法是结构化分析、结构化设计和结构化编程的总称。结构化方法的思想萌发于20 世纪60 年代, 是在70 年代由Tom DeMacro 和Ed Yourdon 等人被系统地进出来。其目的在于, 提供一个有序的机制, 通过抽象来理解待开发的系统, 试图产生结构良好的软件系统。但对于较复杂的系统而言, 容易导致模块的低内聚和模块间的高耦合, 从面使得系统缺乏灵活性和可维护性。基于建模方法在20 世纪70 年代末提出, 即Peter Chen 的实体———关系法与Ed Codd 的关系数据库理论相结合提出的一种新的软件开发方法。其强调对信息实体建模, 而不是对象建模。结构化方法和基于建模方法都没有较强地描述系统的动态行为的能力。随着计算机技术的飞速发展, 计算机管理系统应用的普及, 企业信息化势在必行。传统开发方法结

构化开发的软件存在很多问题, 其有稳定性、可修改性和可重用性都比较差, 生产效率低等缺陷, 这是因为传统的软件开发是面向过程的。然而, 用户需求的变化大部分是针对功能的, 采用面向对象方法开发可以满足用户的需求, 因为面向对象有以下优点: 能够比较自然地反映现实事物, 可重用性、可维护性和可扩展性比较强。 第二章面向对象概述 什么是面向对象呢?“面向对象”本身没有任何意义。“对象”大概是英语中最普通的一个单词。它在字典中的定义是这样的。对象:能感觉到或能够被感觉到的东西。换句话说,对象可以是任何东西! “面向”也没有任何特别的含义,它的定义是“指向”。在这种定义下,“面向对象”被理解为形容词。因此,面向对象可以定义成这样,面向对象:指向你可以想到的任何东西。 毫无疑问,软件工业无法为“面向对象”下一个统一的定义。这种模糊性使得任何一个软件零售商都声称他们的商品是“面向对象”的。 2.1面向对象的基本概念 尽管权威人士对面向对象的概念没有达成一致的意见,但从程序设计方法的角度来看, 面向对象是一种新的程序设计范型。其基本思想是使用对象、类、封装、继承、关联、聚合、消息、多态性等基本概念来进行程序设计。

面向对象分析设计小结

?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项目开发过程的特征:用例驱动的系统、以体系结构为中心、螺旋 上升式的开发过程、以质量控制和风险管理为保障措施。

面向对象程序设计完整版

Object- Orien ted Programmi ng C++ 主讲成长生 东华大学计算机科学与技术学院

第一章概述 § 1.1 面向对象程序设计的基本思想 C++是基于C语言发展的,又冲破C语言局限的面向对象的程序设计语言。它与Java 语言都作为当前计算机科学的主流语言, 越来越受到用户的欢迎。 要弄清楚什么是面向对象的程序设计, 首先了解和回顾传统的 ( Pascal(或C))结构化程序设计方法及其设计思想、程序结构及特点。SP(Structure Programming)是60 年代诞生的针对当时爆发的所谓”软件危机” , 为此发展形成了现代软件工程学的基础。 SP的总的设计思想是: . 自顶向下、层次化 . 逐步求精、精细化 程序结构是按功能划分基本模块的树型结构, 使模块间的关系尽可能简单独立。因此SP的程序的基本特点是: . 按层次组织模块(战略上划分战役) . 每一模块只有一个入口, 一个出口 ?代码和数据分离(程序=数据结构+算法) 归纳得到: SP 把数据和过程(代码、函数)分离为相互独立的实体, 用数据代表问题空间中的客体借以表示实际问题中的信 息; 程序代码则用来处理加工这些数据。程序员在编程时 必须时刻考虑所要处理的数据结构和类型。对不同的数据格式即使要作同样

的处理计算, 或者要对相同的数据格式作不同的处理都必须编写不同的程序(如两个整型数和两个浮点数相加)。这样的编程方法,即传统的SP方法设计出来的程序或系统其可重用的成分很少。其次把数据和代码作为不同的分离实体时, 总存在着用错误的数据调用正确的程序模块, 或用正确的数据调用错误的程序模块的危险, 从而使数据与程序始终保持兼容, 已成为程序员 的一个沉重的负担。在开发一个大型软件课题中, 当工程进入到 后期若用户改变了方案要求, 很容易使技术人员的前期工作受到摧毁性的打击,使其前功尽弃。为克服以上的弊端或者该SP方法难以控制处理的矛盾而产生了面向对象程序设计方法, 即Object —Oriented Programming ----------- OOP从二十世纪六十年代提出对象 的雏形, 到七十年代美国国防部的专用语言Ada 语言, 直到当前国际上流行的高品味的Java 和C++(Tc++,Balandc++ 及Vc++), , 应该讲OOP方法与技术吸取了SP的一切优点,同时又正视和顺应现实世界由物质和意识二部分组成。映射到面向对象的解空间就是: 具体事物—对象; 抽象概念—类。 OOP的基本原理是用问题领域的模型来模拟大千世界,从而设计出尽可能直接、自然地表示问题求解方法的软件, 这样的软件由对象组成, 而对象则是完整反映客观世界事物具有不可分割的静态属性(”数据结构” )与动态行为(”方法” )的。而且它们是既有联系又

面向对象软件工程—课后作业

面向对象软件工程 第八章 8.1.什么是面向对象方法学,它有哪些优点? 答:面向对象方法学是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类解决问题的方法与过程,使描述问题的问题空间与实现揭发的解空间在结构上尽可能一致的方法学科。优点:1、与人类的习惯的思维方法一致;2、稳定性好;3、可重用性好;4、适合用于大型软件产品;5、所开发的软件有较好的可维护性;6、面向对象的软件比较容易修改;7、面向对象软件比较容易理解;8、易于测试和调式。 8.2.什么是对象,它与传统的数据有何异同? 答:对象是对问题域中某个实体的抽象。相对于传统数据的静态被处理,对象既有静态的属性,又有动态的行为,是进行处理的主体。 8.3.什么是类? 答:类是对具有相同数据和相同操作的一组相似对象的定义。

8.4.什么是继承? 答:继承是指能够直接获得已有事物的性质和特征,而不必重复定义他们。 8.5.什么是模型,开发软件为何要建模? 答:所谓模型就是为了理解事物而对该事物做出的一种抽象,是对事物的一种无歧视定义的书面描述。由于模型忽略了事物的非本质东西,因此模型比原始事物更容易操作。对于那些因过分复杂而不能直接理解的系统,特别需要建立模型,建模的目的主要是为了降低复杂性。人的头脑每次只能出来少量信息,模型通过把系统的重要部分分解成人的头脑一次能处理的若干个子部分,从而减少了系统的复杂程度。 8.6.什么是对象模型,建立对象模型时主要使用哪些图形符号,这些符号的含义是什么? 答:对象模型表示静态的、结构化的系统性质,是对模拟客观世界实体的对象以及对象彼此间的关系的映射,描述了系统的静态结构。在UML中,用类图来建立对象模型,表示一个类及属于该类的对象。 8.7.什么是动态模型,建立动态模型时主要使用哪些图形符号,这些符号的含义是什么? 答:动态模型时描述系统控制结构,即行为化的一种模型。在UML

面向对象程序设计教程 (马石安版)

第 1 章习题答案 名词解释 抽象:抽象(Abstract)就是忽略事物中与当前目标无关的非本质特征,而强调与当前目标有关的本质特征,从而找出事物的共性,并把具有共性的事物划为一类。面向对象方法中的抽象,是指对具体问题(对象)进行概括,抽出一类对象的公共性质并加以描述的过程。 封装:面向对象方法中的封装就是把将抽象出来的对象的属性和行为结合成一个独立的单位,并尽可能隐蔽对象的内部细节。 消息:消息是面向对象程序设计用来描述对象之间通信的机制。一个消息就是一个对象要求另一个对象实施某种操作的一个请求。 填空题 (1) 面向过程的结构化程序设计方法面向对象程序设计方法 (2) 顺序选择循环 (3) 程序=数据结构+算法程序=对象+消息 (4) 过程类 (5) 抽象性封装性继承性多态性选择题 (1) B (2) C (3) D (4) C (5) D (6) A (7) A (8) B C (9) A D 判断题(1) t (2) f (3) f (4)f (5) t (6) f (7) f (8) t 简答题 (1) 结构化程序设计方法着眼于系统要实现的功能,从系统的输入和输出出发,分析系统要做哪些事情,进而考虑如何做这些事情,自顶向下地对系统的功能进行分解,来建立系统的功能结构和相应的程序模块结构,有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。随着程序规模与复杂性的增长,这种面向过程的结构化程序设计方法存在明显的不足之处。首先是数据安全性问题,由于数据被每个模块所共用,因此是不安全的,一旦出错,很难查明原因。其次是可维护性及可重用性差,它把数据结构和算法分离为相互独立的实体,一旦数据结构需要改变时,常常要涉及整个程序,修改工作量极大并容易产生新的错误。每一种相对于老问题的新方法都要带来额外的开销。另外,图形用户界面的应用程序,很难用过程来描述和实现,开发和维护也都很困难。 (2) 面向对象的程序设计方法中,将程序设计为一组相互协作的对象(Object)而不是一组相互协作的函数。在程序中,属性用数据表示,用来描述对象静态特征;行为用程序代码实现,用来描述对象动态特征。可见,在面向对象的程序设计方法中,对象是数据结构和算法的封装体。对象之间存在各种联系,它们之间通过消息进行通信。程序可表示为:程序=对象+消息在面向对象程序设计中,它着重于类的设计。类正是面向对象语言的基本程序模块,通过类的设计,来完成实体的建模任务。类通过一个简单的外部接口,与外界发生关系。一个类中的操作不会处理到另一个类中的数据,这样程序模块的独立性、数据的安全性就有了良好的保障。程序的执行取决于事件发生的顺序,由顺序产生的消息来驱动程序的执行。不必预先确定消息产生的顺序,更符合客观世界的实际。并且面向对象程序设计方法提供了软件重用、解决大问题和复杂问题的有效途径,具有抽象性、封装性、继承性和多态性等特点。 (3) 结构化程序设计方法中,把数据结构和算法分离为相互独立的实体。在面向对象程序设计中,数据结构和算法是封装在一起,结合成一个独立的单位,即对象,并尽可能隐蔽对象的内部细节。对象的私有属性只能由这个对象的行为来读取和修改,与外部的联系通过公有行为充当外部接口。 第 2 章习题答案

软件工程复习-面向对象的分析与设计题

此部分内容包括教材第2、7、8、10章内容 一、填空题 1. 面向对象开发方法一改过去传统的以_______________为基础的______________的结 构化分析与设计方法,它模拟人们理解和处理客观世界的方式来分析问题,把系统视为一系列_______的集合,其______________又将分析的结果映射到某种面向对象实现工具的结构上,使映射过程有着比较直接的对应关系,使分析者、设计者和编程者都可使用相同的______,从而使面向对象的软件开发能比较自然地模拟客观世界的活动,使问题描述空间与____________在结构上尽可能一致。因此,采用面向对象方法可以更有效地开发大型软件系统。面向对象方法的________、________、_________等机制不仅支持软件复用,而且使软件维护工作可靠有效,可实现软件系统的柔性制造,更好地克服____________。因此,它已成为成熟的广为采用的软件开发方法。 2. 对象是客观实体的抽象表示,是由__________________________和 ________________________两部分组成。而______是对具有相同属性和行为的一组对象的抽象描述。因此,它可作为一种用户自定义类型和创建对象的样板,而按照这种样板所创建的一个个具体对象就是类的___________。通过________关系又可形成一种类层次结构。在类层次结构的不同类中,可用相同的函数名实现功能不同的函数,面向对象技术的这种特性叫做___________。 3. UML中用于描述系统的交互行为的视图称为动态视图,包括________、 _________、__________和__________。 二、选择题 1、面向对象程序设计将描述事物的数据与( ) 封装在一起,作为一个相互 依存、不可分割的整体来处理。 A. 信息 B. 数据隐藏 C. 对数据的操作 D. 数据抽象 2、()是从用户使用系统的角度描述系统功能的图形表达方法。 A. 类图 B.协作图 C. 顺序图 D. 用例图 3、( ) 是表达系统类及其相互联系的图示,它是面向对象设计的核心。 A.类图 B. 构件图 C. 类图 D. 部署图 4、()描述了一组交互对象间的动态协作关系,它表示完成某项行为的 对象和这些对象之间传递消息的时间顺序。 A.类图 B. 协作图 C. 用例图 D. 顺序图 5、在确定类时,候选的类是所有的________。 A)名词 B)形容词 C)动词 D)代词 6、在面向对象的设计中,我们应遵循的设计准则除了模块化、抽象、低耦 合、高内聚以外,还有________。 A)隐藏复杂性 B)类的开发

相关主题
文本预览
相关文档 最新文档