问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

软件系统设计与体系结构——实验三、UML建模2

创作时间:
作者:
@小白创作中心

软件系统设计与体系结构——实验三、UML建模2

引用
CSDN
1.
https://m.blog.csdn.net/jianguosongzi/article/details/145341871

实验目的

  1. 学习类图的绘制;
  2. 学习从系统需求中识别类,并构建相应的面向对象模型;
  3. 学习使用顺序图描述对象之间的交互;
  4. 学习使用活动图为业务流程建模;
  5. 学习使用Visio实现正向工程和逆向工程。

实验设备

计算机及Windows操作系统、Microsoft Visio或PlayCase软件、.NET或Java等编程IDE

软件工具的实验内容及步骤

实验内容

  1. 根据以下描述绘制类图,再正向工程生成Java源代码(也可生成其他面向对象语言的源代码,如C++或C#等):
  • 图形(Shape)可分为圆形(Circle)、矩形(Rectangle)、椭圆形(Ellipse)等具体图形,在Shape类中提供了一个抽象的draw()方法用于绘制图形,而在具体的图形类中实现该抽象draw()方法。
  • 提供一个图形工厂类(ShapeFactory),该类提供一个静态方法createShape(char type),其返回类型为Shape,参数type为所需绘制图形对应的代码,例如“c”表示圆形,“r”表示矩形,“e”表示椭圆形等,在createShape()方法中,可以使用条件语句来判断所需绘制图形的类型,并根据参数的不同返回不同的具体形状对象。【注:“创建关系”是一种特殊的“依赖关系”】
  1. 根据如下描述绘制顺序图:
  • 在某在线订房系统中,顾客确定预订的房间,系统显示预付订金信息;顾客输入信用卡账号和密码,系统请求银行信用卡系统提供支付服务;银行信用卡系统验证用户信息并返回验证通过和支付成功消息;顾客请求系统打印预订单和收据,系统打印相关资料;预订结束。
  1. 根据以下描述绘制某订餐系统中顾客订餐过程的活动图(要求绘制泳道):
  • (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() 方法。

实验二

顺序图:

实验三

活动图:

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号