软件系统设计与体系结构——实验三、UML建模2
创作时间:
作者:
@小白创作中心
软件系统设计与体系结构——实验三、UML建模2
引用
CSDN
1.
https://m.blog.csdn.net/jianguosongzi/article/details/145341871
实验目的
- 学习类图的绘制;
- 学习从系统需求中识别类,并构建相应的面向对象模型;
- 学习使用顺序图描述对象之间的交互;
- 学习使用活动图为业务流程建模;
- 学习使用Visio实现正向工程和逆向工程。
实验设备
计算机及Windows操作系统、Microsoft Visio或PlayCase软件、.NET或Java等编程IDE
软件工具的实验内容及步骤
实验内容
- 根据以下描述绘制类图,再正向工程生成Java源代码(也可生成其他面向对象语言的源代码,如C++或C#等):
- 图形(Shape)可分为圆形(Circle)、矩形(Rectangle)、椭圆形(Ellipse)等具体图形,在Shape类中提供了一个抽象的draw()方法用于绘制图形,而在具体的图形类中实现该抽象draw()方法。
- 提供一个图形工厂类(ShapeFactory),该类提供一个静态方法createShape(char type),其返回类型为Shape,参数type为所需绘制图形对应的代码,例如“c”表示圆形,“r”表示矩形,“e”表示椭圆形等,在createShape()方法中,可以使用条件语句来判断所需绘制图形的类型,并根据参数的不同返回不同的具体形状对象。【注:“创建关系”是一种特殊的“依赖关系”】
- 根据如下描述绘制顺序图:
- 在某在线订房系统中,顾客确定预订的房间,系统显示预付订金信息;顾客输入信用卡账号和密码,系统请求银行信用卡系统提供支付服务;银行信用卡系统验证用户信息并返回验证通过和支付成功消息;顾客请求系统打印预订单和收据,系统打印相关资料;预订结束。
- 根据以下描述绘制某订餐系统中顾客订餐过程的活动图(要求绘制泳道):
- (1)顾客请求查看菜单;
- (2)系统显示菜单和今日特价;
- (3)顾客选菜;
- (4)系统显示订单和价格;
- (5)顾客确认订单;
- (6)系统显示可送餐时间;
- (7)顾客指定送餐时间、地点和支付方式;
- (8)系统确认接受订单,然后发送Email给顾客以确认订餐,同时发送相关订餐信息通知给餐厅员工。
实验结果
实验一
类图:
Java源代码:
// Shape.java
abstract class Shape {
// 抽象方法,子类必须实现
public abstract void draw();
}
// Circle.java
class Circle extends Shape {
@Override
public void draw() {
System.out.println("Drawing a Circle");
}
}
// Rectangle.java
class Rectangle extends Shape {
@Override
public void draw() {
System.out.println("Drawing a Rectangle");
}
}
// Ellipse.java
class Ellipse extends Shape {
@Override
public void draw() {
System.out.println("Drawing an Ellipse");
}
}
// ShapeFactory.java
class ShapeFactory {
// 静态方法,根据参数返回相应的形状对象
public static Shape createShape(char type) {
switch (type) {
case 'c':
return new Circle();
case 'r':
return new Rectangle();
case 'e':
return new Ellipse();
default:
throw new IllegalArgumentException("Unknown shape type: " + type);
}
}
}
// Main.java
public class Main {
public static void main(String[] args) {
Shape shape1 = ShapeFactory.createShape('c');
shape1.draw(); // 输出: Drawing a Circle
Shape shape2 = ShapeFactory.createShape('r');
shape2.draw(); // 输出: Drawing a Rectangle
Shape shape3 = ShapeFactory.createShape('e');
shape3.draw(); // 输出: Drawing an Ellipse
}
}
说明:
- (1)Shape 类:
这是一个抽象类,定义了一个抽象方法 draw()。 - (2)Circle、Rectangle 和 Ellipse 类:
这些类分别继承了 Shape 类,并实现了 draw() 方法。 - (3)ShapeFactory 类:
这是一个工厂类,包含一个静态方法 createShape(char type)。
该方法根据传入的字符参数返回相应的形状对象。 - (4)Main 类:
这是一个测试类,用于演示如何使用 ShapeFactory 来创建不同的形状对象并调用它们的 draw() 方法。
实验二
顺序图:
实验三
活动图:
热门推荐
白开水放多长时间就不能喝了?专家:超过这个时间,别再喝了
射手座与爱情:如何在浪漫关系中驾驭这颗自由的心
减肥期间喝奶茶的注意事项是什么?
中铁快运回应“遗失物品送回”收费标准:分高铁急送和普通快运两种
学习优化算法需要哪些数学基础
剑来讲的什么故事?一般人感觉看不懂?找准这些线索就懂了
投资分析师的工作经历怎么写?
儿童患流感为何恢复有快有慢?专家:吃得科学很重要
被称为一代贤相的叶向高,在历史上是个什么样的人?
八字进阶教程:地支六合的源流
如何通过六大核心胜任力提升个人职业竞争力与发展潜力?
酒驾和无证驾驶哪个更严重?处罚标准全解析
炖牛肉买牛肉哪个部位最好?不是所有牛肉都能炖出好味道!
“李氏故里”甘肃陇西收藏海内外1500余部李氏族谱
末代摄政王载沣,溥仪的父亲,使得爱新觉罗家族得以善终
萨博和路飞:体现《海贼王》真正意义的两个角色
千亿“脑控”市场来袭!脑机接口“爆发”,政策加码助力技术突破与商业化落地
专家解析:中医针灸如何治疗面瘫
别让孩子输在起跑线上:科技特长生路径全解析
[中译]敬畏之心,一种具有巨大力量的体验
中国传统文化怎样进入现代生活
车启动慢的原因是什么?如何解决车启动慢的问题?
民国才女林徽因的爱情故事:与徐志摩、梁思成、金岳霖的情感纠葛
智能手机续航科技革命:从材料创新到用户体验提升之路
探索亚特兰蒂斯之谜,高度文明一夜消失的十大解释
提升宿舍管理效率的创新策略
如何开展趋势交易?趋势交易有哪些策略?
如何科学饲养大丹犬(大丹犬饲养指南,从喂养到训练全面解析)
张伟丽或迎终极挑战:菲奥罗特之战后直通蝇量级超级对决
搭舞台唱主角,为国际化经营注入青年力量