最新中南大学软件体系结构实验6行为型设计模式实验资料.docx

上传人:b****5 文档编号:4114180 上传时间:2022-11-28 格式:DOCX 页数:28 大小:137.28KB
下载 相关 举报
最新中南大学软件体系结构实验6行为型设计模式实验资料.docx_第1页
第1页 / 共28页
最新中南大学软件体系结构实验6行为型设计模式实验资料.docx_第2页
第2页 / 共28页
最新中南大学软件体系结构实验6行为型设计模式实验资料.docx_第3页
第3页 / 共28页
最新中南大学软件体系结构实验6行为型设计模式实验资料.docx_第4页
第4页 / 共28页
最新中南大学软件体系结构实验6行为型设计模式实验资料.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

最新中南大学软件体系结构实验6行为型设计模式实验资料.docx

《最新中南大学软件体系结构实验6行为型设计模式实验资料.docx》由会员分享,可在线阅读,更多相关《最新中南大学软件体系结构实验6行为型设计模式实验资料.docx(28页珍藏版)》请在冰豆网上搜索。

最新中南大学软件体系结构实验6行为型设计模式实验资料.docx

最新中南大学软件体系结构实验6行为型设计模式实验资料

Beadwrks公司还组织各国的“芝自制饰品店”定期进行作品交流,体现东方女性聪慧的作品曾在其他国家大受欢迎;同样,自各国作品也曾无数次启发过中国姑娘们的灵感,这里更是创作的源泉。

此次调查以女生为主,男生只占很少比例,调查发现58%的学生月生活费基本在400元左右,其具体分布如(图1-1)

10元以下□10~50元□50~100元□100元以上□

“碧芝”的成功归于他的唯一,这独一无二的物品就吸引了各种女性的眼光。

开了连锁店,最大的好处是让别人记住你。

“漂亮女生”一律采用湖蓝底色的装修风格,简洁、时尚、醒目。

“品牌效应”是商家梦寐以求的制胜法宝。

小饰品店往往会给人零乱的感觉,采用开架陈列就会免掉这个麻烦。

“漂亮女生”像是个小超市,同一款商品色彩丰富地挂了几十个任你挑,拿上东西再到收银台付款。

这也符合女孩子精挑细选的天性,更保持了店堂长盛不衰的人气。

据了解,百分之八十的饰品店都推出“DIY饰品”来吸引顾客,一方面顺应了年轻一代喜欢与众不同、标新立异的心理;另一方面,自制饰品价格相对较低,可以随时更新换代,也满足了年轻人“喜新厌旧”的需要,因而很受欢迎。

除了“漂亮女生”形成的价格,优惠等条件的威胁外,还有“碧芝”的物品的新颖性,创意的独特性等,我们必须充分预见到。

这里有营业员们向顾客们示范着制作各种风格炯异的饰品,许多顾客也是学得不亦乐乎。

据介绍,经常光顾“碧芝”的都是些希望得到世界上“独一无二”饰品的年轻人,他们在琳琅满目的货架上挑选,然后亲手串连,他们就是偏爱这种DIY的方式,完全自助在现场,有上班族在里面精挑细选成品,有细心的小女孩在仔细盘算着用料和价钱,准备自己制作的原料。

可以想见,用本来稀奇的原料,加上别具匠心的制作,每一款成品都必是独一无二的。

而这也许正是自己制造所能带来最大的快乐吧。

“碧芝”最吸引人的是那些小巧的珠子、亮片等,都是平日里不常见的。

店长梁小姐介绍,店内的饰珠有威尼斯印第安的玻璃珠、秘鲁的陶珠、奥利的施华洛世奇水晶、法国的仿金片、日本的梦幻珠等,五彩缤纷,流光异彩。

按照饰珠的质地可分为玻璃、骨质、角质、陶制、水晶、仿金、木制等种类,其造型更是千姿百态:

珠型、圆柱型、动物造型、多边形、图腾形象等,美不胜收。

全部都是进口的,从几毛钱一个到几十元一个的珠子,做一个成品饰物大约需要几十元,当然,还要决定于你的心意。

“碧芝”提倡自己制作:

端个特制的盘子到柜台前,按自己的构思选取喜爱的饰珠和配件,再把它们串成成品。

这里的饰珠和配件的价格随质地而各有同,所用的线绳价格从几元到一二十元不等,如果让店员帮忙串制,还要收取10%~20%的手工费。

 

《软件体系结构》

实验报告

 

项目名称行为型设计模式实验

专业班级

学号

姓名

 

实验成绩:

批阅教师:

 

年月日

实验6行为型设计模式实验

实验学时:

2

每组人数:

1

实验类型:

3(1:

基础性2:

综合性3:

设计性4:

研究性)

实验要求:

1(1:

必修2:

选修3:

其它)

实验类别:

3(1:

基础2:

专业基础3:

专业4:

其它)

一、实验目的

熟练使用PowerDesigner和任意一种面向对象编程语言实现几种常见的行为型设计模式,包括观察者模式和策略模式,理解每一种设计模式的模式动机,掌握模式结构,学习如何使用代码实现这些模式。

二、实验内容

1.某实时在线股票软件需要提供如下功能:

当股票购买者所购买的某支股票价格变化幅度达到5%时,系统将自动发送通知(包括新价格)给购买该股票的所有股民。

试使用观察者模式设计并实现该系统,要求绘制相应的类图并编程模拟实现。

2.某公司欲开发一套机房监控系统,如果机房达到某一指定温度,温度传感器(Thermosensor)将自动传递信号给各种响应设备,例如警示灯(CautionLight)将闪烁(flicker())、报警器(Annunciator)将发出警报(alarm())、安全逃生门(SecurityDoor)将自动开启(open())、隔热门(InsulatedDoor)将自动关闭(close())等,每一种响应设备的行为由专门的程序来控制。

为了将来能够方便地引入新类型的响应设备,采用观察者模式和适配器模式设计并模拟实现该系统。

3.某软件公司为某电影院开发了一套影院售票系统,在该系统中需要为不同类型的用户提供不同的电影票(MovieTicket)打折(Discount)方式,具体打折方案如下:

(1)学生凭学生证可享受票价8折优惠;

(2)年龄在10周岁及以下的儿童可享受每张票减免10元的优惠(原始票价需大于等于20元);

(3)影院VIP用户除享受票价半价优惠外还可进行积分,积分累计到一定额度可换取电影院赠送的奖品。

该系统在将来可能还要根据需要引入新的打折方式。

试使用策略模式设计并编程模拟实现该影院售票系统。

4.某软件公司欲开发一款飞机模拟系统,该系统主要模拟不同种类飞机的飞行特征与起飞特征,需要模拟的飞机种类及其特征如表1所示:

表1飞机种类及特征一览表

飞机种类

起飞特征

飞行特征

直升机(Helicopter)

垂直起飞(VerticalTakeOff)

亚音速飞行(SubSonicFly)

客机(AirPlane)

长距离起飞(LongDistanceTakeOff)

亚音速飞行(SubSonicFly)

歼击机(Fighter)

长距离起飞(LongDistanceTakeOff)

超音速飞行(SuperSonicFly)

鹞式战斗机(Harrier)

垂直起飞(VerticalTakeOff)

超音速飞行(SuperSonicFly)

为将来能够模拟更多种类的飞机,试采用策略模式设计并模拟实现该飞机模拟系统。

三、实验要求

1.结合实例,正确无误地绘制观察者模式和策略模式的模式结构图;

2.使用任意一种面向对象编程语言实现观察者模式和策略模式实例,代码运行正确无误。

四、实验步骤

1.结合实例,使用PowerDesigner绘制观察者模式实例结构图并用面向对象编程语言实现该模式实例;

2.结合实例,使用PowerDesigner绘制观察者模式实例结构图并用面向对象编程语言实现该模式实例;

3.结合实例,使用PowerDesigner绘制策略模式实例结构图并用面向对象编程语言实现该模式实例;

4.结合实例,使用PowerDesigner绘制策略模式实例结构图并用面向对象编程语言实现该模式实例。

五、实验结果

1.类图:

实现代码:

publicclassClient{

publicstaticvoidmain(Stringargs[]){

SharesSubjectshare1=newConcreteShares(100);

Investerobserver1=newInvester("张三");

Investerobserver2=newInvester("李四");

share1.addInvester(observer1);

share1.addInvester(observer2);

share1.change();

}

}

/***********************************************************************

*Module:

ConcreteShares.java

*Author:

ct

*Purpose:

DefinestheClassConcreteShares

***********************************************************************/

importjava.util.*;

/**@pdOid03891fd5-7c63-4b84-9bbf-2430332d48d2*/

publicclassConcreteSharesextendsSharesSubject{

/**@pdOidab879b87-ee8a-4265-93ea-a9f2ef3b54d9*/

privatedoubleprice;

ConcreteShares(doublenewPrice){

price=newPrice;

}

publicvoidsetPrice(doublenewPrice){

price=newPrice;

}

publicdoublegetPrice(){

returnprice;

}

publicvoidchange(){

//TODO:

implement

System.out.println("变化超过5%");

System.out.println("--------------------");

for(MyObserverobs:

observer){

((MyObserver)obs).getChange(price);

}

}

}

/***********************************************************************

*Module:

Invester.java

*Author:

ct

*Purpose:

DefinestheClassInvester

***********************************************************************/

importjava.util.*;

/**@pdOida295ff58-e079-42a6-a1d9-f741697dae60*/

publicclassInvesterimplementsMyObserver{

publicStringname;

Invester(Stringname){

this.name=name;

}

publicvoidgetChange(doublePrice){

//TODO:

implement

System.out.println("正在发送信息给用户"+name+",目前该股票价格为"+Price);

}

}

/***********************************************************************

*Module:

MyObserver.java

*Author:

ct

*Purpose:

DefinestheInterfaceMyObserver

***********************************************************************/

importjava.util.*;

/**@pdOid995b8e6a-43c4-4fa9-99ca-10b78081beae*/

publicinterfaceMyObserver{

/**@pdOid463b82d3-31e1-4c0a-afae-74595234ab82*/

publicvoidgetChange(doublePrice);

}

/***********************************************************************

*Module:

SharesSubject.java

*Author:

ct

*Purpose:

DefinestheClassSharesSubject

***********************************************************************/

importjava.util.*;

/**@pdOid23f9decd-a8e4-4e34-9cf2-6abf8fcc3678*/

publicabstractclassSharesSubject{

/**@pdOid06f9c8c6-c557-4a15-8bb9-bc2034891d68*/

publicArrayListobserver=newArrayList();

publicvoidaddInvester(MyObservernewObserver){

//TODO:

implement

observer.add(newObserver);

}

/**@pdOid3050e00a-10fc-4cb8-9492-222fcc9964a2*/

publicvoidremoveInvester(MyObserveroldObserver){

//TODO:

implement

observer.remove(oldObserver);

}

/**@pdOid7dc77e25-a4ab-4193-96bc-bca75699feaf*/

publicabstractvoidchange();

}

2.类图:

实现代码:

v

/***********************************************************************

*Module:

Annunciatior.java

*Author:

ct

*Purpose:

DefinestheClassAnnunciatior

***********************************************************************/

importjava.util.*;

/**@pdOid3510b9e2-117f-483b-8974-09e848391cf1*/

publicclassAnnunciator{

/**@pdOida6c25fe7-e2d8-42da-ba61-b75314a19725*/

publicvoidalarm(){

//TODO:

implement

System.out.println("警报响起");

}

}

/***********************************************************************

*Module:

AnnuciatorObserver.java

*Author:

ct

*Purpose:

DefinestheClassAnnuciatorObserver

***********************************************************************/

importjava.util.*;

/**@pdOid30002f48-45d3-4162-94aa-a9d00c4768ec*/

publicclassAnnunciatorObserverimplementsMyObserver{

/**@pdOid7b599933-3f2b-46e5-8f57-96eb28d90d5c*/

privateAnnunciatorannunciator;

AnnunciatorObserver(AnnunciatornewAnnunciator){

this.annunciator=newAnnunciator;

}

/**@pdOidcc9d6b91-6264-4d80-804d-cb8a933fc46c*/

publicvoidresponse(){

//TODO:

implement

annunciator.alarm();

}

}

/***********************************************************************

*Module:

CautionLight.java

*Author:

ct

*Purpose:

DefinestheClassCautionLight

***********************************************************************/

importjava.util.*;

/**@pdOid5cf7cee6-d049-4109-a349-801aa6589072*/

publicclassCautionLight{

/**@pdOid212c62b0-7f33-44ba-a43e-7e9754286e6a*/

publicvoidflicker(){

//TODO:

implement

System.out.println("应急灯打开");

}

}

/***********************************************************************

*Module:

CautionLightObserver.java

*Author:

ct

*Purpose:

DefinestheClassCautionLightObserver

***********************************************************************/

importjava.util.*;

/**@pdOid438ef70a-32ca-4bb3-a07e-71d6606642e5*/

publicclassCautionLightObserverimplementsMyObserver{

/**@pdOid0887aded-cca4-490d-af3c-203073d8356b*/

privateCautionLightcautionLight;

CautionLightObserver(CautionLightnewCautionLight){

this.cautionLight=newCautionLight;

}

/**@pdOid6cba0a71-1bc7-4052-8f95-b9ad83e34d2a*/

publicvoidresponse(){

//TODO:

implement

cautionLight.flicker();

}

}

 

publicclassClient{

publicstaticvoidmain(Stringargs[]){

MySubjecttempreture=newTempreture();

MyObserverannunciatorObserver,cautionLightObserver,insulatedDoorObserver,securityDoorObserver;

Annunciatorannunciator=newAnnunciator();

CautionLightcautionLight=newCautionLight();

InsulatedDoorinsulatedDoor=newInsulatedDoor();

SecurityDoorsecurityDoor=newSecurityDoor();

annunciatorObserver=newAnnunciatorObserver(annunciator);

cautionLightObserver=newCautionLightObserver(cautionLight);

insulatedDoorObserver=newInsulatedDoorObserver(insulatedDoor);

securityDoorObserver=newSecurityDoorObserver(securityDoor);

tempreture.add(securityDoorObserver);

tempreture.add(insulatedDoorObserver);

tempreture.add(cautionLightObserver);

tempreture.add(annunciatorObserver);

tempreture.change();

}

}

 

/***********************************************************************

*Module:

InsulatedDoor.java

*Author:

ct

*Purpose:

DefinestheClassInsulatedDoor

***********************************************************************/

importjava.util.*;

/**@pdOidf495d797-be3a-4141-9d50-325742eb46ab*/

publicclassInsulatedDoor{

/**@pdOid7540dd3b-1f25-4d54-8828-73222f87e612*/

publicvoidclose(){

//TODO:

implement

System.out.println("隔离门关闭");

}

}

/***********************************************************************

*Module:

InsulatedDoorObserver.java

*Author:

ct

*Purpose:

DefinestheClassInsulatedDoorObserver

***********************************************************************/

importjava.util.*;

/**@pdOid26920542-c6ee-4b65-b8a4-a55c13119475*/

publicclassInsulatedDoorObserverimplementsMyObserver{

/**@pdOid9da21a0d-9858-

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1