当前位置:文档之家› 面向对象设计及实现

面向对象设计及实现

用户界面类的设计通常可以采用系统原型(模型)法进行。
1、分析考察用户 2、设计命令层次 1)研究用户交互的意义及准则 如果已建立的交互系统中已有命令层次,则先研究这个已有的交互界面的意义和准则。 2)建立初始命令层 可以以多种方式提供给用户,如窗口、按钮、下拉菜单、菜单条、可动的图标,等等。 3)细化命令层 为了细化命令层,应考虑如下几个问题: (1)排序。在开发命令层时,必须仔细选择不同的操作名称,并把这些名称按一定要求排序,将最有 用的放在前面,或者按习惯的工作步骤排序。 (2)组装。在操作中寻找组装结构模式,这有助于在层次中组织和分离操作。
子系统间交互的形式和交互的信息由接口确定,因此,接口应该简单、明确。
(1)面向对象设计的五个层次、四个部分 面向对象设计模型同样由主题、类-&-对象、结构、属性和服务等五个层次组成,并且 又扩充了问题域(PDC)、人机交互(HIC)、任务管理(TMC)和数据管理(DMC)四个部分。
典型的面向对象设计模型如图3.3.23示。
相对困难些。 (3) 系统组织
将子系统组织成完整的系统有两种方式,即水平层次组织和垂直块组织。 1) 层次组织
层次组织是将子系统按层组织成为一个层次软件系统,每层是一个子系统。上层建立在下层的基础 上,下层为上层提供必要的服务。低层子系统提供服务,相当于服务器,上层子系统使用下层提供的 服务,相当于客户。
图3.3.25 面向对象设计工作内容和步骤
一、问题空间类
是指那些直接从面向对象分析模型设计得到的类,它是使软件系统能够实现对问题的求解的 最基本的类,也是面向对象软件系统的核心类。
利用面向对象分析技术对问题进行了分析描述之后,就可以直接将其结果用于问题空间类的 设计,即直接将分析所得到的对象、对象与对象之间的关联确定为类以及类与类之间的关联, 这些直接从分析结果得到的类就是问题空间类。
不同对象之间耦合是不可避免的。两个对象必须相互联系相互依赖时,应该通过类的协议(即 公共接口)实现两个对象相互依赖(耦合),而不是通过类的具体实现细节来描述。
(5) 强内聚
所谓内聚,是一个模块内各个元素彼此结合的紧密程度。结合得越紧密内聚越强,结合得越不 紧密内聚越弱。强内聚也是衡量设计优良的一个重要标准。在面向对象设计中,内聚可分为下述三 类:
二、用户界面类
是指那些为实现人机交互接口而设计的类,它是使软件系统能够接收用户的命令和能够为用户 提供信息所需要的类。
用户界面类是为了使系统能够与用户进行交互而必须增添设计的类。在实际中,一个软件系统 常常会因为其用户界面使得用户不满意而遭到否定或弃之不用。因此用户界面类的设计是一项既 影响软件系统前途,又需要做耐心细致调查分析的重要工作。尽管在分析过程中已经对用户在用 户界面方面进行了分析,但是在设计过程中仍然必须继续做这项分析工作,必须具体设计确定交 互作用的时间、交互方式和交互技术等。
2) 块组织
块组织将系统垂直地分解成若干个相对独立的、弱耦合的子系统,一个子系统相当于一 块,每块提供一种类型的服务。例如,图3.3.24示一个典型应用系统的组织结构。
人机交 互控制
应用包 窗口图形 屏幕图形 像素图形 操作系统
计算机硬件
仿真 软件包
(4)设计系统的拓扑结构:构成完整系统的拓扑结构有:管道型、树型、星型等。
2)确定时钟驱动型任务
这种任务在特定的时间被触发执行某些处理。例如,某些设备要求周期性地获得数据或控制, 某些用户界面、子系统、任务、处理器或其它系统也可能需要周期性地通讯。此时就常用到时钟驱 动型的任务。
3)确定优先任务及临界任务
优先任务分高优先级和低优先级二种,用来适应处理的需要。临界任务是有关系统成功或失败 的临界处理,它尤其涉及严格的可靠性约束。
5)尽量减少要用户记忆的内容 不应该要求用户记下某窗口的信息而用于另一窗口中。 6)易学易用 为用户提供联机学习手册。 7)屏幕生动活泼 屏幕画面看起来能够吸引用户,唤起用户的注意和兴趣。
例如,对于大学教务管理问题,可以先根据对用户的分析设计如下页图所示的用户进入系统的屏 幕。
图示: 用户进入系统屏幕界面
(3)宽度和广度。由于人的短暂记忆局限,命令层次不宜太广太深。以3最为合适。 (4)极小化。尽量少用组合键,极小化用户的击键次数。 3、完成设计
当前由于软件开发工具,特别是可视化开发工具的日益丰富,完成用户界面的具体设计已经是一件 十分容易的事情了,但是在具体设计时不能忽略以下原则: 1)一致性 使用一致的术语,一致的步骤和一致的动作行为。 2)减少步骤 极小化击键次数、使用鼠标的次数和下拉菜单的次数,极小化响应时间。 3)尽量显示提示信息 尽量为用户提供有意义的、及时反馈信息。 4)设置取消操作 用户难免出错,应尽量能使用户取消其错误动作。
4)确定协调任务
当存在三个以上的任务时,就应该考虑增加一个任务,用它来协调任务。协调任务的引入当然 会增加系统的开销,但是引入协调任务有利于封装任务之间的协调控制。使用状态转换矩阵可以描 述该任务的行为。
2、分析任务 设计多任务系统的主要问题是设计人员常常定义太多的任务。原因是为了自己处理时的方便,
以一个字处理系统为例,如下图所示:
图示: 结构化方法设计结果
又例:下图示以及表1~8所示的是大学教务管理问题中的问题空间类。 图示:大学教务管理问题中的问题空间类
表5.1 Class : Student(学生)
数据变量
序号 名称
定义
类型
中文名称 备注
1
ID char(8)
描述型 学号
2
Name char(24)
[补充]:
概括地说,面向对象软件开发方法采用面向对象设计 (OOD)技术进行问题解决方案的设计工作, 它将问题的解决方案表述为:
类+关联
的形式,其中,类包括问题空间类、用户界面类、任务管理类和数据管理类,是从设计的角度出发 对问题解决方案中的对象的抽象和描述,关联则用于描述这些类和类之间的关系。
因此,面向对象设计工作主要包括问题空间类、用户界面类、任务管理类和数据管理类的设计, 具体工作内容和步骤如图3.3.25所示。
4
PutApplication ()
NULL 回答
5
Note ("message" )
NULL 通知
6 ChangePassword (NewPassword, OldPassword) NULL 修改
表5.2 Class : Graduate(研究生) 表5.3 Class : UnderGraduate(本科生) 表5.4 Class : RegisterRec(注册记录) 表5.5 Class : Course(课程) 表5.6 Class : GraduateCourse(研究生课程) 表5.7 Class : UnderGraduate(本科生课程) 表5.8 Class : SelectCourse(选课单)
在面向对象方法中,对象是属性和服务的封装体,这就实现了信息隐藏。类结构分离了接口与实现, 类的属性的表示方法和操作的实现算法,对于类的用户来说,都应该是隐藏的,用户只能通过公共接 口访问类中的属性。
(4) 弱耦合
所谓耦合,是指一个软件结构内不同模块之间互连的依赖关系。依赖关系越多耦合度越强,依 赖关系越少耦合度越弱。在面向对象方法中,对象是最基本的模块,不同对象之间相互关联的依赖 关系表示了耦合度。衡量设计优良的一个重要标准就是弱耦合,弱耦合的设计中某个对象的改变不 会或很少影响到其他对象。
因此,为了设计任务管理类,首先必须从所设计的系统有关类中找出需要并发进行的操作和那 些与特定运行平台有关的操作,然后再对它们进行分析设计
1、确定任务类型
1)确定事件驱动型任务
某些任务是由事件驱动而执行的。这种任务可能负责与设备的通讯,与一个窗口或多个窗口、 其它任务、子系统、其它处理器或其它系统的通讯。
但是这样做就增大了整个设计的技术复杂度,并且不容易理解。因此,在进行任务管理类的具体 设计前,必须仔细分析和选择各个任务,尽量使得任务的数目降低到最少。
3.系统分解与组织 面向对象设计同过程设计一样,自顶向下进行功能分解。在设计比较复杂的应用系统时,将系
统分解成若干个比较小的部分,再分别设计每个部分。这样既简化了应用系统,又降低了设计的 难度,并有利于实现和维护。
系统是根据功能来分解的,我们将系统分解的各个部分(即系统的主要组成部分)称为子系统。
面向对象设计及实现
1.面向对象设计的设计准则 (1) 模块化
模块化是软件设计的重要准则。在面向对象开发方法中,将对象定义为模块。对象把数据结构和 作用在数据上的操作(方法)封装起来构成模块。对象是组成系统的基本模块。 (2) 抽象
类是一种抽象数据类型,在该数据类型之上,可以创建对象(类的成员)。类包含相似对象的共同属 性和服务,它对外定义了公共接口,构成了类的规格说明(即协议),供外界合法访问。 (3) 信息隐藏
然后,根据针对该用户界面和大多数面向对象软件开发环境所提供的可重用类设计相应的用 户界面类,设计结果如下页图所示。
图示:大学教务管理问题的部分用户界面类和问题空间类
其中,Window、EditField、StaticField和Button等类 一般可从开发环境提供的类库中通过 继承重用获得,需要进一步做的设计工作主要是设计有关与问题空间类和任务管理类进行通讯的操 作。例如需要为OKButton类设计一个向问题空间类中的Student类发送检验消息的操作。
主题层 类-&-对象层
结构层 属性层 服务层
人 机 界 面 HIC
问 题 论 域 PDC
任 务 管 理 TMC
图3.3.23 典型的面向对象设计模型
数 据 管 理 DMC
(2)子系统间的交互方式 在应用系统中,子系统之间的关系可分为客户/服务器关系和同等伙伴关系两种。这两种关系对应
相关主题