旅店管理系统开发过程中的插曲2--关于oo

来源:互联网 发布:网络大电影分账 编辑:程序博客网 时间:2024/06/10 04:14

写完了“旅店开发系统种类的概述”之后真的觉得有些难以继续下去,整天对着自己的笔记本看一些文档,整理自己的思路,却无时无刻不被失业的阴影所困扰。很多次问着自己要不要坚持,很多次都没有答案,就这样迷茫的摸索,不知道自己将要走到何方。同时也不知道这篇文章的结局如何。不过无论结果如何,我都真心感谢支持我的同道中人,真心的祝福你们,还有我,在这条程序开发的遥遥之路上走好。

看了dove_young对于“旅店开发系统种类的概述”的评论之后,心里真是高兴毕竟有人在关注着我写什么,并且真正的关注其内容,最最重要的是能够告诉我自己的想法。真的希望每一位认真看我文章的人都为我写一些评语,哪怕说一句垃圾也好。对于设计和写作我都处于初级阶段,我希望能够听一听其他人的意见,而且现在我的情况时只能凭自己的想法来左右文章的去向。诸位对我文章的评价会起到几个人凑在一起开会研讨的作用。在这里再次感谢所有支持帮助我的人。

dove_young的留言中如下:
dove_young (2003-7-23 10:36:30) 

不管怎么样,我觉得你的这种设计方法依然不是 OO。我不太清楚你还记不记得那个 一个汽车四个轮子的经典入门示例??总之,OO 只是一种思想。任何时候都不要为了 OO 而 OO。 :-)
 
一下我就说一说我自己对OO的看法。我没有真正的学习过任何有关程序开发的课程,所有关于开发的知识都来自于自学,这样造成了我的知识结构是凌乱的并且没有过多基础,幸运的是我是学习管理的,善于组织整理这种凌乱的结构(也学不是学习得来的,因为要我讲如何管理我是讲不出的),从而使我不至于在程序开发过程中找不到北。而且我总是认为非科班出生也有它的长处,就是不局限于计算机领域思考问题,这样也许反而会突出奇兵,找出其他问题的所在。当然前提条件是你要喜欢学习,并且努力不断的学习。不再自夸,否则真得找不到北了。

对于OO的观念我只是从自己的观点去理解,看了关于汽车这样的例子也见了不少,但是我想几乎所有的人都能知道如何把一个汽车(经典例子中的)定义为一个类,但是如何把这种思想运用到真正的工程中却是我们实际要做的,由于汽车的例子过于典型,所以人们才常常使用这个例子,因为它有清晰的界限,但是如果把汽车真正的放在实际的工程中(比如汽车租赁业),未必像我们想象得那么简单,我们需要的不是汽车有四个轮子的属性,而是其他的属性,比如车牌号,行驶里程,型号等等,每一个对象只有放在它所处的环境中时才有意义,我们才可以对它进行设计。因为我们所要开发的系统是要在一定的环境下运行,只有有了环境我们所要定义的类才有意义。然而在现实生活中,我们看到的对象都是多方面的,也就是说一个对象处于多种环境中,比如汽车在制造业中是一个四个轮子(有的更多),有马达,装了油能走,但是在租赁业里我们不会关心这些问题。我们需要的是如何把一个对象从多环境中抽象出来,提取出在我们需要的环境下该对象表现出的特征。当然在经典例子中的汽车使我们对于对象有了很好的概念,而是清晰地印在每一个人的脑海了,汽车有四个轮子这就是他的特性,然而有几个实际的工程中用到了这一特性?

我也搞不清楚我是不是在使用OO的观点在开发这个系统,但是我在尽力向它靠近。也许这就是为了OO而OO吧,因为我实在找不出该如何把OO作为一种思想贯穿于我的系统,我只能说我要尽量的使用OO来开发我的系统。说一句有哲理的话很容易,但是做起来很难。

我希望我写了这么多没有使dove_young不高兴,好像很多都是针对他写给我的建议,我在这里绝对没有针对他的意思,我相信他是真心帮助我的,同时我也认为他是目前给为支持最多的人,我自认为是我不相识的朋友中作好的一个。谢谢你dove_young。

然而我们还是要把问题搞清楚。究竟怎样是OO。OO其实应该包括面向对象编程和面向对象分析(可能还有别的),前者是使用支持面向对象的语言将面向对象的设计程序化,其中包括对一些对象的使用,但是这并非是真正的OOP,至少我这样认为。我认为即使在面向对象的编程过程中我们也要时常提醒自己,我们使用的是面向对象的编程技术,我们需要使用这一技术来解决我们的问题,从而使我们的系统更容易维护,更容易升级。我相信包括我在内的许多程序员没有真正的使用面向对象这一技术,至少以前的我没有,我们只是解决一个个我们碰到的问题,并不在乎自己使用什么方法,这不是一个好的习惯。我在http://www.csdn.net/develop/read_article.asp?id=19657中使用一个例子说明用OO的方法解决实际工程中的一个问题,很简单,但是也许很多人都没有使用过,不是我们想不到,而是没有去想。

至于面向对象的设计,我自己本来不敢乱说什么,但是自从看了Allen Holub 的Building user interfaces for object-oriented systems之后我认为我有必要说一说自己的观点。Allen Holub提出了许多有悖与我以前学到的知识,但是他说得很有道理,至少我自己这样认为。那么我们现在来看一看我们现在要做的是什么,我们要做的是完成公司的工作,而不是去完成考试,两者的区别在于后者的答案是唯一的,而前者的答案是解决问题,没有标准答案,也许有些开发者的领导会要求使用某些方法,我认为这是限制生产力的一种表现,当然前提是程序员不会在一个普通的工程里面又重新实现了1+1的算法。我们可以选择任何一个人提出的理论来解决这个问题,只要我们喜欢这个人的思想方式。当然我们也需要考虑别人是否可以接受这一思维方式,但是如果愿意你可以发现自己的方式,是用自己的模式,前提是你有足够的时间和精力。我个人认为面对对象的设计就是从我们要解决的问题中抽象出对象,并能够使用这些对象真正的解决这一问题(验证过程)。正如我前面提到的,这一过程并非如我们说得这么容易,并且在这一过程中没有万能的模式,我们需要的是不断地思索与实践。从而不断的提高自己。

也许我会继续写一些关于设计的文章,希望大家能够支持,关注。

版权所有:idilent 网站转载请注明作者 其他转载方式请与作者联系(idilent@yahoo.com.cn)。

原创粉丝点击