`
Yinny
  • 浏览: 295615 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

面向过程编程和面向对象编程

 
阅读更多
面向过程编程和面向对象编程

一、面向过程编程

面向过程编程将程序分成了"数据"和"处理函数"两部分,程序以"处理函数"为核心,如果要执行什么操作,就将"数据"传给相应的"处理函数",返回我们需要的结果.

面向过程的思路很好掌握,上手容易,但它存在三方面的问题:

1、数据和处理函数没有直接的关联,在执行操作的时候,我们不但要选择相应的处理函数,还要自己准备处理函数的数据,也就是说,在执行操作时,我们需要同时关注处理函数和数据.

2、数据和处理函数都城暴露在同一作用域内,没有私有和公有的概念,整个程序中所有的数据和处理函数都可以互相访问,在开发初期也许会开发速度很快,但到了开发后期和维护阶段,由于整个程序耦合得非常紧,任何一个处理函数和数据都有可能关联到其他地方,容易牵一发而全身动,从而加大了修改难度.

3、面向过程的思维方式是典型的计算机思维方式--输入数据给处理器,处理器内部执行运算,处理器返回结果.而实际生活中,我们的思路却不是这样--实际生活中所有的东西都是有状态有动作的物件,能用面向过程思维描述的只是物件的动作.用面向过程的思维方式编程,是无法描绘客观世界的事物的,我们编程的时候无法直接使用生活中的思维方式.

二、面向对象编程

面向对象编程是抛开计算机思维,使用生活中的思维时行编程的编程方式.面向过程的思维就是描述一个个"动作",而面向对象的思维就是描述一个个"物件",客观生活中的物件,都可以通过面向对象思维映射到程序中--如果你使用的编程语言支持面向对象,在程序中我们管"物件"叫做"对象",对象由两部分组成:"属性"和"行为",对应客观世界中的物件的"状态"和"动作".

程序由变量和函数组成,属性本质其实是个变量,也就是面向过程中的数据,而行为的本质其实是函数,也就是面向过程中和处理函数.不同的是,面向过程中,数据和处理函数并没有关联起来,共同属于某个物件.面向对象将数据和处理函数定义到了一个对象的内部,作为这个对象的属性和行为存在.在对象外部,属性和行为可以用对象的属性和对象的行为来调用,从而让程序有了按真实世界的思维方式进行描述的能力.在对象内部,对象的属性和行为通过this关键字关联起来.



面向过程编程所有的数据和处理函数都是公有的,整个编程的思维过程就是定义数据,定义处理函数,然后将数据传给处理函数进行处理,处理函数之间也可以互相调用,数据和处理函数紧密耦合.

面向对象编程的思维过程是定义一个个对象,对象有自己的属性和行为,因为属性和行为都是从属于对象的,于是有了"对象内"和"对象外"的概念,整个程序可以由一堆对象组成,对象与对象之间可能会有通信,为了实现这种通信,对象会将自己的部分属性和行为设计成公有,暴露出来成为通信的接口.对象和对象之间的通信都城是建立在接口的基础上的.当然我们可以将对象所有的属性和行为都设为公有的,全部都作为接口,但接口越多,会让对象之间耦合越紧密,增加维护难度,所以一般情况下,我们都会尽量将对象的属性和行为设为私有,只将必要的属性和行为设为公有.但对象的公有属性和公有行为越少,整个程序的扩展性会越差,所以我们在设计公有和私有的时候需要权衡一下,在不影响扩展性的前提下,尽量将属性和行为设为私有.
分享到:
评论

相关推荐

    面向过程、面向对象、面向组件、面向服务软件架构的分析与比较

    面向过程编程,源于结构化编程时代,如C语言,强调程序逻辑的流程控制,通过一系列函数或过程的调用来完成任务。其核心思想是将复杂的软件系统分解为一个个简单的步骤或过程,通过顺序执行这些过程来实现整个软件的...

    java面向对象编程pdf

    面向对象编程(Object-Oriented Programming,OOP)是一种编程范式,它将程序设计看作是对象的交互,对象之间的关系和行为。 一、对象和类 在Java中,对象是指具有某些特征和行为的实体,例如人、学生、大象、冰箱...

    面向对象编程与非面向对象编程

    非面向对象编程,也称为面向过程编程或面向数据编程,它的核心是通过函数或过程来组织代码,程序的执行流程主要由控制结构决定,数据和行为通常是分离的。非OOP的特点包括: - **函数/过程中心**:程序的主要构成...

    Labview面向对象编程

    Labview面向对象编程是NI...通过学习和掌握Labview面向对象编程,开发者可以构建出更复杂、更易于维护的应用程序,适应不断变化的需求,并利用Labview的强大功能进行数据分析、控制工程、测试测量等领域的项目开发。

    PLC的面向对象编程

    总结来说,通过利用面向对象编程的概念,PLC程序设计能够更加模块化、标准化,使得程序更加易于维护和扩展。这不仅提高了工业控制系统的灵活性和可扩展性,也使工程师在进行系统维护和升级时更加方便快捷。面向对象...

    c++面向对象编程实例大全

    《C++面向对象编程实例大全》是一本专为初级学习者设计的教程,旨在通过丰富的实例深入浅出地讲解C++的面向对象编程概念。面向对象编程(Object-Oriented Programming,简称OOP)是C++的核心特性,也是现代软件开发...

    Matlab面向对象编程

    Matlab面向对象编程是一种在MATLAB环境下通过面向对象的方法来组织和构造程序代码的技术。面向对象编程(OOP)的基本特征包括抽象、封装、继承和多态。以下是根据给定的文件信息,对这些知识点的详细解释: 1. 抽象:...

    C#面向对象编程期末参考题

    【描述】提到“期末开卷参考题”,暗示我们将探讨一些学生在学习过程中可能遇到的实际问题或考试题目,这些题目可能会涵盖C#面向对象编程的基本原理、类与对象、继承、封装、多态等关键概念。 在C#中,面向对象编程...

    LabVIEW面向对象编程技术.pdf

    LabVIEW面向对象编程技术是 LabVIEW 软件开发工具中的一种编程技术,旨在解决大型 LabVIEW 程序的开发和维护问题。该技术基于面向对象编程思想,引入了类和对象的概念,通过类的定义和实例化来实现数据的封装和继承...

    面向对象编程思想

    面向对象编程思想 面向对象编程思想是当前计算机界关心的重点,它是 90 年代软件开发方法的主流。面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围。如数据库系统、交互式界面、应用结构、应用...

    Java 面向对象编程机制

    * 程序设计的过程主要分为面向过程编程和面向对象编程两种风格。 * 面向对象编程机制是 Java 语言编程的核心技术之一。 * 类与对象是面向对象程序设计中最基本且最重要的两个概念。 * 抽象类和接口是面向对象编程中...

    JAVA面向过程的程序设计

    面向对象编程与面向过程编程相比,更加注重数据的封装和模块化,使得代码更易于重用和维护。同时,通过对象的组合和继承,可以更自然地描述复杂系统的行为。因此,Java和其他面向对象的语言成为现代软件开发的主流...

    Java面向对象编程思想.pdf

    Java面向对象编程思想 Java 面向对象编程思想是 Java 编程语言的核心思想之一,通过封装、继承和多态三个... Java 面向对象编程思想的应用是广泛的,可以用于开发各种类型的应用程序,提高代码的灵活性和可维护性。

    JAVA的面向对象编程笔记(经典)

    面向对象编程的思想不同于面向过程的思想,面向过程的思想是由过程、步骤、函数组成,以过程为核心。 九、面向对象编程的优点 面向对象编程的优点在于它可以使系统各部分各司其职、各尽所能,并且可以复用对象,...

    面向对象和面向过程的区别

    面向对象编程(Object-Oriented Programming, OOP)和面向过程编程(Procedural Programming)是两种不同的编程范式,它们在解决问题的方式上有着本质的区别。 面向过程编程是一种自底向上的编程思想,它关注的是...

    面向对象VS面向过程

    与面向对象编程相比,面向过程编程较少关注数据的封装和抽象,更多地关注如何通过算法解决问题。 面向过程编程的核心在于清晰地定义问题解决的步骤,其特点包括: - **结构化**:程序被划分为较小的、逻辑上独立的...

    面向对象编程思想问题和答案

    1. 模块化:面向对象编程使得软件设计更加模块化,每个对象都有其特定的功能,易于理解和维护。模块化的代码更易于测试和调试,同时也方便团队协作。 2. 可扩展性:由于继承和多态的特性,面向对象编程能够轻松应对...

    PHP面向对象高级编程和设计—面向对象高级编程和设计模式

    **设计模式**是面向对象编程中的一套通用解决方案,它们是经过验证的最佳实践,可以解决常见的设计问题。PHP 5支持多种设计模式,包括: 1. **单例模式**:确保一个类只有一个实例,并提供一个全局访问点。这在需要...

    Java面向对象编程思想

    Java 的核心是面向对象编程.所有的java程序都是面向对象的。 以前总听老师说c语言是面向过程的,c++和java是面向对象的,这些糊涂老师却从来不说明何为面向过程,何为面向对象,搞得我一直对此稀里糊涂。 最近看了...

Global site tag (gtag.js) - Google Analytics