面向对象与领域建模

据调查,目前有70%左右程序员是在使用OO语言编写传统过程化软件,缺乏完整的面向对象思维方法的教育和培训是基本根源,本文对软件开发中几个常见问题提出了独立的见解及尖锐的观点.

http://www.jdon.com/mda/modeling.html

关注jdon很久了,但一直没有发过言,可能觉得自己差的很远.
Banq说 :据调查,目前有70%左右程序员是在使用OO语言编写传统过程化软件,如果这样的话,OO如此重要,数据结构(c的)能帮java什么忙?能帮助多大? 架构师需要的是高度的OO思想,对象,接口 ,生命周期等的设计是最基本的,那么抛开你的专业背景,OO设计的训练靠什么????????培训?项目?
现在的科班出身的计算机专业的那和别人又什么优势可言?无非就是对计算机系统的熟悉,和简单的几门语言,和那么点数据结构.呵呵~,逻辑思想是培养的,OO思想也是培养的,需要时间和有人站出来做这件事,说不如做,一个人的力量太小了.

>OO思想也是培养的,需要时间和有人站出来做这件事,说不如做,一个人的力量太小了.

是的,现在关键是思想转变,必须让更多人意识到这个问题,大量程序员都在使用.NET或java这样OO语言,但是学校或培训机构却在培训与OO无关的所谓基础,其实OO也是基础,是人的最基础的思维。

OO培养我认为从设计模式学习和应用开始,不需要深入了解,知道其中含义就可以,对于对象依赖和关联有一些起码的认识。

如果OO培养靠工作项目中培养,那损失就是太大了,OO是一个方向问题,你不走上OO方向,那么整个系统就是非OO,就是以后接受的人想转变成OO,也是很难的,几乎需要重新设计重新编码。

数据库和OO存在本质上的矛盾,是水与火的矛盾,很多人没有意识到这个问题,当一个系统走上围绕数据的架构之路,就是请高手来,后来的部分可以使用OO,但是,以前的部分除非重写,几乎没有办法。

可以说,OO与非OO就如同两种语言一样,虽然你使用Java,但是如果使用围绕数据库的非OO方式写Java程序,就相当于在用另外一种语言,只有通过重写才能改变,而重写几乎是一种对软件应用伤害最大的方式。

这些观点通过J道网站呼吁,力图让更多人觉醒。。。虽然微薄,但是尽力了。

banq大师,我只工作两年多,但锻炼抽象思维能力也不只两年了,请允许我在此大胆谈谈我的对OO思想的看法,也是我真实的思想,与大家分享,还希望你指正。
没有OO思想的程序员来用java开发是不合适的,写出来的程序是流水帐,大大降低了可维护性和可扩展性,也不易阅读。我觉得我们一定要有意识的将现实生活中处理事物的思想来解决软件问题,比如,我现在要开发一个下象棋的软件,在现实生活中,购买到的生产商生产出来的象棋是一套的,其中有棋子,布局棋子的棋纸,还有装棋子和棋纸的盒子,棋子,棋纸和盒子都各自的特征,如形状,颜色等,下棋的时候,是你的眼睛在观察棋子布局,然后脑子司令接受观察的结果,并指挥手去产生行为,这些是我们现实生活中最直观的解决基本问题的方法,从中可以发现下象棋的软件要有这么几个基本对象:棋子,布局棋子的棋纸,还有装棋子和棋纸的盒子(可称容器),还有几个基本模式可以应用:factory,observer,command等,围绕这些核心的事物还可以延伸出更多的东西,又如,布局棋子是在有一定规则的格子里移动,而且移动棋子是有规则的,即又产生了strategy模式和棋格对象,还会延伸出很多很多,还如一个拓扑图吧,也是由点线面组成等。现实解决问题的思想就这样应用到了解决软件问题中来了。我觉得我们要很好地锻炼抽象事物的能力,而且学习好并很好地去应用典型的23种JAVA设计模式和J2EE核心模式,用心悟JAVA之道,悟OO之道。
[该贴被JRoger于2007年01月23日 14:25修改过]
[该贴被JRoger于2007年01月23日 14:27修改过]

这个话题说起来实在是泛,我觉得OO首先要知道什么是对象,从领域出发,instance并不等于是object。我们很多人为什么会拿着OO语言写面向过程的代码,首先是思维上的过程,我们总是首先观注到细节的部分,想着怎么去实现细节。现在正在慢慢培养自己从概念上一步步关注下来的思维!