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

面向对象还是面向过程

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

    相关文章

      网友评论

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

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