1、面向对象与图形编程Lu Chaojun, SJTU 2数据与操作 :传统观点 数据类型 某种值的集合 运算 (操作 )的集合 计算就是对数据进行操作 数据与操作分离 数据是被动的 ,操作是主动的 例如 :string类型的值是 abc等 ,对串的操作有 +,*,len()等Lu Chaojun, SJTU 3数据与操作 :面向对象观点 对象 (Object):集数据与操作于一身 . 对象知道一些信息 对象能对那些信息进行处理 计算 :向对象发出请求操作的消息 . 主动的数据类型 面向对象 (Object-Oriented):软件系统由各种对象组成 ,对象之间通过消息进行交互 . 现代软件系统几
2、乎都是 OO设计和实现 .Lu Chaojun, SJTU 4OO基本概念 类 (class):描述同类对象的共性 包含的数据任何类型的数据 ,甚至可以是对其他对象的引用 . 能执行的操作 (方法 ) 对象 (object):类的 实例 (instance) 同类的不同对象可有不同的数据值 (实例变量 ),但能执行的操作是一样的 创建对象 :使用类的 构造器 (constructor).(,) 消息 :请求对象执行它的方法 .(,)对象的方法 不同对象当然提供不同的操作 对象一般都提供读取它的实例变量值的方法 ,统称为 accessor. 例如 Point对象的 getX()和 getY(),
3、 Line对象的getP1()和 getP2(). 对象一般也提供修改其实例变量的方法 ,统称为 mutator. 例如所有图形对象都有 move(dx,dy)方法 .Lu Chaojun, SJTU 5图形编程 图形用户界面 (GUI) 图形编程框架 Python的 Tkinter 本书作者写的图形库 :graphics.py放入合适文件夹import graphics或from graphics import *后者可使引用库函数更方便开始编写图形程序Lu Chaojun, SJTU 6图形窗口 图形窗口 :画图的地方win = graphics.GraphWin()win = Graph
4、Win()用 from语 句引入 图 形 库时 可写成 这样 创建 GraphWin类的对象 ,并赋值给变量 win.试试 : type(GraphWin)和 type(win)分别是什么 . 通过给对象 win发消息 ,让对象做事情 .例如 :win.close() 窗口是由像素 组 成的 :默 认 大小 200*200 画 图 :实际 就是控制各像素的 颜 色 .Lu Chaojun, SJTU 7点 点 :图形窗口的一个像素 ,位置用坐标 (x,y)表示 . 坐标系统 原点 (0,0):左上角 x轴 :自左向右 y轴 :自顶向下 小测试 :默认大小的图形窗口 ,右下角坐标是 ?Lu Chaojun, SJTU 8点 (续 ) 创建 Point类的对象Point(,)例 : p = Point(50,60)对 Point对 象的操作 求坐 标p.getX(), p.getY()在窗口中画自己p.draw(win)Lu Chaojun, SJTU 9线段 创建 Line类的对象Line(,) 例如l = Line(Point(0,0),Point(100,100) 对 Line对 象的操作 在窗口中画自己l.draw(win)Lu Chaojun, SJTU 10