对象例子画圆 circ Circle(point(50, 50), 40) circ Circle center Point radius: 40 x:[50 draw( y:[50 move(
对象例子-画圆 Point 50 50 x: y: circ: Circle 40 center: radius: draw( ) move( ) circ = Circle(Point(50, 50), 40)
name John 对象例子More birthdate: 1991/1/1 name: Mary weight: 90 birthdate: 1992/2/2 height: 160 ht:50 over Weight 人 getNameo getheighto 数据姓名,出生日期,身高体重, over Weight Weight 操作:计算年龄,判断体重是否标准, get Height getWeighto 电视机 数据:型号,厂商尺寸频道数, model: CH123 操作:开机关机调频道调音量, channel: 300 室内环境 数据:温度,湿度,容积, turnOn 操作:调节温度调节湿度换算容积 turnoff chUpO 单位 chOwn volumn UpO
12 对象例子-More ◼ 人 – 数据:姓名,出生日期,身高,体重,... – 操作:计算年龄,判断体重是否标准,... ◼ 电视机 – 数据:型号,厂商,尺寸,频道数,... – 操作:开机,关机,调频道,调音量,... ◼ 室内环境 – 数据:温度,湿度,容积,... – 操作:调节温度,调节湿度,换算容积 单位
面向过程vs面向对象编程 假设一个问题涉及数据X和Y,对X要进 行的操作为),gO,对Y的操作为h(O 面向过程设计和面向对象得到的程序分别 形x f(X) g() g() 请求X执行) h(Y) 请求Ⅹ执行g0 请求Y执行h(
13 面向过程vs面向对象编程 ◼ 假设一个问题涉及数据X和Y,对X要进 行的操作为f(),g(),对Y的操作为h() – 面向过程设计和面向对象得到的程序分别 形如 X = ... Y = ... f(X) g(X) h(Y) X f() g() Y h() 请求X执行f() 请求X执行g() 请求Y执行h()
复杂数据的表示 简单数据可以用现成的数据类型表示 ■每个数据类型都包括 定义一个值的集合:如int 定义一些对值的运算(操作):如+, 复杂数据如何表示? 拆成简单数据 ■例如"学生"拆成name,age,adr等简单数据 定义新类型 例如定义类型S,其值是由 name,age,adr等构成 的整体
14 复杂数据的表示 ◼ 简单数据可以用现成的数据类型表示 ◼ 每个数据类型都包括 – 定义一个值的集合:如int – 定义一些对值的运算(操作):如+,-,*,/ ◼ 复杂数据如何表示? – 拆成简单数据 ◼ 例如"学生"拆成name,age,addr等简单数据 – 定义新类型 ◼ 例如定义类型S,其值是由name,age,addr等构成 的整体
自定义类型的值和操作 对s型数据的操作 studIum def update(s) ■分离 name age def get(s): address num def ity stud um name ■融为一体 address def update() def get() 15
15 自定义类型的值和操作 ◼ 分离 ◼ 融为一体