1
云南大学软件学院 实验
报告
软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载
课程: 设计模式 学期: 2012-2013学年 第一学期 任课教师: 陆歌浩 专业: 软件工程 学号: 20101120007 姓名: 孙金文 成绩:
实验6 命令模式
一、实验目的
1.熟悉命令模式
2.运用命令模式编制简单的java 程序
二、实验
内容
财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容
类图:
ci r cul ar : C i r cul
ar E l l i pseC om m and(...)
execut e(...)undo(...)
ci r cul ar : C i r cul ar
publ i c : @O ver r i de C i r cul ar C om m and(...)execut e(...)undo(...)
h : i nt
w : i nt e : E l l i pse2D f : i nt C i r cul ar (...)dr aw C i r cul ar (...)dr aw E l l i pse(...)dr aw S ol i dR ound(...)pai nt C om ponent (...)
publ i c : @O ver r i de t r i angl e : T r i angl e execut e(...)T r i angl eC om m and(...)undo(...)
publ i c : @O ver r i de
r ect angl e : R ect angl e execut e(...)squar eC om m and(...)undo(...)
h : i nt
w : i nt r ec : R ect angl e2D dr aw hi ghR ect angl e(...)dr aw l ongR ect angl e(...)dr aw squar e(...)pai nt C om ponent (...)R ect angl e(...)
( :
; : ) : A r r ayLi st = : dcom m and A r r ayLi st : new addC om m and(...)execut eC om m and(...)r em oveC om m and(...)undoC om m and(...)
execut e(...)undo(...)
m ai n(...)
hei ght : i nt
w i dt h : i nt x : i nt []y : i nt []
dr aw eQ ui l at er al T r i angl e(...)dr aw I soscel esT r i angl e(...)dr aw T r i angl e(...)pai nt C om ponent (...)T r i angl e(...)
publ i c : @O ver r i de
t r i angl e : T r i angl e
execut e(...)
I soscel esT r i angl eC om m and(...)undo(...)publ i c : @O ver r i de
r ect angl e : R ect angl e
execut e(...)
l ongR ect angl eC om m and(...)undo(...)
ci r cul ar : C i r cul ar
publ i c : @O ver r i de
execut e(...)
S ol i dR oundC om m and(...)undo(...)
publ i c : @O ver r i de
r ect angl e : R ect angl e execut e(...)hi ghR ect angl eC om m and(...)undo(...)
publ i c : @O ver r i de
t r i angl e : T r i angl e
execut e(...)Q ui l at er al T r i angl eC om m and(...)undo(...)
实验代码:
package command;
import java.awt.Color; import java.awt.Container; import java.awt.Dimension; import java.awt.Frame; import java.awt.Graphics; import java.awt.GridLayout; import java.awt.Panel; import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.util.ArrayList;
import java.awt.Graphics2D;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Rectangle2D;
import javax.swing.JPanel;
public class GraphicsMain{
public static void main(String[] args) {
Toolkit kit=Toolkit.getDefaultToolkit();
Dimension screenSize=kit.getScreenSize();
int screenHeihgt=screenSize.height;
int screenWidth=screenSize.width;
DrawJFram drawJFram=new DrawJFram();
drawJFram.setSize(screenWidth, screenHeihgt);
drawJFram.setVisible(true);
}
}
interface DrawCommand {
public void execute();
public void undo();
}
class EllipseCommand implements DrawCommand{ Circular circular;
public EllipseCommand(Circular c){
circular=c;
}
public void execute() {
circular.DrawEllipse();
}
public void undo() {
DrawFrame.getJFrame().add(circular);
}
}
class DrawJFram extends JFrame implements ActionListener{ JComboBox comboBox,comboBox2,comboBox3;
String[] str={"圆形","椭圆","实心圆"};
String[] str2={"方形","正方形","长方形"};
String[] str3={"三角形","等腰直角三角形","等边三角形"};
public DrawJFram (){
super(" 孙金文-20101120007");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setcomputerWindow();
}
private void setcomputerWindow() {
// TODO Auto-generated method stub
Container ct=this.getContentPane();
ct.setLayout(new GridLayout(6,1));
Panel p1=new Panel();
p1.add(new JLabel("圆形:"));
comboBox=new JComboBox(str);
p1.add(comboBox);
p1.add(new JLabel("方形:"));
comboBox2=new JComboBox(str2);
p1.add(comboBox2);
p1.add(new JLabel("三角形:"));
comboBox3=new JComboBox(str3);
p1.add(comboBox3);
comboBox.addActionListener(this);
comboBox2.addActionListener(this);
comboBox3.addActionListener(this);
ct.add(p1,"North");
}
public void actionPerformed(ActionEvent e) {
if(e.getSource().equals(comboBox)){
if(comboBox.getSelectedItem().equals("圆形")){
Circular circular=new Circular(100, 100);
this.add(circular,"South");
circular.DrawCircular();
this.setVisible(true);
}
else if(comboBox.getSelectedItem().equals("椭圆")){ Circular circular=new Circular(30, 70);
this.add(circular,"South");
circular.drawEllipse();
this.setVisible(true);
}
else if(comboBox.getSelectedItem().equals("实心圆")){ Circular circular=new Circular(50, 50);
this.add(circular,"South");
circular.drawSolidRound();
this.setVisible(true);
}
}
else if(e.getSource().equals(comboBox2)){
if(comboBox2.getSelectedItem().equals("方形")){
Rectangle rectangle=new Rectangle(100, 100);
this.add(rectangle,"South");
rectangle.drawhighRectangle();
this.setVisible(true);
}
else if(comboBox2.getSelectedItem().equals("长方形")){
Rectangle rectangle=new Rectangle(100, 100);
this.add(rectangle,"South");
rectangle.DrawlongRectangle();
this.setVisible(true);
}
else if(comboBox2.getSelectedItem().equals("正方形")){
Rectangle rectangle=new Rectangle(100, 100);
this.add(rectangle,"South");
rectangle.drawsquare();
this.setVisible(true);
}
}else if(e.getSource().equals(comboBox3)){
if(comboBox3.getSelectedItem().equals("三角形")){
Triangle triangle=new Triangle(500, 10);
this.add(triangle,"South");
triangle.drawTriangle();
this.setVisible(true);
}
else if(comboBox3.getSelectedItem().equals("等腰直角三角形")){
Triangle triangle=new Triangle(500, 30);
this.add(triangle,"South");
triangle.drawIsoscelesTriangle();
this.setVisible(true);
}
else if(comboBox3.getSelectedItem().equals("等边三角形")){
Triangle triangle=new Triangle(500, 50);
this.add(triangle);
triangle.draweQuilateralTriangle();
this.setVisible(true);
}
}
}
}
class DrawControl {
ArrayList dcommand=new ArrayList();
public void addCommand(DrawCommand dc){
dcommand.add(dc);