面向过程与面向对象的区别 (一眼就能看懂的那种)

虽然说C是面向过程的语言,C++,java,C#是面向对象的语言,但是真正是面向过程还是面向对象,并不是根据使用什么语言,而是根据怎么写代码。

说再多也没用,直接上代码,一看就懂的那种:
(这里使用java语言作为例子)

面向过程的代码:

  • 优点:
    若需要添加新方法,例如计算周长的方法,不需要改变原有代码,只需要新添代码。
  • 缺点:
    若需要添加新的图形结构,在添加新代码的同时,还需要修改原有的代码,例如Geometry类中的所有函数。
  • 特点:数据结构和方法分离。
// 正方形
public class Square
{
    public Point topLeft;
    public double side;
}

// 长方形
public class Rectangle
{
    public Point topLeft;
    public double height;
    public double width;
}

//圆形
public class Circle
{
    public Point topLeft;
    public double radius;
}

//几何工具包
public class Geometry
{
    public double PI = 3.141592653589793;
    //计算区域面积
    public double area(Object shape)throws NoSuchShapeException
    {
    	if(shape instanceof Square)
    	{
            Square s = (Square)shape;
            return s.side*s.side;
        }
        else if(shape instanceof Rectangle)
        {
            Rectangle r = (Rectangle)shape;
            return r.width*r.height;
        }
        else if(shape instanceof Circle)
        {
            Circle c = (Circle)shape;
            return PI*c.radius*c.radius;
        }
        throw new NoSuchShapeException();
    }
}

面向对象的代码:

  • 优点:
    若需要添加新的图形,则不需要修改老代码,非常方便。
  • 缺点:
    若需要添加新的方法,则需要将所有图形类修改一遍,有些麻烦,但是比面向过程中添加数据结构要好一点。
  • 特点:数据结构被隐藏,仅仅展示对象的相应方法。
public class Square implements Shape
{
    private Point topLeft;
    private double side;

    public double area() { return side*side; }
}

public class Rectangle implements Shape
{
    private Point topLeft;
    private double height;
    private double width;

    public double area() { return height*width; }
}

public class Circle implements Shape
{
    private Point topLeft;
    private double radius;
    public double PI = 3.1415926;

    public double area(){ return PI*radius*radius; }
}

注意

平常写代码的时候千万不要把数据结构的类和作为对象的类杂糅成一个类(它既可以作为数据结构被方法操作,也拥有属于自己的各种计算方法),不然代码会非常的混乱,可维护性差且难以读懂。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值