面向对象介绍
#如果想在计算机中描述世界,就要遵循现实世界的一些规则
#面向对象就是遵循现实世界规则的一种编程范式

世界万物,皆可分类
世界万物,皆为对象

只要是对象,就肯定属于某种品类
只要是对象,就肯定有属性(属性可以理解为它的名字)

你是上帝
地球
山川,河流,大海,森林
飞禽走兽,
飞禽
几百种鸟
布谷鸟  飞,吃虫子,下蛋,唱歌
乌鸦    飞,吃虫子,下蛋,叫
#虽然是不同的鸟,但是有重复,因此可以先 建立 飞禽 模型
飞禽   飞,吃虫子,下蛋
布谷鸟      唱歌
乌鸦        叫
#这样就不用重复做,飞,吃虫子,下蛋的功能了
走兽
狮子  森林之王
老虎  百兽之王  
人,思考,说话,吃喝拉撒睡
#计算机中,可以建造角色

面向过程 VS 面向对象
编程范式
       编程是 程序员 用特定的语法 + 数据结构 + 算法组成的代码来告诉计算机如何执行任务的过程,一个程序是程序员为了得到一个任务结果而编写的一组指令的集合,正所谓条条大路通罗马,实现一个任务的方式有多种不同的方式,对这些不同的编程方式的特点进行归纳总结得出来的编程方式类别,即为编程范式。不同的编程范式本质上代表对各种类型的任务采取的不同的解决问题的思路,大多数语言只支持一种编程范式,当然也有些语言可以同时支持多种编程范式,两种最重要的编程范式分别是面向过程和面向对象编程。
#类,字典等,都是数据结构
面向过程编程(Procedural Programming)
        Procedural programming uses a list of instructions to tell the computer what to do step-by-step.面向过程编程依赖--procedures(就是过程的意思), 一个 procedure 包含一组要被进行计算的步骤,面向过程又被称为 top-down languages, 就是程序从上到下一步步执行,一步步从上到下,从头到尾的解决问题。基本设计思路就是程序一开始是要着手解决一个大的问题,然后把一个大问题分解成很多个小问题或子过程,这些子过程再执行的过程再继续分解直到小问题足够简单到可以在一个小步骤范围内解决。
#写代码时更关注,如何把问题一步一步解决掉。
       这样做的问题也是显而易见的,就是如果你要对程序进行修改,对你修改的那部分有依赖的各个部分你都也要跟着修改,举个例子,如果程序开头你设置了一个安量值为1,但如果其它子过程依就这个值为1的变量才能正常运行,那如果你改了这个变量,那这个子过程你也要修改,假如有一个其它子程序依输这个子过程,那就会发生一连串的影响,随看程序越来越大,这种编程方式的维护难度会越来越高。
       所以我们一般认为,如果你只是写一些简单的脚本,去做一些一次性任务,用面向过程的方式是极好的,但如果你更处理的任务是复杂的,且需要不断送代和维护的,那还是用面向对象最方便了。
#现在,备份脚本不是脚本了,而是一个备份软件,需要卖给其他公司,各个公司的情况是不同的,涉及到各种环境的兼容
#这是,就涉及到面向对象了

面向对象编程(Object-Oriented Programming)
       OOP编程是利用 “类” 和 “对象” 来创建各种模型来实现对真实世界的描述,使用面向对象编程的原因一方面是因为它可以使程序的推护和扩展变得更简单,并且可以大大提高程序开发效率,另外,基于面向对象的程序可以使它人更加容易理你的
代码逻辑,从而使团队开发变得更从容。
#比如人类,可以从很多维度划分;为什么要从各种维度进行划分?黑人?白人等?方便统计?
#比如动物,可以想到很多;狗和猫有共同属性,也有很多不同属性
#那么如何在计算机中描述这些属性,需要分清相同和不同
#比如手机是电子产品类,电子类的属性是必须要通电,手机打电话是一个功能,发短信也是,比如 iphone8,是一个型号,这个型号也是它的属性。
#如果直接说手机,想到的是一些手机品牌,而不是具体的手机
#手中实实在在的手机,比如 iphone8 ,是一个具体的物体,是一个存在的对象
#如果是面向过程,别人看代码需要一个一个从头开始看,必须从头看到尾,整个逻辑才能清晰。
#面向对象先从大方向入手,一块块的看。


面向对象的几个核心特性如下
class 类
一个类即是对一类拥有相同属性的对象的抽象、蓝图、原型。在类中定义了这些对象的都具备的属性(variables(data)) 、共同的方法
object 对象
一个对象即是一个类的实例化后实例,一个类必须经过实例化后方可在程序中调用,一个类可以实例化多个对象,每个对象亦可以有不同的属性,
就像人类是指所有人,每个人是指具体的对象,人与人之间有共性,亦有不同
#按照类出来的东西,又叫对象,又叫实例
#类只是创造的模型,不代表具体的任何东西,是一个抽象的模型
#一个模型,可以造很多鸟,每个鸟都可以有自己不同的属性


#以下是类 真正的三大特性
Encapsulation 封装
在类中对数据的赋值、内部调用对外部用户是透明的,这使类变成了一个胶囊或容器,里面包含着类的数据和方法
#比如,人的器官,造好后,不能拿出来,只能访问人,器官对别人不可见,所以就是透明的,访问不到
#造对象时,有些东西是需要封装的

Inlheritance继承
一个类可以派生出子类,在这个父类里定义的属性、方法自动被子类继承
#人肯定会和父亲有相同的地方,上帝造人时,不想自己造了,能够自己生
#和人类的继承是相似的

Polymorphism 多态
       多态是面向对象的重要特性,简单点说:“一个接口,多种实现”,指一个基类中派生出了不同的子类,且每个子类在继来了同样的方法名的同时又对父类的方法做了不同的实现,这就是同一种事物表现出的多种形态。编程其实就是一个将具体世界进行抽象化的过程,多态就是抽象化的一种体观,把一系列具体事物的共同点抽象出来,再通过这个抽象的事物,与不同的具体事物进行对话。对不同类的对象发出相同的消息将会有不同的行为。比如,你的老板让所有员工在九点钟开始工作,他只要在九点钟的时候说:“开始工作” 即可,而不需要对销售人员说: “开始销售工作”, 对技术人员说:“开始技术工作”,因为 “员工” 是一个抽象的事物,只要是员工就可以开始工作,他知道这一点就行了。至于每个员工,当然会各司其职,做各自的工作。
#员工是一个类,公司分为 销售 技术 HR 若干种, 销售部,技术部下面是具体的人;销售部,技术部,分别都是一个类
#都是从员工类继承的
#老板说开始工作,直接调用员工类,下面各个部门的大家就都开始工作了
#不论下面是什么,只需要调用员工工作,大家就都工作了
#这就是一个统一的接口,多种实现:技术开电脑,销售打电话,实现不一样,但都是工作
#老板只需要直接 “start work” 调用 员工类

更多相关文章

  1. Java并发编程学习3-可见性和对象发布
  2. Python编程必备5大工具,你用过几个?
  3. 网页游戏用的什么编程语言
  4. 每日一课&(OSI七层模型数据封装全过程与物理层)
  5. 当Adobe在使用过程中出现“非正版提示”时的解决方法
  6. 编程利器!Facebook发布基于NLP的代码搜索工具
  7. 20201203 函数式编程与函数不同
  8. JavaScript面向对象编程理解
  9. 3.19 部署基于Linux的Platform Services Controller详细过程

随机推荐

  1. 几道和「黑洞照片」那种海量数据有关的算
  2. 2020 年 Python 开发者调查报告:PyCharm
  3. 程序员用python给了女友一个七夕惊喜!
  4. GitHub 热门:实用 Python 编程
  5. 使用Nginx 代理应用服务的端口,以及ssh连
  6. LeetCode 上最难的链表算法题,没有之一!
  7. Stack Overflow 热帖:如何用 Python 调用
  8. 干货 | 滴滴 数据分析原来是这样做的!
  9. 几道 BAT 算法面试中经常问的「字符串」
  10. 11 月编程排行榜:Python “打败”Java 成