小白眼中的面向对象

前言:
每当提到面向对象的时候,初学者肯定都是一脸懵逼的状态,到底什么是面向对象?会用面向对象后有什么牛逼之处吗?不会用是不是就会死掉?答案肯定不会死掉,我们可以来简单的举一
  个栗子

  1、当你想到熊猫的时候你想到了什么? 答:“国宝”
  2、当你看到“国宝”穿上衣服的时候你想到了什么名字? 答:“功夫熊猫”;
  

  其实你可以理解成面向对象就是一种武功!你可以想象一下会武功和不会武功的人有什么区别?“走路带风、飞檐走壁、不食人间烟火、让妹子一看你就走不动路了....”,好咱们先意淫到
  这里,接下来你可以在想一下普通人不会武功能不能在这个社会上生存,答案是肯定可以,接下来咱们回到咱们的编程中,如果你不会面向对象难到就不能写代码了吗?不会的,你还会继续
做你的码农!
只是当你会用面向对象写东西的时候你就会发现你的思维逻辑、你的撸代码的水平、以及你撸代码的姿势都不一样了。因为你有可能在一点点的走向中级或者高级程序员!!!好了我不装逼了
下面我们正式开始了解面向对象

首先我们先来了解下我们以前写代码的一种思路:面向过程
  
什么是面向过程?
  我们先来举第一个小"栗子"

   当刚进游戏的时候我们肯定会先学习盲僧的Q技能,然后等等级上来以后我们在去学习盲僧的W技能,等到3级以后我们在去学习盲僧的E技能,依次类型,最后等到6级的时候我们肯定会
   学习R技能,因为你迫不及待的想秀一波你的R闪-------其实编程就像咱们玩游戏一样技能一步一步的来。在编程里面如果我们想要做某一个效果,首先我们必须获取到相关的对象,然
   后在给这个对象加一些相应的预处理函数......然后在做下一步操作!其实向这样的一个过程就是面向过程的编写方式!其实你也可以理解成javascript的同步操作!同步操作?什么是
   同步?老师你在搞什么鬼,面向过程我还在懵逼状态怎么现在又跑到同步操作了?别急我们一步步来

什么是javascript中的同步&&异步?
  我们又要看例子了!
    同步:在javascript的编程思想里面你可以这样理解----》买菜--->洗菜--->切菜--->炒菜!这4步就是一步一步地完成,它的顺序很重要,你只能一步步去实现!这样的一个过程
       其实就是同步,在咱们的编程中顺序执行其实就是同步的思维,你也可以理解成当去执行某一件事件的时候就不能再去执行其他事件了
   异步:边洗脚边看电视、边唱歌边跳舞、边打LOL边骂人、边吃饭边上厕所(貌似这个栗子有点味道)...其实异步也就是当去执行某一件事情的时候不会影响另一件事情的执行

当我们了解了什么是同步和异步后我们在回来看一下什么是面向过程?
  上面我们已经解释了面向过程跟我们的同步特别类似,所有的事情都是一步步来执行的,无法跳过某一个环节去执行下一个环节,例如你总不能不买菜就去炒菜了吧?在咱们的代码中也是
  这样的你必须先获取一个对象然后在给这个对象加一个事件;这样的一些过程其实就是面向过程
   
最后我们以专业的角度来解释下面向过程
  面向过程:以过程为核心,解决问题时,考虑的是每一步该怎么做

面向对象

  什么是面向对象?
    我们先用大白话来解释一波:面向对象的思想最早不是在编程中出现,而是在管理学中出现的。举一个栗子:一个公司布置了一个任务,给其中的一个领导者分配了10个人,他用了
    10天时间完成了这份工作,而另一个领导者分配了5个人,用3天时间就完成了这个工作。后者是觉大多数公司最想要的一个人才,因为这个人能够懂得如何合理的分工,分配任务。
    
  
    而在我们代码中也是一样的,同样一个功能如果一个人去写那么可能会耗费很长时间,当写完这个功能的时候,产品狗又让你去修改某一块的一个需求的时候你回瞬间崩溃,因为每一
    个程序员都有一个共同的心声,那就是让我写代码行,但是千万别让我去改代码。但是如果我们要用面向对象的思维去书写代码的时候我们就在也不用害怕产品狗让我们去改某一个需
    求了,因为面向对象的思维就是把一个“大问题分成若干个小问题,并试图分工协作来完成”,这也是我们今后要学习模块化的一个思想

    说了这么多概念性的面向对象思想,下面我们来举一个实际的栗子来了解一下面向对象的思想
 
  
  谷歌的模块化手机
      

    谷歌的模块化手机其实跟我们的面向对象编程思维特别类型,这款手机的一个优势就在于
      如果摄像头坏了,你只需要换一个摄像头模块就可以了
      如果手机听筒坏了,那么你只需要换一个手机听筒的模块就可以了
      如果你想给这个手机安装一个外接键盘,那么只需要安装一个外接键盘的模块就可以了
      如果你想给这个手机安装一个定时炸弹,那么你只需要安装一个定时炸弹的模块就可以了......
    我们的面向对象编程思想也是如此,我们可以把一个功能中的一些方法当做一个模块,这样我们就可以分工协作,同样也不用担心某一个环节需要有所变动,如果需要有变动那么我们只
    需要改动相应的模块即可

 下面我们在来举一个栗子------(请不要嫌我啰嗦,只要你能明白了面向对象的编程思维那么编写代码更本就不是问题)
    我们可以想一个问题,在远古时代有没有这样一种人,他的心肝脾肺肾可以用一个器官来代替?可能会有这样一批人,但是这样的一批人为什么没有活到了现在呢?因为他们的弱点非
    常明显,想要杀死这个人只需要把这个综合器官干掉就可以了,这也是好多科幻电影里面的场景,一个boos特别厉害,但是到电影快要结尾的时候发现了它某个弱点,然后一个大招把
    他给干死了。
    回到现实当中,现在人的身体其实就可以理解成一个面向对象的编程思维,身体的每一个器官都是一个模块,都负责相应的事情,如果某一个器官出了问题那么只需要去根治这个器官就
    可以了,而不至于死亡!

以上的一些栗子就是面向对象的编程思维,不知道大家能不能理解。下面我们将总结一下面向对象的编程思维

  面向对象的编程思维:面向对象思维主张的是:团队---配合---分工---协作,将大问题拆分成诺干个小问题,并试图用分工协作来完成。这也是我们长说的一句话“高内聚、低耦合”

原文地址:https://www.cnblogs.com/LiuBaoy/p/11242091.html

时间: 2024-11-13 08:05:41

小白眼中的面向对象的相关文章

弱弱的小白记录之——面向对象实现简单的歌曲管理信息

实现简单的面向对象方法来管理歌曲信息的增删改查. 数据驱动思想,也可以理解单项数据绑定,既:数据发生变化,页面也跟着变化: 思路: 使用构造函数来存储数据信息: 使用原型来存储方法(增删改查): 修改方式中方法使用到的数据,由变量转为对象的属性: 代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Docum

我眼中的面向对象思想

第一次听说面向对象,是在第一次学习编程语言--C语言时,听老师说的“C语言是一门面向过程的语言,而C++和JAVA等更高层的语言是面向对象的”.当时听上去很高端的感觉.后来真的接触到了C++语言,C++并不是全面向对象,它向下兼容C,必然也能写面向过程的程序. 那究竟什么是面向对象呢?面向对象就是一种抽象思维. 比如:做一件需要很多步骤的事情. 用面向过程的思维去做,注重的是过程,也就是做事的时候,考虑我该先做什么,再做什么:我该把什么事做多少遍:我该选择做什么而不做什么.这样一步一步下去,最后

我眼中的面向对象分析

面向对象 似乎我也没学过其他的编程思维方式了,面向对象是我编程时常用的思维方式,因为我觉得它更加贴近于我们的生活,更加容易地去理解和定义程序想要表达的内容.正是因为如此,每当项目要开启的时候,我都会使用该种思维来分析和设计程序.多年下来发现它确实有着它的魅力,帮助我解决了很多设计中的问题.于是我总结了一下,在下面章节中说说面向对象使用上的一些心得. 给你的程序分"类" 面向对象的基础就是"类"的设计,其设计好坏直接影响到程序的结构.那么,如何才能设计出合理的类型呢?

cocos2d-x模型加载的重构,我眼中的面向对象

这两天在写cocos2d-x加载ogre的mesh模型的东西,完成了一半了,还差动画文件没接进来.这篇文章并不是教如何加载模型文件的,因为那种东西没什么可教的,无非就是加载文件,然后解析出自己想要的顶点.关键帧等数据,最后给coco2d-x中的MeshData赋好值.这里我想表达一些我有关代码格式.代码设计.代码重构的想法,我会分一些有关或者无关的问题,来逐一分析. 一.为什么要支持多种模型格式?cocos2d-x自己定义一种新的格式c3d.c3t这样好不好? 首先,我认为,一个成熟的游戏引擎不

小白眼中理解的人工智能及其假设实现(一)

这几天上课的时候在想,如果机器能真正做到和人一样做到独立思考的话,那我是不是就可以不用编程了.只要让他学习编程语法的规则,让他知道要开发什么东西,基于计算机强大的数据处理能力,那开发的过程他是不是一下子就能够搞定了. 所以我想了想人和计算机对于思考方式的区别: 人能够思考,能够理解别人说的话,计算机理解不了,只能依靠编程语言.我们即使在计算机上面加上了一个考虑到所有情况的中文数据库,让他根据我们说的话搜索出对应的特定的语句反馈出来的话,那他始终也还是根据人制订搜索数据库的规则给出最终的结果,在我

[小白眼中的统计]差异性检验与一般线性模型(1)

用SPSS的童鞋都知道,我们常用的方差分析(ANOVA)在一般线性模型(General Linear Model,简称GLM)的菜单下.那GLM是何许人也呢?让我们打开万能的wiki,键入General Linear Model...看到的居然是一张毫无违和感的Fitting Plot: 以及传说中的多元(线性)回归公式: $Y_{i}=\beta_{0} + \beta_{i1}X_{i1} + \beta_{2}X_{i2} + ... +  \beta_{p}X_{ip} + \epsil

黑马程序员【Java中的面向对象】

Java中的面向对象 在软件开发的学习中, 我最先接触的开发语言就是java,但都是简单的函数和循环数组的应用.说道面向对象,第一次看到这个词的时候还是在C#的学习过程中,我记得当时PPT上霸气的解释,什么是对象?万物皆对象!够霸气吧,当时的面向对象思想对我来说还是挺崩溃的,什么继承多态啊!经过了无数的联系项目的书写,终于对面向对象有了一定的理解,现在刚好在java的学习中再度重温面向对象,那么就将我眼中的面向对象写出来分享给大家. 说到面向对象,我们就不得不提一下他的三大特性,继承封装和多态.

用 ul li 做的类似 select 选择框的效果

这里使用构造-原型组合模式来创建了一个 DropDown 对象,构造-原型组合模式解释:属性写在构造函数中,是表示每个实例独有的属性,让对象具体化:方法写在构造函数外,是为了表示每个实例共享的方法.Android 系统将尽量长时间地保持应用进程,但为了新建进程或运行更重要的进程,最终需要清除旧进程来回收内存. 为了确定保留或终止哪些进程,系统会根据进程中正在运行的组件以及这些组件的状态,将每个进程放入“重要性层次结构”中. 必要时,系统会首先消除重要性最低的进程,然后是清除重要性稍低一级的进程,

大象——Thinking in UML

大象--Thinking in UML 大音希声,大象希形, 近来闲暇,随手翻起一些曾经看过的书籍,才发现又有新的收获. 面向对象 面向对象 在如今的软件行业是一个很著名的术语,以至于 人们以为面向对象是现代科学发展到一定程度才出现的研究成果 . 普通民众的面向对象 在很多人看来,面向过程 和 面向对象 都是一种软件技术 ,例如 把面向过程归纳为结构化程序设计.DFD图.ER模型.UC矩阵等,而面向对象则被归纳为继承.封装.多态.复用等具体的技术. 事实上,上述的所有技术都只是人们在采用不同的方