每一天,都会有无数初入编程大门的新手们百度着“什么是面向对象编程?”

而大多数情况下,他们都会看到一堆诸如“封装、继承、多态。。。”之类的艰深晦涩之词。然后是一段类似:

class a {a();~a();private:int b;public:void c();
};

然后告诉读者们,这就是面向对象。
一脸懵逼的新手们,大部分是在这个坎上放弃了学习编程,觉得这太抽象了,编程太难了。
还有一部分继续学习的,却始终没有理解面向对象的含义,觉得自己会写代码就行了。
造成这种现象的原因,不是那些博客写的不好,也不是面向对象的定义不清楚,而是因为面向对象本身就是一门浓缩的哲学。要想理解哲学可没有那么容易。

那么究竟啥是面向对象呢?我们通过一个小故事来理解:

上帝创世

那是上帝创世的第六天,上帝起床觉得没事做,就随手捡起一把泥,按照自己的样子捏了起来(这不是女娲造人吗)。
于是他捏了头、身体、四肢,并把他们组装在一起。
一开始,上帝是先捏一堆四肢,再捏一堆头,再捏一堆身体,最后再看情况组装的。但粗心的上帝发现这样捏出来的人,很容易就出差错。比如:这个身体明明是为张三设计的,却装到了李四身上;或者不小心拿大象的腿给人装上了。
于是上帝决定,制定一个标准,只有符合这个标准的才叫人。也就是一个类(Class)——“人类”之所以叫“人类”也是这个原因。依据这个标准,上帝制造出了一个人,称为对象(Object)

每个人都有自己的属性——成员变量,和动作——成员方法。于是每个人看起来是这样的:

class Human {Human();~Human();private:int height;int weight;public:void eat();
};

其中height,weight是两个成员变量,eat() 是成员方法
上帝创造一个人时看起来是这样的:

Human zhangsan();

于是上帝愉快的按照这个标准制造着人类,再也没有出过错。每个人都一目了然,再也不会和别的生物弄混了。

就此,面向对象诞生了。

面向对象所创建的每个对象都是独立的,程序以对象为基本单位进行设计,让程序看起来更加友好,更加清晰,程序的功能也获得了飞升。

面向对象——浓缩的哲学1相关推荐

  1. vue 混入对象_特性和混入不是面向对象的

    vue 混入对象 让我立刻说,我们将在这里讨论的功能是那些迫切需要进行放线手术的人带给面向对象编程的纯粹的毒药 ,就像David West在他的< Object Thinking>一书中所 ...

  2. 特性和混入不是面向对象的

    让我立刻说,我们将在这里讨论的功能是那些迫切需要进行放线手术的人带给面向对象编程的纯粹的毒药 ,就像David West在他的< Objecting Thought>一书中所建议的那样. ...

  3. 面向过程、面向对象 的模型和方法

    概念与思想 "面向过程"(Procedure Oriented)是一种以"过程"为中心的编程思想,所谓"面向过程"的编程就是以"什 ...

  4. 面向对象思想-谈谈建筑电气设计的思想

    面向对象的程序设计语言必须有描述对象及其相互之间关系的语言成分.这些程序设计语言可以归纳为以下几类:系统中一切事物皆为对象:对象是属性及其操作的封装体:对象可按其性质划分为类,对象成为类的实例:实例关 ...

  5. 面向对象编程思想 - 月亮晶石的日志 - 网易博客

    面向对象是一种新兴的程序设计方法,或者说它是一种新的程序设计范型,其基本思想是使用对象,类,继承,封装,消息等基本概念来进行程序设计.   它是从现实世界中客观存在的事物(即对象)出发来构造软件系统, ...

  6. 面向对象编程思想及入门知识

    这几天在调程序,所以想写写自己对"面向对象编程"的一些理解,希望对打算入门计算机编程的同志们有所帮助.之前,好几个师弟问过我,C++与C有什么区别,学习面向对象语言需要掌握哪些基础 ...

  7. 面向对象先生和他的兄弟姐妹们(二)——小议【OOP、COP、AOP、SOP】

    额,发现上一篇<面向对象先生和他的兄弟姐妹们--小议[OOP.COP.AOP.SOP]>那样的写作风格确实是有点偏了额,不过作为一个非写作专业人士,这样的试水我觉得挺有意思的,哈哈!嗯,咱 ...

  8. 面向对象编程(OOP)理解

    面向对象与叫化鸡比喻 面向对象的比喻实在太多了.不知哪个比喻更能让你明白呢? 理解面向对象编程 (Object Oriented Programming 简称OOP) 所谓"面向对象编程&q ...

  9. 表达不同与构建不同: 对计算机的唯一真正的要求 (TrustNo.1 ) -- 待修改!!!...

    为什么80%的码农都做不了架构师?>>>    在研究命令式语言与函数式语言的过程中, 发现其实真正构成计算机其计算能力的东西其实很少. 比如冯诺依曼机与数据流机的区别其实非常大, ...

  10. 京东2013校园招聘软件研发笔试题

    时间:2012-9-11 地点:川大 我只能说第一家公司,不是一般的火爆.不得不吐槽一下: 京东宣讲完全没有计划,只看到个下午两点半宣讲,结果跑过去,下午两点是宣讲管培的.在川大外的德克士呆了一下午. ...

最新文章

  1. Python高级数据类型模块collections
  2. C语言通过链表指针删除链表节点的算法(附完整源码)
  3. 7.9 规划Varnish缓存
  4. [Unity] 战斗系统学习 6:构建 TPS 框架 2
  5. ffmpeg相关资源
  6. SAP ERP与国内ERP系统的对比,为什么建议选SAP
  7. rails 开发随手记 9
  8. 挂载ntfs_Linux识别移动硬盘ntfs格式
  9. 锐捷长ping_【交换机】S8606--s5750E互连接口ping大包(length=18024)会丢包
  10. oracle循环视频教程,玩转Oracle入门知识和实战教程---韩顺平主讲(全31集)
  11. 算法导论(第三版)第一章习题答案
  12. 手把手教你如何免费把多张图片合并为PDF文件,一看就懂。
  13. 微信群机器人微云助手微小云微信群淘客助手如何设置好券直播淘宝联盟优惠券自动群发
  14. 传播模型——简单的元胞自动机(3)
  15. archpr 压缩文件暴力破解
  16. 小程序云开发报出Error: errCode: -404011 cloud function execution error | errMsg: clou……错误
  17. 单例设计模式(拉勾教育大数据学习笔记)
  18. 求二叉树中的第一条最长路径长度,并输出最长路径上的节点
  19. 利用Python实现有道翻译的功能
  20. 使用Office内置的VBA编辑器实现WORD文档的批量查找替换

热门文章

  1. Kinect-播放ppt
  2. RV64和ARM64栈结构差异
  3. VMware 创建虚拟机 安装LinuxCentOS7Min(详细图)
  4. 从电子垃圾中提炼黄金,可以!!!
  5. UG/NX二次开发 旋转视图 UF_VIEW_rotate_view
  6. wordpress下载插件,安装失败,无法创建目录问题
  7. (二)Stable Diffussion 图生图模块-换头发颜色
  8. TCP/IP 和 HTTP不了解?看完这篇文章,网络知识就全懂了
  9. 已解决java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
  10. 【微服务|openfeign】@FeignClient详解