第五讲:面向对象
培训目标
- 了解面向对象的含义、主要概念
- 掌握类继承的写法
- 掌握简单对象的封装
课程笔记
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 属性。
题目二
设计一个登陆类,里面包含三个属性(用户名,密码,确认密码)。对其输入做控制(控制规则可以自行定义)。
题目三
利用继承和多态设计以下三个类:平行四边形类,矩形类,菱形类。