博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
旅店管理系统开发过程中的插曲1--什么是对象 (转)
阅读量:2506 次
发布时间:2019-05-11

本文共 3154 字,大约阅读时间需要 10 分钟。

旅店管理系统开发过程中的插曲1--什么是对象 (转)[@more@]

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

tobato (-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 -oriented systems”(world.com/javaworld/jw-07-1999/jw-07-toolbox.html">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明确地提出这一点,我想他必有自己的意义在内(想来也是正确的,以前使用时使用的方法绝大多数都是类方法也就是静态方法,根本没有体现出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 prov 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 网站转载请注明作者 其他转载方式请与作者联系(to:idilent@.com.cn">idilent@yahoo.com.cn)

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10748419/viewspace-959355/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10748419/viewspace-959355/

你可能感兴趣的文章
Axure rp 6.5的软件安装、汉化与注册
查看>>
wordpress设置链接特别注意
查看>>
find 查找文件并删除
查看>>
关于vue项目管理项目的架构管理平台
查看>>
Python 基础知识整理-3 (list 列表)
查看>>
转:C语言:error: a label can only be part of a statement and a declaration is not a statement|
查看>>
What version of .NET Framework is integrated into what version of OS?
查看>>
20162311 2016-2017-2 《程序设计与数据结构》第六周学习总结
查看>>
移动端css active伪类无效果的原因
查看>>
提高网站打开速度的7大秘籍---依据Yslow工具的优化【转】
查看>>
Jupyter Notebook 工作空间 / 默认路径 的设置方式
查看>>
ABS已死: Archlinux 放弃支持 ABS
查看>>
激活码
查看>>
PHP学习之PHP编码习惯
查看>>
给任意多个链表然后要合并成一个
查看>>
go ---web通信
查看>>
Java基础教程——垃圾回收机制
查看>>
HDU6030 Happy Necklace(递推+矩阵快速幂)
查看>>
c/c++ 深拷贝
查看>>
.net 防盗链
查看>>