




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验报告
课程名称:软件构建
实验6:期末实验OOP设计模式一综合应用
时间:2016年6月7日星期二,第7,8节地点:理工楼
210
学号:120402013037姓名:班级:软件工程1班
一、实验目的
加深对OOP设计模式的理解,提高在实际开发中对于模
式的应用能力。
二、实验内容
到目前为止,我们一共介绍了23种常用的OOP设计模式
(GOF),每一种设计模式都提出了针对一类特定的设计问
题的好的解决方案。对于这些设计模式,你能不能从自己的
实际生活和工作出发,找出一些可以应用这些模式的场合,
对其进行OOP建模呢?现有的各种主流的开发框架和类库
(如MFC,.NETFRAMEWORK,JDK)中也都大量地采用
了这些设计模式,你能不能从中找出几个应用实例,并对其
原理进行简单的说明呢?
此外,在实际的软件项目开发中,我们遇到的问题是复杂的,
依靠单一的模式常常无法满足设计的需要。对于这种情况,
常常需要通过组合应用多种不同的设计模式来实现目标。你
能不能举出一些组合应用设计模式的例子。
提示:对于所举的实例,建议套用《设计模式》书上的模
板,按照“问题一解决方案一评价”格式来加以阐述,即先
说明所面对的设计问题,再给出OOP解决方案(使用各种
UML图以及源码范例),最后评价一下使用该设计模式的效
果O
三、实验环境
Win764位系统
Vc++6.0编译环境
四、实验步骤和结果
1.问题1:
在游戏中,为了节约资源,我们的地图管理,可以采用单
例模式。
2.解决方法1:
1.定义一个Map类使得这个唯一实例是类的一般实例。
单例模式的UML图
_________
MapManager
-mManager:MapManager
-MapManager0
+GetManagerO:MapManager
+ShowQ
2.单例模式的代码实例:
//Game.h:interfacefortheCGameclass.
//
#if!defined(AFX_GAME_H_F32FA2B2_88C1_4046_A
159_902669B6855E_INCLUDEDJ
#define
AFX_GAME_H_F32FA2B2_88C1_4046_A159_902669
B6855E_INCLUDED_
#if_MSC_VER>1000
#pragmaonce
#endif//_MSC_VER>1000
classMap
public:
virtual-Map(){}
voidShow()
coutvv”地图:召唤师峡谷!”vvendl;
}
staticMap*InstanceQ;
private:
staticMap*map;
Map()
}
};
#endif
//!defined(AFX_GAME_H_F32FA2B2_88C1_4046_A15
9_902669B6855E_INCLUDEDJ
//Game.cpp:implementationoftheCGameclass.
//
#include"stdafx.h"
#include"Game.h"
Map*Map::map=newMap();
Map*Map::lnstance()
if(map==0)
map=newMap();
}
returnmap;
)
#include"stdafx.h"
#include"Game.h"
intmain(intargc,char*argv[])
(
Map*m=Map::lnstance();
m->Show();
Map*m2=Map::lnstance();
m2->Show();
if(m==m2)
cout«m«endl;
cout«m2«endl;
cout«”我们地图使用相同的一个地址!”«endl;
}
return0;
}
3.问题2:
在正常的游戏里,比较常用到的是正常游戏中模式和游戏
死亡模式。
4.解决方法2:
为了解决这两种状态的转换,我们可以采用状态模式,
在一方发生改变了,调用另外一个游戏模式。
状态模式UML类图:
状态模式实例代码:
//Game.h:interfacefortheCGameclass.
//
#if!defined(AFX_GAME_H_F32FA2B2_88C1_4046_A
159_902669B6855E_INCLUDEDJ
#define
AFX_GAME_H_F32FA2B2_88C1_4046_A159_902669
B6855E_INCLUDED_
#if_MSC_VER>1000
#pragmaonce
#endif//_MSC_VER>1000
classMap
public:
virtual-Map(){}
voidShow()
coutvv”地图:召唤师峡谷!”vvendl;
}
staticMap*lnstance();
private:
staticMap*map;
Map()
}
};
classPlayer;
classState
(
public:
State(){}
virtual-State(){}
virtualvoidstart(Player*p);
};
//正常模式
classNormal:publicState
public:
NormalQ{}
virtual-Normal(){}
virtualvoidstart(Player*p);
};
//死亡模式
classDeath:publicState
(
public:
Death(){}
virtual-Death(){}
virtualvoidstart(Player*p);
};
classPlayer
public:
Player(State*s)
(
this->state=s;
}
virtual-Player(){}
voidstart()
(
cout«”游戏开始"«endl;
this->state->start(this);
}
voidAttack()
coutVV”\t被攻击至|J血量为0!M«endl;
}
voidSetState(State*s)
{
this->state=s;
this->state->start(this);
}
private:
State*state;
);
#endif
//!defined(AFX_GAME_H_F32FA2B2_88C1_4046_A15
9_902669B6855E_INCLUDEDJ
//Game.cpp:implementationoftheCGameclass.
//
#include"stdafx.h"
#include"Game.h"
Map*Map::map=newMap();
Map*Map::lnstance()
if(map==0)
map=newMap();
}
returnmap;
}
voidState::start(Player*p)
cout«"游戏状态"«endl;
}
voidNormal::start(Player*p)
cout«"\t游戏开始攻击敌方«endl;
p->Attack();
p->SetState(newDeath());
}
voidDeath::start(Player*p)
(
cout«"游戏结束"«endl;
}
#include"stdafx.h"
#include"Game.h"
intmain(intargc,char*argv[])
(
Player*game=newPlayer(newNormal());
game->start();
return0;
}
五、实验结果和讨论
1.单例模式的测试:
地图:召唤师峡蜜?
施图:召嗔筛碟容,
00613B28
00613B28
我们地
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年老年人保健品官方授权代理合同
- 2025年互联网大厂招聘面试揭秘内部模拟题与解题策略
- 2025年共青团招聘考试专业知识与技能测试要点
- 2025年几何证明的题目及答案
- 2025年外贸英语面试官必-备模拟题及答案集萃
- 2025年传统手艺与现代设计结合项目人才选拔模拟题集及答案解析
- 2025年医疗器械行业面试经验模拟题及解析
- 2025格力空调采购合同
- 2025年二手车交易平台服务合同
- 2025年中国香道师高级考试试题及解析
- 莲山教学课件下载
- 六年级家长会课件
- 2025年党建党史知识竞赛测试题库及答案
- GB/T 45859-2025耐磨铸铁分类
- 临床基于ERAS理念下医护患一体化疼痛管理实践探索
- 2025年河北交警三力测试题及答案
- 2025贵州贵阳供销集团有限公司招聘笔试历年参考题库附带答案详解
- 人教版(2024)新教材三年级数学上册课件 1.2 观察物体(2)课件
- 颈椎骨折脊髓损伤的护理
- 华为海外税务管理办法
- 2025秋统编版小学道德与法治二年级上册教学设计(附目录)
评论
0/150
提交评论