软件开发生命周期与建模实验报告桥接适配器桥接适配器仿生机器人模拟毛笔系统资料.doc

上传人:叶*** 文档编号:35245964 上传时间:2022-08-20 格式:DOC 页数:13 大小:150.50KB
返回 下载 相关 举报
软件开发生命周期与建模实验报告桥接适配器桥接适配器仿生机器人模拟毛笔系统资料.doc_第1页
第1页 / 共13页
软件开发生命周期与建模实验报告桥接适配器桥接适配器仿生机器人模拟毛笔系统资料.doc_第2页
第2页 / 共13页
点击查看更多>>
资源描述

《软件开发生命周期与建模实验报告桥接适配器桥接适配器仿生机器人模拟毛笔系统资料.doc》由会员分享,可在线阅读,更多相关《软件开发生命周期与建模实验报告桥接适配器桥接适配器仿生机器人模拟毛笔系统资料.doc(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

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】桥接模式模拟毛笔系统 姓 名: 杨现阳,张

13、泽浩,张金庚,张俊超,杨波,王秋波 组号: 3 班级:2021级计应4班 指导教师: 张 浩 实 验 室: 兰亭机房2 日 期: 2021年05月25日一、实验目的 桥接模式(Bridge Pattern):将抽象局部与它的实现局部别离,使它们都可以独立地变化。它是一种对象构造型模式,又称为接口(Interface)模式。了解桥接模式的构造与四类角色,掌握桥接模式构造的实际应用。通过桥接模式实验,进一步理解桥接模式是如何别离抽象接口及其实现局部,是如何实现细节对客户透明,以及如何利用合成复用原那么实现比继承方案更好的灵活性与扩展性,进而体会桥接模式的优点。二、实验环境三、实验内容 模拟毛笔系统

14、:现需要提供大中小3种型号的画笔,能够绘制5种不同颜色,如果使用蜡笔,我们需要准备3*5=15支蜡笔,也就是说必须准备15个具体的蜡笔类。而如果使用毛笔的话,只需要3种型号的毛笔,外加5个颜料盒,用3+5=8个类就可以实现15支蜡笔的功能。请分别使用继承方案和桥接模式来模拟毛笔的使用过程。四、实验操作过程 1利用继承方案模拟毛笔写字,写出不同大中小号、不同颜色的内容。继承方式中每一种大小和颜色的画笔,都需要一个具体的画笔类,一共要写15个画笔类;先定义一个接口Pen然后让SmallPen,BigPen,MiddlePen分别实现Pen,再让不同颜色,不同大小的画笔分别继承SmallPen,Bi

15、gPen,MiddlePen;核心类代码:public interface Pen public void bepaint();public class SmallPen implements Pen public void bepaint() public class BigPen implements Pen public void bepaint() public class MiddlePen implements Pen public void bepaint() public class Client public static void main(String args) Pen

16、 p1,p2,p3,p4,p5; p1=new BigPenRed(); p1.bepaint(); p2=new BigPenBlue(); p2.bepaint(); p3=new SmallPenBlack(); p3.bepaint(); p4=new SmallPenWhite(); p4.bepaint(); p5=new MiddlePenGreen(); p5.bepaint();2利用桥接模式即合成复用方案或组合/聚合方案模拟毛笔写字,写出不同大中小号、不同颜色的内容。类代码:public interface Color public void bepaint(String

17、penType,String name);public class Black implements Color public void bepaint(String penType, String name) JOptionPane.showMessageDialog(null, 使用+penType+name+毛笔!,14计应四班第三组 杨现阳,张金庚,张俊超,张泽浩,杨波,王秋波,1);public class Blue implements Color public void bepaint(String penType, String name) JOptionPane.showMe

18、ssageDialog(null, 使用+penType+name+毛笔!,14计应四班第三组 杨现阳,张金庚,张俊超,张泽浩,杨波,王秋波,1);public class Green implements Color public void bepaint(String penType, String name) JOptionPane.showMessageDialog(null, 使用+penType+name+毛笔!,14计应四班第三组 杨现阳,张金庚,张俊超,张泽浩,杨波,王秋波,1);public class Red implements Color public void bep

19、aint(String penType, String name) JOptionPane.showMessageDialog(null, 使用+penType+name+毛笔!,14计应四班第三组 杨现阳,张金庚,张俊超,张泽浩,杨波,王秋波,1);public class White implements Color public void bepaint(String penType, String name) JOptionPane.showMessageDialog(null, 使用+penType+name+毛笔!,14计应四班第三组 杨现阳,张金庚,张俊超,张泽浩,杨波,王秋波,

20、1);public abstract class Pen protected Color color; public void setColor(Color color) this.color=color; public abstract void draw(String name);public class SmallPen extends Pen public void draw(String name) color.bepaint(小号, name);public class BigPen extends Pen public void draw(String name) color.b

21、epaint(大号, name);public class MiddlePen extends Pen public void draw(String name) color.bepaint(中号, name);3给出通用的桥接模式构造,并进展角色说明。1. 抽象化Abstraction角色:抽象类的接口,并保存一个对实现化对象的引用。 2. 修正抽象化Refined Abstraction角色:扩大了Abstraction定义的接口,加强或者修正了父类对抽象化的定义。 3. 实 现化Implementor角色:定义实现类的接口,该接口不一定要与Abstraction的接口一致,事实上这两个接

22、口可以完全不同。一般来 说,Implementor接口仅定义提供了底层的根本操作,而Abstraction那么定义了基于这些根本操作的较高层次的操作,理解这点很关键哦!总 结一点就是,抽象化与实现化角色之间并不存在继承与实现的关系,两者之间只是存在一种委托的关系而已。 4. 具体实现化ConcreteImplementor角色:实现了所有实现化角色所定义的接口。 4. 用文字描述以下例子中适配器模式与桥接模式的联用在适配器模式中:目标(Target)角色:数据采集。源(Adaptee)角色:Excel API。适配器(Adapter)角色:读取Excel文件。在桥接模式中:抽象化Abstrac

23、tion角色:报表显示。修正抽象化Refined Abstraction角色:报表显示方式1,报表显示方式2 。实 现化Implementor角色:数据采集。 具体实现化ConcreteImplementor角色:读取文本文件,读取数据库。五、核心代码与实验结果核心代码:public class Client public static void main(String args) Pen p1,p2;Color c1,c2,c3;p1=new SmallPen();p2=new MiddlePen();c1=new Red();c2=new Green();c3=new Blue(); p1

24、.setColor(c1); p1.draw(红色); p2.setColor(c3); p2.draw(蓝色); p2.setColor(c2); p2.draw(绿色);运行结果:六、心得体会效果及实现要点:1Bridge模式使用“对象间的组合关系解耦了抽象和实现之间固有的绑定关系,使得抽象和实现可以沿着各自的维度来变化。2所谓抽象和实现沿着各自维度的变化,即“子类化它们,得到各个子类之后,便可以任意它们,从而获得不同路上的不同汽车。3Bridge模式有时候类似于多继承方案,但是多继承方案往往违背了类的单一职责原那么即一个类只有一个变化的原因,复用性比拟差。Bridge模式是比多继承方案更

25、好的解决方法。4Bridge模式的应用一般在“两个非常强的变化维度,有时候即使有两个变化的维度,但是某个方向的变化维度并不剧烈换言之两个变化不会导致纵横交织的结果,并不一定要使用Bridge模式。适用性: 在以下的情况下应当使用桥梁模式:1如果一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,防止在两个层次之间建立静态的联系。2设计要求实现化角色的任何改变不应当影响客户端,或者说实现化角色的改变对客户端是完全透明的。3一个构件有多于一个的抽象化角色和实现化角色,系统需要它们之间进展动态耦合。4虽然在系统中使用继承是没有问题的,但是由于抽象化角色和具体化角色需要独立变化,设计要求需要独立管理这两者。总结:Bridge模式是一个非常有用的模式,也非常复杂,它很好的符合了开放-封闭原那么和优先使用对象,而不是继承这两个面向对象原那么。七、组内打分组号姓名学号班级作业成绩百分制3杨现阳1410208124计应四班 90张泽浩1410208127计应四班90张金庚1410208125计应四班80张俊超1410208126计应四班80杨 波1410208123计应四班80王秋波1410208122计应四班80八、指导教师评分注:纸质版实验报告编辑后打印,以组为单位交给学习委员,以班为单位交给教师成绩: 百分制指导教师: 张 浩

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高中资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁