项目5 面向对象分析与设计技术_第1页
项目5 面向对象分析与设计技术_第2页
项目5 面向对象分析与设计技术_第3页
项目5 面向对象分析与设计技术_第4页
项目5 面向对象分析与设计技术_第5页
已阅读5页,还剩50页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

学习内容5.1面向对象基本概念和特征5.2面向对象的分析与建模5.3面向对象设计5.4面向对象的程序设计与实现5.5案例分析——网上购书系统的OOA和OOD报告面向对象分析与设计技术

本章要点掌握面向对象方法的基本思想、面向对象基本概念和特征;理解OOA的主要任务和三种模型的建立方法,并学会创建三种模型;理解并掌握OOD模型中四个组成部分及五个层次的主要设计内容;了解面向对象程序设计语言,关注面向对象的开发过程和新技术

。面向对象分析与设计技术

面向对象(ObjectOriented,OO)是当前计算机界关心的重点,它是90年代软件开发方法的主流。目前,面向对象的概念和应用已超越了程序设计和软件开发,扩展到一个很宽的范围。如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。什么叫面向对象?Cord和Yourdon给出如下用公式表示面向对象的定义:面向对象=对象+类+继承+通信即如果一个软件系统是使用这四个概念来设计和实现的,就可以认为该软件系统是面向对象的。

5.1面向对象基本概念和特征面向对象技术具有许多特色,一是面向对象方法的唯一性,即面向对象方法是对软件开发过程所有阶段进行综合考虑而得到的唯一有效方法;二是面向对象技术中生存期的一个阶段到下一个阶段的高度连续性,即在一个阶段所用的组成部分与下一个阶段所使用的组成部分是衔接的或无缝连接的;三是把面向对象分析(OOA)、面向对象的设计(OOD)和面向对象程序设计(OOP)集成到软件生存期对应的不同阶段。下面就来详细学习有关面向对象的一些基本概念:1.对象(Object):对象由一组属性和对这组属性进行操作的一组方法(即服务)组成。如图5.1所示是对象在ROSE中的表示形式

图5.1对象的表示

图5.2消息的传递方式5.1面向对象基本概念和特征2.类(Class)类是具有相同特征(即属性)和行为(或操作)的一组对象的集合。即类是关于对象的抽象描述,反映了该对象类型的所有对象的性质,例如:班级类,汽车类等。以C++为例,类的一般定义格式如下:

class

<类名>

{

public:

<成员函数或数据成员的说明>

private:

<数据成员或成员函数的说明>

};

<各个成员函数的实现>

一个对象则是其对应类的一个实例(Instance)。类和对象的关系是:类是对象的抽象,类是对象的“模板”,类用于创建对象;对象是类的实例。5.1面向对象基本概念和特征3.消息和方法(messageandmethod)

消息就是两个对象之间传递的信息或发出的服务请求。消息是对象之间通信的手段,一个对象向另一对象发送消息来请求其服务。消息的使用类似于函数调用,消息中指定了接收消息的某一个对象(或实例)名称,一个消息标识符(也称消息名或操作名)和一个参数表(零个或多个参数,可能是空的)。接收消息的实例执行消息中指定的操作,并将形式参数与参数表中相应的值结合起来。例如:MyCycle.Show(Red);方法是类中操作的实现过程,一个方法通常包含方法名、参数和方法体。当一个对象接收到一条消息后,它所包含的方法决定对象该做怎样的处理。对象的内部信息是隐蔽的(私有的),对象私有的数据是用它的方法来访问的,而对象间的访问只能通过消息来连接。5.1面向对象基本概念和特征

4.封装(Encapsulation)封装的目的在于将对象的使用者和对象的设计者分开,使用者不必知道所访问对象的内部行为细节,只须用设计者提供的消息来访问对象。封装是一种信息隐蔽技术,用户只能见到对象封装界面上的信息,而对象内部的实现细节对用户是隐藏的。所谓封装包含有两方面含义,一个是指把对象的全部属性和全部操作(即方法)结合起来,形成一个不可分割的独立单位(即对象);另一个是指信息隐蔽,即尽可能隐蔽对象内部的行为实现细节。类(或对象)是封装的基本单位。在类中定义的接收对方消息的方法称为类的接口。封装使对象形成两个部分,接口部分和实现部分。接口部分是可见的,供外界通过消息来访问该对象,而实现部分不可见。5.1面向对象基本概念和特征5.继承性(Inheritance)继承性是面向对象程序设计语言不同于其他语言的最重要的特点。继承性是父类和子类之间共享数据和方法的机制,也是类之间的一种关系。如果某几个类之间具有共性的东西(信息结构和行为),抽取出来放在一个泛化类中,将各个类的特有东西放在特殊类中分别描述,则可建立起特殊类对泛化类的继承。继承是使用已有的类定义作为基础建立新类的定义技术。已有的类可当做基类来引用,则新类相应地可当作派生类来引用。继承性有两种类型:一个子类只有唯一的一个父类,这种继承称为单继承;一个子类也可以有多个父类,它可以从多个父类中继承特性,这种继承称为多继承。继承具有传递性。5.1面向对象基本概念和特征6.多态性(Polymorphism)与动态绑定(Dynamicbinding)多态性(Polymorphism)是指同名的函数或操作可在不同类型的对象中有各自相应的实现。即对象根据所接收的消息而做出动作,同样的消息被不同的对象接收时可导致完全不同的行为的这种现象属于多态性。具有多态的函数或操作在运行时才根据实际的对象类型,执行相应实现程序的连接,称为动态绑定(Dynamicbinding)。即动态绑定是指在执行期间(非编译期)判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。动态绑定又称为运行时绑定(runtimebinding),它能允许程序推迟调用正确的方法,直到程序开始执行时。7.重载(Overloading)重载方法是指一个类中的方法与另一个方法同名,但是参数表不同,这种方法称之为重载。重载方法可以分为两种类型:函数重载和运算符重载。函数重载是指在同一作用范围内的若干个参数特征不同的函数可以使用相同的函数名字。运算符重载是指同一个运算符可以施加于不同类型的操作数上面。

5.1面向对象基本概念和特征5.2面向对象的分析与建模5.2.1面向对象分析面向对象方法(Object-OrientedMethod)是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,简称OO(Object-Oriented)方法,是建立在“对象”概念基础上的方法学。面向对象的分析(OOA)方法则相当于软件开发过程中的问题定义和需求分析阶段,它是用面向对象的概念和方法为软件需求建造模型,分析的过程就是提取和确定系统需求的过程。面向对象分析的需求规格说明主要包括三种模型:对象模型、动态模型和功能模型。其中的对象模型是最基本、最重要、最核心的模型。在面向对象方法中,类、对象和事物等概念之间的关系如图5.3所示,图中在类和对象图示中的实线框表示类和对象的边界,而虚线框表示其相应实例的边界。图5.3类、对象和事物之间的关系图5.2面向对象的分析与建模(1)OOA分析过程概述面向对象分析过程就是提取系统的需求的过程,是指为了满足用户的需求,系统必须“做什么”,而不是“怎么做”(系统如何实现)。系统分析通常是从一个需求文档(陈述)和用户一系列的讨论开始的。一般来说,由用户、领域专家、系统的开发者以及其他相关人员参加制定需求文档。

首先,系统分析员要对需求文档进行分析。需求文档通常是不完整、不准确的,也可能还是非正式的。通过分析可以发现和改正需求文档中的歧义性、不一致性。,剔除冗余的内容,挖掘潜在的内容,弥补不足,从而使需求文档更完整、更准确。然后,是需求建模。系统分析员根据提取的用户需求,深入理解用户需求,识别出问题域内的对象,并分析它们相互之间的关系,抽象出目标系统应该完成的需求任务,并用OOA模型准确地表示出来。最后,是需求评审。通过用户、领域专家、系统分析员和系统设计人员的评审,并进行反复修改后,确定需求规格说明。5.2面向对象的分析与建模(2)OOA的主要原则1)抽象(abstraction)2)封装(encapsulation)封装也即信息隐蔽。3)继承(inheritance)4)关联(association)5)消息通信(communicationwithmessage)6)分类(classification)7)聚合(polymerization)又称为组装8)粒度控制9)行为分析(behavioralanalysis)5.2面向对象的分析与建模(3)面向对象分析的三个模型与五个层次

1)面向对象分析的三个模型:面向对象分析的模型包括:对象模型、动态模型和功能模型。对象模型描述了系统的静态数据结构;动态模型描述了系统控制结构及交互次序;功能模型描述了系统的功能及数据变换。2)面向对象分析的五个层次面向对象分析由五个主要活动组成,即确定类-&-对象、识别结构、识别主题、定义属性和定义服务(方法)。对于一个复杂问题的面向对象的模型可以用五个层次来表示:类-&-对象层、结构层,主题层、属性层和服务层,见图5.5所示。5.2面向对象的分析与建模

图5.4三种模型之间的关系图5.5OOA的五个层次

5.2面向对象的分析与建模(4)OOA方法的基本步骤

在用OOA具体地分析一个事物时,大致上遵循如下五个基本步骤:第一步,确定类和对象(类-&-对象)。类是多个对象的共同属性和方法集合的描述,它包括如何在一个类中建立一个新对象的描述。第二步,确定结构(structure)。结构是指问题域的复杂性和连接关系。类成员结构反映了泛化-特化关系,整体-部分结构反映整体和局部之间的关系。第三步,确定主题(subject)。主题是指事物的总体概貌和总体分析模型。第四步,确定属性(attribute)。属性就是数据元素,可用来描述对象或分类结构的实例,可在图中给出,并在对象的存储中指定。第五步,确定方法(method)。方法是在收到消息后必须进行的一些处理方法:方法要在图中定义,并在对象的存储中指定。

5.2面向对象的分析与建模即面向对象分析过程可按照下列流程进行:确定类—&—对象、识别结构、识别主题、定义属性、建立动态模型、建立功能模型、定义服务(方法)。但是,对于大型的、复杂的问题,不可能严格按照上面流程进行,需要反复多次进行寻找、确定、识别、建立和定义来构造模型。(5)OOA的主要优点1)加强了系统分析人员对问题域和系统责任的理解;2)改进与分析了有关各类人员之间的交流;3)对需求的变化具有较强的适应性;4)支持软件复用;5)贯穿软件生命周期过程的一致性;6)实用性,有利于用户的参与。5.2面向对象的分析与建模5.2.2面向对象的建模1.建模与模型建模是将问题域的解空间定义成一种模型,以帮助系统分析人员更好地理解问题。模型是为了理解问题而对问题所做出的一种抽象,而且是对问题的一种无歧义的描述,OOA主要抽象出三种模型包括:对象模型、动态模型和功能模型。模型用一组图示符号和组织这些符号的规则组成,利用它们来定义和描述问题域中的术语和概念,面向对象建模的目的主要是为了减少问题的复杂性。2.面向对象模型

用面向对象方法开发软件,通常需要建立对象模型、动态模型和功能模型三种模型。对象模型是描述系统数据结构的;动态模型是描述系统控制结构的;功能模型是描述系统功能的。数据、控制和操作等是这三种模型都涉及到的共同概念,只不过是各自描述的侧重点不同罢了。一个典型的软件系统应包含数据结构(对象模型)、执行操作(动态模型)和完成数据值的变化(功能模型)三部分内容。5.2面向对象的分析与建模3.常用的面向对象分析与设计模型常用的面向对象分析与设计模型有四类:●JamesRumbaugh等人的OMT模型;●Coad和Yourdon的模型;●Booch开发模型;●UML统一建模语言(在项目二已专门介绍)。本教材就以最常用的JamesRumbaugh的对象模型化技术OMT(objectmodelingtechnique)和UML为例结合网上购书系统进行OOA和OOD建模分析,而Coad和Yourdon的模型和Booch开发模型由于篇幅所限请读者参考有关参考资料进行了解。5.2面向对象的分析与建模5.2.3对象模型在OMT模型中,关于对象模型、动态模型和功能模型的建立次序和关系已在上面图5-4中展示出来,面向对象方法是以对象为基础来构造系统的,而不是以功能为基础来构造系统,对象模型为动态模型和功能模型提供了基本的框架,对象模型用包含对象和类的对象图来表示。

1.类与对象的图形表示方法下面图5.6.1所示是对象模型中类与对象的图形表示方法,图5.6.2是“商品”类的定义示例:图5.6.1类与对象的图形表示方法图5.6.2商品类定义示例5.2面向对象的分析与建模在OMT中,类与类之间的关系叫做关联。关联代表一组存在于两个或多个对象之间的,具有相同结构和含义的具体连接。关联可以是物理的,也可以是逻辑的。如下图5.7所示是OMT中关联的表示符号:图5.7OMT中关联的表示符号此外,类和类之间的关联还有如下一些特殊表示形式(参看图5.8.1,图5.8.2):5.2面向对象的分析与建模

图5.8.1特殊关联的表示形式图5.8.2特殊关联表示实例泛化(继承)关联的表示方法及实例参考图5.9.1和图5.9.2所示:

图5.9.1继承关系的表示方法图5.9.2继承关系的实例参考图5.9.1继承关系的表示方法图5.9.2继承关系的实例参考5.2面向对象的分析与建模面向对象分析的首要任务是:识别出问题域内的对象,并分析它们相互之间的关系,构造领域对象模型。建立领域对象模型的基本过程参考前面提到的OOA方法的基本步骤进行。(1)确定对象和类

OOA的核心是确定问题域中相关的对象,找出这些对象是个很重要而复杂的过程。一般采用基于系统词汇分析的方法:从目标系统的描述开始,找出其中的名词作为候选对象类,此外,还可以找出其中的动词作为候选方法(即后面要介绍的服务),然后产生一个由对象(名词)和方法(动词)构成的表格,作为词汇分析的初步结果,最后从中选出确定的真正的对象类。例5-3以“网上购书系统”为案例,用OOA的方法进行分析,并建立系统对象模型。如图5.11所示:5.2面向对象的分析与建模2.建立问题域对象模型图5.11网上购书系统对象模型图5.2面向对象的分析与建模采用系统词汇法确定对象类,并进行建模的具体步骤是:确定对象类→准备数据字典→确定关联→确定属性→使用继承来细化对象类→完善对象模型2.确定结构结构描述的是多种对象之间的组织方式,它反映了问题域中复杂事物之间的复杂关系。结构通常包括两种类型:一般/特殊结构(即分类结构)和整体/部分结构(即聚合结构)。3.确定主题主题是一种关于模型的抽象机制,起一种控制作用。主题有两种表示形式如图5.12所示。(a)主题的简单表示(b)主题的扩展表示图5.12主题的两种表示5.2面向对象的分析与建模4.确定服务和消息服务是指在接收到一条消息后所要进行的加工。确定一个类中的服务,主要取决于该类在问题中的实际作用以及求解过程中承担的处理责任,确定的原则如下:(1)基本的属性操作服务。即类中应提供的访问、修改自身属性值的基本操作。这类操作属于类的内部操作,可不必在对象模型中显式表示。(2)事件的处理操作。动态模型中状态图描述了对象应接收的事件(消息),类和对象中必须提供处理相应消息的服务,这些服务用于修改对象的状态(属性值)并启动相应的服务。(3)数据流图中处理框对应的操作。功能模型中的每个处理框代表了系统应实现的部分功能,而这些功能都与一个或几个对象中提供的服务相对应。因此,要仔细分析状态图和数据流图,以便正确的确定对象应提供的服务。(4)利用继承机制优化服务集合,减少冗余服务。应尽量抽取相似的公共属性和服务,以建立这些相似类的新父类,并在类的不同层次中正确定义各个服务。5.2面向对象的分析与建模5.2.4动态模型当问题涉及用户界面与过程控制时,动态模型是重点,动态模型描述系统的动态行为,表现对象在系统运行期间不同时刻的动态交互。动态模型主要由状态图和事件追踪图(即时序图或顺序图)构成。状态图描述一个对象的个体行为,而事件追踪图则描述多个对象所表现出来的集体行为。建立动态模型首先要编写脚本,从脚本中提取事件,然后画事件跟踪图,最后画对象的状态转换图。1.事件追踪图要建立一个事件追踪图,通常首先要编写脚本。脚本是系统执行某个功能的一个事件序列。脚本也称为“场景”,编写脚本的目的在于保证不遗漏系统功能中重要的交互步骤,有助于确保整个交互过程的正确性和清晰性。5.2面向对象的分析与建模例5-5:“网上购书系统”用户订购图书的脚本如下表5.2所示:表5.2用户网上订购图书的脚本编号事件1普通在线用户通过浏览器访问本网站2普通用户注册、登录网站3普通用户商品查询4查看商品详细信息5选择需要的书籍并放进购物车6系统自动保存并更新购物车7客户确认购买,并生成订单8系统的工作人员及时处理订单9客户查询其订单的状态(处理中)10客户对订单进行添加、删除和修改,并自动保存11订单复审并发货12客户查询订单的状态显示已发货13客户接到货物,订购操作完成5.2面向对象的分析与建模编写好脚本后,接着需要确定事件跟踪,即确定在对象之间传送信息的各个事件。通常首先标识出每个事件的发送者对象和接收者对象,然后在事件追踪图中按事件先后顺序表示事件、事件的发送者对象和事件的接收者对象。用户网上订购图书的事件追踪图(即时序图)如图5.14所示。

图5.14用户网上订购图书的时序图5.2面向对象的分析与建模协作图(CollaborationDiagram,也叫合作图),用于显示对象之间如何进行交互以执行特定用例或用例中特定部分的行为。它也是一种交互图(interactiondiagram),强调的是发送和接收消息的对象之间的上下级组织结构。一个协作图显示了一系列的对象和在这些对象之间的联系以及对象间发送和接收的消息。如图5.15是用户网上订购图书的协作图。

图5.15用户网上订购图书的协作图5.2面向对象的分析与建模综上可见,动态模型描述与时间和操作顺序有关的系统特征——激发事件、事件序列、确定事件先后关系以及事件和状态的组织。动态模型表示瞬时的、行为上的、系统的“控制"特征。动态模型用状态图来表示。每张状态图显示了系统中一个类的所有对象所允许的状态和事件的顺序。

UML中的状态图及其画法详请参看项目二2.4.3节。图5.16用户网上订购图书的状态图5.2面向对象的分析与建模2.构建状态图5.2.5功能模型功能模型描述与值的变换有关的系统特征——功能、映射、约束和函数依赖。它主要用来说明系统内部数据是如何传送和处理的,表示变化的系统的“功能”性质。功能模型描述了系统“做什么”,它更直接、明确地反映了用户对目标系统的需求。建立功能模型有助于软件开发人员更深入地理解整个问题域,改进和完善自己的设计。通常在建立对象模型和动态模型之后再建立功能模型。在UML中,可以用用例图描述系统的部分或全部功能模型。下面以“网上购书系统”用户接口模块的用例图加以展示,如图5.17所示:5.2面向对象的分析与建模另外,功能模型可由多张数据流图(DFD)组成,它们表示从外部输入,通过操作和内部存储,直到外部输出的数据流的情况,数据流图有助于表示系统的功能依赖关系。用数据流图建立功能模型的主要步骤有五步:(1)确定输入和输出值;(2)用数据流图表示功能的依赖性;(3)具体描述每个功能;(4)确定对象的约束;(5)对功能确定优化的准则。图5.17“网上购书系统”用户接口模块用例图5.2面向对象的分析与建模图5.18是一个网上订购图书的总的数据流图。图5.18网上订购图书的总的数据流图5.2面向对象的分析与建模综合以上介绍,三个模型之间的相互关系总结如下:(1)与功能模型的关系:对象模型展示了功能模型中的动作者、数据存储和流的结构,动态模型展示了执行加工的顺序。(2)与对象模型的关系:功能模型展示了类上的操作和每个操作的变量,因此它也表示了类之间的“供应者一客户"关系;动态模型展示了每个对象的状态以及它接收事件和改变状态时所执行的操作。(3)与动态模型的关系:功能模型展示了动态模型中未定义的不可分解的动作和活动的定义,对象模型展示了是谁改变了状态和承受了操作。5.2面向对象的分析与建模5.3面向对象设计面向对象设计(OOD,Object-OrientedDesign)是面向对象分析(即OOA)到面向对象的实现(即OOP)的一个桥梁,其主要作用是对OOA分析的结果作进一步的规范化整理,以便能够被OOP直接接受。面向对象分析是将用户需求经过分析后,建立问题域精确模型的过程;而面向对象设计则根据面向对象分析得到的需求模型,建立求解域模型的过程。即OOA必须搞清楚软件系统是“做什么”的,而OOD必须搞清楚软件系统是“怎么做”的,从分析到设计不是传统方法的转换,而是平滑(无缝)过渡,而求解域模型是系统实现的依据。5.3面向对象设计面向对象设计是在面向对象分析模型的基础上建立对象模型的过程,两个阶段同样是建立对象模型,但侧重点不同,OOA建立问题域对象模型,而OOD建立求解域的对象模型。因此面向对象设计(OOD)模型同样也由主题、类-&-对象、结构、属性和服务等5个层次组成,并且每个透明层在逻辑上都划分为4个子系统(或组成部分)组成,如图5.19所示。图5.19

面向对象设计模型

5.3面向对象设计5.3.1面向对象设计的模型和原则在面向对象设计阶段,主要需要完成以下两个方面的工作:一是对象定义格式的不断求精过程:二是数据模型和数据库设计:OOD与OOA要完成的主要工作的区别在于,OOA模型实现两个对象之间的关联,而OOD模型实现两个类之间的关联。因此,面向对象设计工作主要包括问题域类、用户界面类、任务管理类和数据管理类四个大类的设计,具体工作内容和步骤如图5.20所示。5.3面向对象设计2.面向对象设计的主要工作

图5.20OOD的工作内容及步骤5.3面向对象设计3.面向对象设计的准则

(1)模块化(2)抽象(3)信息隐藏(4)低耦合(5)高内聚(6)复用性

5.3面向对象设计

(1)设计结果应该清晰易懂命名一致(如不同类中相似服务的名字应该相同)、使用已有的协议(即公共接口)、减少消息连接的数目、避免模糊的定义。(2)设计简单的类应设计小而简单的类,以便于开发和管理。设计类时应避免包含过多的属性,类的任务应有明确而精练的定义,尽量简化对象之间的合作关系,不要提供太多的服务。(3)使用简单的协议一般来说,消息的参数不要超过3个。在对有复杂消息、相互关联的对象修改时往往会导致其他对象的修改。(4)设计简单的服务类中的服务以小为好。如果需要在服务中使用复杂的控制结构(如CASE语句等),应考虑用一般--特殊结构来代替这个类。(5)把设计变动减至最小通常,设计的质量越高,设计结果保持不变的时间也越长(即稳定性好)。5.3面向对象设计4.面向对象设计的启发式规则5.3.2高层设计OO系统高层设计类似于结构化设计中概要设计阶段,本阶段用来确定实现系统的策略和目标系统的高层结构设计。OO系统高层设计是将系统分解为若干个子系统,子系统和子系统之间通过接口进行联系。OO系统高层设计的一般步骤如图5.21所示:5.3面向对象设计图5.21系统设计的一般步骤1.将软件系统分解为子系统(即组成部分)

(1)子系统之间的交互方式

在应用系统中,子系统之间的关系可分为客户/服务器(供应商)关系和同等伙伴(端对端)关系。(2)OO系统组织通常,OO系统中子系统结构的组织有两种方式:水平层次组织和垂直块状组织。(3)设计系统的拓扑结构

多数复杂系统采用层次与块状的混合结构,如图5-22所示的应用系统就是其中的一个案例。

图5-22典型应用系统的组织结构2.

设计问题域类部分

所谓问题域(或空间)类是指那些直接从OOA分析结果模型得到的类,它是让软件系统能够实现对应用问题求解的最基本的类,也是面向对象软件系统的核心类。5.3面向对象设计3.设计用户界面类部分

用户界面类是为了使系统能够与用户进行交互而必须增添设计的类。在实际中,一个软件系统常常会因为其用户界面使得用户不满意而遭到废弃不用。因此用户界面类的设计是一项既影响软件系统前途,又需要做耐心细致调查分析的重要工作,如必须具体设计确定交互作用的时间、交互的方式和交互的技术等。(1)设计人—机界面部分的方法(2)设计人--机交互界面的准则4.设计任务管理类部分

任务管理类部分中的任务(Task)是一个处理过程或进程,它可能包含不同类的多个操作的执行。而任务管理类是指那些为实现对多个操作并发执行的管理任务而设计的类,也是使软件系统能够同时处理多个并发行为所需要的类。

5.设计数据管理类部分

数据管理类是指为实现对数据进行管理而设计的类,它是使软件系统能够对对象的属性值进行存贮和检索所需要的类。5.3面向对象设计5.3.3类-&-对象的设计OOA阶段中得到的对象模型,通常并没有描述类中的服务。OOD阶段主要是扩充、完善和细化对象模型的过程。类-&-对象设计是低层设计,设计类中的服务、实现服务的算法是OOD的重要任务,此外还要设计类的关联、接口形式以及进行设计的优化。⒈对象的设计描述⒉设计类中的服务3.设计类的关联⒋调整类的继承关系⒌优化设计5.3面向对象设计

所谓面向对象程序设计(Object-orientedprogramming,简称OOP),是指一种程序设计范型,同时也是一种程序开发的方法。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。1、实现语言2、基本实现手段5.4.1类和对象的定义

类是现实世界或逻辑思维世界中的实体在计算机中的反映,它将数据以及其上的操作封装在一起。而对象则是具有类类型的变量。类和对象的关系如下:类是对象的抽象,而对象是类的具体实例。使用面向对象语言C#对类的定义格式如下:5.4面向对象的程序设计与实现1.类的定义类类型的声明格式是:[属性][类修饰符]class类名{public:公用的数据和成员函数;protected:保护的数据和成员函数;private:私有的数据和成员函数;}2.定义对象的方法1)先声明类类型,然后再定义对象举例:Studentstud1,stud2;//Student是已经声明的类类型

Customerper1,per2;//Customer是已经声明的类类型2)在前面类定义的基础上,就可以通过new运算符直接来创建类的实例(即对象)——即类类型的变量。5.4面向对象的程序设计与实现例5-14

使用C#对网络购书系统问题中的类Customer(顾客)进行定义,并输出某一时刻订货顾客的详细信息。例5-15网上购书系统中数据库连接要用到的SQLClass类定义。总结一下面向对象程序设计基本步骤如下:(1)分析确定在问题空间和解空间出现的全部对象及其属性;(2)确定应施加于每个对象的操作,即对象固有的处理能力;(3)分析对象间的联系,确定对象彼此间传递的消息;(4)设计对象的消息模式,消息模式和处理能力共同构成对象的外部特性;(5)分析各个对象的外部特性,将具有相同外部特性的对象归为一类,从而确定所需要的类;(6)确定类间的继承关系,将各对象的公共性质放在较上层的类中描述,通过继承来共享对公共性质的描述;(7)设计每个类关于对象外部特性的描述;(8)设计每个类的内部实现(数据结构和方法);(9)创建所需的对象(类的实例),实现对象间应有的联系(发消息)。5.4面向对象的程序设计与实现5.4.2对象的简单应用关于结构化(面向过程)的程序设计中一些好的设计经验有:模块原则、清晰原则、组合原则、健壮原则、优化原则等等,这些原则概括一下说就是要保持简单。底层的API(应用程序接口)设计,可以尽量保持简洁清晰,然而外部的需求变化,你能控制住吗?

面向对象程序设计正是基于外部需求的变化而生,它是指采用了面向对象的方法来进行程序设计,而其中的“设计”是指一种把计划、规划、设想通过视觉传达出来的活动过程,它是一种创造性、积累性、实践性的工作。在长期的程序设计中,人们总结出两条程序设计的原则:一是简洁,即简洁、清晰、透明。二是重构,是在不改变软件现有的功能的基础上,通过调整程序代码而改善软件质量,性能等。5.4面向对象的程序设计与实现5.4.3面向对象程序设计模式程序设计的魅力在于创造,程序员使用代码来完成程序的创造,在程序设计中应注意做到三点:(1)分清程序中可变和不可变的部分,相对而言,数据是不可变的,算法是可变的,我们设计好相对稳定的数据,再细化算法,应对变更。

(2)按功能来划分模块,以模块化来划分程序。这样从纵向来看,程序是由一个个的模块组成的,从横向来看,我们定义好模块间通信的接口,程序就是

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论