美文网首页
面向对象还是面向过程

面向对象还是面向过程

作者: 吴展 | 来源:发表于2017-01-21 19:50 被阅读0次

类中有数据无操作方法,这是典型结构化编程中的数据结构定义,在面向对象的世界里,类的定义一般会吧数据和操作数据的方法放在一起,这样有着更好的内聚性和可理解性;

我们来看两种典型的情况:

示例1
public class Square {

    pubic Point topLeft;
    public double side;

}

public class Circle {
    public Point center;
    public double radius;
}

public class Geometry {
    public final double PI =  3.14
    
    public double area(Object shape) throws NoSuchShapeException
    {
      if (shape instanceof Square) {
           ...
      }else if( shape instance of Circle){
           ...
      }
    }

}
示例2
public class Square {

    pubic Point topLeft;
    public double side;
    
    public area() {
         ...
    } 
}

public class Circle {
    public Point center;
    public double radius;

    public area() {
         ...
    } 
}


面向对象的程序员肯定会对第一种做法嗤之以鼻。想想看,如果再添加一个新的形状会怎么样。是的你会对Geometry类进行修改,而且随着增加的新形状越多,这个类就会越来越庞大,它也不符合开放封闭原则

想想看,如果给Geometry类添加一个primeter()函数会怎么样,所有的形状将不受影响。两种定义的本质:他们是截然对立的。这说明了对象和数据结构的二分原理:
  过程式代码便于在不改动原有数据结构的前提下添加新的函数。面向对象代码便于在不改动既有函数的前提下添加新类。
  在一个辅助的系统中,都会有需要添加新的数据类型而不是新函数的时候,这个时候对象和面向对象比较适合。另一方面,也有会想要填写新函数而不是数据类型的时候。这种情况下,过程式代码和数据结构比较适合。

相关文章

  • 面向对象还是面向过程

    类中有数据无操作方法,这是典型结构化编程中的数据结构定义,在面向对象的世界里,类的定义一般会吧数据和操作数据的方法...

  • 2、面向对象

    一、面向对象 定义:面向对象是基于面向过程的。 面向对象与面向过程比较:面向过程:面向过程是以函数为基础,完成各种...

  • 面向对象的三大基本特征和五大设计原则

    1、面向对象概念 1.1、理解面向对象 面向对象是相对面向过程而言; 面向对象和面向过程都是一种思想; 面向过程:...

  • Java基础

    1.面向过程和面向对象区别 1.1面向过程:面向过程性能高于面向对象 1.2面向对象:面向对象易复用,易拓展,易维...

  • Java学习day-07:面向对象

    一、面向过程和面向对象 1.面向对象与面向过程的区别: 面向对象具有三大特征;封装,继承,多态;面向对象与面向过程...

  • 浅谈几个面向对象设计模式

    面向过程还是面向对象? “面向过程” (Procedure Oriented)是一种以过程为中心的编程思想“面向对...

  • java笔记6

    1. 面向对象概念 面向对象想对于面向过程而言,面向对象和面向过程都是一种思想,面向过程强调的是功能行为,面向对象...

  • Java程序员必修内功心法!(内功修炼第二层)

    1,Java 面向对象 1.1类和对象 1.1.1. 面向对象和面向过程的区别 1,面向过程 :面向过程性能比面向...

  • 面向对象 与 面向过程

    面向对象:我。吃(火锅)面向过程:吃(我,火锅) 面向过程: 面向对象:

  • Java基础语法_Day06

    一、面向对象概述 面向对象思想 面向过程思想与面向对象思想A:什么是面向过程面向过程,其实就是面向着具体的每一个步...

网友评论

      本文标题:面向对象还是面向过程

      本文链接:https://www.haomeiwen.com/subject/dplnbttx.html