`

什么是OO思想

阅读更多

 

         大家为了讨论“什么是OO思想”,又把什么UML、RUP、某某框架之类的东西摆出来,这些对解释“什么是OO思想”真的很不重要,尤其对初学者来说。

 

       大家编程序是为了让编出来的程序帮我们做事情、解决问题的。简单地说,在目前的计算机体系下,所有程序最终的形式都是一大堆机器指令对数据的操作,操作的结果就是我们想让计算机帮我们做的事情。所以我们写程序从根上来说就是写一条一条的机器指令教计算机怎么一步一步地操作,最终实现我们要做的事情。这也是计算机刚开始出现时人们就采用的编程序的方法,目前大家称这种方法为“面向过程”的编程方法。

 

       “面向过程”的编程方法基本的编程方式如下:

一切以“我”为中心考虑问题:要做某件事情,第一步要做A、A做完后要做B事情、如果B不成功那么我做C,否则我做D......等等。在这个过程中,把重复出现的一些步骤(完成了更高层概念的事情)包装在一起当作一个整体使用,称之为“函数”(这是一个层层包装递归的东西,直至最底层的机器指令);把逻辑上相关的一下数据(代表了更高层概念的事物)包装在一起当作一个整体使用,称之为“结构”(这也是一个层层包装递归的东西,直至最底层的存储器)。

 

    这种编程方法其实是人们很自然的做事的方法,大家考虑做事的时候一般都是这么考虑的。

 

而“面向对象”的编程方法(即OO思想)打破了以“我”为中心考虑问题的习惯:要做某件事情,首先考虑应该由“谁”来做,或者说做这件事情是“谁”的责任(“谁”来负责这件事情),接着考虑“谁”应该和“谁”协作来完成更高层概念的事情。指定由“谁”来做这件事情的时候不必考虑他是如何做的(即如何实现的),只知道他负责这件事情能得到需要的结果就行了。而这个“谁”就称之为“对象”,所谓的“对象”就是负有责任的东西。而“对象”在实现自己负责的事情时也可以做同样的考虑(应该由“谁”来做;“谁”应该和“谁”协作来完成),这个过程也是一个层层递归的过程,直到最后总是由逃脱不了责任的对象简单地亲自操作一下:)。

 

“面向对象”编出来的程序与“面向过程”编出来的程序在代码的组织上一个明显的特点是决没有一个主控对象来统一指挥,而是一些相互协作的平等对象组成的一个协作网络;决没有一个主控对象到处搜集信息来完成某件事情,而是把事情交给知道这些信息的对象来完成。

 

(至于为什么会提出“面向对象”编程和“面向对象”编程的好处,在这里我就不说了)

 

但是光有“面向对象”的思想并不能保证写出来的程序一定好的,而是要遵循“面向对象”的一些编程原则才有可能写出好程序,比如:封装原则、隐藏原则......等等,介绍这些编程原则的书籍很多。总的来说:每种对象负责的责任越单一越好,不要让一类对象负太多的责任尤其是不相关的责任;对象在完成自己负责的事情的时候,最好不要让外面知道或者说这方面信息外面知道的越少越好。尤其要注意的是:一定要把握多态性这个概念。

GoF的设计模式更是提炼了优秀的“面向对象”编程原则和思想,

例如:

封装变化点;面向接口编程;等等,把“面向对象”的思想提到了一个新的高度,真是绝了!

 

 

分享到:
评论

相关推荐

    C_OO思想编程

    C_OO思想编程

    23种设计模式,OO思想

    这个经典的东西相信大家都听过吧,学软件的人离不开的知识

    Java 图书馆理 Java oo思想

    Java,Java,Java 图书馆理 Java oo思想,Java 图书馆理 Java oo思想

    设计模式资料汇总

    微软.rar 从追MM谈Java的23种设计模式.txt 什么是OO思想.txt 探寻软件的永恒之道.txt 你还在用if else吗?.mht 面向对象经典语录.txt 设计模式迷你手册.chm 封装变化.doc 让僵冷的翅膀飞...

    刚学C#OO思想做的中国象棋

    这是用C#基于VS做的一个象棋小项目! 出入茅庐请大家评点评点! 做的不好不要责怪哦!

    汽车后市场新方向车神OO联盟新思想.ppt

    汽车后市场新方向车神OO联盟新思想.ppt

    Hercules系列处理器安全特性介绍.pdf

    Hercules 系列是 TI 推出的针对交通运输,航空航天,医疗健康,工业控制等高安全需求... Hercules 基于“安全岛”的思想,通过多种软硬件方式对系统失效和随机失效进行监测,进而实现基于1oo1D 架构的功能安全目标。

    建模、面向对象(OO)和UML

    详细介绍建模、面向对象和UML的课件。 第一部分通过例子阐明了建模的...第三部分从OO思想的角度说明面向对象的基本概念,以及为什么会有这些概念。 第四部分阐明了为什么需要UML、UML带来的什么、UML的发展历史和组成。

    oo大智慧 面向对象的思想

    面向对象的思想 看了会有帮助 为以后工作提供一份可靠的保证

    java设计模式之面向对象的思想(think in OO(Object Oriented))

    NULL 博文链接:https://stelin.iteye.com/blog/933147

    php类实例教程让更多的PHPer开始转向OO的编程过程

    无论是C++、无论是Java、无论是.net还有更多面向对象的语言,只要你了解了OO的真谛,便可以跨越语言,让你的思想轻松的跳跃。便没有对于Java、.net 、 PHP 之间谁强谁弱的争执了。 希望这个介绍PHP5面向对象编程...

    例解基于UML的面向对象分析与设计

    另外,UML也可以看做是OO思想的一种表现形式,可以说“OO是神,而UML是型”。所以,想用好UML,扎实的OO思想基础是必不可少的。然而,在UML应用到开发过程中时,还是有一定的模式可以遵循的。(注意,是模式而不是...

    C++编程思想

    C++编程思想,重点介绍面向对象程序设计(O O P )的方法和思想,并深入讨论其中的奥秘,是掌握OO思想的必选佳作之一,希望对想要提升自己编程能力的人提供必要的帮助!

    基于面向对象(OO)的数据库设计模式探讨

    内容面向对象的数据库设计对象关系模型实体对象关系模型应用总结下载参考资料简介: 面向对象(OO)和三范式(3NF)都是成熟的设计方法,本文基于面向对象设计思想和三范式数据库设计方法,提出一种实体对象分层...

    php面向对象初步PDF

    向对象的语言,只要你了解了 OO的真谛,便可以跨越语言,让你的思想轻松的跳跃。便没 有对于 Java、.net 、 PHP 之间谁强谁弱的争执了。 希望这个介绍 PHP5 面向对象编程(OOP)的资料能让初学者受益,能让更多的 ...

    详解Observer Pattern(观察者模式)在Java中的使用原理

    -参见本人的“第一个C#程序Hello World ”资源)来看,Java Swing编程是纯粹的OO语言、是一种非常优雅的编程语言(本人认为)--而C#的学习好像非常强调所谓的OO思想,但是不是知道是什么OO思想?(个人观点,请勿激动)...

    面向方面编程AOP

    OO注重的是我们解决问题的方法(封装成Method),而AOP注重的是许多解决问题的方法中的共同点,是对OO思想的一种补充! 主要的功能是:日志记录,性能统计,安全控制,事务处理,异常处理等等。 主要的意图是:将日志记录...

    Spring4 整合MongoDB详细讲解项目源码

    Mongo DB 是目前在IT行业非常流行的一种非关系型数据库 NoSql 其灵活的数据存储方式备受当前IT从业人员的青睐 Mongo DB很好的实现了面向对象的思想 OO思想 在Mongo DB中 每一条记录都是一个Document对象 Mongo DB...

    面向对象思想(贝尔实验室内部资料)

    这是贝尔实验室撰写的关于面向对象编程思想的培训资料,用了大量的ppt形式的格式来讲解,没有进行无味的长篇大论,却讲的非常深刻。

    COM本质论简体中文版

    反过来,阅读这本书也可以加强在C++和OO思想方面的理解。此外,书中还涉及到许多COM高级特性,例如线程模型(或者套间模型)、名字对象、连接点等,因此,要想从这本书里获得最大受益,也需要有COM的知识作基础。

Global site tag (gtag.js) - Google Analytics