欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    C+程序设计课件第8章.ppt

    • 资源ID:66803027       资源大小:244KB        全文页数:82页
    • 资源格式: PPT        下载积分:11.9金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要11.9金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C+程序设计课件第8章.ppt

    n本章学习重点掌握内容:本章学习重点掌握内容:n面向对象的分析面向对象的分析 n面向对象的设计与实现面向对象的设计与实现第第8章面向对象程序设计方法与实例章面向对象程序设计方法与实例 12/21/20221第第8章面向对象程序设计方法与实例章面向对象程序设计方法与实例 n8.1 面向对象方法学概述面向对象方法学概述 n8.2 8.2 面向对象的模型面向对象的模型 n8.3 8.3 面向对象程序设计过程面向对象程序设计过程 n8.4 8.4 电梯模拟系统电梯模拟系统 12/21/202228.1 面向对象方法学概述面向对象方法学概述 面面向向对对象象(Object-Oriented,缩缩写写为为OO)方方法法学学的的出出发发点点和和基基本本原原则则,是是尽尽可可能能模模拟拟人人类类习习惯惯的的思思维维方方式式,使使开开发发软软件件的的方方法法与与过过程程尽尽可可能能接接近近人人类类认认识识世世界界解解决决问问题题的的方方法法与与过过程程,也也就就是是使使描描述述问问题题的的问问题题空空间间(也也称称为为问问题题域域)与与实实现现解解法法的的解解空空间间(也也称称为为求求解解域域)在结构上尽可能一致。在结构上尽可能一致。面面向向对对象象方方法法是是一一种种新新的的思思维维方方法法,它它不不是是把把程程序序看看作作是是工工作作在在数数据据上上的的一一系系列列过过程程或或函函数数的的集集合合,而而是是把把程程序序看看作作是是相相互互协协作作而而又又彼彼此此独独立立的的对对象象的的集集合合。每每个个对对象象就就像像一一个个微微型型程程序序,有有自自己己的的数数据据、操操作作、功能和目的。功能和目的。12/21/202238.1 面向对象方法学概述面向对象方法学概述 面向对象面向对象(Object-Oriented,缩写为缩写为OO)方法学的方法学的出发点和基本原则,是尽可能模拟人类习惯的思维方出发点和基本原则,是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,也就是使描述问题的问题界解决问题的方法与过程,也就是使描述问题的问题空间空间(也称为问题域也称为问题域)与实现解法的解空间与实现解法的解空间(也称为求解也称为求解域域)在结构上尽可能一致。在结构上尽可能一致。面向对象方法是一种新的思维方法,它不是把程面向对象方法是一种新的思维方法,它不是把程序看作是工作在数据上的一系列过程或函数的集合,序看作是工作在数据上的一系列过程或函数的集合,而是把程序看作是相互协作而又彼此独立的对象的集而是把程序看作是相互协作而又彼此独立的对象的集合。每个对象就像一个微型程序,有自己的数据、操合。每个对象就像一个微型程序,有自己的数据、操作、功能和目的。作、功能和目的。12/21/202248.1 面向对象方法学概述面向对象方法学概述 面向对象方法在概念和表示方法上的一致性,保证了面向对象方法在概念和表示方法上的一致性,保证了软件工程各项开发活动之间的平滑(软件工程各项开发活动之间的平滑(“无缝无缝”)过渡。面)过渡。面向对象开发过程的核心是面向对象分析(向对象开发过程的核心是面向对象分析(OOA)和面向对)和面向对象设计(象设计(OOD)两个阶段,但二者的界限比较模糊。)两个阶段,但二者的界限比较模糊。OOA通过分析用例,提取用户的需求,从而建立问题通过分析用例,提取用户的需求,从而建立问题域逻辑模型的过程;域逻辑模型的过程;OOD是建立面向对象的求解域模型的是建立面向对象的求解域模型的过程。从过程。从OOA到到OOD实际是一个多次反复、逐步迭代模实际是一个多次反复、逐步迭代模型的过程。型的过程。面向对象(面向对象(OO)是认识事物的一种方法,是一种以对)是认识事物的一种方法,是一种以对象为中心的思维方式。这里先介绍它的几个主要概念:对象为中心的思维方式。这里先介绍它的几个主要概念:对象、类、封装、继承、消息、结构与关联、多态性。象、类、封装、继承、消息、结构与关联、多态性。12/21/202251、对象、对象 世界上所有的事物都可以称为对象。对象可以是有世界上所有的事物都可以称为对象。对象可以是有形的如:一台电视机等。也可以是无形的如:帐户、一形的如:一台电视机等。也可以是无形的如:帐户、一项记录等。对象具有静态特征和动态特征。项记录等。对象具有静态特征和动态特征。对象是封装了数据结构及可以施加在这些数据结构对象是封装了数据结构及可以施加在这些数据结构上的操作的封装体,这个封装体有可以唯一地标识它的上的操作的封装体,这个封装体有可以唯一地标识它的名字,而且向外界提供一组服务名字,而且向外界提供一组服务(即公有的操作即公有的操作)。属性和操作是对象的两大要素。属性是对象静态特属性和操作是对象的两大要素。属性是对象静态特征的描述,操作是对象动态特征的描述。对象名也称为征的描述,操作是对象动态特征的描述。对象名也称为对象标识。如电视的属性有:品牌、尺寸、重量等。操对象标识。如电视的属性有:品牌、尺寸、重量等。操作有:收视、选台、音量调节等。作有:收视、选台、音量调节等。8.1.1 对象和类对象和类12/21/202262 2、类、类 类是对象的蓝图。根据抽象的原则对客观对象进行归类是对象的蓝图。根据抽象的原则对客观对象进行归纳和划分,把具有相同特征的对象归为一个类。它是一个纳和划分,把具有相同特征的对象归为一个类。它是一个抽象的概念。抽象的概念。类是对象模版,用于创建具有相同属性和相同操作类是对象模版,用于创建具有相同属性和相同操作(服务)的对象。它包括属性和方法(注:类的服务、行(服务)的对象。它包括属性和方法(注:类的服务、行为和操作只是叫法上的区别)。为和操作只是叫法上的区别)。3 3、封装、封装 封装是指按照信息隐藏的原则,把对象的属性和操作封装是指按照信息隐藏的原则,把对象的属性和操作结合在一起,构成一个独立的封装体。封装性也就是信息结合在一起,构成一个独立的封装体。封装性也就是信息隐藏,通过封装把对象的实现细节对外界隐藏起来了隐藏,通过封装把对象的实现细节对外界隐藏起来了。8.1.1 对象和类对象和类12/21/20227外部对象不能直接操作对象的属性,只能使用对象提外部对象不能直接操作对象的属性,只能使用对象提供的接口。具有封装性的条件如下供的接口。具有封装性的条件如下:l有一个清晰的边界。所有私有数据和实现操作的代有一个清晰的边界。所有私有数据和实现操作的代码都被封装在这个边界内,从外面看不见更不能直接码都被封装在这个边界内,从外面看不见更不能直接访问。访问。l有确定的接口有确定的接口(即协议即协议)。接口就是对象之间通信的。接口就是对象之间通信的桥梁,只能通过向对象发送消息来使用它。桥梁,只能通过向对象发送消息来使用它。l受保护的内部实现。实现对象功能的细节受保护的内部实现。实现对象功能的细节(私有数据私有数据和私有方法和私有方法)不能在定义该对象的类的范围外进行访不能在定义该对象的类的范围外进行访问。问。8.1.1 对象和类对象和类12/21/20228 4 4、继承继承 继承使得一个类可以继承另一个类的属性和方法。继承使得一个类可以继承另一个类的属性和方法。这样通过抽象出共同的属性和方法组建新的类,便于这样通过抽象出共同的属性和方法组建新的类,便于代码的重用。如图代码的重用。如图8.18.1的继承关系。的继承关系。Button-pressed:bool+pressButton():void8.1.1 对象和类对象和类elevatorButton-elevatorRef:Elevator+pressButton():voidfloorButton-floorNumber:int+pressButton():void图图8.1 继承中的父子类继承中的父子类12/21/20229 子类电梯按钮和楼层按钮继承了父类子类电梯按钮和楼层按钮继承了父类ButtonButton的全部属性的全部属性和服务,同时又具有自身新的属性和服务。和服务,同时又具有自身新的属性和服务。一般和特殊是相对而言的,在哺乳动物和狗及猫之间,一般和特殊是相对而言的,在哺乳动物和狗及猫之间,哺乳动物是一般类(称为基类、超类或父类),狗和猫是哺乳动物是一般类(称为基类、超类或父类),狗和猫是特殊类(也称子类);在狗和黑狗之间狗是一般类,黑狗特殊类(也称子类);在狗和黑狗之间狗是一般类,黑狗是特殊类。是特殊类。5 5、消息、消息 向某个对象发出的服务请求称作消息。对象提供的服向某个对象发出的服务请求称作消息。对象提供的服务规定的消息格式称作消息协议。务规定的消息格式称作消息协议。消息包括:被请求的对象标识、被请求的服务标识、消息包括:被请求的对象标识、被请求的服务标识、输入信息和应答信息。如:向电梯按钮类发送请求按下电输入信息和应答信息。如:向电梯按钮类发送请求按下电梯按钮的消息梯按钮的消息elvatorButton.pressButton()elvatorButton.pressButton()。8.1.1 对象和类对象和类12/21/2022108.1.1 对象和类对象和类6 6、结构与关联、结构与关联 一个系统一般由很多对象组成,对象之间并不是一个系统一般由很多对象组成,对象之间并不是互相孤立的,而是存在着各种各样的关系。包括:部互相孤立的,而是存在着各种各样的关系。包括:部分分/整体、一般整体、一般/特殊、实例连接、消息连接。特殊、实例连接、消息连接。(1 1)部分)部分/整体整体 对象之间存在的部分与整体的结构关系。如电梯对象之间存在的部分与整体的结构关系。如电梯按钮是电梯类的一个组成部分,电梯由电梯按钮、门、按钮是电梯类的一个组成部分,电梯由电梯按钮、门、楼层、响铃等组成。如图楼层、响铃等组成。如图8.28.2的组合关系。的组合关系。12/21/2022118.1.1 对象和类对象和类 Elevator-door:Door+processPossibleArrival():void elevatorButton-elevatorRef:Elevator+pressButton():voidDoor-open:bool+closeDoor():void图图8.2 8.2 组合关系组合关系 12/21/2022128.1.1 对象和类对象和类 组合和聚合。组合关系中部分和整体的关系很紧密。聚组合和聚合。组合关系中部分和整体的关系很紧密。聚合关系中则比较松散,一个部分对象可以属于几个整体对象。合关系中则比较松散,一个部分对象可以属于几个整体对象。(2 2)一般)一般/特殊特殊 对象之间的结构关系,很多时候也称作泛化和特化关系。对象之间的结构关系,很多时候也称作泛化和特化关系。(3 3)实例连接)实例连接 对象之间的实例连接称作链接,对象类之间的实例连接对象之间的实例连接称作链接,对象类之间的实例连接称作关联。称作关联。(4 4)消息连接)消息连接 消息连接表现了这样一种联系:一个对象发送消息请求消息连接表现了这样一种联系:一个对象发送消息请求另一个对象的服务,接收消息的对象响应消息,执行相应的另一个对象的服务,接收消息的对象响应消息,执行相应的服务。服务。12/21/202213 7 7、多态性、多态性 所谓多态性是指不同对象接收相同的消息时产生不所谓多态性是指不同对象接收相同的消息时产生不同的行为。这里的消息主要是对类中成员函数的调用,同的行为。这里的消息主要是对类中成员函数的调用,而不同的行为就是指类成员函数的不同实现。即在类等而不同的行为就是指类成员函数的不同实现。即在类等级的不同层次中可以共享级的不同层次中可以共享(公用公用)一个行为一个行为(方法方法)的名字,的名字,然而不同层次中的每个类却各自按自己的需要来实现这然而不同层次中的每个类却各自按自己的需要来实现这个行为。当对象接收到发送给它的消息时,根据该对象个行为。当对象接收到发送给它的消息时,根据该对象所属于的类动态选用在该类中定义的实现算法。如图所属于的类动态选用在该类中定义的实现算法。如图8.18.1中,当向按钮对象发送消息中,当向按钮对象发送消息pressButtonpressButton()时()时,不不同按钮对象如电梯内部按钮和楼层按钮会自动判断自己同按钮对象如电梯内部按钮和楼层按钮会自动判断自己的所属类并执行相应的服务。的所属类并执行相应的服务。8.1.1 对象和类对象和类12/21/202214 面向对象的模型,分别从三个不同侧面描述了所面向对象的模型,分别从三个不同侧面描述了所要开发的系统。对象模型定义了要开发的系统。对象模型定义了“做什么做什么”的实体,的实体,功能模型指明了系统应该功能模型指明了系统应该“做什么做什么”,动态模型明确,动态模型明确规定在何种状态下,接受什么事件的触发而规定在何种状态下,接受什么事件的触发而“做什么做什么”。一个典型的软件系统组合了上述三方面内容:它一个典型的软件系统组合了上述三方面内容:它使用数据结构使用数据结构(对象模型对象模型),执行操作,执行操作(动态模型动态模型),并,并且完成属性值的变化且完成属性值的变化(功能模型功能模型)。8.2 8.2 面向对象的模型面向对象的模型12/21/2022151.1.对象模型是一个类(属性和方法)、对象(类的对象模型是一个类(属性和方法)、对象(类的实例)、类或对象之间关系的定义集。实例)、类或对象之间关系的定义集。l 对象模型表示静态的、结构化系统的对象模型表示静态的、结构化系统的“数据数据”性质,性质,为建立动态模型和功能模型提供了实质性的框架。为建立动态模型和功能模型提供了实质性的框架。l 对象模型把面向对象的概念与常用的信息建模概念对象模型把面向对象的概念与常用的信息建模概念结合起来,增强了模型的可理解性和表达能力。结合起来,增强了模型的可理解性和表达能力。l 对象模型还表示了类对象模型还表示了类/对象之间的结构关系。类对象之间的结构关系。类/对对象之间的关系一般可概括为关联、归纳(继承)、组象之间的关系一般可概括为关联、归纳(继承)、组合(或聚集)三类。合(或聚集)三类。8.2 8.2 面向对象的模型面向对象的模型12/21/2022168.2 8.2 面向对象的模型面向对象的模型2.2.动态模型表示瞬间的、行为化的系统动态模型表示瞬间的、行为化的系统“控制控制”性质,性质,它规定了对象模型中对象状态的合法变化序列。它规定了对象模型中对象状态的合法变化序列。l对象有自己的生命周期,它由多个阶段组成,每个特对象有自己的生命周期,它由多个阶段组成,每个特定阶段都有规范该对象行为的一组运行规则。定阶段都有规范该对象行为的一组运行规则。l对象的状态是对象属性的一种抽象,事件是某个特定对象的状态是对象属性的一种抽象,事件是某个特定时刻发生的一个系统行为是引起对象状态转换的控制时刻发生的一个系统行为是引起对象状态转换的控制信息。对象对事件的响应,取决于当时的状态,响应信息。对象对事件的响应,取决于当时的状态,响应包括改变自己的状态,或者是形成一个新的触发行为包括改变自己的状态,或者是形成一个新的触发行为(事件)。(事件)。l动态模型描绘对象的状态,触发状态转换的事件,以动态模型描绘对象的状态,触发状态转换的事件,以及对象行为(对事件的响应),即基于事件共享而互及对象行为(对事件的响应),即基于事件共享而互相关联的一组状态集合构成了系统的动态模型。相关联的一组状态集合构成了系统的动态模型。12/21/202217 3.3.功能模型指明了系统应该功能模型指明了系统应该“做什么做什么”,直接地反映了,直接地反映了用户对目标系统的需求。面向对象的功能模型由一组用户对目标系统的需求。面向对象的功能模型由一组用例组成,用例模型描述的是外部执行者用例组成,用例模型描述的是外部执行者(Actor)(Actor)所理所理解的系统功能。解的系统功能。l用例模型描述了待开发系统的功能需求用例模型描述了待开发系统的功能需求 l用例模型将系统看作黑盒,从外部执行者的角度来理用例模型将系统看作黑盒,从外部执行者的角度来理解系统解系统l用例模型驱动了需求分析之后各阶段的开发工作,不用例模型驱动了需求分析之后各阶段的开发工作,不仅在开发过程中保证了系统所有功能的实现,而且被仅在开发过程中保证了系统所有功能的实现,而且被用于验证和检测所开发的系统,从而影响到开发工作用于验证和检测所开发的系统,从而影响到开发工作的各个阶段和的各个阶段和 UML UML 的各个模型。的各个模型。l在在UMLUML中,一个用例模型由若干个用例图描述,用例图中,一个用例模型由若干个用例图描述,用例图主要元素是用例和执行者。主要元素是用例和执行者。8.2 8.2 面向对象的模型面向对象的模型12/21/202218 传统程序设计方法的主要思想是自顶向下逐步分解。整传统程序设计方法的主要思想是自顶向下逐步分解。整个系统由分层的子程序集合构成。这要求程序设计师必须个系统由分层的子程序集合构成。这要求程序设计师必须对系统的调用关系非常清楚,这对于开发大型系统来讲是对系统的调用关系非常清楚,这对于开发大型系统来讲是是非困难的,而且构建的系统稳定性较差,任何上层子程是非困难的,而且构建的系统稳定性较差,任何上层子程序的修改都会引整个系统的改变。序的修改都会引整个系统的改变。而面向对象得程序设计方法提供一种崭新的系统设计而面向对象得程序设计方法提供一种崭新的系统设计方案,就是将系统看成一系列相关联的对象的集合,而对方案,就是将系统看成一系列相关联的对象的集合,而对象之间是通过消息传递的方法相互作用来完成任务,每个象之间是通过消息传递的方法相互作用来完成任务,每个对象用自己的方法管理数据。对象用自己的方法管理数据。本节就介绍这种软件开发的方法,它将软件开发过程本节就介绍这种软件开发的方法,它将软件开发过程分为分为3 3个阶段:面向对象的分析、面向对象的设计、面向对个阶段:面向对象的分析、面向对象的设计、面向对象的实现。不同阶段则使用不同的模型来描述。象的实现。不同阶段则使用不同的模型来描述。8.3 8.3 面向对象程序设计过程面向对象程序设计过程 12/21/2022198.3.1 面向对象的分析面向对象的分析 面向对象分析的任务是确定面向对象分析的任务是确定系统能够做什么?谁来使系统能够做什么?谁来使用这个系统?同时建立用例模型,并定义系统中的问题领用这个系统?同时建立用例模型,并定义系统中的问题领域类,主要由系统用户和开发人员合作完成。域类,主要由系统用户和开发人员合作完成。1 1需求分析需求分析 分析的第一步是定义用例,以描述所开发系统的外部分析的第一步是定义用例,以描述所开发系统的外部功能需求。用例模型的主要构件是用例、角色和系统边界。功能需求。用例模型的主要构件是用例、角色和系统边界。用例用于描述系统所有功能需求,系统边界用于界定系统用例用于描述系统所有功能需求,系统边界用于界定系统功能的范围,而角色用于描述与系统功能有关的外部实体,功能的范围,而角色用于描述与系统功能有关的外部实体,它可以是用户,也可以是外部系统。它可以是用户,也可以是外部系统。12/21/202220 使用面向对象程序设计方法时,在本阶段不需要严使用面向对象程序设计方法时,在本阶段不需要严格的系统规格说明书,可以使用图表(如用例图)来描格的系统规格说明书,可以使用图表(如用例图)来描述系统的功能,除了用用例图描述系统需求外,还可以述系统的功能,除了用用例图描述系统需求外,还可以用文字用文字(或活动图或活动图)对每个用例进行需求说明,更具体地对每个用例进行需求说明,更具体地描述该用例与角色的交互。例如电梯模拟系统的用例图描述该用例与角色的交互。例如电梯模拟系统的用例图如下:如下:8.3.1 面向对象的分析面向对象的分析 12/21/2022218.3.1 面向对象的分析面向对象的分析 乘乘 客客处理电梯呼叫标示移动方向处理楼层呼叫标示电梯位置电梯模拟系统电梯模拟系统移动停止电梯开关门触发紧急处理器图图8.3 电梯模拟系统用例图电梯模拟系统用例图12/21/2022222 2特定领域类分析特定领域类分析 分析阶段的另一项工作是特定领域分析,以列分析阶段的另一项工作是特定领域分析,以列出系统中的特定领域类。我们可以通过阅读规格说出系统中的特定领域类。我们可以通过阅读规格说明、用例以及寻找系统处理的明、用例以及寻找系统处理的 概念概念 来进行特定领来进行特定领域分析,也可以通过用户和领域专家的讨论,以识域分析,也可以通过用户和领域专家的讨论,以识别出要处理的所有关键类及它们的相互关系。这里别出要处理的所有关键类及它们的相互关系。这里的特定领域是指具体的商业领域,而不是整个系统的特定领域是指具体的商业领域,而不是整个系统领域。领域。在本实例中,可以确定电梯模拟系统中特定领在本实例中,可以确定电梯模拟系统中特定领域类为电梯、调度、门、按钮、楼层等,并使用类域类为电梯、调度、门、按钮、楼层等,并使用类图来描述系统领域类及其关系。图来描述系统领域类及其关系。8.3.1 面向对象的分析面向对象的分析 12/21/202223 需要强调的是,这一阶段对特定领域类的描述具需要强调的是,这一阶段对特定领域类的描述具有一定的素描性质,也就是说特定领域类的操作和属性有一定的素描性质,也就是说特定领域类的操作和属性不一定与最终实现时的定义一致。因为此时还没有涉及不一定与最终实现时的定义一致。因为此时还没有涉及到系统功能的具体实现,不可能准确、完整地定义它们。到系统功能的具体实现,不可能准确、完整地定义它们。有一些操作需要在设计阶段细化时才能确定。有一些操作需要在设计阶段细化时才能确定。此外,为了描述问题领域中类的动态行为,可以此外,为了描述问题领域中类的动态行为,可以使用使用UMLUML中的任何一种动态图中的任何一种动态图(如顺序图、活动图、协作如顺序图、活动图、协作图、状态图图、状态图)。本阶段的各动态图都具有素描性质,主。本阶段的各动态图都具有素描性质,主要是为了协助对领域类及其相互关系的分析,为下一阶要是为了协助对领域类及其相互关系的分析,为下一阶段的具体设计打下基础。段的具体设计打下基础。8.3.1 面向对象的分析面向对象的分析 12/21/202224 设计阶段的任务是对分析模型进行扩展并将模型进设计阶段的任务是对分析模型进行扩展并将模型进一步细化,并考虑技术细节和限制条件。设计的目的是一步细化,并考虑技术细节和限制条件。设计的目的是指定一个可行的解决方案,以便能很容易地转变成为编指定一个可行的解决方案,以便能很容易地转变成为编程代码。设计可以分成两个阶段:程代码。设计可以分成两个阶段:体系结构设计阶段体系结构设计阶段(ArchitectureDesignArchitectureDesign)。这是)。这是一个从较高层次的进行的设计,用来定义包(子系统),一个从较高层次的进行的设计,用来定义包(子系统),描述包之间的依赖性及通信机制。很自然,目的是要设描述包之间的依赖性及通信机制。很自然,目的是要设计一个清晰简单的体系结构,有很少的依赖性,而且尽计一个清晰简单的体系结构,有很少的依赖性,而且尽可能避免双向依赖。可能避免双向依赖。详细设计阶段详细设计阶段(Detailed DesignDetailed Design)。在此阶段,所)。在此阶段,所有的类都详尽地进行描述,给编写代码的程序员一个清有的类都详尽地进行描述,给编写代码的程序员一个清晰的规范说明。晰的规范说明。UMLUML中的动态模型用来说明类的对象如何中的动态模型用来说明类的对象如何在特定的情况下做出相应的表现。在特定的情况下做出相应的表现。8.3.2 面向对象的设计面向对象的设计 12/21/2022258.3.2 面向对象的设计面向对象的设计 1体系体系结构设计 类图中包括有助于用户从技术逻辑中分离出应用类图中包括有助于用户从技术逻辑中分离出应用逻辑逻辑(领域类领域类),从而减少它们之间的依赖性。这就是,从而减少它们之间的依赖性。这就是软件结构设计强调的模块间的高聚合、低偶合的原则。软件结构设计强调的模块间的高聚合、低偶合的原则。在商业在商业MISMIS中,存在以下包中,存在以下包(或子系统或子系统):):用户接口包用户接口包 :用户接口类允许用户访问系统数据:用户接口类允许用户访问系统数据和加入新数据。在商业对象中,用户接口包跟商业对和加入新数据。在商业对象中,用户接口包跟商业对象包合作,调用商业对象的操作,实施数据的检索和象包合作,调用商业对象的操作,实施数据的检索和插入。插入。12/21/2022268.3.2 面向对象的设计面向对象的设计 商业对象包商业对象包 :该包包括域类,这些域类(如该包包括域类,这些域类(如elevatorButton,FloorelevatorButton,Floor,LightLight等)来自于分析模型。等)来自于分析模型。设计阶段完整地定义了这些类的操作,并增加了一些其设计阶段完整地定义了这些类的操作,并增加了一些其他细节来支持持续存储。在设计阶段,详细设计这些类,他细节来支持持续存储。在设计阶段,详细设计这些类,以完整定义他们的操作,支持对数据库的存取。所以,以完整定义他们的操作,支持对数据库的存取。所以,所有商业对象类必须继承数据库包中的类。所有商业对象类必须继承数据库包中的类。数据库包数据库包 :它向商业对象包中的类提供服务,以:它向商业对象包中的类提供服务,以便他们能够持续地存储。在当前版本中,持久对象类将便他们能够持续地存储。在当前版本中,持久对象类将把它的子类的对象存储到文件系统的文件中。把它的子类的对象存储到文件系统的文件中。通用包通用包 :该包含了一些服务,用来被系统中其他:该包含了一些服务,用来被系统中其他包调用。包调用。12/21/2022278.3.2 面向对象的设计面向对象的设计 2 2详细设计详细设计 详细设计的目的是通过创建新的类图、状态图和动态详细设计的目的是通过创建新的类图、状态图和动态图,描述新类,并扩展和细化分析阶段图,描述新类,并扩展和细化分析阶段“素描素描”的商业对的商业对象类。不过在详细设计阶段,它们是从技术层次上对系统象类。不过在详细设计阶段,它们是从技术层次上对系统进行更详尽的描述。如分析阶段的用例描述用来验证它们进行更详尽的描述。如分析阶段的用例描述用来验证它们是否在设计阶段都得到处理,而顺序图用来展示系统中每是否在设计阶段都得到处理,而顺序图用来展示系统中每个用例在技术上如何实现,等等。个用例在技术上如何实现,等等。在设计阶段,也可细化分析阶段的状态图,更详细的在设计阶段,也可细化分析阶段的状态图,更详细的显示状态的变换细节。使用状态图可以揭示单个对象在整显示状态的变换细节。使用状态图可以揭示单个对象在整个系统中的变化细节,对了解和实现关键类有较大的帮助。个系统中的变化细节,对了解和实现关键类有较大的帮助。此外,还可以使用其他图在实现层上从不同侧面对分此外,还可以使用其他图在实现层上从不同侧面对分析阶段建立的模型进行细化。析阶段建立的模型进行细化。12/21/2022288.3.3 面向对象的实现面向对象的实现 面向对象的实现可分为两个阶段:一是对类进行编面向对象的实现可分为两个阶段:一是对类进行编程的过程。可以选择某种面向对象对象编程语言程的过程。可以选择某种面向对象对象编程语言(如如c+c+或或Java)Java)作为实现系统的软件环境;二是测试和配置,完作为实现系统的软件环境;二是测试和配置,完成系统编码后,需要对系统进行测试。成系统编码后,需要对系统进行测试。1.1.编码编码 本阶段完成系统框架进行编码。选择合适的语言实本阶段完成系统框架进行编码。选择合适的语言实现设计阶段完成的总体框架的搭建和具体算法的描述。现设计阶段完成的总体框架的搭建和具体算法的描述。在实现阶段中,可以选取下列图的说明来辅助编程在实现阶段中,可以选取下列图的说明来辅助编程:12/21/202229l类的规格说明类的规格说明:每个类的规格说明详细显示了必要的属每个类的规格说明详细显示了必要的属性和操作。性和操作。l类图类图:显示类的静态结构和类之间的关系。显示类的静态结构和类之间的关系。l状态图状态图:显示类的对象可能的状态、所需处理的转移以显示类的对象可能的状态、所需处理的转移以及触发这些转移的操作。及触发这些转移的操作。l包含某个类的对象的动态图包含某个类的对象的动态图(顺序图、协作图、活动图顺序图、协作图、活动图):):显示该类的某个方法的实现或别的对象是如何使用显示该类的某个方法的实现或别的对象是如何使用该类的对象的。该类的对象的。l用例图和规格说明用例图和规格说明:显示系统需求和结果。显示系统需求和结果。8.3.3 面向对象的实现面向对象的实现 12/21/202230 编码期间也可能会发现设计模型的缺陷。这时需要编码期间也可能会发现设计模型的缺陷。这时需要开发者修改设计模型。修改设计模型时一定要保持设计开发者修改设计模型。修改设计模型时一定要保持设计模型与编码的一致性,以便将来易于维护。模型与编码的一致性,以便将来易于维护。2 2测试和配置测试和配置 完成系统编码后,需要对系统进行测试,它通常包括完成系统编码后,需要对系统进行测试,它通常包括:单元测试、集成测试、系统测试和验收测试。在单元测单元测试、集成测试、系统测试和验收测试。在单元测试中使用类图和类的规格说明,对单独的类或一组类进试中使用类图和类的规格说明,对单独的类或一组类进行测试;在集成测试中,使用组件图和协作图,对各组行测试;在集成测试中,使用组件图和协作图,对各组件的合作情况进行测试;在系统测试中,使用用例图,件的合作情况进行测试;在系统测试中,使用用例图,以检验所开发的系统是否满足例图所描述的需求。以检验所开发的系统是否满足例图所描述的需求。8.3.3 面向对象的实现面向对象的实现 12/21/202231 8.4.1 8.4.1 需求陈述需求陈述 电梯模拟系统的设计与电梯模拟系统的设计与“真实真实”的系统相比省去很多的系统相比省去很多技术的细节。我们的电梯系统有所有电梯都有的基本功技术的细节。我们的电梯系统有所有电梯都有的基本功能,如上升和下降,开门和关门,以及能承载乘客。电能,如上升和下降,开门和关门,以及能承载乘客。电梯假设在一栋大楼的第一层到第梯假设在一栋大楼的第一层到第N N层运行,第一层是大厅。层运行,第一层是大厅。电梯里有每一层对应的按钮,除了第一层和第电梯里有每一层对应的按钮,除了第一层和第N N层外,每层外,每个楼层都有两个按钮,乘客可以呼叫上楼和下楼。顶楼个楼层都有两个按钮,乘客可以呼叫上楼和下楼。顶楼只有一个下行按钮,第一层的大厅只有一个上行按钮。只有一个下行按钮,第一层的大厅只有一个上行按钮。当电梯停在某一层时,电梯开门,电梯的指示灯表明当当电梯停在某一层时,电梯开门,电梯的指示灯表明当前电梯运行的方向,这样乘客知道当前电梯运行的方向。前电梯运行的方向,这样乘客知道当前电梯运行的方向。电梯在两个楼层间快速移动时,电梯的门是紧闭的,而电梯在两个楼层间快速移动时,电梯的门是紧闭的,而且电梯能提前减速到达目的地。为保证电梯系统的安全,且电梯能提前减速到达目的地。为保证电梯系统的安全,在任何不安全的因素下,紧急制动就会促发,电梯被强在任何不安全的因素下,紧急制动就会促发,电梯被强制停止。制停止。8.4 电梯模拟系统电梯模拟系统 12/21/202232 电梯到达一个楼层时,它会重置电梯按钮,并响铃电梯到达一个楼层时,它会重置电梯按钮,并响铃(继承到电梯内部)进入电梯,然后电梯向楼层发布已(继承到电梯内部)进入电梯,然后电梯向楼层发布已经到达的信号。作为响应,楼层会重置楼层按钮,并显经到达的信号。作为响应,楼层会重置楼层按钮,并显示电梯已经到达指定楼层。然后,电梯门开,注意楼层示电梯已经到达指定楼层。然后,电梯门开,注意楼层上对应的门随电梯门一起自动打开。随后,电梯内的乘上对应的门随电梯门一起自动打开。随后,电梯内的乘客离开电梯,正在等待电梯的人进入电梯。客离开电梯,正在等待电梯的人进入电梯。一个人进入电梯内后,按下电梯按钮,电梯内的指一个人进入电梯内后,按下电梯按钮,电梯内的指示灯会亮。另外,等电梯到达另一楼层,并重置电梯按示灯会亮。另外,等电梯到达另一楼层,并重置电梯按钮后,灯就熄灭。接着,电梯向指定楼层移动,电梯到钮后,灯就熄灭。接着,电梯向指定楼层移动,电梯到达指定楼层后,如果没有人进入电梯,而且楼层上的楼达指定楼层后,如果没有人进入电梯,而且楼层上的楼层按钮没有被按下的话,就等待电梯门关闭,直到楼层层按钮没有被按下的话,就等待电梯门关闭,直到楼层按钮被按下。按钮被按下。8.4.1 需求陈述需求陈述12/21/202233用例图用例图 电梯系统的用例图如图电梯系统的用例图如图8.48.4所示,主要包括用例、角色所示,主要包括用例、角色和关系。和关系。8.4.2 电梯模拟系统的分析电梯模拟系统的分析乘乘 客客处理电梯呼叫标示移动方向处理楼层呼叫标示电梯位置电梯模拟系统电梯模拟系统移动停止电梯开关门触发紧急处理器图图8.4 电梯系统用例图电梯系统用例图12/21/202234 其中的小人代表参与系统的外来实体,在这就是电其中的小人代表参与系统的外来实体,在这就是电梯系统的唯一角色梯系统的唯一角色-乘客,它需要系统为他提供相乘客,它需要系统为他提供相应的服务,乘客通过观察电梯移动的方向和电梯位置应的服务,乘客通过观察电梯移动的方向和电梯位置指示器决定是否进指示器决定是否进/出电梯,因此他参与系统的四个用出电梯,因此他参与系统的四个用例,处理电梯呼叫、处理楼层呼叫、标示电梯位置和例,处理电梯呼叫、处理楼层呼叫、标示电梯位置和标志移动方向。以下是该用例图的简单功能描述。标志移动方向。以下是该用例图的简单功能描述。8.4.2 电梯模拟系统的分析电梯模拟系统的分析12/21/202235l处理电梯呼叫:这个用例包括几个场景。这些场景有乘处理电梯呼叫:这个用例包括几个场景。这些场景有乘客的呼叫电梯、电梯按钮的亮灭、电梯控制器处理电梯客的呼叫电梯、电梯按钮的亮灭、电梯控制器处理电梯呼叫,处理按钮信息更新等等。呼叫,处理按钮信息更新等等。l处理楼层呼叫:和处理电梯呼叫类似,这个用例包括乘处理楼层呼叫:和处理电梯呼叫类似,这个用例包括乘客选择楼层、楼层按钮的亮灭和电梯控制器处理楼层呼客选择楼层、楼层按钮的亮灭和电梯控制器处理楼层呼叫,处理按钮信息更新等等。叫,处理按钮信息更新等等。l移动停止电梯:这是一台电梯的主要功能,详细的动作移动停止电梯:这是一台电梯的主要功能,详细的动作包括驱动速度的改变,停止的判定,电梯的运动方向驱包括驱动速度的改变,停止的判定,电梯的运动方向驱动。动。l标识电梯移动方向:电梯应该有这种机制,即让乘客知标识电梯移动方向:电梯应该有这种机制,即让乘客知道电梯目前的运动方向,决定是否进电梯道电梯目前的运动方向,决定是否进电梯。8.4.2 电梯模拟系统的分析电梯模拟系统的分析12/21/202236l标识电梯位置:类似电梯移动方向,电梯应该让乘客标识电梯位置:类似电梯移动方向,电梯应该让乘客知道他知道他/她的目的层是否到达,决定是否离开电梯。她的目的层是否到达,决定是否离开电梯。l开关门:乘客进出电梯,电梯应该开关门。这个用例开关门:乘客进出电梯,电梯应该开关门。这个用例应该包括当电梯正关闭时乘客想进入,乘客可以使电应该包括当电梯正关闭时乘客想进入,乘客可以使电梯门打开。梯门打开。l触发紧急制动器:电梯有安全机制确定一个不安全的触发紧急制动器:电梯有安全机制确定一个不安全的状态不是瞬时产生的。状态不是瞬时产生的。系统框架(用例图中封闭的矩形)包含系统的用例,系统框架(用例图中封闭的矩形)包含系统的用例,而边界代表系统和外界实体交互的界面。而边界代表系统和外界实体交互的界面。8.4.2 电梯模拟系统的分析电梯模

    注意事项

    本文(C+程序设计课件第8章.ppt)为本站会员(wuy****n92)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开