收藏 分享(赏)

软件工程—第6章 面向对象设计.ppt

上传人:dreamzhangning 文档编号:3357128 上传时间:2018-10-17 格式:PPT 页数:110 大小:525.50KB
下载 相关 举报
软件工程—第6章 面向对象设计.ppt_第1页
第1页 / 共110页
软件工程—第6章 面向对象设计.ppt_第2页
第2页 / 共110页
软件工程—第6章 面向对象设计.ppt_第3页
第3页 / 共110页
软件工程—第6章 面向对象设计.ppt_第4页
第4页 / 共110页
软件工程—第6章 面向对象设计.ppt_第5页
第5页 / 共110页
点击查看更多>>
资源描述

1、第六章 面向对象设计,传统方法学概述,传统方法学存在的问题 生产率提高的幅度远远不能满足需要 软件重用程度很低 软件仍然很难维护 软件往往不能真正满足用户需要,出现问题的原因 僵化的瀑布模型*某些类型的系统需求是模糊的*项目参与者之间存在通信鸿沟*预先定义的需求可能是过时的 结构化技术的缺点 *用这种技术开发出的软件,其稳定性、可修改性和可重用性都比较差。*结构化分析、设计技术的本质是功能分析。从代表目标系统整体功能的单个处理着手,自顶向下不断把复杂的处理分解为子处理,层层分解下去,直至仅剩下若干个容易实现的子处理为止。,功能与数据分离的软件设计结构与人类的现实世界环境很不一样,和人的自然思维

2、也就很不一致,因此对现实世界的认识与编程之间存在着一道很深的理解上的鸿沟。 系统是围绕着如何实现一定的行为来进行的,当系统行为易变,需要常常修改时,修改极为困难。 在系统中模块之间的控制作用有重要影响时,也就是说,实际的控制发生的根源来自分散的各个模块之中时,由于在“好的模块结构”中的模块间的控制作用只能通过上下之间的调用关系来进行,造成信息传递路径过长,效率低,易受干扰,甚至出错。 自顶向下功能分解的分析方法极大地限制了软件的可重用性。,面向对象思想最初起源于20世纪60年代末的simula语言。面向对象方法的基本要点首次在simula语言中得到了表达和实现。80年代,位于美国加州的Xero

3、x研究中心推出smalltalk语言及其程序设计环境,使得面向对象程序设计方法得到比较完善的实现,掀起了面向对象研究的高潮。到80年代中后期,面向对象的软件设计和程序设计方法已发展成为一种成熟有效的软件开发方法。相比而言,面向对象的分析技术发展得比较滞后。,面向对象方法学概述,“面向对象”(Object-Oriented)是针对“面向过程”一词提出的,是从本质上区别于传统的结构化方法的一种新方法,新思路。 OO技术的基本原理是:按照问题域的基本事物实现自然分割,按人们通常的思维方式建立问题域的模型,设计尽可能直接自然表现问题求解的软件系统。 为此,OO技术引入了对象(object)概念来表现事

4、物,用消息(message)传递建立事物间的联系。用类(class)和继承(inheritance)作为适应人们一般思维方式的描述模型。用方法(method)表示作用在对象上的各种操作。,面向对象方法学概述,建立在对象、消息、类、继承和方法等概念基础上的面向对象软件的基本特征是对象的封装性和继承性。 通过封装可以将对象的定义与对象的实现分开。这样,无论是对象功能的完善扩充,还是对象实现的修改,影响仅限于该对象内部,保证了面向对象软件的可构造性和易维护性。 通过继承可以表达类与类之间的联系,大大减少了重复定义,同时也使系统的结构更加清晰、易于理解和维护。,6.1 面向对象设计概述 6.2 系统设

5、计 6.3 对象设计 6.4 领域对象设计,教学内容:,在第五章讲述了软件设计的几条基本原理,这些原理在进行面向对象设计时仍然成立,但是增加了一些与面向对象方法密切相关的新特点,从而具体化为下列的面向对象设计准则:,模块化对象就是模块;抽象类实际上是一种抽象数据类型;信息隐蔽通过对象的封装性实现;弱耦合主要指不同对象之间相互关联的紧密程度;强内聚设计中使用的一个构件内的各个元素,对完成一个定义明确的目的所做出的贡献程度;可重用尽量使用已有的类,确实需要创建新类,则在设计这些新类的协议时,应该考虑将来的可重复使用性;,面向对象设计,分析是提取和整理用户需求,并建立问题与精确模型的过程。设计则是把

6、分析阶段得到的需求转变成符合成本和质量要求的、抽象的系统实现方案的过程。 面向对象设计就是用面向对象观点建立求解域模型的过程。,OOA与OOD的本质:OOA是一个分类活动,即分析问题力图确定在开发 解决方案时可应用的对象类,同时确定对象关系和行为。OOD使得软件工程师能够确定从类中导出的对象, 以及这些对象的相互关联,此外,OOD描述了:对象间的 关系如何达到; 行为如何实现;对象间通信如何实现。,从OOA到OOD,逐渐扩充模型的过程OOD分为两个阶段:高层设计(系统设计)低层设计(对象设计),6.1 面向对象设计概述,OOD则主要考虑“如何实现”的问题,因而这一阶段注意的焦点从问题空间转移到

7、解空间。着重完成各种不同层次的模块设计。,1.面向对象设计的任务系统设计对象设计消息设计复审设计模型,系统设计主要完成系统整体结构的设计,包括将子系统分配到处理器和任务,选择实现数据管理、界面支持和任务管理的设计策略,为系统设计合适的控制机制等。 对象设计,对OOA模型中的类对象模型具体化、详细化。 消息设计使用对象间的协作和对象关系模型,设计出消息模型。 复审设计模型,对设计模型进行复审,并伴随着附加的OOA活动。和传统的结构化设计一样,面向对象设计也是将分析阶段所建立的分析模型转变为软件设计模型。,分析模型,使用实例,处于OOA模型核心的是“使用实例”(Use Case ),简称“用例”。

8、获得软件的需求后,软件分析员既可据此创建一组“场景”(Scenario),每个场景包含一个使用实例。从这些用例出发,进一步抽取和定义OOA模型的3种模型,即 类-对象模型,描述系统所涉及的全部类-对象,每个类-对象都通过属性、操作和写作者来进行进一步描述; 对象-关系模型,描述对象之间的静态关系,同时定义了系统中所有重要的消息路径,它也可以具体化到对象的属性、操作和协作者; 对象-行为模型,描述了系统的动态行为,即对湘杂特定的状态下如何反映外界的事件。,设计模型定义成了一个金字塔层次结构。自低而上分别为: 子系统层:包含每个子系统的表示 类和对象层:包含类层次和每个对象的设计表示 消息层:包含

9、使得每个对象能够和其协作者通信的细节,建立 系统的外部和内部接口 责任层:包含针对每个对象的所有属性和操作的数据结构和算法的设计,设计模型模型,将分析模型转换为设计模型,使用 实例,对象关系模型,索引卡片,对象-行为模型,协作者,子 系 统 设 计,类及对象设计,消息设计,责任设计,OO分析模型,OO设计模型,属,性,操,作,6.2 系统设计,1. 系统设计过程根据Rumbaugh对OMT方法的定义,系统设计主要由以下步骤组成: 划分子系统; 确定需要并发运行的子系统并为他们分配处理器; 描述子系统之间的通信; 确定系统资源的管理和控制; 确定人机交互构件; 选择实现数据管理和任务管理的基本策

10、略。,目前流行的OOD方法概述 Rumbaugh方法(简称OMT) Rumbaugh的OOD过程概述: 进行系统设计 进行对象设计 实现在系统设计中定义的控制机制 调整类结构以加强继承性 设计消息序列以实现对象关系(关联) 包装类和对象为模块,子系统设计过程中 必须定义四种重要的设计结构问题域直接负责实现客户需求的子系统 人机交互实现用户界面的子系统(包括可复用的GUI 子系统) 任务管理负责控制和协调并发任务的子系统,任务可 能被包装在一个子系统中或不同的子系统间; 数据管理负责对象的存储和检索的子系统,系统分解:,子系统既不是一个对象也不是一个功能,而是类、关联、操作、事件和约束的内聚集合

11、。 定义子系统遵循的标准: 子系统应有良好的接口 除少数“通信类”,子系统中的类应只和该子系统中的其它类协作 子系统数目不应太多 可在子系统内划分以降低复杂性,划分分析模型,子系统,客户端 子系统,服务器端 子系统,请求,子系统间通信,子系统间协作的模型,目前流行的OOD方法概述Coad-Yourdon方法 Coad-Yourdon的OOD过程概述: 问题域部分 人机交互部分 任务管理部分 数据管理部分,2. 子系统设计划分子系统(P128例6.1) 处理并发操作(P129例6.2) 描述子系统间通信(P130图6.4) 资源管理构件,3. 人机交互设计,虽然好的人机交互部分不可能挽救一个功能

12、很差的软件, 但性能很差的人机交互部分将使一个功能很强的产品变的不可接受!,人机交互设计,人-机交互部分的设计结果,将对用户情绪和工作效率产生重要影响。人-机界面设计得好,则会使系统对用户产生吸引力,用户在使用系统的过程中会感到兴奋,能够激发用户的创造力,提高工作效率;相反,人-机界面设计得不好,用户在使用过程中就会感到不方便,不习惯,甚至会产生厌烦和恼怒的情绪。,设计人-机交互界面的准则:,一致性 减少步骤 及时提供反馈信息 提供撤销命令 无须记忆 易学 富有吸引力,设计人-机交互系统的策略:,分类用户 按技能水平分类(新手/初级/中级/高级) 按职务分类(总经理/经理/职员) 按所属集团分

13、类(职员/顾客) 描述用户 用户类型 使用系统欲达到的目的 特征(年龄、性别、受教育程度、限制因素等) 关键的成功因素(需求、爱好、习惯等) 技能水平,设计人-机交互系统的策略:,设计命令层次 研究现有的人-机交互含义和准则 确定初始的命令层次 精华命令层次 设计人-机交互类 人-机交互类与使用的操作系统及编程语言密切相关。例如:windows环境下运行的Visual C+语言提供了MFC类库,设计人-机交互类时,往往仅需从MFC类库中选用一些适用的雷,然后从这些类派生符合自己需要的类就可以了。,传感器图形项目,传感器控制系统人机交互部分设计举例,调用项目,传感器状况窗口,显示菜单 调用菜单活

14、动,传感器项目,调用项目,传感器报警窗口,显示菜单 调用菜单活动,位置,传感器报警项目,调用项目,传感器窗口,坐标,4. 任务管理设计,1.为什么要有任务管理部分,虽然从概念上说,不同对象可以并发地工作,但是,在实际系统中,许多对象之间往往存在相互依赖关系。此外,在实际使用的硬件中,可能仅由一个处理器支持多个对象。因此,设计工作的一项重要内容就是,确定哪些是必须同时动作的对象,哪些是相互排斥的对象。一是由于在多用户、多任务或多线程操作在系统上开发应用程序的需要;二是在通过任务描述目标软件系统中各子系统间的通信和协同时,引入任务概念能简化某些应用的设计和编码。,分析并发性,通过面向对象分析建立起

15、来的动态模型,是分析并发性的主要依据。如果两个对象彼此间不存在交互,或者它们同时接受事件,则这两个对象在本质上是并发的。通过检查各个对象的状态图及它们之间交换的事件,能够把若干个非并发的对象归并到一条控制线中。所谓控制线,是一条遍及状态图集合的路径,在这条路经商每次只有一个对象是活动的。在计算机系统中用任务(task)实现控制线,一般认为是进程(process)的别名。通常把多个任务的并发执行称为多个任务。,怎样设计任务管理部分,确定事件驱动型任务 确定时钟驱动型任务 确定优先任务 确定关键任务 确定协调任务 尽量减少任务数 确定资源需求,传感器控制系统任务管理部分设计举例,任务协调器,协调,

16、任务,名字 描述 优先级 服务 协调 通信,初始化 开始 准备好 结束,1,0,m,传感器任务描述举例,任务1 名字: 传感器读出。 描述: 该任务在需要脉冲调幅时负责读出传感器。 包含: 传感器.样本。 优先级:中等。 协调: 时钟驱动,100ms的时间间隔。 通信: 从输入线(传感器)得到值,给雷达邮箱发送值。,5. 数据管理设计,数据管理部分提供了数据在数据管系统中存储和检索对象的基本结构,它分离了数据管理方案的影响 (不管该方案是普通文件、关系型数据库、面向对象数据库或其它方式。),如何设计数据管理部分 (1)设计数据格式 (2)相应服务的设计,设计数据格式:,文件系统 关系数据库管理

17、系统 面向对象数据库管理系统,文件管理系统,文件管理系统是操作系统的一个组成部分,使用它长期保存数据具有成本低和简单等特点。 但是,文件操作的级别低,为提供适当的抽象级别还必须编写额外的代码。 此外,不同操作系统的文件管理系统往往有明显差异。,关系数据库管理系统,主要优点: 提供了各种最基本的数据管理功能(例如,中断恢复,多用户共享,多应用共享,完整性,事务支持等)。 为多种应用提供了一致的接口。 标准化的语言(大多数商品化关系数据库管理系统都使用SQL语言)。,关系数据库管理系统,通常都相当复杂,具体缺点: 运行开销大: 即使只完成简单的事务,也需要较长的时间。 不能满足高级应用的需求: 关

18、系数据库管理系统很难用在数据类型丰富或操作不标准的应用中。 与程序设计语言的连接不自然: SQL语言支持面向集合的操作,是一种非过程性语言;然而大多数程序设计语言本质上却是过程性的,每次只能处理一个记录。,面向对象数据库管理系统,面向对象数据库管理系统是一种新技术,主要有两种设计途径: 扩展的关系数据库管理系统: 在关系数据库的基础上,增加了抽象数据类型和继承机制,此外还增加了创建及管理类和对象的通用服务。 扩展的面向对象程序设计语言: 扩充了面向对象程序设计语言的语法和功能,增加了在数据库中存储和管理对象的机制。,设计数据管理子系统,设计数据格式 文件系统 关系数据库管理系统 面向对象数据库

19、管理系统 设计相应的服务 文件系统 关系数据库管理系统 面向对象数据库管理系统,设计数据格式,文件系统 定义第一范式表: 列出每个类的属性表; 把属性表规范成第一范式,从而得到第一范式表的定义。 为每个第一范式表定义一个文件。 测量性能和需要的存储容量。 修改原设计的第一范式,以满足性能和存储需求。,设计数据格式,关系数据库管理系统 定义第三范式表: 列出每个类的属性表; 把属性表规范成第三范式,从而得出第三范式表的定义。 为每个第三范式表定义一个数据库表。 测量性能和需要的存储容量。 修改先前设计的第三范式,以满足性能和存储需求。,设计数据格式,面向对象数据库管理系统 扩展的关系数据库途径:

20、 使用与关系数据库管理系统相同的方法。 扩展的面向对象程序设计语言途径: 不需要规范化属性的步骤,因为数据库管理系统本身具有把对象值映射成存储值的功能。,设计相应的服务,如果某个类的对象需要存储起来,则在这个类中增加一个属性和服务,用于完成存储对象自身的工作。 应该把为此目的增加的属性和服务作为“隐含”的属性和服务,即无须在面向对象设计模型的属性和服务层中显式地表示它们,仅需在关于类&对象的文档中描述它们。 用于“存储自己”的属性和服务,在问题域子系统和数据管理子系统之间构成一座必要的桥梁。 这样设计之后,对象将知道怎样存储自己。,设计相应的服务,文件系统 被存储的对象需要知道打开哪个(些)文

21、件,怎样把文件定位到正确的记录上,怎样检索出旧值,以及怎样用现有值更新它们。 此外,定义一个ObjectServer(对象服务器)类,并创建它的实例。该类提供下列服务: 通知对象保存自身; 检索已存储的对象,以便把这些对象提供给其他子系统使用。,设计相应的服务,关系数据库管理系统 被存储的对象,应该知道访问哪些数据库表,怎样访问所需要的行,怎样检索出旧值,以及怎样用现有值更新它们。 此外,定义一个ObjectServer类,并声明它的对象。该类提供下列服务: 通知对象保存自身; 检索已存储的对象,以便由其他子系统使用这些对象。,设计相应的服务,面向对象数据库管理系统 扩展的关系数据库途径: 与

22、使用关系数据库管理系统时方法相同。 扩展的面向对象程序设计语言途径: 无须增加服务,这种数据库管理系统已经给每个对象提供了“存储自己”的行为。 只需给需要长期保存的对象加个标记,然后由面向对象数据库管理系统负责存储和恢复这类对象。,例子 (ATM系统),因为必须保持数据的一致性和完整性,而且常常有多个并发事务同时访问这些数据,因此,采用成熟的商品化关系数据库管理系统存储数据。 应该把每个事务作为一个不可分割的批操作来处理,由事务封锁账户直到该事务结束为止。,例子 (ATM系统),在这个例子中,需要存储的对象主要是账户类的对象。 为了支持数据管理子系统的实现,账户类对象必须知道自己是怎样存储的,

23、有两种方法可以达到这个目的: 每个对象自己保存自己 由数据管理子系统负责存储对象,例子 (ATM系统),应该定义一个数据管理类ObjectServer,并声明它的对象。 这个类提供下列服务: 通知对象保存自身或保存需长期存储的对象的状态; 检索已存储的对象并使之“复活”。,设计类中的服务,设计类中的服务是面向对象设计的一项重要工作内容。 确定类中应有的服务 设计实现服务的方法,确定类中应有的服务,需要综合考虑面向对象的分析模型,才能正确确定类中应有的服务。 对象模型 动态模型 功能模型,确定类中应有的服务,对象模型: 通常只在每个类中列出很少几个最核心的服务。 动态模型: 一张状态图描绘了一个

24、对象的生命周期,图中的状态转换是执行对象服务的结果。 对象的许多服务都与对象接收到的事件密切相关。对象的动作既与事件有关,也与对象的状态有关。,确定类中应有的服务,动态模型: 事件表现为消息,接收消息的对象必然有由消息选择符指定的服务,该服务改变对象状态(修改相应的属性值),并完成对象应做的动作。 一个对象在不同状态可以接受同样事件,而且在不同状态接收到同样事件时其行为不同,则实现服务的算法中需要有一个依赖于状态的DO-CASE型控制结构。,确定类中应有的服务,功能模型: 数据流图中的某些处理可能与对象提供的服务相对应。 下列规则有助于确定对象的操作,即应该在该对象所属的类中定义相应的服务:

25、如果某个处理的功能是从输入流中抽取一个值,则该输入流对象应该定义一个相应的服务。 如果某个处理从多个输入流得出输出值,则该输出类对象应该定义一个相应的服务。,确定类中应有的服务,如果某个处理具有类型相同的输入流和输出流,而且输出流实质上是输入流的另一种形式,则该输入输出流对象应该定义一个相应的服务。 如果某个处理把对输入流处理的结果输出给数据存储或动作对象,则该数据存储或动作对象应该定义一个相应的服务。,确定类中应有的服务,功能模型: 当一个处理涉及多个对象时,通常在起主要作用的对象类中定义这个服务。 下面两条规则有助于确定处理的归属: 如果处理影响或修改了一个对象,则最好在这个对象类(而不是

26、触发者)中定义相应的服务。 考察处理涉及的对象类及这些类之间的关联,从中找出处于中心地位的类。如果其他类和关联围绕这个中心类构成星形,则最好在这个中心类中定义相应的服务。,设计实现服务的方法,在面向对象设计过程中还应该进一步设计实现服务的方法,主要应该完成以下几项工作: 设计实现服务的算法 选择数据结构 定义内部类和内部操作,设计实现服务的算法,应该考虑下列几个因素: 算法复杂度 通常选用复杂度较低的算法,但也不要过分追求高效率,应以能满足用户需求为准。 容易理解与容易实现 容易理解与容易实现的要求往往与高效率有矛盾,设计者应该对这两个因素适当折衷。 易修改 应该尽可能预测将来可能做的修改,并

27、在设计时预先做些准备。,选择数据结构,在分析阶段,仅需考虑系统中需要的信息的逻辑结构。 在面向对象设计过程中,则需要选择能够方便、有效地实现算法的物理数据结构。,定义内部类和内部操作,在面向对象设计过程中,可能需要增添一些在需求陈述中没有提到的类。 主要用来存放在执行算法过程中所得出的某些中间结果。 此外,复杂操作往往可以用简单对象上的更低层操作来定义。 因此,在分解高层操作时常常引入新的低层操作。 在面向对象设计过程中应该定义这些新增加的低层操作。,设 计 关 联,关联关系反映对象之间相互依赖、相互作用的关系。 在面向对象设计过程中,设计人员必须确定实现关联的具体策略。 关联的遍历 实现单向

28、关联 实现双向关联 链属性的实现,关联的遍历,在应用系统中,使用关联有两种可能的方式: 单向遍历: 实现简单 双向遍历: 实现麻烦,实现单向关联,用指针可以方便地实现单向关联。 如果关联的阶是一元的,则实现关联的指针是一个简单指针;如果阶是多元的,则需要用一个指针集合实现关联。,实现双向关联,实现双向关联有下列三种方法: 只用属性实现一个方向的关联,当需要反向遍历时就执行一次正向查找。 两个方向的关联都用属性实现,这种方法能实现快速访问。,实现双向关联,实现双向关联有下列三种方法: 用独立的关联对象实现双向关联。关联对象不属于相互关联的任何一个类,它是独立的关联类的实例 。,链属性的实现,关联

29、链属性的实现方法取决于关联的阶数: 一对一关联: 链属性作为其中一个对象的属性而存储在该对象中。 一对多关联: 链属性可作为“多”端对象的一个属性。 多对多关联: 通常使用一个独立的类来实现链属性,这个类的每个实例表示一条链及该链的属性。,设计优化,确定优先级 提高效率的几项技术 调整继承关系,6.3 对象设计,对象描述,对象描述 协议描述:一组消息和对消息的注释 实现描述:对对象接收到某个消息后所执行的操作的实现细节的描述 算法设计 程序构件与接口 对象间的接口和对象的整体结构,对象设计对象设计着重于对象及其相互交互的描述。在对象设计期间: 属性数据结构和所有操作的过程的详细规约被创建。 所

30、有属性的可见性(公共的、私有的或保护的)被定义,对象间的接口被精化以定义完整的消息模型的细节。,用例图 类 图 交互图 状态图,方法描述:if A thenCalculate Sales TaxCalculate Total AmountEnd if,设计带方法的类图,由OO分析模型转换到OO设计模型,6.4 领域对象设计,1.领域对象的设计内容 2.领域对象的设计模板,设计目的支持软件复用 设计内容 调整需求 复用已有的组件 引入父类,分组管理领域类 添加一般化类以建立协议 调整OOA模型 设计复审 设计模板,面向对象设计实例:简化的C+类库管理系统 需求描述: 管理用C+语言定义的类 用户

31、能够方便地向类库中添加新类,并建立新类与库中原有类的关系 用户能够通过类名从库中查询出指定的类 用户能够查看或修改与指定类有关的信息 用户能够从类中删除指定的类 用户能够在浏览窗中方便、快速地浏览当前类的父类和子类 具有“联想”浏览功能 用户能查看或修改某个类的指定的成员函数的源代码 本系统是一个简化的多用户系统,每个用户都可以建立自己的类库,不同类库之间互不干扰 对于用户误操作或错误的输入,能提示并继续稳定运行 系统易学,用户界面应是GUID的,OOA阶段建立 的类库管理 系统对象模型,类库,库名 类条目列表,插入类条目 删除类条目 ,1+,0,n1,类条目,类名 父类列表 ,设置类名 添加

32、父类 ,成员函数,函数名 访问权 虚基类标志 ,父类,名字 访问权 虚基类标志,数据成员,数据名 访问权 数据类型,0,n2,0,n3,0,m,用户,拥有,面向对象设计(简化的C+类库管理系统) 设计类库结构两种可把类条目组织成类库得数据结构: 二叉树 链表: 容易表示多重继承 设计问题域子系统对对象模型做补充和细化 类条目(ClassEntry) 类库(ClassEntryLink) 父类(ClassBase)、成员函数(ClassFun)和数据成员(ClassData) 类条目缓冲区(ClassEntryBuffer),类条目,类名 父类列表 成员函数列表 数据成员列表,类条目,类名 父类

33、链表头指针 成员函数链表头指针 数据成员链表头指针 注释 指向下一类条目指针,新增数据成员,新增操作,设置类名 添加父类 删除父类 更改父类 添加成员函数 删除成员函数 更改成员函数 添加数据成员 删除数据成员 更改数据成员,具体化,设置类名 添加父类 删除父类 更改父类 添加成员函数 删除成员函数 更改成员函数 添加数据成员 删除数据成员 更改数据成员 查找并取出指定父类信息 查找并取出指定成员函数信息 查找并取出指定数据成员信息,类库,库名 类条目列表,插入类条目 删除类条目 存储类库 读出类库,具体化为,类库,库名 类链头指针,插入类条目 删除类条目 把内存中类链表写到文件 读文件并在内

34、存建立链表 按类名查找类条目并把内 容复制到指定地点,新增操作,具体化,父类,名字 访问权 虚基类标志,新增数据成员,父类,名字 访问权 虚基类标志 指向下一个父类的指针,成员函数,函数名 访问权 虚基类标志 返回值类型 参数 代码,新增数据成员,成员函数,函数名 访问权 虚基类标志 返回值类型 参数 代码 指向下一个成员函数的指针,数据成员,数据名 访问权 数据类型,新增数据成员,数据成员,数据名 访问权 数据类型 指向下一个数据成员的指针,类库(ClassEntryLink)示意图,下一个ClassEntry,ClassEntryLink,ClassEntry,ClassBase,Clas

35、sData,ClassFun,下一个 ClassBase,下一个 ClassFun,下一个 ClassData,类条目缓冲区(ClassEntryBuffer)为便于处理当前类,额外设置类条目缓冲区,它是从ClassEntry类派生出来的类,除继承ClassEntry中的数据成员和成员函数外,主要增加用于域窗口或类链交换数据的成员函数,ClassEntry,ClassEntryBuffer,面向对象设计(简化的C+类库管理系统) 设计人机交互子系统 窗口 登录窗口(用户输入账号、确认/放弃) 主窗口(创建/浏览/存储/退出) 创建窗口(输入新类名/选择已有类名,三个分组框分别管理父类、成员函数

36、和数据成员,每组框有:添加/编辑/删除) 选择浏览方式窗口(按类名浏览/按类关系浏览) 类名浏览窗口 类关系浏览窗口 重用: 基于VC开发环境,尽可能重用MFC中类 设计其它类,ClassBase,CWinApp,ClassToolsApp,CDocument,ClassEntryLink,ClassEntry,0,M,ClassFun,ClassData,ClassEntryBuffer,0,n1,0,n2,0,n3,OOD得 出的类库 管理系统 对象模型,Create_Data,CDialog,Create_Base,Create_Fun,Browse_ Name,Browse_ Inhe

37、rit,Login,Classtools,Create_Class,Create_Select,消息 连接,例:学分制下的习题库管理系统的分析和 设计,面向对象的分析: 系统需求:该习题库管理系统的主要用途是建立一个公共习题库管理系统,管理教师在教学过程中编写得习题及答案,以便在今后的教学过程中方便地选取习题供学生联系和组织试卷。它应该具有编辑(包括添加、修改、删除)、存储和浏览等功能,具体要求如下: 在此系统的支持下,各科教师可以在系统中编写习题及其标准答案,并将编写的习题及答案加入题库。,从题库中选取一组习题,组成一份像学生布置的作业,并在适当的时候公布答案。学生能够在系统中完成教师布置的

38、作业,也可根据自己的需要从题库中选取更多的题目练习。 教师可以通过系统检查学生的作业,学生可以在教师公布答案后对自己的联系进行核对。 教师能够从习题库中修改、删除习题。 能够按教务管理人员提供的比例要求随即生成考试试卷,以支持教考分离。 要求系统实施对系统的管理,并对教师和学生的权限进行检查。本课程的教师可以提交和修改习题,并指定那些习题的答案可以向学生公开;只有满足一定条件(如已经通过宣科系统选择了该门课的学生)才有资格参与该课程的学习。 要求系统必须适应学分制管理的需要,学生可以在规定的时间修完所有课程前毕业,也可以后延一年(专科生4年,本科生5年)毕业。,建立对象模型:,1.确定类-&-

39、对象,2.确定属性和服务,类图,类图,3.分析对象之间的关联关系,教师-班-教学任务连接,4.划分主题,1. 教师,2. 学生,3. 题库服务器,压缩方式主题图,5.编写脚本,正常情况和异常情况脚本,题库管理系统对象模型图,面向对象设计,设计问题与子系统 1.登录(即注册)窗口(权限)对象 2.教师主窗口(教师对象) 3.学生主窗口(对象) 4.题库服务器上的窗口设计 5.设计其他类,存储数据表的设计,对象名:习题 表名:习题,对象名:习题板 表名: 习题板 . . .,人-机交互子系统设计,1.窗口,登录窗口,教师主窗口,教学任务,习题,习题板,考试题板,学生信息,退出,学生主窗口,练习本,习题解答,退出,题库服务器上的窗口,权限管理,习题入库,习题提取,退出,应 用 生 存 期,类生存期,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报