软件体系结构实验2.docx
- 文档编号:9971935
- 上传时间:2023-05-22
- 格式:DOCX
- 页数:10
- 大小:189.61KB
软件体系结构实验2.docx
《软件体系结构实验2.docx》由会员分享,可在线阅读,更多相关《软件体系结构实验2.docx(10页珍藏版)》请在冰点文库上搜索。
软件体系结构实验2
实验报告
课程名称
软件体系结构
实验项目名称
体系结构风格(6学时)
实验时间
(日期及节次)
专业
学生所在学院
年级
学号
姓名
指导教师
实验室名称
实验成绩
预习情况
操作技术
实验报告
附加:
综合创新能力
实验
综合成绩
教师签字
实验名称:
编写具有虚拟机(解释器)风格的图形绘制程序。
实验目的
理解虚拟机(解释器)风格,加深对软件体系结构风格的了解。
实验类型
设计型
实验环境
编程环境:
MyEclipse9.0
运行环境:
WindowsXP等
主要设计思想与算法
importjava.awt.Graphics;
importjava.awt.event.MouseEvent;
importjava.awt.event.MouseListener;
importjava.awt.event.MouseMotionListener;
importjava.io.FileNotFoundException;
importjava.io.FileOutputStream;
importjava.util.ArrayList;
importjava.util.List;
importjava.io.*;
importjavax.swing.JPanel;
publicclassPaintJpanelextendsJPanel{
publicstaticList
publicstaticList
publicstaticintt=5;
privateintx;
privateinty;
privateintx2;
privateinty2;
privateintx3;
privateinty3;
publicPaintJpanel(){
list=newArrayList
hand=newArrayList
Listenerl=newListener();
addMouseListener(l);
addMouseMotionListener(l);
}
@Override
publicvoidpaint(Graphicsg){
super.paint(g);//调用重写前的父类
for(inti=0;i g.drawLine(list.get(i),list.get(i+1),list.get(i+2),list.get(i+3)); } for(inti=0;i g.drawOval(hand.get(i),hand.get(i+1),hand.get(i+2),hand.get(i+3)); } if(t==0){ g.drawLine(x,y,x2,y2); } if(t==1){ g.drawOval(x,y,x2,y2); } } classListenerimplementsMouseListener,MouseMotionListener{ @Override publicvoidmouseDragged(MouseEvente){ if(t==0){ x2=e.getX(); y2=e.getY(); repaint(); } if(t==1){ if(e.getX()>x3&&e.getY()>y3) { x2=e.getX()-x3; y2=e.getY()-y3; } if(x3>e.getX()&&y3>e.getY()){ x=e.getX(); y=e.getY(); x2=x3-e.getX(); y2=y3-e.getY(); } if(x3>e.getX()&&e.getY()>y3){ x=e.getX(); x2=Math.abs(x3-e.getX()); y2=Math.abs(y3-e.getY()); } if(x3 y=e.getY(); x2=Math.abs(x3-e.getX()); y2=Math.abs(y3-e.getY()); } repaint(); } } @Override publicvoidmouseMoved(MouseEvente){ //TODOAuto-generatedmethodstub } @Override publicvoidmouseClicked(MouseEvente){ //TODOAuto-generatedmethodstub } @Override publicvoidmouseEntered(MouseEvente){ //TODOAuto-generatedmethodstub } @Override publicvoidmousePressed(MouseEvente){ if(t==0){ x=e.getX(); y=e.getY(); x2=e.getX(); y2=e.getY(); } if(t==1) { x=e.getX(); y=e.getY(); x2=e.getX(); y2=e.getY(); } } @Override publicvoidmouseReleased(MouseEvente){ if(t==0){ list.add(x); list.add(y); list.add(x2); list.add(y2); } if(t==1){ hand.add(x); hand.add(y); hand.add(x2); hand.add(y2); } } @Override publicvoidmouseExited(MouseEvente){ //TODOAuto-generatedmethodstub } } publicvoidoutput(Filefilename){ if(t==3){ //System.out.println(list.size()); try{ FileOutputStreamfos=newFileOutputStream(filename,true); for(inti=0;i Strings="Line("+list.get(i)+","+list.get(i+1)+","+list.get(i+2)+","+list.get(i+3)+")"; byte[]b=s.getBytes(); fos.write(b); fos.write('\r'); fos.write('\n'); } for(intj=0;j Strings1="Circle("+hand.get(j)+","+hand.get(j+1)+","+hand.get(j+2)+","+hand.get(j+3)+")"; byte[]b1=s1.getBytes(); fos.write(b1); fos.write('\r'); fos.write('\n'); } fos.close(); }catch(Exceptione){ e.printStackTrace(); } } } publicvoidinput(){ if(t==4){ for(into=0;o System.out.println(list.get(o)); } for(into1=0;o1 System.out.println(hand.get(o1)); } test2.jp3.repaint(); } } } 实验结果(测试用例、实验结果) 实验总结与心得 软件体系结构设计的一个核心问题是否能使用重复的体系结构模式,即能否达到体系结构及的软件重用。 也就是说,能否在不同的软件系统中,使用同一体系结构。 基于这个目的,学者们开始研究和实践软件体系结构的风格和类型问题。 软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式。 体系结构风格定义了一个系统家族,即一个体系结构定义一个词汇表和一组约束。 词汇表中包含一些构件和连接件类型,而这组约束指出系统是如何将这些构件和连接件组合起来的。 体系结构风格反映了领域中众多系统所共有的结构和语义特性,并知道如何将各个模块和子系统有效地组织成一个完整的系统。 按这种方式理解,软件体系结构风格定义了用于描述系统的术语表和一组指导构建系统的规则。 对软件体系结构风格的研究和实践促进了对设计的重用,一些经过实践证实的解决方案也可以可靠地用于解决新的问题。 体系结构风格的不变部分使不同的系统可以共享同一个实现代码。 只要系统是使用常用的、规范的方法来组织的,就可使别的设计者和容易地理解系统的体系结构。 软件体系结构风格为大粒度的软件重用提供了可能。 然而,对于应用体系结构风格来说,由于视点的不同,系统设计师有很大的选择余地。 要为系统选择或设计某一个体系结构风格,必须根据特定项目的具体特点,进行分析后在确定,体系结构风格的使用几乎完全是特定的。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 体系结构 实验