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

  • 格式:pdf
  • 大小:270.60 KB
  • 文档页数:25

下载文档原格式

  / 25
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《软件体系结构》

实验报告

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

专业班级

学号

姓名

实验成绩:

批阅教师:

年月日

实验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 飞机种类及特征一览表

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

三、实验要求

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

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

四、实验步骤

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

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

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

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

五、实验结果

1. 类图:

实现代码:

private double price;

ConcreteShares(double newPrice){

price = newPrice;

}

public void setPrice(double newPrice){

price = newPrice;

}

public double getPrice(){

return price;

}

public void change() {

// TODO: implement

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

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

for(MyObserver obs:observer){

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

}

}

}

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

* Module: Invester.java

* Author: ct

* Purpose: Defines the Class Invester

***********************************************************************/ import java.util.*;

/** @pdOid a295ff58-e079-42a6-a1d9-f741697dae60 */

public class Invester implements MyObserver {

public String name;

Invester(String name){

= name;

}

public void getChange(double Price) {

// TODO: implement

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