台湾UU聊天室 背景音乐_五分钟理解什么是面向对象

来人人都是产品经理【起点学院】,BAT实战派产品总监手把手系统带你学产品、学运营。

昨天讲了MVC,有同学表示还想了解一些软件开发架构方面的姿势。我琢磨了半天,列了不少技术名词,本来想挑一个出来讲一讲,写了一半发现有很多前置知识之前没涉及,于是决定把坑填一填,先从基础的「面向对象」讲起。

对象的发生有产品经理的功劳。你为什么这么说?因为一开始的时候,并没有面向对象,只有面向过程的概念。面向过程很好理解,指的是程序员接到需求,会把它拆成一个一个的命令,然后串起来交给计算机去执行。举个例子,产品经理说要把大象装进冰箱里。程序员列了几个步骤:

上面每一个步骤,程序员都会用一个「函数」来实现。「函数」是一些代码的集合体,每个函数可以实现一个功能。例如,定义打开冰箱门的函数:

所有函数定义后,按顺序调用

openTheDoorpushelephantcloseTheDoor

需求完成,工作顺利完成。但你以为这样就结束了?Naive。产品经理说刚刚开始。

把大象放在微波炉里把狮子放在冰箱里把大象放在冰箱里,但是不要关门。台湾UU聊天室 背景音乐的双曲馀弦值。的双曲馀弦值。

如果用面向过程的方法应对的话,每次需求的变更,程序员都会读一遍整个系统,找找出可用的函数(如果没有的话定义一个),最后依次调用。最后,系统越来越杂乱,难以管理,程序员负担不起,纷纷开刀走上犯罪之路。

面向对象从另一个角度解决这个问题。抛弃函数,台湾UU聊天室 背景音乐将对象作为程序的基本单元。那么,对方到底是什么呢?对象是对事物的抽象描述。人们发现,现实世界中的一切都可以用数据和能力来描述。例如,我想说明数据是他的年龄、性别、身高体重,能力是他能做什么工作,负什么责任。说明电视,数据是画面的尺寸、亮度,能力是播放葫芦娃娃。在面向对象的世界里,到处都是对象。对象不光有「数据」和「能力」,还可以接受命令。例如你可以让「狗」这个对象「吃狗粮」,就可以把「吃狗粮」的命令发给「狗」让其执行,然后我们就实现了「狗吃狗粮」的需求。

现在对象有了,如何进行面向对象的编程呢?很简单,依次向不同的对象发送命令就可以了。回到上面的例子,用面向对象来实现,我们会先定义一个「冰箱」对象,它的「数据」就是当前的冷冻温度,或者该冰箱已经有了多少头大象,「能力」就是开门、关门。还有一个「大象」对象,它的「数据」可以是大象的智商、体积,「能力」就是「自己跑到冰箱里去」。然后我们依次:

向冰箱下达「开门」的命令。台湾UU聊天室 背景音乐向大象发出进入冰箱的命令。向冰箱发出关门的命令。

面向对象有很多特性。你可能听说过继承、包装、多态的概念,但我不打算在这里说这些。我说了我理解的面向对象,最重要的两个特性。

自己做。

我们创建的对象,应该是刚刚好能做完它能做的事情,不多做,不少做。多做了容易耦合,各种功能杂糅在一个对象里。比如我有一个对象叫「汽车」,可以「行驶」,可以「载人」,现在的需求是要实现「载人飞行」,就不能重用这个对象,必须新定义一个对象「飞机」来做。如果给汽车插上翅膀,给予飞行的能力,新来的同学面对你的代码是不可思议的,不能动手。

面向接口编程。

现在将数据和行为包装在对方中,相当于对方成为黑盒子。你怎么知道对方有什么能力?这个问题的关键是界面。关于界面,以前的文章《5分钟了解什么是界面》介绍过。对方通过接口发表其能力,自己成为接口的实现者。这样调用者就不用关心接口背后的对象是什么东西,如何实现的了。还是上面的例子,产品经理现在说要把大象放洗衣机里,通过我们的分析,洗衣机也需要有「开门」、「关门」的能力。那么我们就可以抽象出一个接口来,它就是「开门」和「关门」的能力集合,假设我们称之为「大象之家」接口。我们的对象冰箱、微波炉、洗衣机实现了大象之家的接口,尽管实现方法不同,但在外部也是一样的,可以放大象的容器。这样,我们编程的时候,企业uu聊天聊天怎么删

可以向大象家下达开门的命令。向大象发出进入冰箱的命令。向象家下达关门命令。

关于大象的家到底是什么,我们不相信。即使什么时候变成厕所,开门和关门的具体交给负责厕所对象的同事,我们只要调用就可以了。

对方先谈谈这个吧。包装、继承和多态暂时作为洞,然后填补。上了年纪忘记了事情,如果想知道的话,请注意。

专栏作家#

向产品经理讲技术,微信号公共编号(pm_teacher),每个人都是产品经理专栏作家。资深程序猿专注于客户开发多年,对前端、后台技术略知一二,热衷于探索新技术领域。

发表评论

您的电子邮箱地址不会被公开。