实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
信息与管理科学学院计算机科学系
实验报告
课程名称:软件开发生命周期与建模
实验名称:【实验3】适配器设计模式(仿生机器人)姓名:周艳洁、周汝月、司向向、丁胜东、张磊、王卓然
组号: 3 班级: 14级计应6班
指导教师:张浩实验室:兰亭机房2 日期: 2016. 05 .26
一、实验目的
适配器模式(Adapter Pattern) 是将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。
通过适配器设计模式实验,掌握适配器设计模式是如何使得接口不兼容而不能交互的类可以一起工作,理解适配器模式的优点:将目标类和适配者类解耦,通过引入一个适配器类来重用现有的适配者类,而无须修改原有代码;增加了类的透明性和复用性,将具
体的实现封装在适配者类中,对于客户端类来说是透明的,而且提高了适配者的复用性;灵活性和扩展性都非常好,通过使用配置文件,可以很方便地更换适配器,也可以在不修改原有代码的基础上增加新的适配器类,完全符合“开闭原则”。
二、实验环境
一台PC机,所需软件Win7/10、UML工具(Rose/Visio/EclipseUML/ StartUML/)、Eclipse/MyEclipse、JDK6.0等。
三、实验内容
仿生机器人:现需要设计一个可以模拟各种动物行为的机器人,在机器人中定义了一系列方法,如机器人叫喊方法cry( )、机器人移动方法move( )等。如果希望在不修改已有代码的基础上使得机器人能够像狗一样叫wangWang( ),像狗一样跑dogRun( ),像猫一样的叫miaoMiao( ),像猫一样的跑catRun( )。请使用类适配器模式和对象适配器模式分别进行系统设计,使得机器人能够仿生狗和猫等各类不同动物的叫和跑。
四、实验操作过程
1.分析得出仿生机器人的目标对象和被适配对象。
Robot是一个抽象类,具体的Adaptor类实RobotAdaptor类,它申明了一个私有的_myAdaptee字段,其类型为AnimalAdaptee。目标对象是RobotAdaptor,被适配对象是AnimalAdaptee。
using System;
using System.Collections.Generic;
using System.Ling;
using System.Text;
using System.Threading.Tasks;
namespace RobotAdaptor
{
//机器人类
abstract public class Robot
{
abstract public void RobotCry();
abstract public void RobotMove();
abstract public void SetAdptee(object Value);//这么申明带有一个参数的抽象方法。
}
//抽象的Adaptee
Public class AnimalAdaptee
{
public virtual void Cry { }
Public virtual void Move{ }
}
2.用类适配器模式对仿生机器人进行适配,定义目标对象接口和被适配对象类。
【组内补充说明】文字描述、类图、类代码用一个具体的A d a p t e r类对A d a p t e e和Robot进行匹配。结果是当我们想要匹配一个类以及所有它的子类时,类A d ap t e r 将不能胜任工作,使得A d a p t e r可以重定义A d a p t e e的部分行为,因为A d a pt e r是A
d a p t
e e的一个子类。仅仅引入了一个对象,并不需要额外的指针以间接得到a d a p t e e。
3.用类适配器模式对仿生机器人进行适配,定义适配器类,实现目标对象接口和继承被适配对象类。
//适配器类Adaptor
Public class RobotAdapptor :Robot
{
Private AnimalAdapptee _myAdaptee;
Public AnimalAdaptee MyAdaptee
{
Get {return myAdaptee;}
Set{ _myAdaptee=value;}
}
Public override void SetAdaptee(Object Value)
{
myAdaptee=(AnimalAdaptee)Value;
}
Public override void RobotCry()
{
//throw new NotImplementedException();
If (myAdaptee==null)_myAdaptee=new AnimalAdaptee();
_myAdaptee.Cry;
}
Public overrid void RobotMove()
{
//throw new NotImplementedException();
If (myAdaptee==null)_myAdaptee=new AnimalAdaptee();
_myAdaptee.Move;
}
4.给出通用的类适配模式结构,并进行角色说明。
5.用对象类适配器模式对仿生机器人进行适配,定义目标对象类和被适配对象类。
允许一个A d a p t e r与多个A d a p t e e—即A d a p t e e本身以及它的所有子类(如果有子类的话)—同时工作。A d a p t er也可以一次给所有的A d a p t e e添加功能。