软件测试与体系结构报告.docx_第1页
软件测试与体系结构报告.docx_第2页
软件测试与体系结构报告.docx_第3页
软件测试与体系结构报告.docx_第4页
软件测试与体系结构报告.docx_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本科生实验报告实验课程 软件设计与体系结构 学院名称 信息科学与技术学院 专业名称 软件工程 学生姓名 学生学号 指导教师 实验地点 6A502 实验成绩 二零一五年一月十五日软件设计与体系结构实验报告摘要通过这系列的实验让我们能够在实际运用环境中理解和掌握软件设计与体系结构的分析和设计方法,以及掌握面向对象系统分析和设计的UML建模语言,来实现对某一信息系统进行系统分析和设计。关键词:UML;java语言;算法;编程。第1章 工厂模式1.1 简单工厂模式1.1.1要求设计一个任务创建仓。当用户在仓门口喊一声:“汉子!”该仓就创建一个男性角色当用户喊“妹子!”,该仓就创建一个女性角色当用户喊“随便!”,该仓就随机创建一个角色性别1.1.2代码Women.javapublic class women extends SimpleFactoryvoid CreateCharator()System.out.println(已创建一个女性角色!);man.javapublic class man extends SimpleFactory void CreateCharator()System.out.println(已创建一个男性角色!);Person.javaimport java.util.Scanner;public class Person public static void main(String args)Scanner reader = new Scanner(System.in);System.out.println(请输入你要创建的角色(“汉子”、“妹子”或“随便”):);String s = reader.next();reader.close();if(s.equals(汉子)man men = new man();men.CreateCharator();else if(s.equals(妹子)women wm = new women();wm.CreateCharator();else if(s.equals(随便)int n=(int)(Math.random()*10)%2);if(n = 0)man men = new man();men.CreateCharator();elsewomen wm = new women();wm.CreateCharator();SimpleFactory.javapublic abstract class SimpleFactory abstract void CreateCharator();1.1.3UML1.2 工厂模式1.2.1要求设计一个游戏职业的构造器,可以为用户构造不同的职业职业有,建筑师、魔法师、医师、金工技师、厨师。请根据用户传递的角色职业信息和姓名,为用户生成不同的职业1.2.2代码metalworkingTechnicians.javapublic class metalworkingTechnicians extends Gamevoid build()System.out.println(已创建一个金工技师角色! 名字为:+name);magician.javapublic class magician extends Gamevoid build()System.out.println(已创建一个魔法师角色! 名字为:+name);Game.javapublic abstract class Game String name;abstract void build();architect .javapublic class architect extends Gamevoid build()System.out.println(已创建一个建筑师角色! 名字为:+name);cook .javapublic class cook extends Gamevoid build()System.out.println(已创建一个厨师角色! 名字为:+name);doctor.javapublic class doctor extends Gamevoid build()System.out.println(已创建一个医生角色! 名字为:+name);Factory.javaimport java.util.Scanner;public class Factory public static void main(String args)System.out.println(请选择要创建的角色:1、建筑师 2、魔法师 3、医师 4、金工技师 5、厨师);int i;Scanner reader = new Scanner(System.in);i = reader.nextInt();if(i =1)architect myarchitect = new architect();System.out.print(请输入角色名字:); = reader.next();myarchitect.build();else if(i =2)magician mymagician = new magician();System.out.print(请输入角色名字:); = reader.next();mymagician.build();else if(i =3)doctor mydoctor = new doctor();System.out.print(请输入角色名字:); = reader.next();mydoctor.build();else if(i =4)metalworkingTechnicians mymetalworkingTechnicians = new metalworkingTechnicians();System.out.print(请输入角色名字:);mymetalworkingT = reader.next();mymetalworkingTechnicians.build();else if(i =5)cook mycook = new cook();System.out.print(请输入角色名字:); = reader.next();mycook.build();elseSystem.out.println(创建失败!);reader.close();1.2.3UML1.3抽象工厂模式1.3.1要求为游戏人物创建不同的外观分为:服饰、头发、眼镜、肤色、身高要求不同的职业有不同的外观范围,同一职业外观相同。也可以设计成不同职业不同外观,同一职业根据等级不同,外观也有细微差异(如头发长短、瞳孔颜色深浅、身高高矮、服饰配饰多少的差异等等)1.3.2代码clothes.javapublic interface clothes void Clothestype();cookBuild.javapublic class cookBuild extends Factory implements clothes,eye,hair,skin,heightpublic void Clothestype()Clothestype = 厨师服;public void Eyecolor()Eyecolor = 黑色眼睛;public void Haircolor()Haircolor = 黑色头发;public void Skincolor()Skincolor = 黄色皮肤;public void Heightcolor() Heightcolor = 身高177cm;void CreateClothes() System.out.println(已创建厨师角色!); System.out.print(Clothestype+t);void CreateHair() System.out.print(Haircolor+t);void CreateEye() System.out.print(Eyecolor+t);void CreateSkin() System.out.print(Skincolor+t); void CreateHeight() System.out.print(Heightcolor+t); doctorBuild.javapublic class doctorBuild extends Factory implements clothes,eye,hair,skin,heightpublic void Clothestype()Clothestype = 医生服;public void Eyecolor()Eyecolor = 蓝色眼睛;public void Haircolor()Haircolor = 棕色头发;public void Skincolor()Skincolor = 白色皮肤;public void Heightcolor() Heightcolor = 身高180cm;void CreateClothes() System.out.println(已创建厨师角色!); System.out.print(Clothestype+t);void CreateHair() System.out.print(Haircolor+t);void CreateEye() System.out.print(Eyecolor+t);void CreateSkin() System.out.print(Skincolor+t); void CreateHeight() System.out.print(Heightcolor+t); eye.javapublic interface eye void Eyecolor();Factory.javapublic abstract class Factory String Clothestype;String Eyecolor;String Haircolor;String Skincolor;String Heightcolor;abstract void CreateClothes();abstract void CreateHair();abstract void CreateEye();abstract void CreateSkin();abstract void CreateHeight();hair.javapublic interface hair void Haircolor();height.javapublic interface height void Heightcolor();shixian.javaimport java.util.Scanner;public class shixian public static void main(String args)Scanner reader = new Scanner(System.in);System.out.println(请选择要选择的角色:1、厨师 2、医生);int i=reader.nextInt();reader.close();if(i = 1)cookBuild cook= new cookBuild();cook.Clothestype();cook.Eyecolor();cook.Haircolor();cook.Skincolor();cook.Heightcolor();cook.CreateClothes();cook.CreateHair();cook.CreateEye();cook.CreateSkin();cook.CreateHeight();else if(i = 2)doctorBuild doctor = new doctorBuild();doctor.Clothestype();doctor.Eyecolor();doctor.Haircolor();doctor.Skincolor();doctor.Heightcolor();doctor.CreateClothes();doctor.CreateHair();doctor.CreateEye();doctor.CreateSkin();doctor.CreateHeight();elseSystem.out.println(创建失败!请输入正确的序号);skin.javapublic interface skin void Skincolor();1.3.3UML第2章 设计模式2.1单例模式2.1.1要求学号是我们每个同学的唯一标示,要求同学们在入学的时候就分配学号,在随后的学习生活中,不允许分配学号,只能使用该学号,例如办理图书证,办理饭卡,选课等活动。要求采用该机制,实现学号的单例2.1.2代码public class StudentCard String str;private static StudentCard stucard=null;private StudentCard()public synchronized void setStudentCardNo(String str1)str=str1;System.out.println(卡号:+str);public String getStudentCardNo()return str;public void usecard(String str2)if(str2.equals(借书) System.out.println();System.out.println(现在执行借书功能,请按要求操作。);System.out.println(注意:一次最多只能借20本书,工具书不外借,借书日期为60天,到期可以续借。);if(str2.equals(选课)System.out.println();System.out.println(现在执行选课功能,请安要求操作。);System.out.println(注意:选修课最多只能选3门,多选或错选的课程将会被系统清理。);if(str2.equals(充卡)System.out.println();System.out.println(现在执行充卡功能,请安要求操作。);System.out.println(注意:请保管好自己的饭卡,如果丢失请立即挂失,以免不必要的损失。);public static StudentCard getStuCard()if(stucard=null)stucard=new StudentCard();stucard.setStudentCardNo(201213040324 姓名:杨鹤 学院:信息科学与技术学院 专业:软件工程 );return stucard;MainTest.javapublic class test public static void main(String args)StudentCard card1=StudentCard.getStuCard();card1.usecard(借书);card1.usecard(选课);card1.usecard(充卡);2.1.3UML2.2生成器模式2.2.1要求KFC点餐足球教练:在一场足球比赛中有各种的布阵方法(442,4231,433);教练在开场比赛之前确定阵型,比赛中可以随时暂停更换队形;当有新队型产生的时候,可以很容易让教练学会新的队形并使用。2.2.2代码package KFC;public class Meal String food;String drink;void setFood(String food)this.food = food;void setDrink(String drink)this.drink = drink; String getFood()return food;String getDrink()return drink;package KFC;public abstract class MealBuilder Meal meal = new Meal();abstract void buildFood();abstract void buildDrink();Meal getMeal()return meal;package KFC;public class subMealBuilderA extends MealBuildervoid buildFood()meal.setFood(A,food);void buildDrink()meal.setDrink(A.drink);package KFC;public class subMealBuilderB extends MealBuildervoid buildFood()meal.setFood(B.food);void buildDrink()meal.setDrink(B.drink);package KFC;public class Waiter MealBuilder mb;void setMealBuilder(MealBuilder mb)this.mb = mb;Meal construct()mb.buildDrink();mb.buildFood();return mb.getMeal();package KFC;import java.util.Scanner;public class test public static void main(String args)MealBuilder s;Waiter waiter = new Waiter();System.out.println(选择套餐类型:A或B);Scanner reader = new Scanner(System.in);String type = reader.next();reader.close();if(type.equals(A)|type.equals(a)s=new subMealBuilderA();elses = new subMealBuilderB();waiter.setMealBuilder(s);System.out.println(waiter.construct().getDrink()+t+waiter.construct().getFood();Footballimport java.util.Scanner;public class Build extends TypeString a;void BuildType()Scanner reader = new Scanner(System.in);String s;System.out.println(请教练确定队形:);s = reader.next();Type.setType(s);System.out.println(队形+Type.getType();System.out.println(更换队形?);a = reader.next();reader.close();public class FootballCoach String Type;void setType(String UType)Type = UType;String getType()return Type;public abstract class Type FootballCoach Type = new FootballCoach();abstract void BuildType();public class test public static void main(String argsp)boolean answer = false;Build m = new Build();dom.BuildType();if(m.a.equals(y)|m.a.equals(Y)answer = true;elseanswer = false;while(answer);2.2.3UML2.3原型模式2.3.1要求为每个报道的新同学设计一个原型,新生报到的时候进行原型复制新生可以修改部分参数,不会影响其他原型拷贝2.3.2代码public class StudentF implements CloneableString name = zhang,age = 18,sex = 男,classN = 00;public Object clone()Object object = null;tryobject = super.clone();catch(CloneNotSupportedException exception)System.err.println(Not support cloneable);return object;public void setName(String n)name = n;public void setAge(String a)age = a;public void setSex(String s)sex = s;public void setClassN(String c)classN = c;public void show()System.out.println(name+t+age+t+sex+t+classN);public class test public static void main(String args)StudentF student0 = new StudentF();student0.show();StudentF student1 = new StudentF();student1.setName(li);StudentF student2 = new StudentF();student2 = (StudentF)student1.clone();student2.show();student2.setSex(女);student2.show();2.3.3UML2.4适配器模式2.4.1要求为电源插座(工具箱)开发一个适配器,使该插头可以同时为交流电设备(三相、两相)供电为该电源插座(工具箱)开发另一个适配器,可以为USB设备供电。分别采用类适配器和对象适配器实现2.4.2代码public class toolBox public void electricityOut()System.out.println(充电中);public class Adapter extends toolBox implements equipmentpublic void electricityIn()electricityOut();public interface equipment public abstract void electricityIn();public class test public static void main(String args)Adapter adapter = new Adapter();adapter.electricityIn();2public class Adapter extends USBprivate toolBox box;public Adapter(toolBox box)this.box = box;public void electricityIn()box.electricityOut();public class toolBox public void electricityOut()System.out.println(充电中);public class USB public void electricityIn();public class test public static void main(String args)toolBox b = new toolBox();Adapter usb = new Adapter(b); usb.electricityIn();2.4.3UML2.5组合模式2.5.1要求人品最好的刘老师需要有人帮忙完成一项工作,但是她不知道谁可以不帮忙,于是将该指令传达给大班班长。大班班长、分班班长、寝室长、寝室成员,逐层询问查找,工作会落实到具体的成员身上。在查找过程中,不管是中间的管理人员,还是后面的执行人员,都无差别地执行相应程序请将该班级模型描述出来,以便以后刘老师无差别,不用思考地分配其他的任务。2.5.2代码package Client;import Component.*;import Composite.*;import Leaf.*;public class Client public static void main(String args) MyElement element1=new ChiefMonitor(); element1.clean(); element1.newoperation(); MyElement element2=new Monitor(); MyElement element3=new DormitoryChief(); MyElement element4=new DormitoryMember(); ChiefMonitor element5=new ChiefMonitor(); element5.add(element2); element5.add(element3); element5.add(element4); element5.operation(); package Component;public abstract class MyElement public abstract void clean();public abstract void newoperation();package Composite;import java.util.ArrayList;import Component.*;public class ChiefMonitor extends MyElementprivate ArrayList list = new ArrayList();public void clean()System.out.println(*);System.out.println(我是大班班长,我在为刘老师檫黑板。);public void newoperation()System.out.println(我是大班班长,我还能为刘老师做其它的事情。);System.out.println(*);public void add(MyElement element)list.add(element);public void remove(MyElement element)list.remove(element);public void operation()for(Object obj:list)(MyElement)obj).clean();(MyElement)obj).newoperation();package Leaf;import Component.*;public class DormitoryChief extends MyElementpublic void clean()System.out.println(*);System.out.println(我是寝室长,我在为刘老师收作业。);public void newoperation()System.out.println(我是寝室长,我还能为刘老师做其它的事情。);System.out.println(*);package Leaf;import Component.*;public class DormitoryMember extends MyElement public void clean()System.out.println(*);System.out.println(我是寝室成员,我在为刘老师收作业。);public void newoperation()System.out.println(我是寝室成员,我还能为刘老师做其它的事情。);System.out.println(*);package Leaf;import Component.*;public class Monitor extends MyElementpublic void clean()System.out.println(*);System.out.println(我是分班班长,我在为刘老师收作业。);public void newoperation()System.out.println(我是分班班长,我还能为刘老师做其它的事情。);System.out.println(*);2.5.3UML2.6代理模式2.6.1要求冰淇淋厂商可以生产冰淇淋、销售冰淇淋,查询冰淇淋价格冰淇淋零售商是冰淇淋的代理,他对外代理的冰淇淋厂商服务为:价格查询。冰淇淋销售。冰淇淋作为一个独立对象,包含5种不同种类用户通过零售商完成冰淇淋购买在代理行为中,冰淇淋零售商做了额外行为提价:如查询价格为3元的冰淇淋,代理行为后价格变为4元。销售统计:按照不同冰淇淋种类统计销售(数量或总)2.6.2代码package daili;public class factory implements icecreamString name =a,b,c,d,e;int price = 1,2,3,4,5;public void produce(String s)public void seal(String s)public int chaxun(String s)boolean m = true;int mm = 0;for(int i=0;i5;i+)if(s.equals(namei)m=true;mm= pricei;break;elsem=false;if(!m)mm = 0;return mm;package daili;public interface icecream abstract void seal(String s);abstract int chaxun(String s);package daili;public class store implements icecreamfactory fac = new factory();int Sealing=0,0,0,0,0;public void seal(String s)for(int i = 0;i5;i+)if(s.equals(i)Sealingi+;public int chaxun(String s)int p=fac.chaxun(s);return p+1;public void Number(String s)for(int i = 0;i5;i+)if(s.equals(i)System.out.println(已销售+s+Sealingi+ 个);package daili;public class test public static void main(String args)store s = new store();s.seal(a);s.seal(a);s.seal(d);s.seal(b);s.seal(c);System.out.println(s.chaxun(a);s.Number(a);2.6.3UML2.7外观模式2.7.1要求预售信息发布(用户提供房屋参数,中间人完成广告设计发布)联系买家(用户提供联系方式,中间人完成信息发布,接听电话,过滤电话,信息转达)协商看房(用户提供钥匙,中间人完成带客人看房的操作)协商价格(用户提供价格区间,中间人帮用户完成议价)客人只和中间人联系,不关心后面的工作实现2.7.2代码package waiguan;public class car public void drive()System.out.println(开车);package waiguan;public class middle tv TV = new tv();car CAR = new car();phone PHONE = new phone();mouse MOUSE = new mouse();public void information(String s)TV.on();public void contact(String number)PHONE.call();public void look(String key)CAR.drive();public void price(double min,double max)MOUSE.talk();package waiguan;public class mouse public void talk()System.out.println(正在谈价格);package waiguan;public class phone public void call()System.out.println(打电话);package waiguan;public class test public stat

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论