美文网首页
什么是面向对象

什么是面向对象

作者: JerryLoveCoding | 来源:发表于2021-08-21 09:57 被阅读0次

    面向过程

    面向过程是一种以事件为中心的编程思想,编程的时候把解决问题的步骤分析出来,然后用函数把这些步骤实现,在一步一步的具体步骤中再按顺序调用函数。


    面向过程

    举个例子,一个下五子棋的程序:

    下五子棋{
    
    开始游戏();
    while{
    
    黑子先走();
    
    绘制画面();
    
    判断输赢();
    
    轮到白子();
    
    绘制画面();
    
    if 判断输赢(){
      break
    }
    };
    
    
    输出最后结果;
    
    }
    

    可见,面向过程始终关注的是怎么一步一步地判断棋局输赢的,通过控制代码,从而实现函数的顺序执行。

    面向对象

    在工作中,简单的问题用面向过程的思路来解决直接有效。但是当问题规模变大时,用面向过程的思想是远远不够的。所以就出现了面向对象的编程思想。

    世界上有很多人和事物,每一个都可以看做一个对象,而每个对象都有自己的属性和行为,对象与对象之间通过方法来交互。面向对象是一种以“对象”为中心的编程思想,把要解决的问题分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个对象在整个解决问题的步骤中的属性和行为。

    类是一个抽象的概念,而对象是一个具体的事物。对象是基于类这个抽象的模板而建立的实例。

    在下五子棋的例子中,用面向对象的方法来解决的话,首先将整个五子棋游戏分为三个类:

    • 棋子类,定义棋子,颜色,位置坐标,监听下棋动作。

    • 棋盘类,定义棋盘样式,棋谱,位置状态(是否有棋子),增加棋子动作,

    • 规则类,定义规则、判断是否犯规、输赢等。

    然后基于上述类创建对象,并赋予每个对象一些属性和行为:

    第一类的对象为黑棋和白棋,负责接受用户输入,并告知第二类对象(棋盘系统)棋子布局的变化,棋盘系统对象接收到了棋子的变化,并负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。

    可以看出,面向对象是以功能来划分问题,而不是以步骤解决。比如绘制画面这个行为,在面向过程中是分散在了多个步骤中的,可能会出现不同的绘制版本。
    比如要加入悔棋的功能,如果要改动面向过程的设计,那么从输入到判断到显示这一连串的步骤和顺序都要改动。如果是面向对象的话,只用改动棋盘对象就行了,棋盘系统保存了黑白双方的棋谱,回溯就可以了,而显示和规则判断则不用 顾及,同时整个对对象功能的调用顺序都没有变化,改动只是局部的。

    类,与类的特性

    类是同一类事物的统称。如个人证件作为一类都有id,姓名,年龄,照片的属性,都具有验证本人身份的功能

    1. 封装

    将对象的属性和行为封装起来,只通过对象访问属性或者方法。还可以设置访问权限。

    2. 继承

    假如想建立驾照类时,我们想到可以将个人证件类拿来复用,保留个人证件具有的属性和方法,但是不具有驾驶信息的属性和合法开车的功能。

    3. 多态

    一个类可以继承多种接口,一个父类也可以被多种子类所继承。父类的方法也可以被子类重写。这些都是多态的特征,即一个父类有多种子类的形态,一个方法也有多种实现方法。

    相关文章

      网友评论

          本文标题:什么是面向对象

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