`

什么是OO思想

阅读更多

 

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

 

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

 

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

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

 

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

 

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

 

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

 

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

 

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

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

例如:

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

 

 

分享到:
评论

相关推荐

    23种设计模式,OO思想

    标题和描述中提到的“23种设计模式,OO思想”,是软件工程领域的一个核心概念,尤其是对于面向对象编程(Object-Oriented Programming,简称OO)的深入理解和实践至关重要。设计模式是由Erich Gamma、Richard Helm、...

    C_OO思想编程

    **C++面向对象编程概述** C++是一种强大的、通用的编程语言,以其支持面向对象编程(Object-Oriented Programming, OOP)而闻名。面向对象编程是一种编程范式,它基于“对象”的概念,其中对象包含数据(属性或成员...

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

    【标题】"刚学C#OO思想做的中国象棋"所涉及的知识点主要集中在C#编程语言和面向对象(Object-Oriented Programming, OOP)的设计原则上。在这个项目中,开发者试图运用C#来实现中国象棋的逻辑,这需要对C#的基本语法...

    设计模式资料汇总

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

    OO思维

    面向对象编程(Object-Oriented Programming,简称OOP)是一种广泛应用于现代软件开发中的编程范式,它的核心思想是将数据和操作数据的方法封装在一起,形成一个独立的对象。OOP的主要特点是类与对象、封装、继承和...

    Java 图书馆理 Java oo思想

    5. **Recording.java**:可能是用于记录借阅历史或图书库存的类,帮助追踪谁借了什么书,何时借的,何时应归还等信息。 6. **Book.java**:专门针对图书的类,除了CatalogItem的基本属性外,可能还有ISBN、类别等...

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

    这篇博客将深入探讨面向对象的思想及其在Java设计模式中的应用。 首先,我们理解面向对象的基本概念: 1. 封装(Encapsulation):封装是将数据和操作这些数据的方法捆绑在一起,形成一个独立的单元——对象。这样...

    OO设计原则 -- OO设计的 DIP依赖倒置原则

    ### OO设计原则 -- OO设计的 DIP依赖倒置原则 #### 概述 在软件工程领域,特别是面向对象设计中,依赖倒置原则(Dependency Inversion Principle, DIP)是六大设计原则之一,由著名软件架构师Robert C. Martin提出...

    oo大智慧 面向对象的思想

    OOP的核心思想是抽象、封装、继承和多态,这四大特性使得代码更易于理解、维护和扩展。 1. 抽象:抽象是将现实世界中的事物提炼出其本质特征的过程。在编程中,这意味着创建类(Class),类是对一类具有相似属性和...

    OO及UML教程

    学习UML不仅有助于提高设计质量,还能促进团队间的沟通效率,因为UML提供了一种通用的视觉语言,让开发者能够清晰地表达和理解复杂的设计思想。 在实际项目中,结合源码和UML工具,开发者可以创建出结构清晰、可...

    北航OO课作业代码

    通过分析这个“北航OO课作业代码”,我们可以不仅学习到Java语言的基本用法,还能掌握面向对象编程的核心思想,以及如何在实际项目中应用这些知识。对于想要提升编程能力、理解和实践面向对象编程的同学来说,这是一...

    OO设计原则-里氏替换原则

    ### OO设计原则——里氏替换原则详解 #### 一、引言 面向对象设计原则(Object-Oriented Design Principles)是一套指导软件开发者如何更好地设计类、接口等面向对象元素的原则集合,旨在提高代码的可复用性、可...

    用OO的思路封装MYSQL数据库操作

    标题“用OO的思路封装MYSQL数据库操作”暗示我们将通过创建类来实现对MySQL数据库的抽象,以提高代码的可读性和可维护性。具体来说,我们可以设计一个数据库连接类,一个SQL语句执行类,甚至一个结果集处理类,每个...

    OO命令解析器-工程源码.rar

    C语言虽然以过程性编程为主,但通过巧妙的设计,同样可以实现面向对象的编程思想。 1. **对象化设计基础** - 在C语言中,我们通常使用结构体来模拟类,并通过函数指针实现方法。这里,我们可以定义一个`Command`...

    OO面向对象测试代码

    面向对象编程(Object-Oriented Programming,简称OO)是一种编程范式,它的核心思想是将数据和操作数据的方法封装在一起,形成对象。在C++、Java、Python等语言中,面向对象特性得到了广泛的应用。本资源提供的“OO...

    用OO写键盘游戏

    通过编写键盘游戏,学员可以实际操作,体验这些概念在实际项目中的应用,从而更好地理解和掌握OO编程的思想。 在面向对象编程中,以下几个核心知识点至关重要: 1. **类与对象**:类是对象的模板或蓝图,定义了...

    OO真经—关于面向对象的哲学体系及科学体系的探讨

    掌握面向对象的思想和方法,对于成为一名优秀的软件工程师至关重要。通过对抽象、层次、继承、耦合、运作、建造、刻画和模式等核心概念的深入学习和实践,开发者可以构建出更加健壮、灵活和易于维护的软件系统。

    KWIC.rar_KWIC ja_kwic_kwic oo

    "kwic_oo"可能指的是使用面向对象思想设计的KWIC工具或库。 由于压缩包的文件列表只给出了"KWIC",我们可以推测这个压缩包可能包含以下内容: 1. 主程序(main):这是整个KWIC系统的入口,负责调用其他组件并协调...

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

    【车神O2O联盟】是中国汽车后市场领域的一个创新商业模式,旨在通过线上线下结合的方式,为车主和汽车服务商家提供全面、便捷、高效的服务。这个联盟由河南鸿德利集团创立,目标是打破传统的汽车后市场格局,打造一...

    实战OO 部署与实施

    根据给定的信息,“实战OO部署与实施”这一主题聚焦于面向对象(Object-Oriented,简称OO)系统在实际环境中的部署与实施过程。面向对象技术是软件开发领域的重要组成部分,它强调通过模拟现实世界中的对象及其交互...

Global site tag (gtag.js) - Google Analytics