旅店管理系统开发过程中的插曲1--什么是对象

类别:Java 点击:0 评论:0 推荐:

结束“旅店管理系统用例流程分析 ”之后,心里真是有些忐忑不安,因为实在不知道下面接着改写什么,按着自己的推理把这一张的题目定义为“旅店管理系统中的类的概述”,去csdn看了一下前一章,果然出了问题,有两位同行给出了回复如下:

tobato (2003-7-16 20:41:55) 

插一句, 仔细看了一下,用例的写法好像有问题。^O^
 
tobato (2003-7-16 20:39:26) 

呵呵,用例可以说和OO是没有什么关系的。 使用用例是为了更好的明白你要解决的问题。 但是解决这个问题的方法你可以用oo也可以不用oo.
 
dove_young (2003-7-16 16:05:24) 

还有,忍不住再提醒你一句: 到目前为止,你的这些东西和 OO 还没沾上边儿呢。 问题定义、流程分析,这些东西都既可以服务于 OO,也可以服务于非 OO。
 
dove_young (2003-7-16 16:02:33) 

结束了用例流程分析之后,我发现我陷入了一个困境,应为我根本不清楚用例这个词汇的含义是什么 ???? 不要这么夸张吧?你这样会把小朋友们吓着的。 晕啊…… 


果然如此,菜鸟就是菜鸟,不过我还是要声明一下,这是我第一次真正的设计一个东西,而且本人又非科班出身,所写的内容都是事实,并非为吸引眼球而故作玄虚。用例这个概念也的确刚刚接触到。可以说关于设计的一切都是初次接触。所以绝对没有吓小朋友的心理,而且我真诚地希望自己能够从这个系列中学到些什么,最好其他人也可以学到些东西。所以在还没有到达悬崖之前我还是要坚持下去,并且希望对程序设计有较深了解的同行可以给出更多的指点。谢谢诸位了。

在进入我们的正题之前我先说一下看了上次提到的“Building user interfaces for object-oriented systems”(http://www.javaworld.com/javaworld/jw-07-1999/jw-07-toolbox.html)又给了我很多困惑和疑问。

其中第一个困惑就是Allen Holub(“Building user interfaces for object-oriented systems”和“OO设计过程”的作者)非常重点地提出:我们进行的是OO的设计,而不是CB(class-based)的设计(We're doing object-oriented design, not class-based design)。本来要把下一节的的标题作为“旅店管理系统中的类的概述”现在看来要改为“旅店管理系统中的对象的概述”了。也许这看起来是无关紧要的,但是既然Allen Holub明确地提出这一点,我想他必有自己的意义在内(想来也是正确的,以前使用Delphi编程时使用的方法绝大多数都是类方法也就是静态方法,根本没有体现出OO)。他在文中提到“我们在运行期所使用的是一组对象,而不是类(对象的描述)(what you have at runtime is a bunch of objects, not classes -- animals, not their descriptions)”

接下来的问题更加让我无法承受(真的要吓小朋友了):Allen Holub 对于对象的定义进行了全面的否定。他认为对象是一个能力(capabilities)的集合,是由它可以做什么来定义,而并非由他怎么做来定义--数据是怎么做的一分。他认为对象绝非是一个数据结构(其中包括了一组方法用来操作数据结构)[1]。Allen Holu使用更切合实际的术语将对象定义为:一个对象是由他所接受和发送的消息定义,处理这些消息的方法组成了这个对象唯一的与外部的接口[2]。

第三、Allen Holub认为,OO的好处在于是一个程序更容易开发和维护,同时提到多层结构并没有做到这一点(我一直认为多层结构的一个好处就在于提供了更好地维护方案)。关于这一段的原文找不到了,但是说得蛮有道理的。

......

Allen Holub为OO的系统作了一个标准(只提供英文):
1、All data is private. Period. (This rule applies to all implementation details, not just the data.)
2、get and set functions are evil. (They're just elaborate ways to make the data public.)
3、Never ask an object for the information you need to do something; rather,ask the object that has the information to do the work for you.
4、It must be possible to make any change to the way an object is implemented, no matter how significant that change may be, by modifying the single class that defines that object.
5、All objects must provide their own UI.

看来需要学习的还很多,估计旅店管理系统以后的几篇可能是关于Allen Holub理论的文章。谢谢大家的支持。

 

[1]You may have read in a book somewhere that an object is a datastructure of some sort combined with a set of functions, called methods, that manipulate that datastructure. Balderdash! Poppycock! First and foremost, an object is a collection of capabilities. An object is defined by what it can do, not by how it does it -- and the data is part of "how it does it."
 
[2] In practical terms, this means that an object is defined by the messages it can receive and send; the methods that handle these messages comprise the object's sole interface to the outer world.

待续

版权所有:idilent 网站转载请注明作者 其他转载方式请与作者联系([email protected])

本文地址:http://com.8s8s.com/it/it17589.htm