精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● 系统分析>>面向对象专题>>面向对象的系统分析与面向对象的可视化开(4)

主题:面向对象的系统分析与面向对象的可视化开(4)
发信人: leeyg()
整理人: leeyg(2001-06-05 22:19:18), 站内信件
你可以引用本文,但请注明作者,并请注明出自本论坛。     
                      请大家指正。     

六、用面向对象的可视化开发工具开发人机界面

(一) 类是否需要人机界面
    并不是所有的类都需要人机界面,怎样判断一个类是否需要人机
界面呢?大的原则上,凡是需要人机交互的类都必须设计人机界面。
具体地,可从以下几个方面考虑:

(1) 凡是存在录入、编辑、确认功能的类,都必须有相应的人机界面
    录入、编辑、确认,都是人与计算机最基本的交互动作,因此,
存在这些功能的类都必定会存在相应的人机界面。

(2) 需将类中的属性不论以何种形式显示出来的类,都必定存在相应
的人机界面。
    这是人与计算机交互中,计算机交互给人的信息,它也正是人机
界面要处理的范畴,因此也存在相应的人机界面。

(3) 这个类存在可由界面触发的方法时,必须存在人机界面
    这里说“可由界面触发”而不是“需由界面触发”的方法,因为
有些方法是既可由界面触发,亦可由其它方法触发的,如“联系人通
讯录”中的“增加”方法,既可通讯录界面中的“增加”按纽触发,
也可由其它界面隐性地触发。

(4) 遵循罗列-选择的原则
    人机界面在设计阶段“要”与“不要”之间选取时,宁可先选取
“要”, 然后再充分利用可视化开发工具的便利,进行界面的优化。
如“联系人通讯录”类必须存在一个“录入界面”,一个“修改界面”
这二个界面几乎完全一致,“修改界面”是否可由“录入界面”而来
呢?在设计阶段,这二个界面都先选取,再进行优化。

(二) 类的属性
考虑类的属性,可从下面几个方面考虑

(1) 需要什么控件表达界面所代表的类中的属性
    这里的控件都是可视的控件,如按纽、编辑框、Label等,这一类
的属性,因应各个不同的界面具有不同的设计,设计的原则是,以实
用、简单为主,美观为次。

(2) 为实现有效性检查,需要设置什么属性。
    界面通常还要对录入的数据进行有效性检查,为了实现有效性检
查,看看有什么属性需要设置的。

(3) 为实现或优化界面而需增设哪些属性
    如为遍历控件而设的循环变量,一些临时性的变量,在数据库应用
中为减少对数据库的物理查询而设的一些变量等,这类的属性通常定义
为类的私有属性。

(4) 可由界面触发的类的方法的界面表示
    可由界面触发的方法,要在界面有这个方法的可视化表示,通常,
这是一个按纽属性。

(5) 类的对象集合在人机界面中的反映。
    如“联系人通讯录”类中已经实例化的联系人对象的集合即是数据
库的记录集。通常,这是一个Table类或Query类,这也是人机界面的一
个属性。

(三) 类的方法
界面类必须具有哪些方法,可由下面的几点去考虑:

(1) 为实现界面的有效性检查、界面的优化需要设置哪些方法。
    通常这类的方法是仅与界面的设计有关的,与OOD的各类没有关系,
包括为实现或优化界面而设计的所有方法及事件。如在窗体被创建时
的FormCreate方法、录入框变动时的OnChange事件等,这类事件通常
表现为各控件的事件。

(2) 每一个控件,遍历检查是否需要为其设立一些方法、事件。
    不要因遍历各个控件时的困难、费时而不去做,遍历的结果将使
软件的精细得到充分的体现。

(3) OOD文档中可由界面触发的方法是否已经有视觉体现
    将OOD文档中将类的方法遍历一遍,对每一个方法询问:这个方
法可由界面触发吗?很多的时候,这一步的工作可以找出OOD文档中
错漏,是OOD的重要补充。

(4) OOD文档中类与类之间的消息怎样实现,是否有遗漏
    类与类之间的消息,通过方法是一种常用的途径,考虑这一问题,
不仅可以检视出界面设计时遗漏的方法,也能补充OOD设计中的疏忽
的消息。

(四) 实例连接的实现
    人机界面类与它所表达的OOD类的关系为实例连接关系,我们应该
讨论一下如何去实现这个关系。
    实例连接一般可用对象指针(也可用对象标识)来实现。即在被
连接的两个类中选择其中一个,在它的对象中设立一个指针类型的属
性,用于指向另一个类中与它有连接关系的对象实例。
    这种属性一般只要在一个类的对象中设立就够了。那么,是将界
面所代表的类对象放入界面类中,还是将界面类对象放入界面所代表
的类中呢。
    在可视化开发工具中,应该是将界面所代表的类对象放入界面类
中。这与可视化开发工具的习惯及法则完全符合(总是将TTable或
TQuery放入Form中而不是将Form放入TTable中)。界面代表的类可以
分成2类:一类是如“联系人通讯录”这类管理已实例化对象实体的
类,一类是如“联系人”这类仅概括某类对象特性及功能的抽象模板
类,我们分开来讨论:

(1) 已实例化对象实体的管理类
    这种类通常是由物理数据库、数据库操纵函数组成,在可视化开
发工具中,物理数据库控件化为Ttable、Tquery,将Ttable、Tquery
类放入Form中体现这一管理类与界面的实例连接关系是最自然的方法,

(2) 抽象模板类
    很多的时候,我们是这样做的:在Form中罗列这一抽象模板类的
各个属性,在Form的Public区声明类的方法,实际,这种方法并不符
合OO的设计思想,应该这样实现,在Form之外声明“联系人”类,
在Form内定义一个“联系人”实例或指针,这样做,清楚地表明了
“联系人”类、界面类、联系人类与界面类之间的实例连接关系。


待续....
下一节讨论“界面的继承”等

--
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: ]

[关闭][返回]