程序设计方法学.docx_第1页
程序设计方法学.docx_第2页
程序设计方法学.docx_第3页
程序设计方法学.docx_第4页
程序设计方法学.docx_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

UML在面向对象程序设计中的应用引言面向对象软件开发方法已经成为现代软件工程的重要手段。应用面向对象方法设计出的软件组件可以方便的实现软件重用。同时这种机制将传统的以数据为中心的软件开发方法,改变为同时关注数据的信息与功能,从而可以开发出适应信息与功能变化的系统。面向对象方法学基本思想是:对所研究的事物进行自然分割,并从分割后的实体中抽象出对象,每个对象都真实地反映了它所对应的实体,然后以更接近人类思维的方式建立事物模型,以便对客观实体进行结构模拟和行为模拟,从而使设计出的软件尽可能直接地描述现实世界,构造出模块化的、可重用的、维护性好的软件,同时限制软件的复杂性和降低开发维护费用。面向对象程序设计的介绍上世纪八十年代末以来,随着面向对象技术成为研究的热点,面向对象的思想已经涉及到软件开发的各个方面。如:面向对象的分析(oboeCtor、entedAnalysis)、面向对象的设(ooD,oboeetorientedDeSlgn)、面向对象的编程(ooP,oboeetor、entedProgramming)等等。面向对象程序设计(oP)现在已经是我们编程的一项基本技能。面向对象编程之所以如此风靡,有好几个原因导致这种结果。面向对象思想起源于七十年代,在八十年代得到了巩固和发展。九十年代,面向对象技术已经成熟,并进入深入发展阶段。面向对象程序设计与传统的过程化程序设计有着显著的区别:过程化程序设计是面向功能的,通常用函数或过程来实现所需要的功能,数据通常作为参数传递给函数或过程,数据与实现该数据功能的函数或过程分离,这种方式不利于大中型软件的开发与维护,小部分数据或功能的变动会波及到很多相关的程序,由于用户的需求和软、硬件技术的不断发展变化,按照功能划分设计的系统模块必然是易变的和不稳定的。这样开发出来的模块可重用性生不高。随着计算机应用需求的不断扩大,计算机软件越来越复杂,这种复杂性不仅体现在规模的扩大,而且模块之间的交互越来越复杂,为此,人们提出了面向对象的程序设计思想,它是一种以对象为中心的程序设计方法。面向对象程序设计是一种围绕真实世界的概念来组织模型的程序设计方法,它采用对象来描述问题空间的实体。对象是包含现实世界物体特征的抽象实体,它反映了系统为之保存信息和(或)与它交互的能力。它是一些属性及服务的一个封装体,在程序设计领域,可以用对象二数据+作用于这些数据上的操作”这一公式来表达。类(class)是具有相同操作功能和相同的数据格式(属性)的对象的集合。类可以看作抽象数据类型的具体实现。抽象数据类型是数据类型抽象的表示形式。数据类型是指数据的集合和作用于其上的操作的集合,而抽象数据类型不关心操作实现的细节。从外部看,类型的行为可以用新定义的操作加以规定。类为对象(object)集合的抽象,它规定了这些对象的公共属性和方法;对象为类的一个实例。苹果是一个类,而放在桌上的那个苹果则是一个对象。对象和类的关系相当于一般的程序设计语言中变量和变量类型的关系。消息是向某对象请求服务的一种表达方式。对象内有方法和数据,外部的用户或对象对该对象提出的服务请求,可以称为向该对象发送消息。合作是指两个对象之间共同承担责任和分工。面向对象程序设计方法具有四个基本特征: 1、抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。比如,我们要设计一个学生成绩管理系统,考察学生这个对象时,我们只关心他的班级、学号、成绩等,而不用去关心他的身高、体重这些信息。抽象包括两个方面,一是过程抽象,二是数据抽象。过程抽象是指任何一个明确定义功能的操作都可被使用者看作单个的实体,尽管这个操作实际上可能由一系列更低级的操作来完成。数据抽象定义了数据类型和施加于该类型对象上的操作,并限定了对象的值只能通过使用这些操作修改和观察。 2、继承(1nhoritanC。)是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性新类称为原始类的派生类(子类)而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。这也体现了大自然中一般与特殊的关系。继承性很好的解决了软件的可重用性问题。比如说,学生类,所有的学生可以看作是从同一个学生类派生出来的,但是,每一种学生的具体表现行为各有不同。这是由于派生出了不同的子类,各个子类添加了不同的特性。继承带来的好处是软件的复用,使用继承可以在已有软件构件的基础上构造新的软件,从而提高软件的生产率并保证软件质量。 3、封装是面向对象的特征之一,是对象和类概念的主要特性。封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象这些对象通过一个受保护的接口访问其他对象。一旦定义了一个对象的特性,则有必要决定这些特性的可见性,即哪些特性对外部世界是可见的,哪些特性用于表示内部状态。在这个阶段定义对象的接口。通常,应禁止直接访问一个对象的实际表示,而应通过操作接口访问对象,这称为信息隐藏。事实上,信息隐藏是用户对封装性的认识,封装则为信息隐藏提供支持。封装保证了模块具有较好的独立性,使得程序维护修改较为容易。对应用程序的修改仅限于类的内部,因而可以将应用程序修改带来的影响减少到最低限度。封装、抽象和信息隐藏是用来降低软件复杂性的重要技术。 4、多态性是指允许不同类的对象对同一消息作出响应。比如同样的加法,把两个时间加在一起和把两个整数加在一起肯定完全不同。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。 面向对象程序设计的优点:1、易于维护在面向对象程序设计中模块性是与生俱来的,实体表现为类,而类在面向对象程序设计中是一个独立的模块任意增加一个类却不会影响应用程序其他模块。同时,继承和封装使得应用程序的修改带来的影响更加局部化。2、可扩充性面向对象程序设计支持扩充性,如果你有一个某种功能的类,你可以很快的扩展这个类,创建另一个具有扩充性的类。3、代码重用一个面向对象应用程序框架由一套类组成,这些类形成了应用程序的核心和基础。自从功能被压缩到一个类中并且类作为一个独立的实体存在,提供一个类库就变得非常容易了,可以在应用程序中大量采用成熟的类库,从而缩短开发时间。面向对象程序设计方法采用继承支持重用的思想。从上面的概述我们可看出,面向对象程序设计成为现代编程技术的一个重要组成的原因。从面向过程到面向对象是程序设计技术的一个飞跃。人们之所以要采用面向对象的程序设计技术,其目的是:(l)提高程序的运行效率(2)提高程序设计工作的效率(3)提高程序的可维护性运用面向对象技术不是必须的,但是对于一个大型复杂应用系统的开发,如果采用了面向对象技术,则开发效率会大大提高。UML的基本内容UML统一了Booch、OMT和OOSE方法和其他面向对象方法的基本概念和符号,融入了软件工程领域的新思想、新方法和新技术,提出如模板、扩展机制、活动图等新概念,是一种定义良好、富于表达、功能强大且普遍适用的建模语言。UML的最大用途是利用图形来描述真实世界各个对象。UML定义了一系列图形工具,以对现实世界进行面向对象建模。1) 用例图,是显示一组用例、参与者以及它们之间关系的图。主要用于对系统、子系统或类的行为进行建模。用例图驱动需求分析之后各阶段的开发工作。2) 静态图,包括类图和包图。类图是显示一组类、接口、协作以及它们之间关系的图,类实例化的产物就是对象。包图是多个类的集合形成的一个更高层次的单位。包由一组模型元素组成,可包含从属包或普通的模型元素。3) 交互图,描述对象间的动态交互关系,由一组对象和它们之间关系构成,其中包括在对象间传递的消息;包括顺序图和合作图。顺序图显示对象之间在时间和顺序上的动态合作关系,它强调对象之间消息发送顺序,同时显示对象之间的交互。合作图描述对象之间的交互关系以及对象之间的联系,强调参加交互的对象的组织。4) 行为图,包括状态图和活动图。状态图描述一个特定对象的所有可能状态及其相互转换。活动图主要用于描述工作流程和并行活动。它们均用于对一个系统的动态方面建模。5) 实现图,用于描述系统实现的一些特性,对系统的静态实现视图建模。包括构件图和配置图。构件图显示了一组构件及它们之间的关系。配置图显示节点和在节点上活动的构件的配置。 这些图形让所有系统设计者在构建系统时在从系统需求,系统流程分析,对象模型化定义到对象设计的整个开发过程实现完全标准化。不因系统设计者使用不同的程序设计语言而有所不同,因此也可以说使用UML的目的是要建立一套软件系统从系统分析,流程设计到整体开发的标准表示方法。基于UML的面向对象实例分析与设计以下将通过一套台球城的自动计费系统的设计过程来进一步阐述UML在面向对象程序设计中的应用。1.系统的需求描述如下:该系统的使用者包括两类:一类是主管人员,另一类是一般操作人员。两类人员对系统的使用权限不同,以下描述中如不特别指明是主管人员的权限操作,则均为一般操作人员的操作。该系统将控制娱乐城中桌球台上方灯的亮和灭(每张桌子一盏灯),灯亮则表示开始本次消费,同时开始计费,灯灭则表示结束本次消费,结帐,并且把消费信息写入数据库中,供系统使用者根据日期或时间查询当日的营业总况,主管人员还能查询当月的营业总况,营业总况信息包括营业日期时间(包括开始、结束时间)、所在时间段价格、消费额及其汇总、打折情况登记;并且能打印出日报表,主管人员能打印出月报表,日、月报表所含数据项相同,包含如上的营业总况信息即可;系统还能进行相应的修改,这些修改只能由主管人员完成,包括:修改系统的使用密码或主管人员使用密码,修改时间段价格、修改时间段折扣率、修改会员卡消费折扣等,对于折扣,一般消费者享受分时段折扣,而持会员卡消费者享受专门的会员卡消费折扣。2.系统详细需求分析。通过上述的系统需求描述,把系统实现分为硬件实现和软件实现两部分:(1) 硬件部分主要提供一个供上层用户界面实时对外界物理设备进行控制的接口。这里所指的外界物理设备主要指桌球台的控制灯,它可通过操作员操纵主控界面上按钮来实现。(2) 软件部分则要实现上述描述的所有功能,并将其集成为计算机上的一个主操作台。如图1所示。2.1硬件部分分析 因与本主题无关,故略去。2.2软件部分分析 采用面向对象的分析方法:根据需求描述,我们使用UML工具结合用例分析技术,可以确定系统角色和获得系统用例,从而可获得系统的用例模型。在UML中,它由用例图来描述。在用例图中,角色是指与系统交互的用户,用例是指当一个用户使用系统时它会在与系统的对话中执行一个在行为上相关的事务的序列,这个序列就称之为用例。在软件开发过程中,恰当地使用用例可以有效地控制交互式开发过程。在本系统中,主要角色有:操作员,主管人员,会员(较次要)。用例有账号系统、计费系统、系统维护系统、查询打印营业总况系统等;这其中还有对系统维护系统的扩展用例,如修改系统密码、修改时段折扣率、修改会员折扣率及修改价格等。详细见图2。在获得系统用例模型后,我们进一步分析系统所要解决的问题,这可以用UML的逻辑视图和动态视图来描述。通过与用户进一步的沟通,识别出所有关键的类及类之间的关系。而后可以用类图来描述系统的静态结构,用交互图(合作图和顺序图)和行为图(状态图和活动图)来描述系统的动态特征。以下通过图3图5即该系统的类图及活动图来说明系统的特征。UML对系统的发布用实现图来描述,它包括构件图和配置图。构件图描述代码部件的物理结构以及各部件之间的依赖关系;配置图6定义系统中软硬件的物理体系结构,这为系统的最后安装和实施提供了工程视图。结束语从上述实例可以看出:在需求分析阶段,面向对象的方法从问题的用例开始,从系统的需求描述中提取出不同的用例,UML

温馨提示

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

评论

0/150

提交评论