第五讲:面向对象

培训目标

  1. 了解面向对象的含义、主要概念
  2. 掌握类继承的写法
  3. 掌握简单对象的封装

课程笔记

1.面向对象和面向过程的区别:

  • 面向过程的特点: 分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用;
  • 面向对象的特点: 系统中的基本构件可识认为一组可识别的离散对象,对象具有唯一的静态类型和多个可能的动态类型,在基本层次关系的不同类中共享数据和操作;

2.面向对象与面向过程的优缺点:

  • 面向过程的优缺点:

    优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、 Linux/Unix等一般采用面向过程开发,性能是最重要的因素。

    缺点:没有面向对象易维护、易复用、易扩展

  • 面向对象的优缺点:

    优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统 更加灵活、更加易于维护

    缺点:性能比面向过程低

3.面向对象的基本概念-类和对象:

  • 类: 类指的是生活中有共同特性的一类实物,抽象的描述一类实物所特有的属性和行为
  • 对象: 对象是一个具体的事物,拥有其所属类的所有属性,而且每个属性都是一个特有的值
  • 类与对象在python中的代码表述

    • 类的初始化
    • 类方法的分类和调用
    • 实例化对象

4.面向对象的基本特征:

  • 封装

    • 含义: 隐藏对象的属性和实现细节,仅对外提供公共访问方式
    • 优点: 隐藏实现细节,提供公共的访问方式;提高安全性
  • 继承

    • 含义: 子类继承父类的特征和行为,使得子类对象(实例)具有父类的属性和方法
    • 优点: 避免重复操作,提升代码的复用程度
  • 多态

    • 含义: 让具有不同功能的函数可以使用相同的函数名,这样就可以用一个函数名调用不同内容(功能)的函数
    • 优点: 增加代码的外部调用灵活度,让代码更加通用,兼容性比较强

5.面向对象在自动化代码中推荐使用的模块

  • 结构比较复杂的模块(如构造redis整组安装,dble图形化配置分片的数据模块)
  • 参数比较多的模块(如构造MySQL实例安装时的数据模块)
  • 使用同样的接口做类似操作的一系列模块(如各种组件的安装,启停,卸载)

6.面向对象的进阶–设计模式(介绍)

    原则:

  • 开闭原则--对扩展开放,对修改关闭
  • 单一职责原则--一个类负责一项职责

参考网站:https://www.cnblogs.com/Liqiongyu/p/5916710.html

练习题

题目一

设计一套 Redis 类,使其能打印 Redis Cluster Group 内包含的属性:

redis cluster group 类里面包含几个 group 的属性和 redis sharding 类,redis sharding 类里面包含几个 sharding 属性和 redis instance 类,redis instance 类里包含 instance 属性。

题目二

设计一个登陆类,里面包含三个属性(用户名,密码,确认密码)。对其输入做控制(控制规则可以自行定义)。

题目三

利用继承和多态设计以下三个类:平行四边形类,矩形类,菱形类。