童话说说技术创业美文职业
投稿投诉
职业母婴
职场个人
历史治疗
笔记技能
美文纠纷
幽默家庭
范文作文
乐趣解密
创业案例
社会工作
新闻家居
心理安全
技术八卦
仲裁思考
生活时事
运势奇闻
说说企业
魅力社交
安好健康
传统笑话
童话初中
男女饮食
周易阅读
爱好两性

五分钟理解什么是面向对象

2月22日 程染筱投稿
  昨天讲了MVC,有同学表示还想了解一些软件开发架构方面的姿势。我琢磨了半天,列了不少技术名词,本来想挑一个出来讲一讲,写了一半发现有很多前置知识之前没涉及,于是决定把坑填一填,先从基础的面向对象讲起。
  话说起来,面向对象的产生还有各位产品经理的功劳。为什么这样说呢?因为一开始的时候,并没有面向对象,只有面向过程的概念。面向过程很好理解,指的是程序员接到需求,会把它拆成一个一个的命令,然后串起来交给计算机去执行。举个例子,产品经理说要把大象装进冰箱里。程序员列了几个步骤:
  把冰箱门儿打开。
  把大象装进去。
  把冰箱门儿关上。
  上面每一个步骤,程序员都会用一个函数来实现。函数是一些代码的集合体,每个函数可以实现一个功能。比如我要定义一个打开冰箱门的函数:
  所有函数定义好了之后,依次调用就可以了:
  openTheDoor();
  pushElephant();
  closeTheDoor();
  需求完成,顺利交工。但是你以为这样就结束了?Naive。产品经理说才刚刚开始呢。
  我要把大象装微波炉里
  我要把狮子也装冰箱里
  我要把大象装冰箱,但是门别关,敞着就行
  。。。
  如果还是用面向过程的方法来应付,每次需求的变更,程序员就要把整个系统通读一遍,找出可用的函数(如果没有就再定义一个),最后依次调用它们。最后系统越来越杂乱无章难以管理,程序员不堪重负,纷纷操起刀走上了犯罪的道路。
  面向对象从另一个角度来解决这个问题。它抛弃了函数,把对象作为程序的基本单元。那么对象到底是个什么东西呢?对象就是对事物的一种抽象描述。人们发现,现实世界中的事物,都可以用数据和能力来描述。比如我要描述一个人,数据就是他的年龄、性别、身高体重,能力就是他能做什么工作,承担什么样的责任。描述一台电视,数据就是它的屏幕尺寸、亮度,能力就是播放《葫芦娃》。
  面向对象的世界里,到处都是对象。对象不光有数据和能力,还可以接受命令。例如你可以让狗这个对象吃狗粮,就可以把吃狗粮的命令发给狗让其执行,然后我们就实现了狗吃狗粮的需求。
  现在对象有了,如何进行面向对象的编程呢?很简单,依次向不同的对象发送命令就可以了。回到上面的例子,用面向对象来实现,我们会先定义一个冰箱对象,它的数据就是当前的冷冻温度,或者该冰箱已经有了多少头大象,能力就是开门、关门。还有一个大象对象,它的数据可以是大象的智商、体积,能力就是自己跑到冰箱里去。然后我们依次:
  向冰箱下达开门的命令。
  向大象下达进冰箱的命令。
  向冰箱下达关门的命令。
  面向对象有很多特性,你可能听说过继承、封装、多态的概念,但我不准备在这里讲这些(可能后面的文章会介绍),我就说下我理解的面向对象,最重要的两个特性。
  自己的事情自己做。
  我们创建的对象,应该是刚刚好能做完它能做的事情,不多做,不少做。多做了容易耦合,各种功能杂糅在一个对象里。比如我有一个对象叫汽车,可以行驶,可以载人,现在的需求是要实现载人飞行,就不能重用这个对象,必须新定义一个对象飞机来做。如果你给汽车插上了翅膀,赋予了它飞行的能力,那么新来的同学面对你的代码就会莫名其妙,无从下手。
  面向接口编程。
  现在我们把数据和行为都封装到了对象里,相当于对象成了一个黑匣子,那我们怎么知道对象具有什么样的能力呢?这个问题的关键就是接口。关于接口,之前的文章《5分钟理解什么是接口》有过介绍。对象把它的能力通过接口的方式公布出来,自己则成为接口的实现者。这样调用者就不用关心接口背后的对象是什么东西,如何实现的了。还是上面的例子,产品经理现在说要把大象放洗衣机里,通过我们的分析,洗衣机也需要有开门、关门的能力。那么我们就可以抽象出一个接口来,它就是开门和关门的能力集合,假设我们称之为大象之家接口。我们的对象冰箱、微波炉、洗衣机都实现大象之家的接口,尽管实现方式不一样,但是在外界看来,它们都是一样的,都是可以盛放大象的容器。这样我们编程的时候就可以这样写:
  向大象之家下达开门的命令。
  向大象下达进冰箱的命令。
  向大象之家下达关门的命令。
  至于大象之家到底是个什么东西,我们不care。即使哪天变成了马桶,开门和关门的具体实现交给负责马桶对象的同事,我们只管调用就可以了。
投诉 评论

作为产品经理,你的核心技能是什么?我做产品时间不长,如果让我选三个产品经理的核心技能,那么我的答案会是这三个:让对的事情持续发生让信息高效流动起来让组织合作顺畅进行到如今,人人都是产品经……作为产品新人,我是如何做产品测试的春节前,笔者一直为项目准备上线的产品做产品测试。在还没真正接触产品测试前,我曾阅读了苏杰老师的一篇文章:产品菜鸟没人带怎么快速上手,其中提到产品测试是产品新人上手的手段之一。在……从市场出发,将用户分层定义前面三篇文章介绍了产品定位的最初的文档的撰写方式,但产品定位并不会因为文档写完而结束。定位文档是产品经理跟直属领导进行沟通梳理的凭证,让手中有资源的领导们了解自己对产品的构思,……实战案例:从降低客服成本问题,说说解决问题的通用流程在网上看到有人提起怎样有效降低客服成本的问题,回想起当初刚从技术转型产品时,手头上第一件负责的事情就是有效减少客服的外呼量,从而降低客服成本。现在对那时候的经历做一个回溯,一是……周鸿祎做好产品的六字真言:刚需、痛点、高频对于很多传统企业来说,拥抱互联网和花钱买技术是同义词,不外乎云计算、大数据、社交网络、移动终端这些概念。但正所谓功夫在诗外,检验技术革新的唯一方法还是用户是否买单,产品能否解决……送给刚入行的产品经理们,我的需求之见对于互联网项目来说,第一步是要做什么呢?如果比较专业的肯定会回答你,肯定是做市场调研啊,搞搞MRD,BRD什么,搞明白了自己要做什么。然而对于现在大多数互联网企业或……8个源自谷歌值得一看的用户体验观点最近工作事情多,两个月没动笔,惭愧。近期读了不少书,这本最有收获,HowGoogleWorks,今天把一些有趣的点记录下来,结合用户体验设计行业,做一些个人的粗浅思考与注解,抛……产品学习笔记所谓产品汪,你认识吗?前几年做开发的时候,我写过两个开发系列,分别是Android学习笔记和iOS学习笔记,现在,我做产品,记录下我的产品学习笔记。今天分享第一篇,谈谈我们自己,产品汪们。我做……产品经理:如何构建产品和用户关系模型移动互联网产品打造过程中,产品经理们往往只按照boss的要求设计,很少有人会对“产品逻辑”的形成产生质疑。但“大多数创业者在构建产品时,都容易犯一个严重的逻辑错误。”……五分钟理解什么是面向对象昨天讲了MVC,有同学表示还想了解一些软件开发架构方面的姿势。我琢磨了半天,列了不少技术名词,本来想挑一个出来讲一讲,写了一半发现有很多前置知识之前没涉及,于是决定把坑填一填,……Android适配的那些P事声明:本文从设计角度说明设计稿及倍图适配问题,不含前端技术,码农慎入首先我们看看百度搜索引擎上常见的认识入手:图1:屏幕分辨率和常见屏幕密度关系我们知道屏幕密……产品新人一年的产品经历,产品经理的世界是这样的楼主普通二本院校毕业,毕业后作为管培生进入一家传统公司开始接触互联网,但后来由于公司战略的突变,顿感无法再汲取专业的互联网知识,于是9个月时跳槽到某著名互联网公司的产品外包岗。……
选择配色方案的亮度手机产品的信息架构AndroidUI之困境:统一还是分化感想如何“极致”设计别忘了“内容”也是用户体验瞬间的快感之细节提升用户满意度手机Webapp应用研究网站分析方法系列分析页面区块价值读设计看需求设计的复用“突破”平台UI膜拜由iPhone想到的手持设备的可用性研究小学五年级感恩父母的征文廊坊临空兴航全球物流港启动建设关于秋天的树叶作文秋天的树叶团结就是胜利作文900字国庆节贺卡手工制作二十出头:你一无所有,却让全世界羡慕为什么。。?杨振宁翁帆结婚16年无子,看了杨教授退休金,网友翁帆没白等福利加法:空喊口号是留不住人的印度殿堂级美人,明眸善睐瑰姿艳逸,高种姓奢华纱丽太惊艳同是帝王,为何阎君对李世民躬身相迎,李渊父子却只能成游魂野鬼安全上网主题班会教案

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找作文动态热点娱乐育儿情感教程科技体育养生教案探索美文旅游财经日志励志范文论文时尚保健游戏护肤业界