看见人家在谈OO思想,我很惶恐,也很迷惘,到底什么是地OO思想!怎么来培养自己的OO思想呢?
请各位和Banq大哥,指点我这个迷惘的羔羊!

Re: 什么是OO思想 发表: 2006-10-18 14:18 回复
banq 发表文章: 7232/ 注册时间: 2002-08-03 17:08
OO思想简言之,我们谈的 想的 编的 做的 都是围绕一个个对象。

>怎么来培养自己的OO思想呢
了解对象基本概念,对象关系,设计模式, 对象建模,
当然对象框架也必须了解,这是一个渐近过程。

Re: 什么是OO思想 发表: 2006-10-18 14:36 回复
xinying_ge 发表文章: 16/ 注册时间: 2006-09-26 17:33
如何来把握,我是不是真的理解了OO思想!我还是觉得很迷惘。
DDD这本书我读了一点,我有的地方真的理解不了!是不是没有OO思想呢?
我很喜欢这个行业,用java编程,但如何才能一步步地往高处走,真的很担心,深怕自己误入歧途,很想Banq大哥和各位指点我一下,如何往下走!
Re: 什么是OO思想 发表: 2006-10-18 16:46 回复
banq 发表文章: 7232/ 注册时间: 2002-08-03 17:08
>DDD这本书我读了一点,我有的地方真的理解不了
前几天在TSS上看到一个老外说了,DDD背后就是设计模式,我认为非常正确。

OO不是靠几本书,或几个程序就能练就的,需要一个过程,如果将大学四年都用来进行培养,还是有可能,可是现在国内四年教育不是这么做的,学生毕业后,就没有自己的四年。

所以....在OO方面,大部分都是一穷二白。

你不用担心,都是在一个起跑线,现在认识到了,起步不晚。

2004年左右,OO在J道论坛还被一些人骂得狗血喷头。唉..

Re: 什么是OO思想 发表: 2006-10-18 20:10 回复
xinying_ge 发表文章: 16/ 注册时间: 2006-09-26 17:33
Banq大哥,你说现在我认识到,起步不算晚,但如何走步!能不说指点一下?万事开头难,我觉得难就难在怎么开头!
谢谢!
Re: 什么是OO思想 发表: 2006-10-19 09:11 回复
banq 发表文章: 7232/ 注册时间: 2002-08-03 17:08
我走过路可能不适合你, 如何让初学者更快地掌握OO思想也是我一个研究项目,因为我也搞培训.

所以,你得问题也比较难倒我,有一个强制办法:在项目实践中强行使用GoF设计模式,以使自己了解设计模式,再和别人讨论.

为什么推荐从Gof设计模式这个高难度知识入手呢?因为OO思想是一个说了也白说得问题,过去我用禅来打比喻,OO思想是无法象1+1=2那样传授告诉别人得,必须每个人自己体会,那么体会得实践是什么?就是自己在项目中开始有意识使用设计模式.

下面一步就是使用Struts Hibernate之类正宗对象框架,特别是持久层,摆脱数据库得影响,以前我说数据库时代过去了,就是这个意思,为什么搞Swing等图形程序员容易接受OO,因为他们没有关系数据库干扰,而搞J2EE得则经常被数据库和过去数据库编程经验干扰,围绕数据库编程容易导致过程编程,这些都是与OO格格不入的.

关系数据库与OO存在天然阻抗,也就是不匹配,所以我们要使用O/R mapping如Hibernate之类框架来培养帮助我们对抗数据库的干扰,当你知道什么是OO后,再使用JDBC,这时你心目中的JDBC就是顺服于OO思想下的工具了,而不是主导你破坏你OO思想的恶魔.

数据库时代的终结
http://www.jdon.com/artichect/dbover.htm

总之,要走上OO,需要彻底摆脱过去经验对自己的干扰,因为我们国内大学的软件教育基本都是过程化编程思路,自己走上工作岗位后,又都是自觉学习,这些都其实不是OO,这些知识和经验会干扰OO思想的形成,要和他们做斗争,驱赶他们.说白了,就是与自己进行痛苦斗争,蜕变是一个痛苦过程,尤其是思想方法,所以做到的人很少.

坚持下来的人,达到OO彼岸的,唯有真正对软件热爱和有兴趣的.所以考验你是否走上OO思想,就看你的兴趣和毅力.

很多人说搞Java苦啊,其实也是反映这个艰苦历程.

其实,在这个过程中,需要经常和别人讨论,J道等论坛提供这样场所,我们经常看到很多人在论坛讨论技术秘籍问题,而很少提及设计问题,怎么设计好,如何建立一个对象,对象边界在哪里,这些讨论语言包括在J道论坛都很少看到,这只能说明一个问题.....

Evans DDD其实将对象如何建立这个基本问题进行了总结,就如GoF设计模式总结了23个模式一样,这些需要我们不断讨论....

Re: 什么是OO思想 发表: 2006-10-19 09:26 回复
xinying_ge 发表文章: 16/ 注册时间: 2006-09-26 17:33
谢谢您的回复!
我会努力往这方面走的,我也相信我有这样的恒心!
谢谢您Banq大哥,说实话我从Jdon上学到很多东西!
我会一直关注Jdon!
Re: 什么是OO思想 发表: 2006-10-19 10:51 回复
banq 发表文章: 7232/ 注册时间: 2002-08-03 17:08
说实话,现在学习OO的环境,无论从理论和实践方面要比我们当初好多了,现在OO在Java领域可谓是瓜熟蒂落了。

如果我们再不抓住的,真的没有必要再做这一行了。

Re: 什么是OO思想 发表: 2006-10-19 17:12 回复
sunxuezhen 发表文章: 5/ 注册时间: 2006-10-11 16:48
我不同你bang的想法,你把OO神化了。并不是所有的问题都需要用OO来解决的。因地制宜才是合理的选择。
Re: 什么是OO思想 发表: 2006-10-20 13:36 回复
banq 发表文章: 7232/ 注册时间: 2002-08-03 17:08
>我不同你bang的想法,你把OO神化了

是的,有人说OO不是银弹,看看国外TSS网站上老外关于OO争论的一个贴子,特别是一个老程序员说:我近几十年的职业生涯的大部分时间是在挽救修改别人低劣的代码,是不是我们还要再等二十年呢?

http://www.theserverside.com/news/thread.tss?thread_id=42602

Re: 什么是OO思想 发表: 2006-10-24 20:35 回复
grrrr 发表文章: 2/ 注册时间: 2006-10-24 20:24

> OO不是靠几本书,或几个程序就能练就的,需要一个过程,如果将大学> 四年都用来进行培养,还是有可能,可是现在国内四年教育不是这么做> 的,学生毕业后,就没有自己的四年。

大学的四年都培养OO?OO确实是企业应用开发的利器,但没必要上升到这个高度吧。所有的大学毕业生们都一个个的java?基础的算法、数据结构才更应该是乘这四年好好学习的东西,我们更缺一些基础的东西。举个最直白的例子,OO领域打的最火的java/.net,不都是美国人鼓捣出来的吗?

Re: 什么是OO思想 发表: 2006-10-24 20:48 回复
grrrr 发表文章: 2/ 注册时间: 2006-10-24 20:24
当然如果想做应用开发的话掌握好java以及其中设计模式的思想很重要,学java最好的体验是在具体的项目中,比较代码的优劣,总结成败的得失。现在国内也很缺优秀的java开发人员。
但让国内的大学都四年教授java和OO,就觉得过了。
Re: 什么是OO思想 发表: 2006-10-25 07:00 回复
chinsoft 发表文章: 1/ 注册时间: 2006-10-25 06:34
我们不是在讨论OO吗,为什么一定就要把JAVA拉近来。掌握了OO的概念后可以应用在不同的语言上,JAVA只是比较成熟的一个罢了。4年学一个语言当然是crap,一个学期OOP,一个学期00D(用的是JAVA),足以,往后的就靠自己去研究了,当然还有其他高级的OO应用的科目。BANQ提倡了OO,没有限制在JAVA。Data Structure和procedure programming应该是放在OOP/D之后的,这样对OO的概念会有更深的认识,和对DSPP本身更容易理解和掌握。

中国学生就是拜倒在“基础”上了,一提到什么技术就说,把基础打扎实。要的是科学(SCIENCE),基础(fundamental)是科学的训练的第一步就是最容易的,时间应该是花得最少的,真正在research和后面的advanced环节就很少听到中国学生/教师提倡。网上资源无穷,但总是有学子在求书,求代码等等,就是没有research的能力。如果还不意识到这个问题,那就永远停留在基础上面吧。

PS:楼主,很多东西没有真正的对错的,不值得花时间考究什么是“正道”,“误入歧途”也会给你带来有价值的收获。最好的学习方法是用技术去实现自己想要的东西,如一些dream projects,没有目的的去学,就好比为学习而学习。

Re: 什么是OO思想 发表: 2006-10-27 12:46 回复
banq 发表文章: 7232/ 注册时间: 2002-08-03 17:08
Evans DDD和GOF 设计模式可以说是OO思想实战的左右手。

OO其实要解决两个重要基本问题:对象如何设计创建;对象创建后之间关系如何协调。

Domain Model解决了业务对象如何创建设计问题,也就是业务对象应该怎样从需求中提炼出来成为一个对象,如果没有这一步,我们何以面向对象?或基于对象编程呢?

当对象很多时,如何协调组织他们关系,使得更易于变化,就象中国古代阵法一样,一个阵法应对一种情况的。

这两个基本方法思想掌握了,你的系统就不同于以往传统过程化面向功能的系统了。

Re: 什么是OO思想 发表: 2006-12-06 09:15 回复
chuxuezhe 发表文章: 5/ 注册时间: 2006-11-28 10:07
我来说几句吧,其实所有的design pattern,还有OOD,都讨论同一个问题,那就是当你做一个系统的时候,如果新的需求来了怎么办?你的系统是不是能够不用修改代码或者做最小的修改来满足新需求,(OCP原则),所以围绕这个问题,OO语言,有了他们的解决知道,其实所有的其他过程语言例如c也都可以解决,只不过写出来的代码没有OO语言来的优雅和漂亮,因为是compiler已经支持了那些encap., inherit, poly.特性,所以说白了,也无所谓的是否一定要OO,只要你的解决之道能够,解决OO所优雅解决的问题,也就够了。多想想这个,自然明白了什么是OO。 以上是个人观点。仅供参考 。

Re: 什么是OO思想相关推荐

  1. [ASP.NET入门随想七]主角与配角——OO思想的多态、接口与委托

    [ASP.NET入门随想七]主角与配角 --OO思想的多态.接口与委托 曾几何时,我们的父辈接受到的对美好生活的描绘是:"楼上楼下.电灯电话",三十年过去了,电灯电话早已已成为我们 ...

  2. c++(小甲鱼笔记01-语言与oo思想)

    文章目录 一 c++的特点与oo思想 1 c++特点 1.1 封装 1.2 抽象 1.3 继承 1.4 多态 1.5 cout介绍 1.6 using namespace std; <<符 ...

  3. [ASP.NET入门随想五]金庸群“粒”传——OO思想的对象与类

    [ASP.NET入门随想五] 金庸群"粒"传 -- OO思想的对象与类 几年前一位名叫姚壮宪的失恋青年编出的李逍遥红遍大江南北,他那现实无法实现而杜撰出的一夫多妻艳运让我家奔一电脑 ...

  4. JavaScript的OO思想(一)

    类class是Object-Oriented面向对象的语言有一个标志,通过类我们可以创建任意多个具有相同属性和方法的对象.JavaScript中没有类的概念,但它也是面向对象的,只是实现方法会有所不同 ...

  5. 大航海家 ——OO思想的类间关系(转)

    多隆云:我和韦春花的关系是很纯洁的:网易称其和迷蝶女友的关系是培训双向选择制:杨振宁言<易经>思想阻碍了中国近代科学的发展:逻辑学家论:概念间的关系有五种,即同一.包含.交叉.分离.互斥. ...

  6. php oo,OO思想之PHP之三大特性

    三大特性:封装.继承.多态 一.封装:在面向对象语言中一般是通过访问控制来体现封装的特性. PHP访问修饰符: private 用于除类本身以外对成员的访问,隐藏类的数据和实现 protected 用 ...

  7. 代码不是重点, 领悟OO思想(一)

    学习了GOF23设计模式,有感而发,决定写点东西-- <转CSDN上一句话> 如果抛开一切非技术方面的因素,C# 无疑是这个星球上有史以来最好的编程语言,它几乎集中了所有关于软件开发和软件 ...

  8. 2018-北航-面向对象-前三次OO作业分析与小结

    基于度量的程序结构分析 由于平时使用了NetBrains出品的IDEA作为IDE,在分析程序的时候我使用了IDEA的插件Metrics Reloaded.然而在使用时发现不懂得很多分析项目的含义,因此 ...

  9. OO系统分析员之路--用例分析系列(2)--用例的类型与粒度 [整理重发]

    在正式讨论如何获取用例之前,笔者觉得有两个问题还是先解释清楚为好,这对正确获取用例有很大帮助.这两个问题也是初学者最为困惑,也是最难掌握的.一个是各种用例类型之间的区别和用法,另一个是用例的粒度.  ...

最新文章

  1. idea将项目打成jar包
  2. mybatis获取oracle xmltype_Mybatis【入门】
  3. 在Win7中怎样打开摄像头?
  4. P1352-没有上司的舞会【树形dp】
  5. 矢量数据压缩:道格拉斯普克算
  6. 小型超市管理系统 C++面向对象
  7. solidworks装配体改为柔性_SolidWorks零件改名后与工程图关联教程
  8. 数字图像处理基础知-色度空间(RGB\CMY\CMYK\HSI的详细解释和一些关联性描述)
  9. java duration 设置值,Java中的Duration toHours()方法
  10. 四连测总结(WYL)
  11. 破解虚拟机ESXi服务器密码,esxi虚机Windows server 2012忘记密码解决办法
  12. Personalized Top-N Sequential Recommendation via Convolutional Sequence Embedding
  13. java 计算行驶里程,js根据经纬度换算行驶里程
  14. 有意思的java工具——Retroweaver和ProGuard
  15. 情境领导者-第五章、承担领导责任 故事
  16. Neuroink脑计算机的未来展现了什么
  17. 在QQ聊天中可以发的代码和说说代码(仅支持手机)
  18. 对圆和椭圆进行边缘检测
  19. 用户画像标签体系包括哪些维度?有哪些应用场景?(附完整导图)
  20. 探索C++与Live555实现RTSP服务器的艺术

热门文章

  1. FMCW雷达测距技术最强最全解析
  2. 写作中需要注意的事项
  3. dtu tcp java_SpringBoot 2 整合 Netty 实现基于 DTU 的 TCP 服务器 之 客户端
  4. 人工智能chatgpt的国内的稳定镜像
  5. Android 系统级别广播
  6. Cesium开发实践(二)模拟多架飞机飞行
  7. SQL注入实战MySQL_SQL注入实战-MySQL
  8. Java根据奖品权重计算中奖概率实现抽奖(适用于砸金蛋、大转盘等抽奖活动)
  9. java计算机毕业设计vue图书档案管理系统源码+mysql数据库+系统+lw文档+部署
  10. 139邮箱java版下载_139邮箱手机版下载-139邮箱手机客户端下载 8.9.1-领航下载站