在这个例子里,描述算法的类就叫模型类。而这个例子实现的功能比较简单,主要实现用户点击窗口之后,在窗口上画线,并把所有画的线记录起来,以便窗口刷新时还可以显示出来。要实现这个目标,需要使用数据结构来保存直线的起始和终点位置。而负责这方面工作的,就是模型类。模型类设计上,使用了Python里内置类型列表来保存所有坐标点属性。这个例子的代码如下:
#开发人员:蔡军生(QQ:9073204) 深圳 2014-9-6 #模型类 class Model: def __init__(self): self.ptList = [] self.maxList = 2000 def AddPoint(self, x, y, isStart): if len(self.ptList) > self.maxList: self.ptList.remove(0) #以元组的方式保存到列表 self.ptList.append((x,y,isStart)) def GetPoint(self): return self.ptList
在Model类里,在构造函数__init__里定义了一个列表self.ptList ,以限定了最多保存多少个数据点self.maxList ,有了这两个数据结构,就可以保存直线的起点和终点数据,以及限制列表的大小,否则列表会无限增大,导致系统没有内存可用。定义了函数AddPoint来增加直线的起始点和结束点,在这里通过元组的形式(x,y,isStart)来记录一个坐标点的属性,其中x和y分别X轴和Y轴的坐标点,isStart是表示该点是否直线的起点,否则就是终点。最后定义了函数GetPoint,用来获取列表里的数据。通过这个类的代码来看,这个类只定义增加数据和获取数据的功能接口,至于数据怎么样保存,怎么样处理,完全是类内部的事务。如果那一天,需要把坐标点的值添加一个偏移量才可以返回,那直接在返回函数里进行计算即可,外面调用者不关心这样业务的变化,从而达到隐藏业务逻辑和算法。
时间: 2024-11-03 22:50:17