欢迎来到天天文库
浏览记录
ID:15998975
大小:182.00 KB
页数:15页
时间:2018-08-07
《实验一 设计模式综合应用(一)附源码+uml图》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、注:班里的可以向我要工程文件实验一设计模式综合应用(一)一、实验目的:熟练掌握Java设计模式中的命令模式和观察者模式,并培养学生将两者综合应用到具体软件项目中的能力。二、实验内容:制作如图1所示GUI界面,需求如下:1.鼠标左键点击界面时,在鼠标所在位置填充一个直径为20像素的圆,并在界面上方的标签上显示“新增圆点位于:(x,y)”;2.鼠标右键点击时,则实现undo操作,将最后填充的圆点从界面中删除,并在界面上方的标签上显示“删除圆点位于:(x,y)”;3.界面下方的标签随时显示“鼠标位于:(x,y)
2、”;图1GUI界面三、实验要求:1.绘制和撤销圆点使用命令模式;2.两个标签内容的变更使用观察者模式;3.在代码实现之前,进行UML类图设计;4.根据UML类图,在eclipse中编程实现程序的功能。四、实验学时:2+2学时(课外2个学时)五、提示:1.设计一个Circle类,该类对象用来记录某个填充圆的信息;2.每填充一个圆点,就实例化一个Circle类对象,并将其放置到具体命令对象关联的List对象中,用来作为undo操作的依据;3.填充圆可以使用Graphics的fillOval方法;4.删除圆可以
3、先将Graphics对象的颜色设置为画布的背景色,再使用Graphics的fillRect方法;5.标签显示内容的需求不用观察者模式就可以轻松实现,但要求使用观察者模式进行设计;5.实验完成后,将UML文件和程序的工程文件打包,命名为“实验一.rar”,并上传至ftp://10.10.3.72。六UML图七源代码1.packagelsu.egg.sy1;publicclassCircle{privateintx;privateinty;Circle(intx,inty){this.x=x;this.y=y
4、;}publicintgetX(){returnx;}publicvoidsetX(intx){this.x=x;}publicintgetY(){returny;}publicvoidsetY(inty){this.y=y;}}2.packagelsu.egg.sy1;importjavax.swing.JPanel;publicinterfaceCommand{publicvoidexcute(JPaneljpanel,Circlecircle);publicvoidundo(JPaneljpanel
5、);}3.packagelsu.egg.sy1;importjava.util.ArrayList;importjavax.swing.JPanel;publicclassConcreteCommandimplementsCommand{privateReceiverreceiver;privateArrayListarraylist;privateConcreteOfInvokerconcreteofinvoker;ConcreteCommand(Receiverreceiver,Con
6、creteOfInvokerconcreteofinvoker){this.receiver=receiver;this.arraylist=newArrayList();this.concreteofinvoker=concreteofinvoker;}@Overridepublicvoidexcute(JPaneljpanel,Circlecircle){receiver.addSpot(jpanel,circle);arraylist.add(circle);}@Overridepu
7、blicvoidundo(JPaneljpanel){Circlecircle;if(arraylist.size()>=1){circle=arraylist.get(arraylist.size()-1);receiver.deleteSpotr(jpanel,circle);arraylist.remove(arraylist.size()-1);intn=2;concreteofinvoker.notifyObservers(n,circle.getX(),circle.getY());}}}4.
8、packagelsu.egg.sy1;importjavax.swing.JLabel;@SuppressWarnings("serial")publicclassConcreteObserver1extendsJLabelimplementsObserver{ConcreteObserver1(){super("新增圆点位于:(0,0)");}@Overridepublicvoidupdate(intn,intx,inty)
此文档下载收益归作者所有