




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面向对象分析与设计第一页,共一百零八页,2022年,8月28日第一章绪论1.1面向对象方法基本思想1.2面向对象方法发展简史1.3面向对象方法的基本概念和原则1.4面向对象软件系统模型第二页,共一百零八页,2022年,8月28日21.1面向对象方法基本思想
以功能为中心的软件开发方法(结构化方法)
以数据为中心的软件开发方法(信息建模方法)低内聚,高耦合,缺乏灵活性和可维护性分析与设计阶段采用的概念和表示不一致对功能的处理较弱,不适合具有复杂功能的系统第三页,共一百零八页,2022年,8月28日3以事物为中心将数据与对数据的操作看作一个整体,即对象是一种认识论、方法论是一种运用对象、类、继承、封装、聚合、关联、消息和多态性等概念和原则来构造系统的软件开发方法,其要点是(1)认识事物及其相互关系(2)对事物归类,并实现继承(3)强调事物的自主性面向对象方法基本思想第四页,共一百零八页,2022年,8月28日4高可维护性:回避在不稳定的基础上建造系统。寻找可构造的元素作为系统构造的基础,可构造元素的变化不会涉及到系统的其它成分,不会影响到整体。可复用性:功能复用是代码级的,它基于必要的功能理解,然而功能的语义是不一致的、多义的。软件复用是全方位的,不但是代码级的复用,还应该有源程序级的复用,甚至包括分析和设计文档的复用。程序无关性:任何机器环境下,使用任意程序语言所编的程序,都应该是逻辑通用的。与机器相关的成分应该与处理逻辑无关。面向对象软件开发方法的目标第五页,共一百零八页,2022年,8月28日51.2面向对象方法发展简史
源于面向对象程序设计语言
1967,Simula671970s,Smalltalk,Modula1980s-90s,C++,Objective-C,Eiffel,java向分析、设计甚至测试、维护等整个软件生命周期扩展
1990s,统一建模语言(UnifiedModelingLanguage,UML)诞生第六页,共一百零八页,2022年,8月28日61.3面向对象方法的基本概念和原则基本概念
类与对象,属性与操作,继承、聚合和关联基本原则
抽象,分类,封装,消息,多态性第七页,共一百零八页,2022年,8月28日7
对象(属性与操作,封装与消息)•客观存在的事物,包括有形对象和无形对象•在面向对象的系统模型中,对象是描述客观事物的一个实体,由属性和操作构成。
属性:描述对象静态特征操作:描述对象动态特征•体现了封装原则,目的是实现信息隐蔽(事物的独立自主性)。可见性:暴露属性和操作的方式消息:请求其他对象提供服务的方式,如函数调用第八页,共一百零八页,2022年,8月28日8
类(抽象,分类)•类是具有共同属性和操作的对象的集合,对象是类的一个实例,类用于创建对象。•体现了抽象及分类原则,是人们分析问题的基本方法
抽象:忽略事物的非本质特征,抽取共同的本质特征分类:把具有共性的事物划分为一类第九页,共一百零八页,2022年,8月28日9
抽象
•类是对象的抽象,一般类是对特殊类的抽象•数据抽象:根据施加在数据上的操作来定义数据的类型•过程抽象:将确定的功能定义为单一实体(确定的功能是由一系列操作完成的)•抽象的好处:1)复杂问题简单化2)实现可替换性第十页,共一百零八页,2022年,8月28日10例2:对下列事物进行分类和抽象显微镜、摩天楼、望远镜、飞机、铆钉、管道、卡车、单向阀、指数、过滤器、压力器、自行车、正旋、岩洞、眼镜、车库、滑翔机、平方根、铁钉、水龙头、螺钉、余旋、螺栓、帐篷、双筒镜、车棚、杂物堆房、摩托车、帆船、瞄准器例1:数据抽象和过程抽象
数据抽象:学生、客户、电子邮件、汽车过程抽象:交易、答辩、备课、开门第十一页,共一百零八页,2022年,8月28日11光学设备类:显微镜、眼镜、望远镜、瞄准器、双筒镜管道控制类:管道、单向伐、水龙头、过滤器、压力器交通工具类:自行车、帆船、卡车、飞机、滑翔机、摩托车五金类:铁钉、螺钉、螺栓、铆钉建筑类:帐篷、岩洞、车棚、车库、杂物堆房、摩天楼数学概念类:平方根、指数、正旋、余旋
光学设备类:聚焦度、变焦长度、单双镜形式、用途功能管道控制类:时速、功率,动力资源、消耗、用途、五金类:材料、直径、长度、硬度、用途建筑类:面积、高度、材料、用途数学概念类:概念定义、公式内容、用途
抽取同类事物的共同性质:
分类:第十二页,共一百零八页,2022年,8月28日12继承•在不同程度上运用抽象和分类原则,可以得到较一般的类和较特殊的类。•继承:特殊类自动拥有一般类所具有的全部属性和操作,也可称为一般类对特殊类的泛化。•多重继承:一个特殊类同时继承两个以上一般类的属性和操作•继承的重要作用:1)简化对事物的认识和描述
2)有利于软件复用第十三页,共一百零八页,2022年,8月28日13学生姓名年龄……研究生导师研究方向……本科生班级专业……人员姓名年龄……研究生导师研究方向……职工部门职务……在职研究生……运输工具轮船车辆飞机卡车轿车继承:多继承:继承层次:第十四页,共一百零八页,2022年,8月28日14多态性•多态性:特殊类可以对继承来的属性和操作做出自己的解释,即在继承关系的类层次结构中可以定义同名操作或属性,形成同一操作或属性的多种形态,这样可以按不同的行为响应同一个消息。•多态性进一步体现了信息隐蔽的原则,可以实现接口的独立封装。第十五页,共一百零八页,2022年,8月28日15关联
•关联表示类之间的静态联系。•当类实例化为对象后,关联实例化为对象之间的链。•可以通过属性来表达关联。职员……公司……关联:工作第十六页,共一百零八页,2022年,8月28日16聚合•聚合表示对象之间的整体部分关系,具有“有一个”或“是一部分”的语义•聚合也是一种关联。汽车…………发动机……车轮……聚合:第十七页,共一百零八页,2022年,8月28日17系统复杂性控制(包)
•包用于控制系统的粒度,将系统组成元素组织到不同的包中,可以方便系统整体规划,减小系统分析和设计的复杂性。系统行为分析(状态转换与交互)
•系统运行中对象的属性值会不断发生变化,从而形成对象的不同状态。描述对象状态的转换,可以确定对象的行为完整性;•系统中对象必须相互协作以完成某项功能,描述对象间的交互,可以表示系统实现功能的整体行为以及对象之间的并行性。第十八页,共一百零八页,2022年,8月28日18实现高可维护性:
1)类是封装了操作的一个“代码级复用”程序模板,类的使用,如同数据变量一样简单。类的对象可成为系统的构造元素。
2)对于“对象变量”的操作不同于程序调用,采用了消息,“消息”是并发的机制,回避了功能调用的过程性,使系统成为可构造和高可维护的实现可复用性:
1)对象语义的表示唯一,这使得代码级的复用简单且自然。2)类继承性是源程序级的复用机制,允许用已有的程序构架,简单地构造新的应用,并仍保持易维护性。实现程序无关性:
类的多态性以及动态绑定(动态联编)技术,是面向对象方法有别于结构化方法的实质性突破。它提供独立接口的实现技术,这样可以将与机器相关的成分独立出来,为程序无关性奠定了基础。面向对象方法实现其目标的途径第十九页,共一百零八页,2022年,8月28日191.4面向对象软件系统模型系统模型
为了理解和实现所要建造的软件系统,对系统及其工作环境的简化和形式化描述。一个完整的软件系统模型通常包括若干不同层次、不同视角的模型
层次:系统的抽象程度视角:系统的不同方面(交互、功能、实现、组织…)第二十页,共一百零八页,2022年,8月28日20面向对象模型视图用况视图进程视图部署视图设计视图实现视图结构视图第二十一页,共一百零八页,2022年,8月28日21结构视图设计视图进程视图实现视图部署视图用况视图静态包图类、对象图构件图部署图用况图动态交互图、状态图、活动图用况视图:软件系统的内外交互情况设计视图:软件系统的功能需求进程视图:软件系统的控制与驱动实现视图:软件系统的配置与管理部署视图:软件系统的物理分布与安装结构视图:软件系统的体系结构面向对象模型视图的构成第二十二页,共一百零八页,2022年,8月28日22第二章面向对象的分析技术2.1分析面临的主要问题2.2面向对象的分析模型2.3面向对象的分析过程第二十三页,共一百零八页,2022年,8月28日232.1分析面临的主要问题•OOA与OOD的界限•对问题域和系统责任的理解•人与人之间的交流•需求的不断变化•软件复用的要求第二十四页,共一百零八页,2022年,8月28日24OOA与OOD的界限•OOA:运用面向对象方法,对问题域和系统责任进行分析和理解,找出描述问题域和系统责任所需的对象,定义对象的属性和操作以及对象之间的关系,建立一个符合问题域,满足用户需求的OOA模型。•OOA不考虑与系统具体实现有关的因素,而将其留给OOD去处理,因此OOD包括两方面的工作:1)根据实现条件对OOA模型作某些必要的修改和调整。2)针对具体实现条件,建立人机界面、数据存储和控制驱动等模型。第二十五页,共一百零八页,2022年,8月28日25问题域和系统责任软件分析人员必须尽快了解和明确:1)问题域---被开发系统的应用领域,现实世界中,要求系统处理的业务范围。2)系统责任---所开发的系统应该具备的功能。问题域不等于系统责任,但它们有很多重合部分
金融业务
个人储蓄代发工资收费业务贷款业务办公管理数据备份系统责任问题域第二十六页,共一百零八页,2022年,8月28日26人与人之间的交流
交流包括三部分人员之间:1)开发人员与用户(需求方)2)开发人员之间3)开发人员与管理人员•交流工具包括谈话和文档
用户文档,技术文档,管理文档第二十七页,共一百零八页,2022年,8月28日27需求的不断变化树立“需求变化是绝对的”的观念,从分析到设计,始终注意“易维护修改”这一原则。需求变化时,最容易变化的是系统功能。在面向对象方法中,最容易变化的成分是对象中的操作,其次是对象间的交互与协作,第三是对象的属性。对象本事是相对稳定的。隐蔽内部操作,抽取高层类,可以使系统稳定且易于应对需求变化。第二十八页,共一百零八页,2022年,8月28日28软件复用的要求在已有的软件成分基础上建造系统,是新型软件开发方法的一个重要原则。复用已有的软件成分,不仅是提高开发效率的资源集约化生产方式,更重要的原因在于复用已有软件成分可以保证其相对正确性,回避不宜保证的软件质量问题。复用是多方面的,从执行代码、源代码到设计文档,乃至分析文档。第二十九页,共一百零八页,2022年,8月28日292.2面向对象的分析模型目标:用规范的面向对象图表和文字来描述所要建造的软件系统,以便在用户与系统分析人员之间达成共识,同时使后续工作得以继续。内容:
需求描述
UseCase用况图
辅助模型Sequence交互图Collaboration协作图StateTransition状态转换图Component包图基本模型Class类图
详细说明对象层关系层特征层第三十页,共一百零八页,2022年,8月28日30用况图(UseCase)
捕获与描述用户需求的工具类图(Class)
类图是系统模型的基础,描述系统的静态结构。三个层次:•对象层:描述问题域和系统责任所需的对象•关系层:类之间的相互关系•特征层:类的属性和操作(分析阶段不用细化)第三十一页,共一百零八页,2022年,8月28日31顺序图(Sequence)
按时间顺序排列在完成某一功能过程中对象之间的交互行为。
协作图(Collaboration)
以某一对象为中心描述对象之间的交互。状态转换图(StateTransition)
描述对象在生命周期内,响应事件的状态转换过程,以及响应事件后所做的反映。包图(Component)
对关系密切的模型元素进行打包。第三十二页,共一百零八页,2022年,8月28日322.3面向对象的分析过程分析过程中各个步骤不要求按固定顺序进行。所以,面向对象的分析步骤经常被叫做“活动”。建立UseCase发现对象定义属性与服务建立结构与连接定义:顺序图、协作图、状态图建立Class详细说明原型开发第三十三页,共一百零八页,2022年,8月28日33实施OOA的几点建议:1)确定需求的工作放在前面;2)建立Class图,可以随时切换到其他活动;3)建立顺序图、协作图和状态图的活动,放在对象识别之后,并与基本模型活动交错进行,4)详细说明应分散在各项活动之中进行,最后做一次审查和补充;5)原形可以反复地进行,早期的原型可以用来证实用户需求;6)对于规模较小系统,分析时可以省略包图。第三十四页,共一百零八页,2022年,8月28日34第三章面向对象的设计
3.1面向对象设计概述3.2问题域设计3.3人机交互设计3.4控制驱动设计设计3.5数据管理设计3.6构件和部署设计第三十五页,共一百零八页,2022年,8月28日353.1面向对象设计概述按照软件生命周期的规律,面向对象的方法学也包括分析活动和设计活动。分析活动和设计活动并没有明显的阶段划分,对应喷泉式模型:演化维护测试实现设计分析–体现认识事物的循环迭代性–强调开发活动的无间隙性(无明显的阶段划分)–强调开发活动的并发性第三十六页,共一百零八页,2022年,8月28日36面向对象分析活动----针对问题域和系统责任,不考虑与实现有关的因素,建立独立于实现的OOA模型。面向对象设计活动----考虑与实现有关的问题,建立针对具体实现的OOD模型,设计内容包括:1)根据实现语言对类(属性与操作)进行描述2)人机交互界面设计3)系统控制部分的设计4)数据管理部分的设计5)系统构件部署问题域部分
详细说明控制驱动部分人机交互部分数据管理部分行为图与包图类图用况图详细说明第三十七页,共一百零八页,2022年,8月28日37面向对象设计准则•以设计元素的耦合性、内聚性以及复用性为主要准则耦合性衡量耦合度的两个方面:成分之间的信息传输量成分之间传递信息的复杂程度–交互耦合:成分之间通过消息交互,越松散越好–继承耦合:成分之间有继承关系,越紧密越好第三十八页,共一百零八页,2022年,8月28日38•内聚性
–操作内聚:完成单一功能的操作的内聚最高
–类内聚:类中没有多余的属性和操作,且所有属性和操作应该是自身的责任,每个操作也是高内聚的。•复用性
–执行代码级的复用
–源代码级的复用和继承–分析和设计结果的复用和继承–
体系结构的复用和继承(设计模式)第三十九页,共一百零八页,2022年,8月28日39–清晰准则统一的用语一致的约定消息模板要少类责任表达要明确独立处理算法和策略算法继承关系层次不宜过深–类简洁性准则避免过多的属性,使用继承保持属性量对象间协作最小化避免过多的操作保持操作的高内聚保持内部成员的私有性(包括属性和操作)•其他设计准则第四十页,共一百零八页,2022年,8月28日403.2问题域设计3.2.1引入可复用类3.2.2增设一般类3.2.3调整继承关系3.2.4调整多态性3.2.5为提高性能进行类调整3.2.6为对象存储增补属性与操作3.2.7关联的实现3.2.8调整属性3.2.9设计算法3.2.10定义对象的可访问性第四十一页,共一百零八页,2022年,8月28日413.2.1引入可复用类目标---尽可能地使用可以利用的复用成分。例:已经存在图书类,在书店管理系统和图书馆系统中可以复用它。图书零售图书馆藏图书书店系统图书馆系统第四十二页,共一百零八页,2022年,8月28日42–可直接利用:把可复用的类加到问题域并做标记。–只满足部分利用:把可复用类加到问题域,用子类继承并重新定义或新添操作。–只有部分可以利用:把可复用的类加到问题域,删除多余部分成为新的类。注:重新规划问题域中的复用类与原有类之间的关联。•复用方法车辆序号颜色样式出厂日期序号认证()车辆序号厂商样式序号认证()例:新建的类已有的类换名字第四十三页,共一百零八页,2022年,8月28日433.2.2增设一般类•目标---把具有相同操作和属性的类组织在一起形成超类,建立继承关系。•处理策略1)若子类中不需要父类中的某些操作,可在子类中重新声明该操作为无方法的操作。2)若在不同的类中的操作具有相同语义名字,但方法不同,可利用多态机制,在一般类中为该操作做一个虚函数。3)若继承来的操作执行效果相同,只是缺少参数。在父类操作中加入必要的参数,执行时忽略该参数。第四十四页,共一百零八页,2022年,8月28日443.2.3调整继承关系1)对不支持多继承的编程语言,需要将多继承关系调整为单继承关系方法1:用聚合关系将多继承关系转换为单继承关系手机……照相机……照相手机……手机……照相机……照相手机……方法1例1:第四十五页,共一百零八页,2022年,8月28日45学生……职工……在职学生……人员……学生……职工……身份……人员……方法1例2:身份=在职学生=学生=职工第四十六页,共一百零八页,2022年,8月28日46方法2例1:学生……职工……人员……在职学生……学生……在职学生……人员……职工……学生信息……职工信息……方法2:提升多继承子类的层次,将多继承转换为单继承方法2例2:第四十七页,共一百零八页,2022年,8月28日47学生……职工……在职学生……方法1:取消继承方法2:改为聚合手机……照相机……手机照相机……手机……照相机……2)对不支持继承的编程语言,需要将继承关系取消。手机照相机……第四十八页,共一百零八页,2022年,8月28日48
对多态性的调整•若编程语言不支持多态,需修改与相关的属性和操作的名字,并根据情况,重新进行对象分类。多边形线条色线形边数顶点坐标绘图填充正多边形*顶点坐标*绘图矩形边数*顶点坐标*绘图多边形线条色线形填充不规则多边形边数顶点坐标绘图正多边形顶点坐标绘图矩形顶点坐标绘图例:*表示多态新增的类virtual表示不用第四十九页,共一百零八页,2022年,8月28日493.2.5为提高性能进行类调整影响系统性能的因素•为提高性能可以做的处理:1)调整对象的分布2)增加保存中间结果的属性或类3)调整系统功能的并发度4)合并通信频繁的类5)缩小类范围,分解复杂对象数据传输时间数据存取时间数据处理时间第五十页,共一百零八页,2022年,8月28日501)调整对象的分布:频繁交换信息的对象,尽量集中在一个物理空间处理。例如:2)增加保存中间结果的属性或类经常重复的某些处理,要设置中间存储。例如:对月报表的处理,通常存储周统计信息;对上半年与下半年的增长率的计算,通常要累计阶段性的增长率,不要每次都从头计算。将与用户频繁交互的操作界面对象集中在前端客户机;将与数据库频繁交换信息的业务处理逻辑对象集中在主机服务器。第五十一页,共一百零八页,2022年,8月28日51流速调节器指定流速…流速调节…流速探测器当前流速…流速探测取当前流速…流速控制器指定流速当前流速…流速调节流速探测…例如:合并流速探测器和流速调节器两个类,减少频繁通讯,提高效率。4)合并通信频繁的类原设计:1:n1对应第五十二页,共一百零八页,2022年,8月28日525)缩小类范围,分解复杂对象例1:将范围较大的类分解为较具体的类,可以使复杂处理简单化。几何图象……多边形……椭圆……扇形……例2:用聚合关系描述分解的复杂对象,可以分别应对不同的情况。祯…显示背景…显示前景…显示第五十三页,共一百零八页,2022年,8月28日53•存储对象是指永久性对象,为了存储永久性对象,需要在对象类中增补必要的属性与操作
方法1:在作为永久对象的类属性中增加类名,并增加存储和检索操作,使类的对象可以自己存储或检索自己。永久存储类类名(对应数据库表名)…………存储对象()检索对象()3.2.6为对象存储增补属性与操作第五十四页,共一百零八页,2022年,8月28日54方法2:设立独立的数据管理对象类,负责问题域中所有永久对象的存储和检索。存储数据管理器类名(对应各个数据库表)存储对象检索对象方法3:利用面向对象数据库存储和检索永久对象。第五十五页,共一百零八页,2022年,8月28日553.2.7关联的转化与实现•关联的转化:1)把关联类和N元关联转化为二元关联2)把多对多关联转化为一对多关联供货商……客户……1..**供货商……客户……供需合同卖方买方……1..**11例:第五十六页,共一百零八页,2022年,8月28日56•关联的实现1)聚合实现:在整体类中,加入部分类类型的属性或指针属性汽车型号颜色牌照底盘发动机车轮车厢底盘发动机车轮*车厢例:第五十七页,共一百零八页,2022年,8月28日572)关联实现:
–单项关联:用关联对象作为指针属性的类型,加入源对象类;双向关联:在两端都设置对方类型的指针属性–关联重数为1:设立一个指针对象;关联重数大于1:设立指针集合机场城市…..飞机航班号机型…..学生学号姓名课程名称学分着陆城市机场*例:1..n0..n着陆有停放的飞机*1..n0..n有课程*授课教师姓名院系单位1..n1..n有课程*授课教师*讲授第五十八页,共一百零八页,2022年,8月28日583.2.8调整属性学生姓名学号籍贯……学生姓名学号……籍贯国家省县…验证…11•属性是组合数据项时,可能需要对属性进行调整•按照属性的语法,明确标出属性的完整内容包括:[可见性]属性名称[:类型][=初始值][{性质}]例:•属性的性质,指属性范围的限定。
例:姓名:4~20字符;学号:8位数字;成绩总和<=Σ分成绩第五十九页,共一百零八页,2022年,8月28日593.2.9设计算法•操作的算法设计对象响应对操作的请求,执行必要的动作序列的描述。•操作与函数的区别:–只能通过消息访问执行操作算法–操作实现有自己的局部数据–消息数据包括对象的值或可访问的其他对象的值•操作格式[可见性]操作名[(参数表)][:返回][{性质}]第六十页,共一百零八页,2022年,8月28日601)进一步分析顺序图和协作图,确定每个响应消息所对应的操作。2)仔细确认状态图,发现对行为起主导作用的类,确保操作的完整性和正确性。操作算法设计方法3)必须考虑例外情况的操作处理。4)算法描述使用结构化的自然语言(伪码),包括接口和实现的描述。接口---(也叫“协议”)对象类所有的接收消息实现---对象接收消息所响应的操作实现细节,包括属性和操作过程的描述第六十一页,共一百零八页,2022年,8月28日61监控传感器协议:MESSAGE(motion.sensor)->read:RETUNSsensor.ID,sensor.status;MESSAGE(motion.sensor)->set:SENDSsensor.ID,sensor.status;用结构化自然语言描述协议例系统设置协议:MESSAGE(system)->program:可细化为:MESSAGE(system)->install:telephonenumberMESSAGE(system)->define:alarmtime
MESSAGE(system)->build:sensortableMESSAGE(system)->load:password
第六十二页,共一百零八页,2022年,8月28日62ProcedureSafeHomesoftwarePACKAGEsystemISTYPEsystemdataPORCinstall,define,build,loadPROCdisplay,reset,query,modify,callPRIVATEPACKAGEBODYsystemISPRIVATEsystem.idISSTRINGLENGTHverificationphone.number,telephone.number,.....ISSTRINGLENGTH(8);sensor.tableDEFINEDsensor.typeISSTRINGLENGTH(2),sensor.number,alarm.thresholdISNUMBER;PUBLICPORCinstallRECEIVES(telephone.number){designdetailforoperationinstall}.....(多个操作描述)ENDsystem..…ENDSafeHomesoftwareTYPE:数据类型说明PROC:过程说明数据对象定义用结构化自然语言描述算法例:SafeHome高层构件设计描述(类似Ada的伪码)第六十三页,共一百零八页,2022年,8月28日63操作部分描述PROCread(sensor.id,sensor.status:OUT)GET(sensor,exception:sensor.status:=error)raw.signal;raw.signalISBITSTRINGIF(erface.type=“S”&alarm.characteristics.signal.type=“B”THENCOVERTraw.signalTOinternal.signal.level;IFinternal.signal.level>thresholdTHENsensor.status:=“event”;ELSEsensor.status:=“noevent”;ENDIFELSE{processingforothertypeofSinterfaceswouldbespecified}ENDIFRETURNsensor.id,sensor.status;ENDread第六十四页,共一百零八页,2022年,8月28日64•定义对象:在算法设计中,根据实现条件,按以下方式定义对象:–内存中的对象:用相应的类定义,可以一个对象定义一个变量,也可以定义对象数组,包括静态声明。–外存上的对象:(永久对象)设置专门的操作,按照规定的格式,从外存中读取对象;前提是有对应的保存永久对象的操作。3.2.10定义对象及可访问性第六十五页,共一百零八页,2022年,8月28日65–类之间存在依赖,表明对象间的访问有如下情况:1)类的对象作为参数传递
例:vectormultiply(matrix&m,vector&v,intn)2)类对象被声明为操作的局部成分
例:outer_class::write(){inner_classg;g.write();}3)类对象被声明为全局的
例:
sensors_control(“cc”);main(){……}–类之间存在关联,也就是对象之间存在链,表明对象间可以访问,且可见性为“公共”的。•根据类的关联考虑对象的可访问性第六十六页,共一百零八页,2022年,8月28日663.3人机交互设计3.3.1人机交互设计原则界面设计黄金规则至于用户的控制之下减少用户的记忆负担保持界面风格一致界面设计问题响应时间问题联机帮助问题错误提示问题命令操作问题第六十七页,共一百零八页,2022年,8月28日67设计人员设计界面设计目标用户学习评判经验与需求反馈启发3.3.2人机交互的设计过程设计人员与用户协作的重复过程第六十八页,共一百零八页,2022年,8月28日683.3.3人机交互的分析策略1)通过与系统交互的参与者进行分析•列举所有的人员与参与者•对人员与参与者进行调查研究•区分人员类型•统计(或估算)出各类人员的比例•了解各类人员的主观需求•按照一定的准则进行折中与均衡2)通过用况进行分析•分析用况脚本陈述,划分参与者行为和系统行为•分离出每个段落包含的输入或输出•去掉与输入或输出无关的陈述包括:参与者或系统自身的行为,以及一些控制行为第六十九页,共一百零八页,2022年,8月28日69收款(usecase)输入本次收款命令;
收款准备,应收款总数置为0输出提示信息;for顾客选购的每种商品do输入商品编号;if此种商品多于一件then输入商品数量endif;
检索商品名称及单价;
货架商品数减去售出数;
if货架数低于下限
then通知供货员请求上货endif;
计算商品总价并打印编号、名称、数量、单价和总价;
总价累加到应收款总数;endfor;打印应收款总数;输入顾客交来的款数;
计算应找回的款数;打印以上两个数目;收款(人机交互)输入开始本次收款命令;输出提示信息;for顾客选购的每种商品输入商品编号;if此种商品多于一件then输入商品数量endif;打印商品编号名称、数量、单价和总价;endfor;打印应收款总数;输入顾客交来的款数;打印交款数及找回款数;通过用况分析人机交互例第七十页,共一百零八页,2022年,8月28日703.3.4面向对象的人机交互设计1)确定输入设备2)设计输入界面对象3)输入步骤细化
•对话框设计要点:(a)使用有意义且易理解的标题;(b)按逻辑排序输入框;(c)允许编辑文本型输入框;(d)对输入错误有保证措施,出错时有提示;(e)明确标出输入框的可选和必选;(f)有必要的输入框解释(如在Windows的状态条上)。菜单对话框……1)设计输入•检查输入的内容:(a)输入框组合的完备性:确保所有必要的输入框都要被输入(b)数据的有效范围控制:检查所输入数据类型(c)数据有效位数的控制:检查所输入数据值范围第七十一页,共一百零八页,2022年,8月28日712)设计输出设计相应的设备类及接口操作1)确定输出设备2)确定输出的形式和内容3)输出步骤的细化设备驱动用户操作界面打印机显示器绘图仪外存……设计相应的输出的形式类输出设备文本表格图形图像声音……输出的内容提示信息运算结果处理反馈……第七十二页,共一百零八页,2022年,8月28日72界面设计的指导性策略1)窗口作为基本类;2)窗口类的聚合关系按命令的逻辑层次在窗口中部署元素,这些元素作为窗口类的部分类,并与窗口类形成聚合关系。3)窗口类形成继承关系发现窗口类间的共性以及部件类间的共性,定义较一般的窗口类和部件类,分别形成窗口类及部件间的继承关系。窗口中的元素:菜单工作区对话框按键……第七十三页,共一百零八页,2022年,8月28日734)窗口的静态特征用属性表示窗口或部件的静态特征,如尺寸、位置、颜色和选项等。5)窗口的动态特征用操作表示窗口或部件的动态特征,如移动或滚动等。如果使用界面生成工具,就不需要对这样的操作进行设计。6)界面类之间的关联在界面元素之间发现联系,建立关联。可绘制用户与系统交互的顺序图。第七十四页,共一百零八页,2022年,8月28日74•人机界面只负责输入、输出和窗口更新工作。所有问题域的处理请求,都转发给问题域,在界面对象中,不进行应用逻辑或业务的处理。•界面部分对象总是主动发起与问题域部分的请求,问题域部分,只对界面对象的请求进行响应。•界面与问题域之间通过接口通信,或者在界面类与问题域类之间增设控制类(“出版---订阅”模式),以减小耦合。7)建立界面类与问题域类之间的联系。请求回应问题域部分人机交互部分接口接口第七十五页,共一百零八页,2022年,8月28日75出版者……管理者……订阅者……1111..*“出版---订阅”模式:订阅者向管理者订阅感兴趣的事件,出版者向管理者发布事件,管理者维护出版者和订阅者之间的映射。一个管理者可以对应多个订阅者和出版者,使出版者和订阅者之间解耦。第七十六页,共一百零八页,2022年,8月28日76框架标题接收动作()菜单条名称菜单名称进入下级菜单()菜单项名称点击()列表条目条目索引选择()按钮标题点击()标签文本设置文本()界面类图例:第七十七页,共一百零八页,2022年,8月28日77Cedit{复用}……人机交互界面复用1)直接复用CDialog{复用}……2)间接复用CMvsvstemDig……•界面的两种复用方式:第七十八页,共一百零八页,2022年,8月28日783.4控制器驱动部分设计•控制驱动设计任务:1)定义并表示系统的的控制流2)并发系统中控制流的协调设计3)机器无关性设计(隔离硬件、操作系统、网络变化对系统的影响)顺序系统:在一个时间点上,有且仅有一件事情发生,只有一个控制流。并发系统:在一个时间点上,有多件事情发生。存在多于一个的控制流。第七十九页,共一百零八页,2022年,8月28日79•控制驱动部分由系统中所有的主动类构成•控制流驱动者是由主动类所创建的主动对象•控制流:处理机上顺序执行的动作序列,进程或线程的统称–进程是独立功能程序的执行过程–线程是需要连续执行的操作序列–进程有独立的机器空间,线程在进程内,竞争进程资源第八十页,共一百零八页,2022年,8月28日80控制驱动部分设计方法1.识别控制流:--系统的分布方案要求多控制流每个分布点至少有一个控制流,至少拥有一个主动对象。--系统的并发需求要求多控制流要求多项任务同时进行,则每项任务对应一个控制流。--为实现方便设立控制流通信睡眠控制流和时钟驱动控制流--分析中定义的主动类对象都对应独立的控制流。--为提高性能而增设的控制流设立高、低、紧急三种优先级的控制流。--异常事件处理作为独立的控制流--起并发协调作用的控制流第八十一页,共一百零八页,2022年,8月28日812.定义控制流1)用主动对象表示控制流,给出命名和简单说明控制流表示:进程<<process>>或线程<<thread>>2)确保每个操作属于一个控制流3)描述时间驱动控制流的条件4)描述控制流的数据出处<<process>>r:ReservationAgent{location=reservationserver}<<thread>>b:KnowledgeSource第八十二页,共一百零八页,2022年,8月28日823.建模控制流间的通信1)同步通信•调用者调用操作,等待接收者接收这个调用•操作被唤醒,处理后将计算结果返回给调用者经典同步事例:过程调用2)异步通信•调用者发送信号后无需等待,继续他自己的工作•接收者在作好准备后,适当的时候去取需要的信息经典异步事例:邮箱、共享存储器第八十三页,共一百零八页,2022年,8月28日83用顺序图对线程间的通信建模<<thread>>c:BlackboadControler<<thread>>b:KnowledgeSource<<thread>>s:Blackboadc:初始化s:初始化完毕c:开始搜索b:提示线索(k)c:评价()b:放置部分解决方案例:黑板系统的顺序图第八十四页,共一百零八页,2022年,8月28日84•用顺序图对进程间的通信建模<<process>>t:TripPlanner{location=client}<<process>>r:ReservationAgent{location=reservationserver}<<process>>tm:TicketingManager{location=client}<<process>>h:HotelAgent{location=hotelserver}t:planTrip()r:make()h:make()例:旅游计划系统顺序图r:postResults()第八十五页,共一百零八页,2022年,8月28日854.控制流间的同步同步的目的是为了协调并发控制流的执行,以防止控制流同时修改或访问共享资源、提高资源的利用率和防止控制流死锁和控制流饿死。……abc……abc(a)(b)两个控制流同时使用对象的同一操作两个控制流同时使用对象的不同操作第八十六页,共一百零八页,2022年,8月28日86协调控制流间的同步方法1:Sequential(顺序的)将同步控制流涉及的多个对象作为临界资源,保护起来,使得在一个时刻,每对象内仅有一个控制流起作用。方法2:Guarded(受监护的)把控制流所涉及的对象操作顺序化,并都标上Guarded,作为临界资源,控制起来。方法3:Concurrent(并发的)把控制流所涉及的所有对象中的每一操作,作为独立原子单位,利用并发控制,执行多入口点的操作并行处理。第八十七页,共一百零八页,2022年,8月28日87list…add(){concurrent}…为实现同步需给操作附加同步特征,或者设立控制类协调类以实现协调任务•同步特征例:•控制流协调类例:控制流协调者…协调1*控制流名字描述优先级包含的服务协调者…初始化开始待命终结第八十八页,共一百零八页,2022年,8月28日883.6数据管理部分的设计3.6.1有关概念3.6.2关系数据库的数据管理设计3.6.2面向对象数据库的数据管理设计3.6.3文件系统的数据管理设计第八十九页,共一百零八页,2022年,8月28日893.6.1数据管理部分设计的有关概念
责任:存储和检索永久对象(需要长期存储的对象)封装对永久对象的查找和存储机制
目的:隔离数据管理部分,减小对问题域的影响
存储方式:文件系统关系数据库面向对象数据库只存储属性部分第九十页,共一百零八页,2022年,8月28日90数据库和数据库管理系统应用程序用户数据库管理员应用程序接口终端用户查询处理器数据定义接口数据库访问和控制逻辑部分物理存储模式数据库数据库管理系统第九十一页,共一百零八页,2022年,8月28日91关系数据库人员ID姓名籍贯联系地址……K8234张三河北海淀花园路178号3门23K8237李四贵州海淀永定路4号楼507P8450王五福建宣武区前门大街7号F8559张三河北东城区东厂胡同38号……每列是属性也称字段每行称为元组或记录关键字:能唯一确定元组的属性外键:用于连接表的关键字序号人员ID身份证号…………关键字外键第九十二页,共一百零八页,2022年,8月28日92面向对象数据库采用面向对象模型的数据库面向对象数据库的特征–支持对象、类、操作、属性、继承、聚合、关联概念–具有数据库应有的特性和功能面向对象数据库的类型-基于关系数据库的扩充-基于面向对象语言的数据库-建立全新的面向对象数据库系统数据库定义语言数据库操纵语言第九十三页,共一百零八页,2022年,8月28日93具有代表性的面向对象数据库产品
Fishman研制IrisKim研制ORIONBrelt研制,ServioLogic公司GemStoneWeiser&Lochovskey研制OZDiederich&Milton研制ODDESSY原型ObjectDesign公司ObjectStoreVersantObjectTechnology公司Versant…..第九十四页,共一百零八页,2022年,8月28日94数据管理部分数据库管理系统数据库应用系统设立应用系统的数据管理,将系统对象转换为永久对象,再交给数据库管理系统存储。关系数据库的数据管理设计第九十五页,共一百零八页,2022年,8月28日951)基本方法面向对象基本元素与关系数据库的“实体--关系”相对应面向对象类对象属性关联实体—关系实体类型实体实例属性关系关系数据库表行(元组)列关键字和外键第九十六页,共一百零八页,2022年,8月28日962)标识永久对象•对非永久存储对象的访问,是通过对象标识(即对象名)访问的。对象标识在运行中建立,在程序中取消,或随着运行终止自动消亡。•永久存储对象,必须将可标识的唯一对象标记存储起来,作为主关键字。永久对象的命名方法:-为类建立的表:设立唯一可标识对象的关键字字段-为关联建立的表:设立相关联的主键为组合关键字第九十七页,共一百零八页,2022年,8月28日97永久对象标识例:办公设备名称购置日期规格……
设备编号使用日期部门编号80230092年2月001080230195年2月001083203399年8月0011……办公设备…部门名称责任人联系电话……0..n0..1
设备编号名称购置日期规格802300装订机91年3月KP-023802301投影仪91年3月SH-111832033投影仪98年10月SK-111……
部门编号
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 45824-2025废旧农业机械回收体系建设规范
- 2025年中国可伸缩乒乓球网行业市场全景分析及前景机遇研判报告
- 2024-2025学年吉林省通化市梅河口五中高二下学期4月月考政治试题及答案
- 中国橡胶和塑料制品行业调查测报告
- 2025年中国电脑充电器行业市场发展现状及投资战略咨询报告
- 2025-2031年中国家用机器人行业市场需求预测及投资战略规划报告
- 中国商业收款机行业市场调查研究及投资前景展望报告
- 男士发型培训课件
- 中国水晶灯工程市场竞争格局及投资战略规划报告
- 2025-2030年中国液冷数据中心行业市场全景调研及未来趋势研判报告
- 人工智能在教育行业的创新应用研究
- 常州大学《工程热力学》2022-2023学年第一学期期末试卷
- 新能源行业光伏发电技术操作指南
- 全国托育职业技能竞赛(保育师赛项)选拔赛考试题及答案
- 金字塔原理完整版-课件
- 全国大学生数学建模大赛D题(会议筹备优化模型)
- 中考物理考前指导最后一课
- 盐酸罂粟碱在疼痛治疗中的应用
- 中国近代史纲要-期末考试复习重点
- 企业法务概论智慧树知到期末考试答案2024年
- (高清版)DZT 0331-2020 地热资源评价方法及估算规程
评论
0/150
提交评论