好书整理系列之-设计模式:可复用面向对象软件的基础 9

    技术2022-05-11  142

    附录C 基本类本附录提供我们在一些模式的C + +示例代码中用到的基本类。我们力求使这些类尽量简短。这些基本类包括:• List,对象的顺序列表。• Iterator,顺序存取聚集对象的接口。• ListIterator,遍历一张L i s t的I t e r a t o r。• Point,一个两维点。• Rect,一个轴对齐的矩形。在某些编译器中,一些新的C + +标准类型可能还未实现。特别地,如果你的编译器没有定义b o o l类型,你可以象下面这样手工定义它:C.1 ListL i s t模板类是一个用来存储一个对象序列的基本容器。L i s t存放元素的值,其元素既可以是内置类型也可以是类的对象。例如, L i s t < i n t >声明了一个整数序列。但在大多数模式中使用它来存储对象指针,比如L i s t < G l y p h * >。这样L i s t类就可以用于异质元素列表。为方便使用, L i s t类也提供了栈形式的操作。这样就可以直接将L i s t用作栈,而无需再定义新类。

    下面较详细地讨论这些操作。构造、析构、初始化和赋值List(long size)初始化列表。参数s i z e提示初始元素数目。L i s t ( L i s t & )重载缺省拷贝构造函数,以正确地初始化成员数据。~L i s t ( )释放该列表的内部数据结构的存储空间。但它并不释放其元素的数据。设计者不希望用户继承这个类,因而析构函数不是虚的。List& operator=(const List&)实现列表赋值,以正确赋值各成员数据。访问这些操作支持对列表元素的基本存取。long Count() const返回列表中对象的数目。Item& Get(long index) const返回制定下标处的对象。Item& First() const返回列表的第一个对象。Item& Last() const返回列表的最后一个对象。bool Includes(const Item&) const列表是否含有给定元素。本操作要求列表元素类型支持用于比较的= =操作。增添void Append(const Item&)在列表尾部添加元素。void Prepend(const Item&)在列表头部插入元素。删除void Remove(const Item&)

    从列表中删除给定元素。本操作要求列表元素类型支持用于比较的= =操作。void RemoveLast()删除最后一个元素。void RemoveFirst()删除第一个元素。void RemoveAll()删除所有元素。栈接口Item& Top() const返回栈顶元素(将列表视为一个栈)。void Push(const Item&)将该元素压入栈。Item& Pop()弹出栈顶元素。C.2 IteratorI t e r a t o r是定义了一种遍历对象集合的接口的抽象类。其操作含义为:virtual void First()使本I t e r a t o r指向顺序集合中的第一个对象。virtual void Next()使本I t e r a t o r指向对象序列的下一个元素。virtual bool IsDone() const当序列中不再有未到达的对象时返回真。virtual Item CurrentItem() const返回序列中当前位置的对象。C.3 ListIteratorL i s t I t e r a t o r实现了遍历列表的I t e r a t o r接口。它的构造函数以一个待遍历的列表为参数。C.4 PointP o i n t表示两维笛卡儿坐标空间上的一个点。P o i n t支持一些最基本的向量运算。P o i n t的坐标值类型定义为:typedef float Coord;P o i n t的操作含义是自明的。静态成员Z e r o代表P o i n t ( 0 , 0 )。C.5 RectR e c t代表一个轴对齐的矩形。一个矩形用一个原点和一个范围(长度和宽度)来表示。其操作含义也是自明的。

    静态成员Z e r o等于矩形Rect(point(0, 0)point(0, 0));

     


    最新回复(0)