20201204-1 面向对象介绍

面向对象编程介绍:
为什么要用面向对象进行开发?
面向对象的特性、封装、继承、多态
类、方法、

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

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


你是上帝
地球 
山川,河流,大海,森林
飞禽走兽,
飞禽
几百种鸟
布谷鸟  飞,吃虫子,下蛋,唱歌
乌鸦    飞,吃虫子,下蛋,叫
# 虽然是不同的鸟,但是有重复,因此可以先 建立 飞禽 模型
飞禽   飞,吃虫子,下蛋
布谷鸟      唱歌
乌鸦        叫
# 这样就不用重复做,飞,吃虫子,下蛋的功能了

走兽
狮子  森林之王
老虎  百兽之王

人,思考,说话,吃喝拉撒睡

# 计算机中,可以建造角色
特性
class
object

封装
继承
多态

语法
属性
方法
构造函数
析构函数

私有方法,私有属性

类变量
实例变量

面向过程 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 ,是一个具体的物体,是一个存在的对象

# 如果是面向过程,别人看代码需要一个一个从头开始看,必须从头看到尾,整个逻辑才能清晰。
# 面向对象先从大方向入手,一块块的看。

 

posted @ 2020-12-04 10:31  Malakh  阅读(97)  评论(1编辑  收藏  举报