云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 面向对象系统分析和设计综合实验报告4

面向对象系统分析和设计综合实验报告4

  • 62 次阅读
  • 3 次下载
  • 2025/5/3 9:53:33

西南科技大学计算机学院 《面向对象系统分析和设计》实验报告 实验名称:实验4 设计模型实验2 学期:2017-2018学年 第二学期 一、实验目的

1.熟练使用面向对象设计原则对系统进行重构;

2.熟练使用面向对象编程语言(JAVA或C++)实现几种常见的设计模式,包括单例模式、策略模式、装饰模式和适配器模式,理解每一种设计模式的模式动机,掌握模式结构,学习如何使用代码实现这些模式。

二、实验要求

1. 选择合适的面向对象设计原则对系统进行重构,正确无误地绘制重构之后的类图; 2. 结合实例,正确无误地绘制单例模式、策略模式、装饰模式和适配器模式的结构图; 3. 实现单例模式、策略模式、装饰模式和适配器模式,代码运行正确无误。 三、实验内容

1. 现实生活中,居民身份证号码具有唯一性,同一个人不允许有多个身份证号码,第一次申请身份证时将号码分配给居民,如果之后因为遗失等原因补办时,还是使用原来的身份证号码,不会产生新号码,现使用单例模式模拟该场景。

1) 类图

2) 实现代码:

public class IdClient {

1

西南科技大学计算机学院 《面向对象系统分析和设计》实验报告

public static void main(String[] args) { IdentityCardNo.getInstance(); IdentityCardNo.getInstance(); } }

package Refactoring1;

public class IdentityCardNo {

private static IdentityCardNo instance; private String no;

private IdentityCardNo() {

}

public static IdentityCardNo getInstance() { if (instance == null) { }

System.out.println(\第一次办理身份证,分配新号码\); instance = new IdentityCardNo(); instance.setNo(\);

System.out.println(\身份证号码为:\ + instance.getNo()); } else {

System.out.println(\重复办理身份证,获取旧号码!\); }

return instance; }

public String getNo() { return no; }

public void setNo(String no) { this.no = no; }

2. 每一麻将局都有两个骰子,因此骰子就应当是双例类。现使用多例模式模拟该场景。

2

西南科技大学计算机学院 《面向对象系统分析和设计》实验报告

1) 类图

2) 实现代码:

import java.util.Date; import java.util.Random; public class Dice {

private static Dice die1 = new Dice(); private static Dice die2 = new Dice(); private Dice() { }

public static Dice getInstance(int whichOne) { if (whichOne == 1) { return die1; } else {

return die2; } }

public synchronized int dice() { Date d = new Date();

Random r = new Random(d.getTime()); int value = r.nextInt(); value = Math.abs(value); value = value % 6; value += 1; return value; } }

import java.util.Random; import java.util.Date; public class DiceClient {

3

西南科技大学计算机学院 《面向对象系统分析和设计》实验报告 }

private static Dice die1, die2;

public static void main(String[] args) { die1 = Dice.getInstance(1); die2 = Dice.getInstance(2);

System.out.println(\第一骰子骰出: \ System.out.println(\第二骰子骰出: \}

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

? 学生凭学生证可享受票价8折优惠;

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

20元);

? 影院VIP用户除享受票价半价优惠外还可进行积分,积分累计到一定额度可换取电

影院赠送的奖品。

该系统在将来可能还要根据需要引入新的打折方式。 试使用策略模式设计并编程模拟实现该影院售票系统。 1) 类图

2) 实现代码:

public interface Discount {

public double calculate(double price); }

public class MovieTicket { private double price;

private Discount discount; //维持一个对抽象折扣类的引用 public void setPrice(double price) { this.price = price; }

4

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

西南科技大学计算机学院 《面向对象系统分析和设计》实验报告 实验名称:实验4 设计模型实验2 学期:2017-2018学年 第二学期 一、实验目的 1.熟练使用面向对象设计原则对系统进行重构; 2.熟练使用面向对象编程语言(JAVA或C++)实现几种常见的设计模式,包括单例模式、策略模式、装饰模式和适配器模式,理解每一种设计模式的模式动机,掌握模式结构,学习如何使用代码实现这些模式。 二、实验要求 1. 选择合适的面向对象设计原则对系统进行重构,正确无误地绘制重构之后的类图; 2. 结合实例,正确无误地绘制单例模式、策略模式、装饰模式和适配器模式的结构图; 3. 实现单例模式、策略模式、装饰模式和适配器模式,代码运行正确无误。 三、实验内容

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com