对面向对象编程(OOP)的理解


前言

每只程序猿都听说过面向对象这个概念,但一部分”幼年猿”可能不是很清楚这个概念的定义以及特点,也不知道在具体的编程中怎么运用和加以区分。这篇博客是我对面向对象编程的一点理解,希望对有需要的猿们有一点帮助。

定义

面向对象的设计是一种提供符号设计系统的面向对象的实现过程,它用非常接近实际领域术语的方法把系统构造成“现实世界”的对象。 —— 百度百科

理解

简而言之, 我理解的面向对象就是把具体的问题分割成一个一个的对象实体,各个对象实体分开构建,彼此互不影响(最理想的情况),只需要实现各自的功能并对外界提供接口。
举个栗子,比如司机开车这个场景:
传统的思考方式(面向过程)会以每个动作为粒度,并且一般限定动作的先后顺序,例如: 司机先上车,然后关门,点火,挂挡,踩油门,放离合,最后开走汽车;

而使用面向对象的方法来考虑司机开车,我们会先考虑在这个场景中有哪几个对象实体,然后考虑每个实体需要实现什么功能,例如: 在司机开车场景中,有 汽车司机 两个对象,汽车对象需要由车门,车轮,发动机,变速箱等构成,并且向外界提供驾驶它的接口(Race方法);司机 也需要有一些必须的特征,比如有驾照、身体健康之类的。然后司机对象调用汽车对象的Race方法来驾驶汽车,在这里,司机和汽车之间是依赖的关系(松耦合),这通常是通过参数传递来实现。
接下来,我用一段简单java代码来进一步说明:
Car对象:

public class Car(){
    public Car(int ms){
        this.max_speed=ms;
    }
    //车门
    private Door[] door;
    //发动机
    private Engine engine;
    //变速箱
    private Gearbox gearbox;
    //最高速度
    private int max_speed;
    //getter和setter方法省略

    /**
    * 提供驱动汽车接口,当需要驾驶汽车时,调用该方法
    */
    public void race(){
        System.out.println("Engine started, the car is ready!");
        System.out.println("The car is racing in it's max speed:"+max_speed);
    }
}

Driver对象:

public class Driver{
    private boolean hasLicense;
    private boolean isHealthy;
    //getter和setter省略,我在这里想说明条件判定的用法

    /**
    * drive方法通过调用car的接口来实现开车的功能
    * @param car Car类的一个实例
    */
    public void drive(Car car){
        if(hasLicense&&isHealthy){
            car.race();
        }
    }
}

测试:

public class Test{
    public static void main(String[] args){
        Driver alonso=new Driver();
        alonso.setHasLicense(true);
        alonso.setIsHealthy(true);
        Car mcLaren_F1=new Car(391);
        alonso.drive(mcLaren_F1);
    }
}
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值