软件测试及体系结构报告.docx
- 文档编号:11810963
- 上传时间:2023-04-02
- 格式:DOCX
- 页数:48
- 大小:373.34KB
软件测试及体系结构报告.docx
《软件测试及体系结构报告.docx》由会员分享,可在线阅读,更多相关《软件测试及体系结构报告.docx(48页珍藏版)》请在冰豆网上搜索。
软件测试及体系结构报告
本科生实验报告
实验课程软件设计与体系结构
学院名称信息科学与技术学院
专业名称软件工程
学生姓名
学生学号
指导教师
实验地点6A502
实验成绩
二零一五年一月十五日
软件设计与体系结构实验报告
摘要
通过这系列的实验让我们能够在实际运用环境中理解和掌握软件设计与体系结构的分析和设计方法,以及掌握面向对象系统分析和设计的UML建模语言,来实现对某一信息系统进行系统分析和设计。
关键词:
UML;java语言;算法;编程。
第1章工厂模式
1.1简单工厂模式
1.1.1要求
设计一个任务创建仓。
当用户在仓门口喊一声:
“汉子!
”该仓就创建一个男性角色
当用户喊“妹子!
”,该仓就创建一个女性角色
当用户喊“随便!
”,该仓就随机创建一个角色性别
1.1.2代码
Women.java
publicclasswomenextendsSimpleFactory{
voidCreateCharator(){
System.out.println("已创建一个女性角色!
");
}
}
man.java
publicclassmanextendsSimpleFactory{
voidCreateCharator(){
System.out.println("已创建一个男性角色!
");
}
}
Person.java
importjava.util.Scanner;
publicclassPerson{
publicstaticvoidmain(Stringargs[]){
Scannerreader=newScanner(System.in);
System.out.println("请输入你要创建的角色(“汉子”、“妹子”或“随便”):
");
Strings=reader.next();
reader.close();
if(s.equals("汉子")){
manmen=newman();
men.CreateCharator();
}
elseif(s.equals("妹子")){
womenwm=newwomen();
wm.CreateCharator();
}
elseif(s.equals("随便")){
intn=(int)((Math.random()*10)%2);
if(n==0){
manmen=newman();
men.CreateCharator();
}
else{
womenwm=newwomen();
wm.CreateCharator();
}
}
}
}
SimpleFactory.java
publicabstractclassSimpleFactory{
abstractvoidCreateCharator();
1.1.3UML
1.2工厂模式
1.2.1要求
设计一个游戏职业的构造器,可以为用户构造不同的职业
职业有,建筑师、魔法师、医师、金工技师、厨师。
请根据用户传递的角色职业信息和姓名,为用户生成不同的职业
1.2.2代码
metalworkingTechnicians.java
publicclassmetalworkingTechniciansextendsGame{
voidbuild(){
System.out.println("已创建一个金工技师角色!
名字为:
"+name);
}
}
magician.java
publicclassmagicianextendsGame{
voidbuild(){
System.out.println("已创建一个魔法师角色!
名字为:
"+name);
}
}
Game.java
publicabstractclassGame{
Stringname;
abstractvoidbuild();
}
architect.java
publicclassarchitectextendsGame{
voidbuild(){
System.out.println("已创建一个建筑师角色!
名字为:
"+name);
}
}
cook.java
publicclasscookextendsGame{
voidbuild(){
System.out.println("已创建一个厨师角色!
名字为:
"+name);
}
}
doctor.java
publicclassdoctorextendsGame{
voidbuild(){
System.out.println("已创建一个医生角色!
名字为:
"+name);
}
}
Factory.java
importjava.util.Scanner;
publicclassFactory{
publicstaticvoidmain(Stringargs[]){
System.out.println("请选择要创建的角色:
1、建筑师2、魔法师3、医师4、金工技师5、厨师");
inti;
Scannerreader=newScanner(System.in);
i=reader.nextInt();
if(i==1){
architectmyarchitect=newarchitect();
System.out.print("请输入角色名字:
");
myarchitect.name=reader.next();
myarchitect.build();
}
elseif(i==2){
magicianmymagician=newmagician();
System.out.print("请输入角色名字:
");
mymagician.name=reader.next();
mymagician.build();
}
elseif(i==3){
doctormydoctor=newdoctor();
System.out.print("请输入角色名字:
");
mydoctor.name=reader.next();
mydoctor.build();
}
elseif(i==4){
metalworkingTechniciansmymetalworkingTechnicians=newmetalworkingTechnicians();
System.out.print("请输入角色名字:
");
mymetalworkingTechnicians.name=reader.next();
mymetalworkingTechnicians.build();
}
elseif(i==5){
cookmycook=newcook();
System.out.print("请输入角色名字:
");
mycook.name=reader.next();
mycook.build();
}
else{
System.out.println("创建失败!
");
}
reader.close();
}
}
1.2.3UML
1.3抽象工厂模式
1.3.1要求
为游戏人物创建不同的外观
分为:
服饰、头发、眼镜、肤色、身高
要求不同的职业有不同的外观范围,同一职业外观相同。
也可以设计成不同职业不同外观,同一职业根据等级不同,外观也有细微差异(如头发长短、瞳孔颜色深浅、身高高矮、服饰配饰多少的差异等等)
1.3.2代码
clothes.java
publicinterfaceclothes{
voidClothestype();
}
cookBuild.java
publicclasscookBuildextendsFactoryimplementsclothes,eye,hair,skin,height{
publicvoidClothestype(){
Clothestype="厨师服";
}
publicvoidEyecolor(){
Eyecolor="黑色眼睛";
}
publicvoidHaircolor(){
Haircolor="黑色头发";
}
publicvoidSkincolor(){
Skincolor="黄色皮肤";
}
publicvoidHeightcolor(){
Heightcolor="身高177cm";
}
voidCreateClothes(){
System.out.println("已创建厨师角色!
");
System.out.print(Clothestype+'\t');
}
voidCreateHair(){
System.out.print(Haircolor+'\t');
}
voidCreateEye(){
System.out.print(Eyecolor+'\t');
}
voidCreateSkin(){
System.out.print(Skincolor+'\t');
}
voidCreateHeight(){
System.out.print(Heightcolor+'\t');
}
}
doctorBuild.java
publicclassdoctorBuildextendsFactoryimplementsclothes,eye,hair,skin,height{
publicvoidClothestype(){
Clothestype="医生服";
}
publicvoidEyecolor(){
Eyecolor="蓝色眼睛";
}
publicvoidHaircolor(){
Haircolor="棕色头发";
}
publicvoidSkincolor(){
Skincolor="白色皮肤";
}
publicvoidHeightcolor(){
Heightcolor="身高180cm";
}
voidCreateClothes(){
System.out.println("已创建厨师角色!
");
System.out.print(Clothestype+'\t');
}
voidCreateHair(){
System.out.print(Haircolor+'\t');
}
voidCreateEye(){
System.out.print(Eyecolor+'\t');
}
voidCreateSkin(){
System.out.print(Skincolor+'\t');
}
voidCreateHeight(){
System.out.print(Heightcolor+'\t');
}
}
eye.java
publicinterfaceeye{
voidEyecolor();
}
Factory.java
publicabstractclassFactory{
StringClothestype;
StringEyecolor;
StringHaircolor;
StringSkincolor;
StringHeightcolor;
abstractvoidCreateClothes();
abstractvoidCreateHair();
abstractvoidCreateEye();
abstractvoidCreateSkin();
abstractvoidCreateHeight();
}
hair.java
publicinterfacehair{
voidHaircolor();
}
height.java
publicinterfaceheight{
voidHeightcolor();
}
shixian.java
importjava.util.Scanner;
publicclassshixian{
publicstaticvoidmain(Stringargs[]){
Scannerreader=newScanner(System.in);
System.out.println("请选择要选择的角色:
1、厨师2、医生");
inti=reader.nextInt();
reader.close();
if(i==1){
cookBuildcook=newcookBuild();
cook.Clothestype();
cook.Eyecolor();
cook.Haircolor();
cook.Skincolor();
cook.Heightcolor();
cook.CreateClothes();
cook.CreateHair();
cook.CreateEye();
cook.CreateSkin();
cook.CreateHeight();
}
elseif(i==2){
doctorBuilddoctor=newdoctorBuild();
doctor.Clothestype();
doctor.Eyecolor();
doctor.Haircolor();
doctor.Skincolor();
doctor.Heightcolor();
doctor.CreateClothes();
doctor.CreateHair();
doctor.CreateEye();
doctor.CreateSkin();
doctor.CreateHeight();
}
else{
System.out.println("创建失败!
请输入正确的序号");
}
}
}
skin.java
publicinterfaceskin{
voidSkincolor();
}
1.3.3UML
第2章设计模式
2.1单例模式
2.1.1要求
学号是我们每个同学的唯一标示,要求同学们在入学的时候就分配学号,在随后的学习生活中,不允许分配学号,只能使用该学号,例如办理图书证,办理饭卡,选课等活动。
要求采用该机制,实现学号的单例
2.1.2代码
publicclassStudentCard{
Stringstr;
privatestaticStudentCardstucard=null;
privateStudentCard(){
}
publicsynchronizedvoidsetStudentCardNo(Stringstr1){
str=str1;
System.out.println("卡号:
"+str);
}
publicStringgetStudentCardNo(){
returnstr;
}
publicvoidusecard(Stringstr2){
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("注意:
请保管好自己的饭卡,如果丢失请立即挂失,以免不必要的损失。
");
}
}
publicstaticStudentCardgetStuCard(){
if(stucard==null){
stucard=newStudentCard();
stucard.setStudentCardNo("2姓名:
杨鹤学院:
信息科学与技术学院专业:
软件工程");
}
returnstucard;
}
}
Main
Test.java
publicclasstest{
publicstaticvoidmain(Stringargs[]){
StudentCardcard1=StudentCard.getStuCard();
card1.usecard("借书");
card1.usecard("选课");
card1.usecard("充卡");
}
}
2.1.3UML
2.2生成器模式
2.2.1要求
KFC点餐
足球教练:
在一场足球比赛中有各种的布阵方法(442,4231,433…);教练在开场比赛之前确定阵型,比赛中可以随时暂停更换队形;当有新队型产生的时候,可以很容易让教练学会新的队形并使用。
2.2.2代码
packageKFC;
publicclassMeal{
Stringfood;
Stringdrink;
voidsetFood(Stringfood){
this.food=food;
}
voidsetDrink(Stringdrink){
this.drink=drink;
}
StringgetFood(){
returnfood;
}
StringgetDrink(){
returndrink;
}
}
packageKFC;
publicabstractclassMealBuilder{
Mealmeal=newMeal();
abstractvoidbuildFood();
abstractvoidbuildDrink();
MealgetMeal(){
returnmeal;
}
}
packageKFC;
publicclasssubMealBuilderAextendsMealBuilder{
voidbuildFood(){
meal.setFood("A,food");
}
voidbuildDrink(){
meal.setDrink("A.drink");
}
}
packageKFC;
publicclasssubMealBuilderBextendsMealBuilder{
voidbuildFood(){
meal.setFood("B.food");
}
voidbuildDrink(){
meal.setDrink("B.drink");
}
}
packageKFC;
publicclassWaiter{
MealBuildermb;
voidsetMealBuilder(MealBuildermb){
this.mb=mb;
}
Mealconstruct(){
mb.buildDrink();
mb.buildFood();
returnmb.getMeal();
}
}
packageKFC;
importjava.util.Scanner;
publicclasstest{
publicstaticvoidmain(Stringargs[]){
MealBuilders;
Waiterwaiter=newWaiter();
System.out.println("选择套餐类型:
A或B");
Scannerreader=newScanner(System.in);
Stringtype=reader.next();
reader.close();
if(type.equals("A")||type.equals("a")){
s=newsubMealBuilderA();
}
else{
s=newsubMealBuilderB();
}
waiter.setMealBuilder(s);System.out.println(waiter.construct().getDrink()+'\t'+waiter.construct().getFood());
}
}
Football
importjava.util.Scanner;
publicclassBuildextendsType{
Stringa;
voidBuildType(){
Scannerreader=newScanner(System.in);
Strings;
System.out.println("请教练确定队形:
");
s=reader.next();
Type.setType(s);
System.out.println("队形"+Type.getType());
System.out.println("更换队形?
");
a=reader.next();
reader.close();
}
}
publicclassFootballCoach{
StringType;
voidsetType(StringUType){
Type=UType;
}
Strin
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 测试 体系结构 报告