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

我们来思考一个简单的问题:如何使用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等等。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值