什么是OOP(面向对象编程)?

矫情吗;* 2022-03-02 08:09 711阅读 0赞

我们来思考一个简单的问题:如何使用Python程序表示一只小狗呢?没错,表示一只小狗,或者说用Python程序对小狗进行建模,如果你回答不上来,那么请跟着我来看一下如何解决这个问题。下面是一只小狗的照片:

clipboard.png

首先,我们尝试用文字描述这只狗狗。这只小狗的品种是金毛,颜色是淡黄色,年龄估计只有一个月,身高大约20厘米。然后这只小金毛看起挺健康的,会跑,还会叫,高兴的时候应该还会摇尾巴,玩累了会呼呼大睡,饿了会吃狗粮。当然关于这只小金毛,我们还有其他的一些方面我们没有概括到,我们这里只描述了这只小金毛的一些主要特征,没有非常详细地描述所有特征,例如血压,白细胞数量等等。这种提取主要要信息,排除和任务不相关的次要信息的方法,我们称为抽象

现在,我们来把上面对小金毛的文字描述列一个表,暂且分为信息名称和信息对于的具体内容:














































信息名称 信息内容
品种 金毛
颜色 淡黄色
年龄 一个月
身高 20厘米
能力1
能力2
能力3 摇尾巴
能力4 呼呼大睡
能力5 吃狗粮

通过上表,我们发现,可以把小狗的信息分为两个部分,一部分为小狗的固有特征:[品种,颜色,年龄,身高],另一部分为小狗能干啥:[能力1,能力2,能力3,能力4,能力5]。因此,我们可以把小狗看作是世间万物中的一个类(class),把小狗的一些固有特征看作这个类的属性(property),把小狗的能干什么看作这个类的方法(method)。这就是OOP的思维,我们可以使用OOP对任何事物进行建模,大家可以尝试对身边的物体进行建模,例如日光灯具有亮度、额定功率等属性,具有发光、开、关等方法。

上面的信息表格看起来不太舒服,我们可以换一种方式来表示小狗的这些信息:

clipboard.png

上面这种图,我们称为类图,类图主要用于对类进行描述,属于UML图中的一部分。类图由三个部分组成:类名、属性、方法。UML是统一建模语言的缩写,这里就不展开了,大家可以上百度或谷歌搜索相关的知识。大家学习OOP的过程中,应该主动去了解和学习UML,不一定要全部掌握,但是看得懂UML图,会绘制基本的UML图是有益无害的。

现在简单小结一下:

  • 抽象:提取关键信息,去除不必要信息,建立一个模型
  • 属性:一类事物的特征
  • 方法:一类事物的行为

那么回到最开始的问题,如何用Python表示小狗呢?答案就是,我们用变量来表示小狗的一些属性,用函数来刻画小狗的一些方法,最后用待会儿要介绍的来将这些变量和函数“包”起来,这样我们就能对小狗进行清晰准确的描述了。

但是,这样对小狗进行抽象之后我们得到的是小狗的属性方法,并不是真正的一只有血有肉的小狗。要得到真正的小狗,我们还要把小狗这个进行实例化。什么是实例化呢?我们可以把“小狗类”当作一个说明书(例如上面的UML类图),然后根据这张说明书创建各种各样的小狗,它们有不同的品种、颜色、年龄和身高等,但是它们有共同的行为:奔跑、叫、摇尾巴、睡觉和吃狗粮。根据说明书创建出来的具体的小狗,我们称为对象

所以你可以认为类就是一类事物的说明书,对象就是根据说明书创建出来的具体的个体。现在很多编程语言都支持面向对象编程,例如C++, Java, Python等等。

发表评论

表情:
评论列表 (有 0 条评论,711人围观)

还没有评论,来说两句吧...

相关阅读

    相关 面向对象编程OOP

    一.定义 面向对象程序设计(Object Oriented Programming,OOP)是一种计算机编程架构。OOP的一条基本原则是计算机程序由单个能够起到子程序...

    相关 面向对象编程OOP

    面向对象编程(OOP)      Java是一个支持并发、基于类和面向对象和计算机编程语言。如下是面向对象软件开发的优点:         1、代码开发模块化,更容易维

    相关 什么OOP(面向对象编程)?

    我们来思考一个简单的问题:如何使用Python程序表示一只小狗呢?没错,表示一只小狗,或者说用Python程序对小狗进行建模,如果你回答不上来,那么请跟着我来看一下如何解决这个

    相关 面向对象编程OOP

    一:面向对象编程是java的一个优点:特性:【①封装②继承③多态④抽象】 (1):代码开发模板化.易维护,修改 (2):代码复用 (3):增强代码可靠性,灵活性 (4)