类的定义
类的定义
回顾 程序包括 数据 数据类型,数据结构 处理过程 ■算法 ■两种程序设计思想 面向过程以操作为中心 面向对象:以数据为中心
2 回顾 ◼ 程序包括 – 数据 ◼ 数据类型,数据结构 – 处理过程 ◼ 算法 ◼ 两种程序设计思想 – 面向过程:以操作为中心 – 面向对象:以数据为中心
数据与操作:面向过程观点 程序就是对数据进行一系列的操作 先表示数据:常量变量 再来处理数据 z =X + y print z 特点数据与操作分离 数据是被动的操作是主动的
3 数据与操作:面向过程观点 ◼ 程序就是对数据进行一系列的操作 – 先表示数据:常量,变量 – 再来处理数据 x = 1 y = 2 z = x + y print z ◼ 特点:数据与操作分离 – 数据是被动的,操作是主动的
以过程为中心 ■准备好数据之后,主要是进行数据处理 过程的设计,即算法设计. 这种设计方法中数据通常对整个处理 过程都是公开的不能隐藏数据 Y 12x y#和上一行处理同样的数据x,Y print z
4 以过程为中心 ◼ 准备好数据之后,主要是进行数据处理 过程的设计,即算法设计. ◼ 这种设计方法中,数据通常对整个处理 过程都是公开的,不能隐藏数据. x = 1 y = 2 z = x + y w = x – y # 和上一行处理同样的数据x,y z = z * w print z
复杂处理过程的设计 ■模块化 def opl(a, b) return★a-b*b def op2(a, b) 函数可以看作是更高 return a★★b+b★★a 抽象级的操作,与普通 操作似乎并无本质差别 1 x=1 3 工es=x*x-y*y result op1(x, y) print res result2 op2(x, z) 但函数有数据隐藏功能 print result result2
5 复杂处理过程的设计 ◼ 模块化 def op1(a,b): return a * a - b * b def op2(a,b): return a ** b + b ** a x = 1 y = 2 z = 3 result1 = op1(x,y) result2 = op2(x,z) print result1 + result2 函数可以看作是更高 抽象级的操作,与普通 操作似乎并无本质差别. x = 1 y = 2 res = x*x – y*y print res 但函数有数据隐藏功能
函数与数据隐藏 函数是功能黑箱 使用者需要的只是函数的功能,并不需要知 晓它内部是如何实现功能的 函数内部处理的数据不对函数外部开放 个函数不能直接访问另一个函数内部的数据
6 函数与数据隐藏 ◼ 函数是功能黑箱 – 使用者需要的只是函数的功能,并不需要知 晓它内部是如何实现功能的 – 函数内部处理的数据不对函数外部开放 ◼ 一个函数不能直接访问另一个函数内部的数据
小结:面向过程设计 数据与操作分离,以操作过程为中心 先表示数据 主要精力放在设计数据操作及其流程控制 对复杂程序采用自顶向下设计和模块化设计 将使用低级别操作的复杂过程设计成使用高级别操作的 简单过程 不适合的应用:如GU程序 没有明确的执行流程,由不可预知的事件驱动处理 过程
7 小结:面向过程设计 ◼ 数据与操作分离,以操作过程为中心 – 先表示数据 – 主要精力放在设计数据操作及其流程控制 – 对复杂程序采用自顶向下设计和模块化设计 ◼ 将使用低级别操作的复杂过程设计成使用高级别操作的 简单过程 ◼ 不适合的应用:如GUI程序 – 没有明确的执行流程,由不可预知的事件驱动处理 过程
数据与操作:面向对象观点 数据与操作不可分离 数据类型概念已经提示我们特定数据值和特定操 作是不可分割的两件事情 Q:请问x+y是什么意思? A:+对不同类型的xy值有不同意义 ■既然如此何不将特定数据值与特定操作捆绑 在一起,形成一种新型"数据"? 由此产生了对象概念
8 数据与操作:面向对象观点 ◼ 数据与操作不可分离 – 数据类型概念已经提示我们:特定数据值和特定操 作是不可分割的两件事情 ◼ Q:请问x+y是什么意思? ◼ A:+对不同类型的x,y值有不同意义. ◼ 既然如此,何不将特定数据值与特定操作捆绑 在一起,形成一种新型"数据"? – 由此产生了对象概念
对象 对象(Obec:集数据与操作于一身 对象拥有特定数据 存储在实例变量中 对象能对其数据进行特定操作 对象内的函数 对象的属性:实例变量和方法
9 对象 ◼ 对象(Object):集数据与操作于一身. – 对象拥有特定数据 ◼ 存储在实例变量中 – 对象能对其数据进行特定操作 ◼ 对象内的函数 对象的属性:实例变量和方法
对象 ■计算:向对象发操作请求消息 对象是主动的,自己掌控对其数据的操作 对象将自己能执行的操作对外公开 面向对象( Object-Orientee):软件系统由 各种对象组成对象之间通过消息进行 交互
10 对象 ◼ 计算:向对象发操作请求消息. – 对象是主动的,自己掌控对其数据的操作 – 对象将自己能执行的操作对外公开 ◼ 面向对象(Object-Oriented):软件系统由 各种对象组成,对象之间通过消息进行 交互