软件开发生命周期与建模实验报告桥接适配器桥接适配器仿生机器人模拟毛笔系统资料.doc
《软件开发生命周期与建模实验报告桥接适配器桥接适配器仿生机器人模拟毛笔系统资料.doc》由会员分享,可在线阅读,更多相关《软件开发生命周期与建模实验报告桥接适配器桥接适配器仿生机器人模拟毛笔系统资料.doc(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、附:实验报告格式信息与管理科学学院计算机科学系实验报告课程名称: 软件开发生命周期与建模 实验名称: 【实验3】适配器设计模式仿生机器人 姓 名: 杨现阳,张泽浩,张金庚,张俊超,杨波,王秋波 组号: 3 班级:2021级计应4班 指导教师: 张 浩 实 验 室: 兰亭机房2 日 期: 2021年05月25日一、实验目的 适配器模式(Adapter Pattern) 是将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作。适配器模式既可以作为类构造型模式,也可以作为对象构造型模式。通过适配器设计模式实验,掌握适配器设计模式是如何使得接口不兼容而不能交互的类可以一起工作,理解适
2、配器模式的优点:将目标类和适配者类解耦,通过引入一个适配器类来重用现有的适配者类,而无须修改原有代码;增加了类的透明性和复用性,将具体的实现封装在适配者类中,对于客户端类来说是透明的,而且提高了适配者的复用性;灵活性和扩展性都非常好,通过使用配置文件,可以很方便地更换适配器,也可以在不修改原有代码的根底上增加新的适配器类,完全符合“开闭原那么。二、实验环境一台PC机,所需软件Win7/10。三、实验内容 仿生机器人:现需要设计一个可以模拟各种动物行为的机器人,在机器人中定义了一系列方法,如机器人叫喊方法cry( )、机器人移动方法move( )等。如果希望在不修改已有代码的根底上使得机器人能够
3、像狗一样叫wangWang( ),像狗一样跑dogRun( ),像猫一样的叫miaoMiao( ),像猫一样的跑catRun( )。请使用类适配器模式和对象适配器模式分别进展系统设计,使得机器人能够仿生狗和猫等各类不同动物的叫和跑。四、实验操作过程 1分析得出仿生机器人的目标对象和被适配对象。目标对象:机器人被适配对象:狗2用类适配器模式对仿生机器人进展适配,定义目标对象接口和被适配对象类。目标对象接口:Robotpublic interface Robot public void cry(); public void move();被适配对象类:Dogimport javax.swing.J
4、OptionPane;public class Dog public void wang() JOptionPane.showMessageDialog(null, 狗在汪汪叫!,14计应四班第三组 杨现阳,张金庚,张俊超,张泽浩,杨波,王秋波,1); public void run() JOptionPane.showMessageDialog(null, 狗在奔跑!,14计应四班第三组 杨现阳,张金庚,张俊超,张泽浩,杨波,王秋波,1);3用类适配器模式对仿生机器人进展适配,定义适配器类,实现目标对象接口和继承被适配对象类。适配器(Adaper)角色:DogAdapterpublic cl
5、ass DogAdapter extends Dog implements Robot public void cry() wang(); public void move() run();4 给出通用的类适配模式构造,并进展角色说明。目标(Target)角色:这就是所期待得到的接口。源(Adaptee)角色:现在需要适配的接口。适配器(Adapter)角色:适配器类是本模式的核心。适配器把源接口转换成目标接口。显然,这一角色不可以是接口,而必须是具体类。5用对象类适配器模式对仿生机器人进展适配,定义目标对象类和被适配对象类。目标对象类:Robotpackage 对象适配器;public ab
6、stract class Robot public abstract void cry();public abstract void move();被适配对象类:Dogpackage 对象适配器;import javax.swing.JOptionPane;public class Dog public void wang() JOptionPane.showMessageDialog(null, 狗在汪汪叫!,14计应四班第三组 杨现阳,张金庚,张俊超,张泽浩,杨波,王秋波,1); public void run() JOptionPane.showMessageDialog(null, 狗
7、在奔跑!,14计应四班第三组 杨现阳,张金庚,张俊超,张泽浩,杨波,王秋波,1);6用对象适配器模式对仿生机器人进展适配,定义适配器类,继承目标对象类和聚合被适配对象类。适配器(Adaper)角色:DogAdapterpackage 对象适配器;public class DogAdapter extends Robot Dog dog=new Dog();public void cry() dog.wang(); public void move() dog.run();7给出通用的对象适配模式构造,并进展角色说明。目标(Target)角色:Target。源(Adaptee)角色:Adapte
8、e。适配器(Adapter)角色:Adapter8. 课后自测与练习:理解和掌握默认适配器模式、双向适配器默认适配器模式(Default Adapter Pattern)或缺省适配器模式 当不需要全部实现接口提供的方法时,可先设计一个抽象类实现接口,并为该接口中每个方法提供一个默认实现空方法,那么该抽象类的子类可有选择地覆盖父类的某些方法来实现需求,它适用于一个接口不想使用其所有的方法的情况。因此也称为单接口适配器模式。 双向适配器 在对象适配器的使用过程中,如果在适配器中同时包含对目标类和适配者类的引用,适配者可以通过它调用目标类中的方法,目标类也可以通过它调用适配者类中的方法,那么该适配器
9、就是一个双向适配器。 五、核心代码与实验结果 核心代码:package 对象适配器;public class Client public static void main(String args) Robot da=new DogAdapter(); da.cry(); da.move();运行结果:六、心得体会 类适配器使用对象继承的方式,是静态的定义方式;而对象适配器使用对象组合的方式,是动态组合的方式。对于类适配器,由于适配器直接继承了Adaptee,使得适配器不能和Adaptee的子类一起工作,因为继承是静态的关系,当适配器继承了Adaptee后,就不可能再去处理 Adaptee的子类
10、了。对于对象适配器,一个适配器可以把多种不同的源适配到同一个目标。换言之,同一个适配器可以把源类和它的子类都适配到目标接口。因为对象适配器采用的是对象组合的关系,只要对象类型正确,是不是子类都无所谓。 对于类适配器,适配器可以重定义Adaptee的局部行为,相当于子类覆盖父类的局部实现方法。 对于对象适配器,要重定义Adaptee的行为比拟困难,这种情况下,需要定义Adaptee的子类来实现重定义,然后让适配器组合子类。虽然重定义Adaptee的行为比拟困难,但是想要增加一些新的行为那么方便的很,而且新增加的行为可同时适用于所有的源。对于类适配器,仅仅引入了一个对象,并不需要额外的引用来间接得
11、到Adaptee。 对于对象适配器,需要额外的引用来间接得到Adaptee。建议尽量使用对象适配器的实现方式,多用合成/聚合、少用继承。当然,具体问题具体分析,根据需要来选用实现方式,最适合的才是最好的。适配器模式的优点 更好的复用性系统需要使用现有的类,而此类的接口不符合系统的需要。那么通过适配器模式就可以让这些功能得到更好的复用。 更好的扩展性在实现适配器功能的时候,可以调用自己开发的功能,从而自然地扩展系统的功能。适配器模式的缺点过多的使用适配器,会让系统非常零乱,不易整体进展把握。比方,明明看到调用的是A接口,其实内部被适配成了B接口的实现,一个系统如果太多出现这种情况,无异于一场灾难
12、。因此如果不是很有必要,可以不使用适配器,而是直接对系统进展重构。七、组内打分组号姓名学号班级作业成绩百分制3杨现阳1410208124计应四班 90张泽浩1410208127计应四班90张金庚1410208125计应四班80张俊超1410208126计应四班80杨 波1410208123计应四班80王秋波1410208122计应四班80八、指导教师评分注:纸质版实验报告编辑后打印,以组为单位交给学习委员,以班为单位交给教师成绩: 百分制指导教师: 张 浩 信息与管理科学学院计算机科学系实验报告课程名称: 软件开发生命周期与建模 实验名称: 【实验4】桥接模式模拟毛笔系统 姓 名: 杨现阳,张
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 开发 生命周期 建模 实验 报告 适配器 仿生 机器人 模拟 毛笔 系统 资料
限制150内