- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验一设计模式合应用(一)附源码UML图
注:班里的可以向我要工程文件
实验一 设计模式综合应用(一)
一、实验目的:
熟练掌握Java设计模式中的命令模式和观察者模式,并培养学生将两者综合应用到具体软件项目中的能力。
二、实验内容:
制作如图1所示GUI界面,需求如下:
1. 鼠标左键点击界面时,在鼠标所在位置填充一个直径为20像素的圆,并在界面上方的标签上显示“新增圆点位于:(x,y)”;
2. 鼠标右键点击时,则实现undo操作,将最后填充的圆点从界面中删除,并在界面上方的标签上显示“删除圆点位于:(x,y)”;
3. 界面下方的标签随时显示“鼠标位于:(x,y)”;
图1 GUI界面
三、实验要求:
1. 绘制和撤销圆点使用命令模式;
2. 两个标签内容的变更使用观察者模式;
3. 在代码实现之前,进行UML类图设计;
4. 根据UML类图,在eclipse中编程实现程序的功能。
四、实验学时:2+2学时(课外2个学时)
五、提示:
1.设计一个Circle类,该类对象用来记录某个填充圆的信息;
2. 每填充一个圆点,就实例化一个Circle类对象,并将其放置到具体命令对象关联的List对象中,用来作为undo操作的依据;
3. 填充圆可以使用Graphics的fillOval方法;
4. 删除圆可以先将Graphics对象的颜色设置为画布的背景色,再使用Graphics的fillRect方法;
5. 标签显示内容的需求不用观察者模式就可以轻松实现,但要求使用观察者模式进行设计;
5. 实验完成后,将UML文件和程序的工程文件打包,命名为“实验一.rar”,并上传至2。
六 UML图
七 源代码
1.
package lsu.egg.sy1;
public class Circle {
private int x;
private int y;
Circle(int x, int y) {
this.x = x;
this.y = y;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
}
2.
package lsu.egg.sy1;
import javax.swing.JPanel;
public interface Command {
public void excute(JPanel jpanel, Circle circle);
public void undo(JPanel jpanel);
}
3.
package lsu.egg.sy1;
import java.util.ArrayList;
import javax.swing.JPanel;
public class ConcreteCommand implements Command {
private Receiver receiver;
private ArrayListCircle arraylist;
private ConcreteOfInvoker concreteofinvoker;
ConcreteCommand(Receiver receiver, ConcreteOfInvoker concreteofinvoker) {
this.receiver = receiver;
this.arraylist = new ArrayListCircle();
this.concreteofinvoker = concreteofinvoker;
}
@Override
public void excute(JPanel jpanel, Circle circle) {
receiver.addSpot(jpanel, circle);
arraylist.add(circle);
}
@Override
public void undo(JPanel jpanel) {
Circle circle;
if(arraylist.size()=1)
{
circle = arraylist.get(arraylist.size() - 1);
receiver.deleteSpotr(jpanel, circle);
arraylist.remove(arraylist.size
您可能关注的文档
最近下载
- 2024年广东省初中学业水平考试模拟地理试卷(一)课件.pptx VIP
- 关于烹饪的策划书3.pptx
- 广州市人民南历史文化街区保护利用规划(文本+图纸).pdf VIP
- WALL·E《机器人总动员(2008)》完整中英文对照剧本.pdf VIP
- LDT 99.13-2008 建设工程劳动定额市政工程-维修养护工程.docx
- 实验报告之spss频数分析.docx VIP
- 新教科版科学小学科学五年级下册全册教案(表格式,可打印).docx
- 2022年新改版教科版五年级上册科学全册教案教学设计(新整理版).doc
- 某小区高楼变频恒压供水系统设计.docx
- 教育智能化AI技术在教学中的应用与影响培训课件.pptx
文档评论(0)