首页 >> 百科

什么是面向对象编程(谈谈对面向对象的理解)

2023-03-05 百科 121 作者:admin

昨天讲了MVC,有同学说还是想​​了解一下软件开发架构的架势。 想了半天,罗列了很多专业术语。 我想挑出一个来谈谈。 写到一半,发现有很多前置知识是之前没有覆盖到的,于是决定先填坑,从最基本的“面向对象”做起。

说起来,面向对象的出现,也有产品经理的功劳。 为什么这样说呢? 因为一开始没有面向对象,只有面向过程的概念。 面向过程很好理解,就是程序员会把需求分解成一条一条的命令,然后串起来交给计算机执行。 比如产品经理说要把大象放进冰箱。 程序员列举了几个步骤:

对于上面的每一步,程序员都会用一个“函数”来实现。 “函数”是一些代码的集合,每个函数可以实现一个功能。 比如我要定义一个打开冰箱门的函数:

定义完所有函数后,就可以依次调用它们了:

要求完成,工作顺利交接。 但你以为就这样结束了吗? 幼稚的。 产品经理说这才刚刚开始。

如果还是用面向过程的方式来处理,每次需求变化,程序员都得去读整个系统,找出可用的函数(如果没有就再定义一个),最后再调用反过来。 最终,系统越来越杂乱无章,难以管理,程序员们应接不暇,拿起刀走上了作案之路。

面向对象的方法从另一个角度解决这个问题。 它摒弃了函数,以“对象”作为程序的基本单位。 那么究竟什么是对象呢? 对象是对事物的抽象描述。 人们发现现实世界中的事物可以用“数据”和“能力”来描述。 比如我要描述一个人,“数据”就是他的年龄、性别、身高、体重,“能力”就是他能做什么工作,能承担什么样的责任。 形容一台电视,“数据”就是它的屏幕大小和亮度,“能力”就是播放《葫芦娃》。

在面向对象的世界中,对象无处不在。 对象不仅有“数据”和“能力”,还可以接受命令。 比如可以让对象“狗”“吃狗粮”,然后就可以把“吃狗粮”的命令发给“狗”让其执行,这样我们就实现了“狗吃狗”的需求食物”。

既然有了对象,那么如何进行面向对象编程呢? 很简单,就是依次向不同的对象发送命令即可。 回到上面的例子,使用面向对象的实现,我们会先定义一个“冰箱”对象,它的“数据”是当前的结冰温度,或者冰箱已经有多少只大象,它的“能力”是打开门,关上门。 还有一个“大象”对象,它的“数据”可以是大象的智商和体型,“能力”是“自己跑到冰箱前”。 然后我们依次:

面向对象有很多特点。 你可能听说过继承、封装、多态等概念,但我这里不多说(可能会在后面的文章中介绍)。 两个属性。

做你自己的事。

我们创建的对象应该能够做它能做的事情,不多也不少。 多做容易耦合,各种功能混合在一个对象中。 比如我有一个物体叫“车”,可以“开车”,也可以“载人”。 现在的需求是实现“载人飞行”,所以这个对象不能重复使用,必须定义一个新的对象“”来做。 如果你给“车”装上翅膀,赋予它“飞”的能力,那么新人就会被你的代码搞得一头雾水,无从下手。

面向接口的编程。

现在我们把“数据”和“行为”都封装到对象中,相当于对象变成了一个黑盒子,那我们怎么知道对象有什么能力呢? 问题的症结在于界面。 关于接口,之前的文章《5分钟看懂什么是接口》已经介绍过了。 对象通过接口发布自己的能力,自己成为接口的实现者。 这样,调用者就不需要关心接口背后的对象是什么,是如何实现的了。 还是上面的例子,产品经理现在说要把大象放进洗衣机。 通过我们的分析,洗衣机还需要具备“开门”和“关门”的能力。 那么我们可以抽象出一个接口,就是“开门”和“关门”的能力集。 假设我们称它为“大象屋”界面。 我们的目标冰箱、微波炉、洗衣机都实现了“大象之家”的接口。 虽然实现方式不同,但在外界看来,都是一样的,都是能装大象的容器。 所以我们在编程的时候,可以这样写:

至于象馆是什么,我们不关心。 哪怕哪天变成了厕所,“开门”和“关门”的具体实现交给负责厕所对象的同事,我们调用就行了。

先说面向对象。 封装、继承、多态暂时算是一个坑,后面会补上。 人老了容易忘事,想知道的记得提醒我哦。

#专栏作家#

跟产品经理聊技术,微信公众号(),人人都是产品经理的专栏作家。 资深程序员,专注客户端开发多年,对前后端技术略有了解,热衷于探索新技术领域。

郑重声明:本文版权归原作者所有,转载文章仅出于传播更多信息之目的。 如作者信息标注有误,请第一时间联系我们修改或删除,谢谢。

关于我们

最火推荐

小编推荐

联系我们


Copyright 8S新商盟 Rights Reserved.
联系YY号:2949821684
邮箱:chenjing919994@sohu.com
备案号:浙ICP备2023016511号-1