`
mmdev
  • 浏览: 13300709 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

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

阅读更多


附录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 List
L 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 Iterator
I 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 ListIterator
L i s t I t e r a t o r实现了遍历列表的I t e r a t o r接口。它的构造函数以一个待遍历的列表为参数。
C.4 Point
P 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 Rect
R e c t代表一个轴对齐的矩形。一个矩形用一个原点和一个范围(长度和宽度)来表示。
其操作含义也是自明的。


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


分享到:
评论

相关推荐

    设计模式:可复用面向对象软件的基础--详细书签版

     本书结合设计实例从面向对象的设计中精选出23个设计模式,总结了面向对象设计中最有价值的经验,并且用简洁可复用的形式表达出来。本书分类描述了一组设计良好、表达清楚的软件设计模式,这些模式在实用环境下特别...

    设计模式可复用面向对象软件的基础

    本书并不是一本介绍面向对象技术或设计的书,目前已有不少好书介绍面向对象技术或设计。本书假设你至少已经比较熟悉一种面向对象编程语言,并且有一定的面向对象设计经验。当我们提及“类型”和“多态”,或“接口”...

    设计模式:可复用面向对象技术

    four of gang 的好书! 设计模式的先祖!

    (经典)设计模式——可复用面向对象软件的基础(pdf)

    本书并不是一本介绍面向对象技术或设计的书,目前已有不少好书介绍面向对象技术或设计。本书假设你至少已经比较熟悉一种面向对象编程语言,并且有一定的面向对象设计经验。当我们提及“类型”和“多态”,或“接口”...

    设计模式可复用面向对象软件的基础(中文版)

    本书并不是一本介绍面向对象技术或设计的书,目前已有不少好书介绍面向对象技术或设计。本书假设你至少已经比较熟悉一种面向对象编程语言,并且有一定的面向对象设计经验。当我们提及“类型”和“多态”,或“接口”...

    好书推荐之:分析模式可复用的对象模型中文版

    《分析模式:可复用的对象模型》是一本深入探讨软件设计模式的重要著作,它由Erich Gamma和Richard Helm等著名软件工程专家共同撰写。这本书的中文版为中国的开发者提供了理解和应用这些模式的便利,使他们能够更好...

    设计模式,可复用对象基础

    本书并不是一本介绍面向对象技术或设计的书,目前已有不少好书介绍面向对象技术或设计。本书假设你至少已经比较熟悉一种面向对象编程语言,并且有一定的面向对象设计经验。当我们提及“类型”和“多态”,或“接口”...

    面向对象应用分析和设计

    本书内容丰富,不仅包括面向对象基础理论,还包括了面向对象设计模式,这方面的代表书籍有Fowler的《分析模式》(Analysis Patterns: Reusable Object Models),其中详细阐述了可复用对象模型的模式。Fowler的《UML...

    不可多得的好书-设计模式(china-pub版)

    《设计模式:不可多得的好书(China-Pub版)》是编程领域中一本非常重要的经典著作,尤其在Java开发中被广泛推崇。设计模式是经验丰富的软件开发人员在面对常见问题时,经过时间检验而形成的最佳实践。这本书深入浅...

    敏捷软件开发-原则-模式与实践

    敏捷软件开发-原则-模式与实践 不可不读的好书

    java设计模式(设计实例从面向对象的设计中精选出23个设计模式)

    另外,这也不是一篇高级专题技术论文,而是一本关于设计模式的书,它描述了在面向对象软件设计过程中针对特定问题的简洁而优雅的解决方案。设计模式捕获了随时间进化与发展的问题的求解方法,因此它们并不是人们从...

    设计模式JAVA(学习java模式的一本好书)

    设计模式作为面向对象编程中的一项重要技术,对于提高代码的可维护性、可扩展性和复用性具有重大意义。GoF(Gang of Four)的《设计模式》一书为程序员们提供了一系列经典的面向对象设计解决方案。尽管原书中使用的...

    thinking in java

    1. **面向对象**:面向对象编程是Java的核心特性之一,通过类和对象的概念来组织和设计软件系统。类是对象的模板,定义了一组属性和行为;对象则是类的一个实例,具有该类定义的所有属性和行为。 2. **多态性**:多...

    C#语言讲解的设计模式好书

    2. **C#语言基础**:设计模式的应用基于对C#语言的深入理解,包括面向对象特性如封装、继承、多态以及.NET框架的核心概念。 3. **创建型模式**:如单例模式(Singleton)、工厂模式(Factory Method)和抽象工厂...

    敏捷软件开发:原则、模式与实践

    ### 敏捷软件开发:原则、模式与实践 #### 知识点概览 - **敏捷软件开发概述** - **敏捷开发的原则** - **敏捷开发的模式** - **敏捷开发的实践方法** #### 敏捷软件开发概述 敏捷软件开发是一种以用户需求为中心...

    设计模式 GOF 23

    本书设计实例从面向对象的设计中精选出23个设计模式,总结了面向对象设计中最有价值的经验,并且用简洁可复用的形式表达出来。本书分类描述了一组设计良好,表达清楚的软件设计模式,这些模式在实用环境下有特别有用...

Global site tag (gtag.js) - Google Analytics