收藏 分销(赏)

面向对象分析与设计.ppt

上传人:天**** 文档编号:14680397 上传时间:2026-10-28 格式:PPT 页数:110 大小:586KB 下载积分:10 金币
下载 相关
面向对象分析与设计.ppt_第1页
第1页 / 共110页
面向对象分析与设计.ppt_第2页
第2页 / 共110页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,*,*,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,面向对象分析与设计,面向对象分析与设计面向对象分析与设计第一章 绪论1.1 面向对象方法基本思想,1.2 面向对象方法发展简史,1.3 面向对象方法的基本概念和原则,1.4 面向对象软件系统模型1,0,第一章 绪论,1.1 面向对象方法基本思想,1.2 面向对象方法发展简史,1.3 面向对象方法的基本概念和原则,1.4 面向对象软件系统模型,1,1.1 面向对象方法基本思想,以功能为中心的软件开发方法(结构化方法),以数据为中心的软件开发方法(信息建模方法),低内聚,高耦合,缺乏灵活性和可维护性,分析与设计阶段采用的概念和表示不一致,对功能的处理较弱,不适合具有复杂功能的系统,2,以事物为中心,将数据与对数据的操作看作一个整体,即对象,是一种认识论、方法论,是一种运用对象、类、继承、封装、聚合、关联、消息和多态性等概念和原则来构造系统的软件开发方法,其要点是,(1)认识事物及其相互关系,(2)对事物归类,并实现继承,(3)强调事物的自主性,面向对象方法基本思想,3,高可维护性:回避在不稳定的基础上建造系统。寻找可构造的元素作为系统构造的基础,可构造元素的变化不会涉及到系统的其它成分,不会影响到整体。,可复用性:功能复用是代码级的,它基于必要的功能理解,然而功能的语义是不一致的、多义的。软件复用是全方位的,不但是代码级的复用,还应该有源程序级的复用,甚至包括分析和设计文档的复用。,程序无关性:任何机器环境下,使用任意程序语言所编的程序,都应该是逻辑通用的。与机器相关的成分应该与处理逻辑无关。,面向对象软件开发方法的目标,4,1.2 面向对象方法发展简史,源于面向对象程序设计语言,1967,Simula67,1970s,Smalltalk,Modula,1980s-90s,C+,Objective-C,Eiffel,java,向分析、设计甚至测试、维护等整个软件生命,周期扩展,1990s,统一建模语言(Unified Modeling,Language,UML)诞生,5,1.3 面向对象方法的基本概念和原则,基本概念,类与对象,属性与操作,继承、聚合和关联,基本原则,抽象,分类,封装,消息,多态性,6,对象(属性与操作,封装与消息),客观存在的事物,包括有形对象和无形对象,在面向对象的系统模型中,对象是描述客观事物的一个实体,由属性和操作构成。,属性:描述对象静态特征,操作:描述对象动态特征,体现了封装原则,目的是实现信息隐蔽(事物的独立自主性)。,可见性:暴露属性和操作的方式,消息:请求其他对象提供服务的方式,如函数调用,7,类(抽象,分类),类是具有共同属性和操作的对象的集合,对象是类的一个实例,类用于创建对象。,体现了抽象及分类原则,是人们分析问题的基本方法,抽象:忽略事物的非本质特征,抽取共同的本质特征,分类:把具有共性的事物划分为一类,8,抽象,类是对象的抽象,一般类是对特殊类的抽象,数据抽象:根据施加在数据上的操作来定义数据的类型,过程抽象:将确定的功能定义为单一实体(确定的功能是由一系列操作完成的),抽象的好处:,1)复杂问题简单化,2)实现可替换性,9,例2:对下列事物进行分类和抽象,显微镜、摩天楼、望远镜、飞机、铆钉、管道、卡车、单向阀、指数、过滤器、压力器、自行车、正旋、岩洞、眼镜、车库、滑翔机、平方根、铁钉、水龙头、螺钉、余旋、螺栓、帐篷、双筒镜、车棚、杂物堆房、摩托车、帆船、瞄准器,例1:数据抽象和过程抽象,数据抽象:学生、客户、电子邮件、汽车,过程抽象:交易、答辩、备课、开门,10,光学设备类:显微镜、眼镜、望远镜、瞄准器、双筒镜,管道控制类:管道、单向伐、水龙头、过滤器、压力器,交通工具类:自行车、帆船、卡车、飞机、滑翔机、摩托车,五金类:铁钉、螺钉、螺栓、铆钉,建筑类:帐篷、岩洞、车棚、车库、杂物堆房、摩天楼,数学概念类:平方根、指数、正旋、余旋,光学设备类:聚焦度、变焦长度、单双镜形式、用途功能,管道控制类:时速、功率,动力资源、消耗、用途、,五金类:材料、直径、长度、硬度、用途,建筑类:面积、高度、材料、用途,数学概念类:概念定义、公式内容、用途,抽取同类事物的共同性质:,分类:,11,继承,在不同程度上运用抽象和分类原则,可以得到较一般的类和较特殊的类。,继承:特殊类自动拥有一般类所具有的全部属性和操作,也可称为一般类对特殊类的泛化。,多重继承:一个特殊类同时继承两个以上一般类的属性和操作,继承的重要作用:,1)简化对事物的认识和描述,2)有利于软件复用,12,学生,姓名,年龄,研究生,导师,研究方向,本科生,班级,专业,人员,姓名,年龄,研究生,导师,研究方向,职工,部门,职务,在职研究生,运输工具,轮船,车辆,飞机,卡车,轿车,继承:,多继承:,继承层次:,13,多态性,多态性:特殊类可以对继承来的属性和操作做出自己的解释,即在继承关系的类层次结构中可以定义同名操作或属性,形成同一操作或属性的多种形态,这样可以按不同的行为响应同一个消息。,多态性进一步体现了信息隐蔽的原则,可以实现接口的独立封装。,14,关联,关联表示类之间的静态联系。,当类实例化为对象后,关联实例化为对象之间的链。,可以通过属性来表达关联。,职员,公司,关联:,工作,15,聚合,聚合表示对象之间的整体部分关系,具有“有 一个”或“是一部分”的语义,聚合也是一种关联。,汽车,发动机,车轮,聚合:,16,系统复杂性控制(包),包用于控制系统的粒度,将系统组成元素组织到不同的包中,可以方便系统整体规划,减小系统分析和设计的复杂性。,系统行为分析(状态转换与交互),系统运行中对象的属性值会不断发生变化,从而形成对象的不同状态。描述对象状态的转换,可以确定对象的行为完整性;,系统中对象必须相互协作以完成某项功能,描述对象间的交互,可以表示系统实现功能的整体行为以及对象之间的并行性。,17,实现高可维护性:,1)类是封装了操作的一个“代码级复用”程序模板,类的使用,如同数据变量一样简单。类的对象可成为系统的构造元素。,2)对于“对象变量”的操作不同于程序调用,采用了消息,“消息”是并发的机制,回避了功能调用的过程性,使系统成为可构造和高可维护的,实现可复用性:,1)对象语义的表示唯一,这使得代码级的复用简单且自然。,2)类继承性是源程序级的复用机制,允许用已有的程序构架,简单地构造新的应用,并仍保持易维护性。,实现程序无关性:,类的多态性以及动态绑定(动态联编)技术,是面向对象方法有别于结构化方法的实质性突破。它提供独立接口的实现技术,这样可以将与机器相关的成分独立出来,为程序无关性奠定了基础。,面向对象方法实现其目标的途径,18,1.4 面向对象软件系统模型,系统模型,为了理解和实现所要建造的软件系统,对系统及其工作 环境的简化和形式化描述。,一个完整的软件系统模型通常包括若干不同层次、不同视角的模型,层次:系统的抽象程度,视角:系统的不同方面(交互、功能、实现、组织),19,面向对象模型视图,用况视图,进程视图,部署视图,设计视图,实现视图,结构视图,20,结构视图,设计视图,进程视图,实现视图,部署视图,用况视图,静态,包图,类、对象图,构件图,部署图,用况图,动态,交互图、状态图、活动图,用况视图:软件系统的内外交互情况,设计视图:软件系统的功能需求,进程视图:软件系统的控制与驱动,实现视图:软件系统的配置与管理,部署视图:软件系统的物理分布与安装,结构视图:软件系统的体系结构,面向对象模型视图的构成,21,第二章 面向对象的分析技术,2.1 分析面临的主要问题,2.2 面向对象的分析模型,2.3 面向对象的分析过程,22,2.1 分析面临的主要问题,OOA与OOD的界限,对问题域和系统责任的理解,人与人之间的交流,需求的不断变化,软件复用的要求,23,OOA与OOD的界限,OOA:运用面向对象方法,对问题域和系统责任进行分析和理解,找出描述问题域和系统责任所需的对象,定义对象的属性和操作以及对象之间的关系,建立一个符合问题域,满足用户需求的OOA模型。,OOA不考虑与系统具体实现有关的因素,而将其留给OOD去处理,因此OOD包括两方面的工作:,1)根据实现条件对OOA模型作某些必要的修改和调整。,2)针对具体实现条件,建立人机界面、数据存储和控制驱动等模型。,24,问题域和系统责任,软件分析人员必须尽快了解和明确:,1)问题域-被开发系统的应用领域,现实世界中,要求系统处理的业务范围。,2)系统责任-所开发的系统应该具备的功能。,问题域不等于系统责任,但它们有很多重合部分,金融业务,个人储蓄 代发工资,收费业务 贷款业务,办公管理,数据备份,系统责任,问题域,25,人与人之间的交流,交流包括三部分人员之间:,1)开发人员与用户(需求方),2)开发人员之间,3)开发人员与管理人员,交流工具包括谈话和文档,用户文档,技术文档,管理文档,26,需求的不断变化,树立“需求变化是绝对的”的观念,从分析到设计,始终注意“易维护修改”这一原则。,需求变化时,最容易变化的是系统功能。在面向对象方法中,最容易变化的成分是对象中的操作,其次是对象间的交互与协作,第三是对象的属性。对象本事是相对稳定的。,隐蔽内部操作,抽取高层类,可以使系统稳定且易于应对需求变化。,27,软件复用的要求,在已有的软件成分基础上建造系统,是新型软 件开发方法的一个重要原则。,复用已有的软件成分,不仅是提高开发效率的资源集约化生产方式,更重要的原因在于复用已有软件成分可以保证其相对正确性,回避不宜保证的软件质量问题。,复用是多方面的,从执行代码、源代码到设计文档,乃至分析文档。,28,2.2 面向对象的分析模型,目标:用规范的面向对象图表和文字来描述所要建造的软件系统,以便在用户与系统分析人员之间达成共识,同时使后续工作得以继续。,内容:,需求描述,Use Case,用况图,辅助模型,Sequence,交互图,Collaboration,协作图,State Transition,状态转换图,Component,包图,基本模型,Class类图,详细说明,对象层,关系层,特征层,29,用况图(Use Case),捕获与描述用户需求的工具,类图(Class),类图是系统模型的基础,描述系统的静态结构。,三个层次:,对象层:描述问题域和系统责任所需的对象,关系层:类之间的相互关系,特征层:类的属性和操作(分析阶段不用细化),30,顺序图(Sequence),按时间顺序排列在完成某一功能过程中对象之间的交互行为。,协作图(Collaboration),以某一对象为中心描述对象之间的交互。,状态转换图(State Transition),描述对象在生命周期内,响应事件的状态转换过程,以及响应事件后所做的反映。,包图(Component),对关系密切的模型元素进行打包。,31,2.3 面向对象的分析过程,分析过程中各个步骤不要求按固定顺序进行。所以,面向对象的分析步骤经常被叫做“活动”。,建立Use Case,发现对象,定义属性与服务,建立结构与连接,定义:顺序图、,协作图、状态图,建立Class,详细说明,原型开发,32,实施OOA的几点建议:,1)确定需求的工作放在前面;,2)建立Class图,可以随时切换到其他活动;,3)建立顺序图、协作图和状态图的活动,放在对象 识别之后,并与基本模型活动交错进行,,4)详细说明应分散在各项活动之中进行,最后做一次审查和补充;,5)原形可以反复地进行,早期的原型可以用来证实用户需求;,6)对于规模较小系统,分析时可以省略包图。,33,第三章 面向对象的设计,3.1 面向对象设计概述,3.2 问题域设计,3.3 人机交互设计,3.4 控制驱动设计设计,3.5 数据管理设计,3.6 构件和部署设计,34,3.1 面向对象设计概述,按照软件生命周期的规律,面向对象的方法学也包括分析活动和设计活动。,分析活动和设计活动并没有明显的阶段划分,对应喷泉式模型:,演化,维护,测试,实现,设计,分析,体现认识事物的循环迭代性,强调开发活动的无间隙性(无明显的阶段划分),强调开发活动的并发性,35,面向对象分析活动-针对问题域和系统责任,不考虑与实现有关的因素,建立独立于实现的OOA模型。,面向对象设计活动-考虑与实现有关的问题,建立针对具体实现的OOD模型,设计内容包括:,1)根据实现语言对类(属性与操作)进行描述,2)人机交互界面设计,3)系统控制部分的设计,4)数据管理部分的设计,5)系统构件部署,问题域,部分,详细说明,控制驱动部分,人机交互部分,数据管理部分,行为图与包图,类图,用况图,详,细,说,明,36,面向对象设计准则,以设计元素的耦合性、内聚性以及复用性为主要准则,耦合性,衡量耦合度的两个方面:,成分之间的信息传输量,成分之间传递信息的复杂程度,交互耦合:成分之间通过消息交互,越松散越好,继承耦合:成分之间有继承关系,越紧密越好,37,内聚性,操作内聚:完成单一功能的操作的内聚最高,类内聚:类中没有多余的属性和操作,且所有属性和操作应该是自身的责任,每个操作也是高内聚的。,复用性,执行代码级的复用,源代码级的复用和继承,分析和设计结果的复用和继承,体系结构的复用和继承(设计模式),38,清晰准则,统一的用语,一致的约定,消息模板要少,类责任表达要明确,独立处理算法和策略算法,继承关系层次不宜过深,类简洁性准则,避免过多的属性,使用继承保持属性量,对象间协作最小化,避免过多的操作,保持操作的高内聚,保持内部成员的私有性(包括属性和操作),其他设计准则,39,3.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 定义对象的可访问性,40,3.2.1 引入可复用类,目标-尽可能地使用可以利用的复用成分。,例:已经存在图书类,在书店管理系统和图书馆系统中可以复用它。,图书,零售图书,馆藏图书,书店系统,图书馆系统,41,可直接利用:把可复用的类加到问题域并做标记。,只满足部分利用:把可复用类加到问题域,用子类继承并重新定义或新添操作。,只有部分可以利用:把可复用的类加到问题域,删除多余部分成为新的类。,注:重新规划问题域中的复用类与原有类之间的关联。,复用方法,车辆,序号,颜色,样式,出厂日期,序号认证(),车辆,序号,厂商,样式,序号认证(),例:,新建的类,已有的类,换名字,42,3.2.2 增设一般类,目标-把具有相同操作和属性的类组织在一起形成超类,建立继承关系。,处理策略,1)若子类中不需要父类中的某些操作,可在子类中重新声明该操作为无方法的操作。,2)若在不同的类中的操作具有相同语义名字,但方法不同,可利用多态机制,在一般类中为该操作做一个虚函数。,3)若继承来的操作执行效果相同,只是缺少参数。在父类操作中加入必要的参数,执行时忽略该参数。,43,3.2.3 调整继承关系,1)对不支持多继承的编程语言,需要将多继承关系调整为单继承关系,方法1:用聚合关系将多继承关系转换为单继承关系,手机,照相机,照相手机,手机,照相机,照相手机,方法1例1:,44,学生,职工,在职学生,人员,学生,职工,身份,人员,方法1例2:,身份=在职学生,=学生,=职工,45,方法2例1:,学生,职工,人员,在职学生,学生,在职学生,人员,职工,学生信息,职工信息,方法2:提升多继承子类的层次,将多继承转换为单继承,方法2例2:,46,学生,职工,在职学生,方法1:取消继承,方法2:改为聚合,手机,照相机,手机照相机,手机,照相机,2)对不支持继承的编程语言,需要将继承关系取消。,手机照相机,47,3.2.4 对多态性的调整,若编程语言不支持多态,需修改与相关的属性和 操作的名字,并根据情况,重新进行对象分类。,多边形,线条色,线形,边数,顶点坐标,绘图,填充,正多边形,*顶点坐标,*绘图,矩形,边数,*顶点坐标,*绘图,多边形,线条色,线形,填充,不规则多边形,边数,顶点坐标,绘图,正多边形,顶点坐标,绘图,矩形,顶点坐标,绘图,例:,*表示多态,新增的类,virtual,表示不用,48,3.2.5 为提高性能进行类调整,影响系统性能的因素,为提高性能可以做的处理:,1)调整对象的分布,2)增加保存中间结果的属性或类,3)调整系统功能的并发度,4)合并通信频繁的类,5)缩小类范围,分解复杂对象,数据传输时间,数据存取时间,数据处理时间,49,1)调整对象的分布:,频繁交换信息的对象,尽量集中在一个物理空间处理。例如:,2)增加保存中间结果的属性或类,经常重复的某些处理,要设置中间存储。例如:,对月报表的处理,通常存储周统计信息;对上半年与下半年的增长率的计算,通常要累计阶段性的增长率,不要每次都从头计算。,将与用户频繁交互的操作界面对象集中在前端客户机;将与数据库频繁交换信息的业务处理逻辑对象集中在主机服务器。,50,流速调节器,指定流速,流速调节,流速探测器,当前流速,流速探测,取当前流速,流速控制器,指定流速,当前流速,流速调节,流速探测,例如:合并流速探测器和流速调节器两个类,减少频繁通讯,提高效率。,4)合并通信频繁的类,原设计:,1:n,1,对应,51,5)缩小类范围,分解复杂对象,例1:将范围较大的类分解为较具体的类,可以使复杂处理简单化。,几何图象,多边形,椭圆,扇形,例2:用聚合关系描述分解的复杂对象,可以分别应对不同的情况。,祯,显示,背景,显示,前景,显示,52,存储对象是指永久性对象,为了存储永久性对象,需要在对象类中增补必要的属性与操作,方法1:在作为永久对象的类属性中增加类名,并增加存储和检索操作,使类的对象可以自己存储或检索自己。,永久存储类,类名(对应数据库表名),存储对象(),检索对象(),3.2.6 为对象存储增补属性与操作,53,方法2:设立独立的数据管理对象类,负责问题域中所有永久对象的存储和检索。,存储数据管理器,类名(对应各个数据库表),存储对象,检索对象,方法3:利用面向对象数据库存储和检索永久对象。,54,3.2.7 关联的转化与实现,关联的转化:,1)把关联类和N元关联转化为二元关联,2)把多对多关联转化为一对多关联,供货商,客户,1.*,*,供货商,客户,供需合同,卖方,买方,1.*,*,1,1,例:,55,关联的实现,1)聚合实现:在整体类中,加入部分类类型的属性 或指针属性,汽车,型号,颜色,牌照,底盘,发动机,车轮,车厢,底盘,发动机,车轮*,车厢,例:,56,2)关联实现:,单项关联:用关联对象作为指针属性的类型,加入源 对象类;双向关联:在两端都设置对方类型的指针属性,关联重数为1:设立一个指针对象;关联重数大于1:设立指针集合,机场,城市,.,飞机,航班号,机型,.,学生,学号,姓名,课程,名称,学分,着陆城市机场*,例:,1.n,0.n,着陆,有,停放的飞机*,1.n,0.n,有,课程*,授课教师,姓名,院系单位,1.n,1.n,有,课程*,授课教师*,讲授,57,3.2.8 调整属性,学生,姓名,学号,籍贯,学生,姓名,学号,籍贯,国家,省,县,验证,1,1,属性是组合数据项时,可能需要对属性进行调整,按照属性的语法,明确标出属性的完整内容,包括:,可见性 属性名称:类型=初始值 性质,例:,属性的性质,指属性范围的限定。,例:姓名:420字符;学号:8位数字;成绩总和read:RETUNS sensor.ID,sensor.status;,MESSAGE(motion.sensor)-set:SENDS sensor.ID,sensor.status;,用结构化自然语言描述协议例,系统设置协议:,MESSAGE(system)-program:,可细化为:,MESSAGE(system)-install:telephone number,MESSAGE(system)-define:alarm time,MESSAGE(system)-build:sensor table,MESSAGE(system)-load:password,61,Procedure SafeHome software,PACKAGE system IS,TYPE system data,PORC install,define,build,load,PROC display,reset,query,modify,call,PRIVATE,PACKAGE BODY system IS PRIVATE,system.id IS STRING LENGTH,verification phone.number,telephone.number,.IS STRING LENGTH(8);,sensor.table DEFINED,sensor.type IS STRING LENGTH(2),sensor.number,alarm.threshold IS NUMBER;,PUBLIC,PORC install RECEIVES(telephone.number),design detail for operation install,.(多个操作描述),END system,.,END SafeHome software,TYPE:数据类型说明,PROC:过程说明,数据对象定义,用结构化自然语言描述算法例:SafeHome 高层构件设计描述(类似Ada的伪码),62,操作部分描述,PROC read(sensor.id,sensor.status:OUT),GET(sensor,exception:sensor.status:=error)raw.signal;,raw.signal IS BIT STRING,IF(hardware.interface.type=“S”&alarm.characteristics.signal.type=“B”,THEN,COVERT raw.signal TO internal.signal.level;,IF internal.signal.level threshold,THEN sensor.status:=“event”;,ELSE sensor.status:=“no event”;,ENDIF,ELSE processing for other type of S interfaces would be specified,ENDIF,RETURN sensor.id,sensor.status;,END read,63,定义对象:在算法设计中,根据实现条件,按以下方式 定义对象:,内存中的对象:,用相应的类定义,可以一个对象定义一个变量,也可以定义对象数组,包括静态声明。,外存上的对象:(永久对象),设置专门的操作,按照规定的格式,从外存中读取对象;前提是有对应的保存永久对象的操作。,3.2.10 定义对象及可访问性,64,类之间存在依赖,表明对象间的访问有如下情况:,1)类的对象作为参数传递,例:vector multiply(matrix&m,vector&v,int n),2)类对象被声明为操作的局部成分,例:outer_class:write()inner_class g;,g.write();,3)类对象被声明为全局的,例:sensor s_control(“cc”);,main(),类之间存在关联,也就是对象之间存在链,表明对 象间可以访问,且可见性为“公共”的。,根据类的关联考虑对象的可访问性,65,3.3 人机交互设计,3.3.1 人机交互设计原则,界面设计黄金规则,至于用户的控制之下,减少用户的记忆负担,保持界面风格一致,界面设计问题,响应时间问题,联机帮助问题,错误提示问题,命令操作问题,66,设计人员,设计,界面,设计目标,用户,学习,评判,经验与需求,反馈,启发,3.3.2 人机交互的设计过程,设计人员与用户协作的重复过程,67,3.3.3 人机交互的分析策略,1)通过与系统交互的参与者进行分析,列举所有的人员与参与者,对人员与参与者进行调查研究,区分人员类型,统计(或估算)出各类人员的比例,了解各类人员的主观需求,按照一定的准则进行折中与均衡,2)通过用况进行分析,分析用况脚本陈述,划分参与者行为和系统行为,分离出每个段落包含的输入或输出,去掉与输入或输出无关的陈述,包括:参与者或系统自身的行为,以及一些控制行为,68,收款(usecase),输入本次收款命令;,收款准备,应收款总数置为0,输出提示信息;,for 顾客选购的每种商品 do,输入商品编号;,if 此种商品多于一件,then 输入商品数量,end if;,检索商品名称及单价;,货架商品数减去售出数;,if 货架数低于下限,then 通知供货员请求上货,end if;,计算商品总价并,打印编号、名称、数量、单价和总价;,总价累加到应收款总数;,end for;,打印应收款总数;,输入顾客交来的款数;,计算应找回的款数;,打印以上两个数目;,收款(人机交互),输入开始本次收款命令;,输出提示信息;,for 顾客选购的每种商品,输入商品编号;,if 此种商品多于一件,then 输入商品数量,end if;,打印商品编号名称、数量、单价和总价;,end for;,打印应收款总数;,输入顾客交来的款数;,打印交款数及找回款数;,通过用况分析人机交互例,69,3.3.4 面向对象的人机交互设计,1)确定输入设备,2)设计输入界面对象,3)输入步骤细化,对话框设计要点:,(a)使用有意义且易理解的标题;,(b)按逻辑排序输入框;,(c)允许编辑文本型输入框;,(d)对输入错误有保证措施,出错时有提示;,(e)明确标出输入框的可选和必选;,(f)有必要的输入框解释(如在Windows的状态条上)。,菜单,对话框,1)设计输入,检查输入的内容:,(a)输入框组合的完备性:确保所有必要的输入框都要被输入(b)数据的有效范围控制:检查所输入数据类型,(c)数据有效位数的控制:检查所输入数据值范围,70,2)设计输出,设计相应的设备类及接口操作,1)确定输出设备,2)确定输出的形式和内容,3)输出步骤的细化,设备驱动,用户操作界面,打印机,显示器,绘图仪,外存,设计相应的输出的形式类,输出设备,文本,表格,图形,图像,声音,输出的内容,提示信息,运算结果,处理反馈,71,界面设计的指导性策略,1)窗口作为基本类;,2)窗口类的聚合关系,按命令的逻辑层次在窗口中部署元素,这些元素作为窗口类的部分类,并与窗口类形成聚合关系。,3)窗口类形成继承关系,发现窗口类间的共性以及部件类间的共性,定义较一般的窗口类和部件类,分别形成窗口类及部件间的继承关系。,窗口中的元素:,菜单,工作区,对话框,按键,72,4)窗口的静态特征,用属性表示窗口或部件的静态特征,如尺寸、位置、颜色和选项等。,5)窗口的动态特征,用操作表示窗口或部件的动态特征,如移动或滚动等。如果使用界面生成工具,就不需要对这样的操作进行设计。,6)界面类之间的关联,在界面元素之间发现联系,建立关联。可绘制用户与系统交互的顺序图。,73,人机界面只负责输入、输出和窗口更新工作。所有问题域的处理请求,都转发给问题域,在界面对象中,不进行应用逻辑或业务的处理。,界面部分对象总是主动发起与问题域部分的请求,问题域部分,只对界面对象的请求进行响应。,界面与问题域之间通过接口通信,或者在界面类与问题域类之间增设控制类(“出版-订阅”模式),以减小耦合。,7)建立界面类与问题域类之间的联系。,请求,回应,问题域部分,人机交互部分,接口,接口,74,出版者,管理者,订阅者,1,1,1,1.*,“出版-订阅”模式:,订阅者向管理者订阅感兴趣的事件,出版者向管理者发布事件,管理者维护出版者和订阅者之间的映射。,一个管理者可以对应多个订阅者和出版者,使出版者和订阅者之间解耦。,75,框架,标题,接收动作(),菜单条,名称,菜单,名称,进入下级菜单(),菜单项,名称,点击(),列表,条目,条目索引,选择(),按钮,标题,点击(),标签,文本,设置文本(),界面类图例:,76,Cedit复用,人机交互界面复用,1)直接复用,CDialog复用,2)间接复用,CMvsvstemDig,界面的两种复用方式:,77,3.4 控制器驱动部分设计,控制驱动设计任务:,1)定义并表示系统的的控制流,2)并发系统中控制流的协调设计,3)机器无关性设计(隔离硬件、操作系统、网络变化对系统的影响),顺序系统:在一个时间点上,有且仅有一件事情发生,,只有一个控制流。,并发系统:在一个时间点上,有多件事情发生。存在多,于一个的控制流。,78,控制驱动部分由系统中所有的主动类构成,控制流驱动者是由主动类所创建的主动对象,控制流:处理机上顺序执行的动作序列,进程或线程的统称,进程是独立功能程序的执行过程,线程是需要连续执行的操作序列,进程有独立的机器空间,线程在进程内,竞争进程资源,79,控制驱动部分设计方法,1.识别控制流:,-系统的分布方案要求多控制流,每个分布点至少有一个控制流,至少拥有一个主动对象。,-系统的并发需求要求多控制流,要求多项任务同时进行,则每项任务对应一个控制流。,-为实现方便设立控制流,通信睡眠控制流和时钟驱动控制流,-分析中定义的主动类对象都对应独立的控制流。,-为提高性能而增设的控制流,设立高、低、紧急三种优先级的控制流。,-异常事件处理作为独立的控制流,-起并发协调作用的控制流,80,2.定义控制流,1)用主动对象表示控制流,给出命名和简单说明,控制流表示:进程 或 线程,2)确保每个操作属于一个控制流,3)描述时间驱动控制流的条件,4)描述控制流的数据出处,r:ReservationAgent,location=reservationserver,b:KnowledgeSource,81,3.建模控制流间的通信,1)同步通信,调用者调用操作,等待接收者接收这个调用,操作被唤醒,处理后将计算结果返回给调用者,经典同步事例:过程调用,2)异步通信,调用者发送信号后无需等待,继续他自己的工作,接收者在作好准备后,适当的时候去取需要的信息,经典异步事例:邮箱、共享存储器,82,用顺序图对线程间的通信建模,c:BlackboadControler,b:KnowledgeSource,s:Blackboad,c:初始化,s:初始化完毕,c:开始搜索,b:提示线索(k),c:评价(),b:放置部分解决方案,例:黑板系统的顺序图,83,用顺序图对进程间的通信建模,t:TripPlanner,location=client,r:ReservationAgent,location=,reservationserver,tm:TicketingManager,location=client,h:HotelAgent,location=,hotel server,t:planTrip(),r:make(),h:make(),例:旅游计划系统顺序图,r:postResults(),84,4.控制流间的同步,同步的目的是为了协调并发控制流的执行,以防止控制流同时修改或访问共享资源、提高资源的利用率和防止控制流死锁和控制流饿死。,a,b,c,a,b,c,(a),(b),两个控制流同时使用对象的同一操作,两个控制流同时使用对象的不同操作,85,协调控制流间的同步,方法1:Sequential(顺序的),将同步控制流涉及的多个对象作为临界资源,保护起来,使得在一个时刻,每对象内仅有一个控制流起作用。,方法2:Guarded(受监护的),把控制流所涉及的对象操作顺序化,并都标上Guarded,作为临界资源,控制起来。,方法3:Concurrent(并发的),把控制流所涉及的所有对象中的每一操作,作为独立原子单位,利用并发控制,执行多入口点的操作并行处理。,86,list,add()concurrent,为实现同步需给操作附加同步特征,或者设立控制类协调类以实现协调任务,同步特征例:,控制流协调类例:,控制流协调者,协调,1,*,控制流,名字,描述,优先级,包含的服务,协调者,初始化,开始,待命,终结,87,3.6 数据管理部分的设计,3.6.1 有关概念,3.6.2 关系数据库的数据管理设计,3.6.2 面向对象数据库的数据管理设计,3.6.3 文件系统的数据管理设计,88,3.6.1 数据管理部分设计的有关概念,责任:存储和检索永久对象(需要长期存储的对象),封装对永久对象的查找和存储机制,目的:隔离数据管理部分,减小对问题域的影响,存储方式:文件系统,关系数据库,面向对象数据库,只存储属性部分,89,数据库和数据库管理系统,应用程序,用户,数据库管理员,应用程序接口,终端用户,查询处理器,数据定义接口,数据库访问和控制逻辑部分,物理存储,模式,数据库,数据库管理系统,90,关系数据库,人员ID 姓名 籍贯 联系地址 ,K8234 张三 河北 海淀花园路178号3门23,K8237 李四 贵州 海淀永定路4号楼507,P8450 王五 福建 宣武区前门大街7号,F8559 张三 河北 东城区东厂胡同38号,每列是属性也称字段,每行称为元组或记录,关键字:能唯一确定元组的属性,外键:用于连接表的关键字,序号 人员ID 身份证号 ,0001 K8237 3731518,0002 F8559 5300032,关键字,外键,91,面向对象数据库,采用面向对象模型的数据库,面向对象数据库的特征,支持对象、类、操作、属性、继承、聚合、关联概念,具有数据库应有的特性和功能,面向对象数据库的类型,-基于关系数据库的扩充,-基于面向对象语言的数据库,-建立全新的面向对象数据库系统,数据库定义语言,数据库操纵语言,92,具有代表性的面向对象数据库产品,Fish man 研制 Iris,Kim研制 ORION,Brelt 研制,Servio Logic 公司 Gem Stone,Weiser&Lochovskey 研制OZ,Diederich&Milton 研制 ODD ESSY原型,Object Design 公司 Object Store,Versant Object Technology 公司 Versant,.,93,数据管理部分,数据库管理系统,数据库,应用系统,设立应用系统的数据管理,将系统对象转换为永久对象,再交给数据库管理系统存储。,3.6.2 关系数据库的数据管理设计,94,1)基本方法,面向对象基本元素与关系数据库的“实体-关系”相对应,面向对象,类,对象,属性,关联,实体关系,实体类型,实体实例,属性,关系,关系数据库,表,行(元组),列,关键字和外键,95,2)标识永久对象,对非永久存储对象的访问,是通过对象标识(即对象名)访问的。对象标识在运行中建立,在程序中取消,或随着运行终止自动消亡。,永久存储对象,必须将可标识的唯一对象标记存储起来,作为主关键字。,永久对象的命名方法:,-为类建立的表:设立唯一可标识对象的关键字字段,-为关联建立的表:设立相关联的主键为组合关键字,96,永久对象标识例:,办公设备,名称,购置日期,规格,设备编号 使用日期 部门编号,802300 92年2月 0010,802301 95年2月 0010,832033 99年8月 0011,办公设备,部门,名称,责任人,联系电话,0.n,0.1,设备编号 名称 购置日期 规格,802300 装订机 91年3月 KP-023,802301 投影仪 91年3月 SH-111,832033 投影仪 98年10月 SK-111,部门编号 名称 责任
展开阅读全文

开通  VIP、SVIP  下载更划算
下载10份以上建议开通 VIP 会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        关注我们

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服