面向对象和面向过程~~编程思想

        对于编程思想来说,大意上可分为俩种,一种为面向对象,一种为面向过程。

面向过程,只追求运算逻辑、耦合度(耦合度是指事物关联程度的紧密度)、扩展力

而面向对象是追求的是模块之间的互相协作,耦合度,扩展力

对于面向过程和面向对象的理解和差别是这么理解的(爬山):

——面向过程就像走山路爬山一样,必须一步一步走上去,途中没有其他方式上山。这种一条路走到黑的方式就是面向过程,他的逻辑性很强,一般的程序逻辑是没有问题的,但是假如出现问题,他的逻辑性就是被破坏,前段代码逻辑和后段代码逻辑会没有连接,导致整段程序会失效,最主要的是面向过程的编程思想,他的扩展力极差,没有办法将相对应有问题的代码及时更换。按照爬山的说法来说,就是上山的路坏了,他没有办法爬山了,而上山的路修补需要很长时间或者舍弃这条路也是有可能的。(比较原始)

——而面向对象对于爬山可以说是很丰富(多样)的,就比如同样是上山我们可以选择交通工具,坐汽车,坐缆车,骑自行车等都是可以的,他的选择方面是较多的,并且对于面向对象来说万物皆可为对象,我们可以定义人的属性,车的速度、颜色、类型等,这就是面向对象的好处,他的扩展力是很强的,他不会因为某一段代码出现了问题而造成整段代码会崩溃,因为基于面向对象的高扩展性,随时随地可以跟换错误的代码,那怕再复杂的代码逻辑相对于面向过程来说处理起来也相对容易

相对于例子爬山来讲,路坏了,我们可以坐缆车来达到爬山的目的。他的方法有很多种措施,而对于面向过程来说逻辑属性从建项目的那一刻就固定了,后面要做更改相对于面向对象的话会很难,毕竟面向过程的局限性就在那里。

面向对象和面向过程的优缺点:

面向过程的优点:

虽然面向过程他的局限较强,但是在一般并不复杂的业务逻辑时,他的前期工作是轻松的,只要有逻辑就能很快的做出项目来。

面向对象的缺点:

同样虽然面向对象他的扩展力极高,但是在前期的准备工作是非常复杂和缓慢的,在开发一个项目时,一个一个定义模块是非常消费时间的,前期投入较大,工程量大。

面向对象和面向过程的联系(自我认为):

虽然面向对象和面向过程有很大的区别,但是我认为面向过程是包含面向对象的。虽然面向对象是定义一个一个模块进行互相协作,但是我认为在互相协作的同时也是面向过程的同时,因为它具有逻辑性。所以面向对象走到最后也是面向过程,只不过这个面向过程具有面向对象的高扩展性。

当然,面向对象和面向过程只是一种编程的思维方式,我们不需要计较这两种编程思想哪个特殊。我们只要能理解了就好。

由于博主目前只会些jJAVA编程,所以下面用JAVA来表示一下面向对象和面向过程(也以爬山为例):

定义的类有:

ObjectOriented 面向对象类 
ProcessOriented 面向过程类
People 人“类”
Car 车类

定义的属性有:

People 人“类”:

String name; 名字
Car 车类:

String brand;品牌

int speed;速度

String color;颜色

People people;人名

———首先是面向对象类:

// 面向对象类

public class ObjectOriented {
    public static void main(String[] args) {

        //创建对象people 引用 People类
        People people = new People();
        people.name = "李四";
        // 调用walk方法(走路的方法)
        people.walk();

        // 假如 walk方法失效 我们可以引用Car类的方法来上山 来取缔掉walk的方法 继续执行程序
        // 若想使方法失效 注释27行 people.walk();就行
        // 创建对象 car 引用Car类
        Car car = new Car();
        // 定义Car类的中的属性
        car.brand = "宝马";
        // 定义Car类的中的属性
        car.speed = 120;
        // 定义Car类的中的属性
        car.color = "黑色";
        // 让原属于people的内存地址赋予了car.people
        // 相当于car.people = new People() 可以直接访问People类的属性
        car.people = people;
        // 将People类中的名字属性赋值
        car.people.name = "张三";
        car.drive();

    }

}

——————其次是人“类”: 
// 人“类“
public class People {

    // 名字

    String name;

    // 走路的方法

    public void walk(){

        // 输出打印到控制台

        System.out.println(name +"走路上山");

    }

}

————再是车类:

// 车类

public class Car {
    // 品牌

    String brand;

    // 速度

    int speed;

    // 颜色

    String color;

    // 人名

    People people;


    public void drive() {
        System.out.println(people.name + "坐" + brand + "的车" + "速度为:" + speed + "每小时公里" + "颜色为:" + color + "的车到山顶");
    }
}

图解:

 ————最后是面向过程类:

// 面向过程类

public class ProcessOriented {
    public static void main(String[] args) {

        // 定义一个名字变量
        String name = "王五";
        // 将name这个变量传入到WalkUpTheMountain方法中
        WalkUpTheMountain(name);

    }
    // 假如WalkUpTheMountain失效了 那么这个程序就会失去意义 王五再也不会去到山顶上
    // 定义一个走路上山的方法
     static void WalkUpTheMountain(String name){

        System.out.println(name +"走路上山到山顶");

    }
}

图解:

~~对于面向过程的图解解释:
        1.由于定义的方法是个传参的方法,所以定义了一个name变量并且赋予值为“王五”。

        2.main方法调用WalkUpTheMountain方法。

对于博主自写 的这篇文章,觉得有些疏漏之处,也希望大神能指点一二。但是还是希望能够帮助一些初学者。

最后希望大家能够成功上岸。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值