0%

面向对象编程

1. Overview

主要分成四个部分

  1. 面向对象的准则
  • 面向对象设计,抽象、类、封装、继承
  • 对象
  • 对象相似时
  • 异常捕获
  1. 这些准则如何应用到Python内置函数中、
  • 何时使用面向对象
  • Python数据结构
  • 面向对象的捷径
  • 字符串与序列化
  1. 设计模式
  • 迭代器模式
  • 装饰器模式、观察者模式
  • 适配器模式、门面模式
  1. 有趣的主题
  • 测试面向对象程序
  • 并发

在现实中,设计并不会在编程之前就完成,实际上,分析、编程、设计是相互重叠的。

什么是对象?对象是数据与相关行为的集合。增查删改?

什么是面向对象?用数据行为来描述真实事物。在实现的过程中分为三个阶段

  1. 面向对象分析,输出是一系列需求

确定所需的对象的对象之间的相互关系。内容包括客户访问、消除不必要的可能性

  1. 面向对象设计,输出是实现方案

将需求转化为实现方案。命名对象、定义其行为。此阶段关注的是如何完成,将需求转化为一系列类和接口,从而使得整个系统可以使用编程语言实现(理论上

  1. 面向对象编程,输出是可以运行的程序

将设计转化为可以运行的程序的过程

如果现实中也能向上面这样理想就好了。但是真实世界是更加黑暗的。在设计阶段有了更多的需求、在编程的时候设计发生了变化等。因此21世纪的开发都遵循迭代开发的模型。

  • 对象与类

利用UML图,我们可以描述类之间的关系

  • 指定属性和行为

  • 数据代表着属性,或者说特性

在设计阶段,不需要过度担心数据类型的问题

  • 行为就是在对象上的动作,或者叫方法。

分析与设计就是为了弄清楚这些对象之间如何交互

  • 隐藏细节,创建公共接口

公共接口需要仔细设计,因为在未来很难更改。

不要设计未来可能有用的对象或者建模,只建模当下的需求

  • 设计抽象的层级有不同的方法或者说设计模式,大部分都依赖于两个基本的原则:
  1. 组合。物理对象通常很容易分解为零件对象
  2. 继承。最有名但也是被过度使用的一种关系,需要满足”是一个“这种关系,而不能为了减少代码而在两个关系很小的类之间继承。
  • 多态,不同的参数排列不同的实现方式。

Python是动态语言,所以是鸭子类型,不需要严格规定类,只需要类的方法一样即可

  • 多重继承,棘手但是很有用

避免出现拥有相同方法的情况。