电梯系统的UML文档04

这个版本的类图是直接从4.2节中用例图的描述得来的,这个视图中的类覆盖了系统所有的功能。我们用电梯类和电梯控制器类(ElevatorControl)移动或停止电梯;用门类开门或关门;用指示器类让乘客知道电梯的位置和方向;乘客用按钮类来完成呼叫电梯或选择楼层;我们用安全装置类来满足系统紧急制动的要求。所有的类和中心控制器类都有接口,而中心控制器类的任务是控制所有类的动作。这个类图帮助我们从对象划分和系统功能的的角度理解系统的基本设计。

当我们试图深入我们电梯控制系统的设计,找到我们自己的详细设计方法,从这个类图开始得到我们系统的好的实现时,问题就出现了。在本文中,用已有的架构设计系统和完成UML 文档的顺序是颠倒的。我们从老师那里“继承”一个设计好的电梯系统,不是首先用UML 进行系统设计,而且在用UML 之前,手中已经有了软件的部分设计。正是由于上述的原因,在遇到真正的难题之前,我们就知道这个类图不是一个完美的最终设计。

但在其他情况下,设计者迟早会在以后发现这个设计对开发阶段不适合,这几乎是肯定的。基于前面的讨论,每一个组件(软件/硬件)是由一个处理器来控制的,假如我们的系统是一个普通的中央控制的系统,则我们现在类图的方案可能不会导致将来的设计缺陷。但是分布嵌入系统的特征决定了电梯系统的类图仅仅从对象的角度来设计是不够的。

分析手中已有的类图,我们未来软件的潜在缺陷如下。如果不能找到更好的方案,软件的设计会失败。

·控制对象负担过重:从前面的分析我们可以发现作为控制中心,电梯控制器对象(ElevatorControl)必须和其他所有的对象交互。所有的计算和控制任务必须由这个对象完成。

·其它一些对象的空闲:电梯控制器(ElevatorControl)不停的工作,其它的一些对象,如按钮和指示器象系统的界面一样,更糟的是象门和电梯等对象竟然是系统的一部分-如“硬件“。从软件控制的角度来看,他们在系统的范围之外。

·计算资源的争夺:当超过一个对象想同时得到中央控制对象的控制时,这些对象竞争控制器有限的计算资源是不可避免的,一些对象不能及时得到维持正常运行的控制消息,而这在实时系统中会导致致命的缺陷。

·整个系统的低效率:即使控制器的计算资源足够快/多,能处理每一个控制请求并及时做出反应,中央控制对实时系统(如电梯)仍然不是一个有效的方案。

4.3.2 类图-软件架构视图

前面的分析和教学项目的软件架构类图被模拟证明非常适合电梯控制系统,并从从这个角度得到类图。

类图提供怎样设计和实现控制系统的方法。真实电梯控制系统的软件架构精确的反映在这个图表中。除了Dispatcher,所有其它的控制对象都是从超类电梯控制器继承而来。这些控制对象共享电梯控制器的一些属性,而且有用于其控制对象的自己属性和方法。被控制对象所控制的对象被定以为环境对象。虽然这些环境对象存在于电梯系统,但不属于软件控制系统。下一节我们将从系统架构的角度详细讨论这些不能控制的对象。

·门控制器(DoorControl)控制门马达的动作,一个电梯的两个门马达都是由一个门控制对象控制的。门马达能够发出打开门,关门或门反向运动的命令。

·驱动控制器(DriveControl)控制电梯驱动,它将电梯上下移动在需要时停下,是主要的马达。

·指示灯控制器(LanternControl)有两个,每一个控制一个电梯灯,标示电梯的当前运动方向。

·楼道按键控制器(HallButtonControl)每一层有两个,一个控制上升一个控制下降。楼道按钮控制器处理楼道按键的按下及给楼道呼叫灯反馈。

·电梯按钮控制器(CarButtonControl)用于每一层都在电梯里。电梯按钮控制器接受电梯呼叫按钮
(CarCallButton)的呼叫,而且控制相应的电梯呼叫灯的开关。

·电梯位置指示器(CarPositionIndicator)赋值给电梯位置指示器,乘客可以知道电梯当前的位置。

图3:类图——软件架构图

在系统中有两个非控制对象:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/956788.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

我的创作纪念日——我与CSDN一起走过的365天

目录 一、机缘:旅程的开始 二、收获:沿路的花朵 三、日常:不断前行中 四、成就:一点小确幸 五、憧憬:梦中的重点 一、机缘:旅程的开始 最开始开始写博客是在今年一二月份的时候,也就是上一…

详解Redis的Zset类型及相关命令

目录 Zset简介 ZADD ZCARD ZCOUNT ZRANGE ZREVRANGE ZRANGEBYSCORE ZPOPMAX BZPOPMAX ZPOPMIN BZPOPMIN ZRANK ZREVRANK ZSCORE ZREM ZREMRANGEBYRANK ZREMRANGEBYSCORE ZINCRBY ZINTERSTORE 内部编码 应用场景 Zset简介 有序集合相对于字符串、列表、哈希…

Flask:后端框架使用

文章目录 1、介绍2、demo演示3、Flask请求和响应 3.1 演示demo3.2 request获取请求体数据3.3 requests发送请求3.4 响应返回和接收 4、特殊路由 4.1 路由重定向4.2 路由拦截器 1、介绍 Flask是由python语言编写的轻量级Web应用框架,主要应用于后端框架&#xff…

【Golang/nacos】nacos配置的增删查改,以及服务注册的golang实例及分析

前言 本文分析的实例来源于nacos在github上的开源仓库 nacos配置的增删查改 先具体来看一段代码,我将逐步分析每一段的作用 package mainimport ("fmt""time""github.com/nacos-group/nacos-sdk-go/clients""github.com/naco…

Nvidia Blackwell架构深度剖析:深入了解RTX 50系列GPU的升级

在CES 2025上,英伟达推出了基于Blackwell架构的GeForce RTX 50系列显卡,包括RTX 5090、RTX 5080、RTX 5070 Ti和RTX 5070。一段时间以来,我们已经知晓了该架构的各种细节,其中许多此前还只是传闻。不过,英伟达近日在20…

面试--你的数据库中密码是如何存储的?

文章目录 三种分类使用 MD5 加密存储加盐存储Base64 编码:常见的对称加密算法常见的非对称加密算法https 传输加密 在开发中需要存储用户的密码,这个密码一定是加密存储的,如果是明文存储那么如果数据库被攻击了,密码就泄露了。 我们要对数据…

【24】Word:小郑-准考证❗

目录 题目 准考证.docx 邮件合并-指定考生生成准考证 Word.docx 表格内容居中表格整体相较于页面居中 考试时一定要做一问保存一问❗ 题目 准考证.docx 插入→表格→将文本转换成表格→✔制表符→确定选中第一列→单击右键→在第一列的右侧插入列→布局→合并单元格&#…

WOA-CNN-GRU-Attention、CNN-GRU-Attention、WOA-CNN-GRU、CNN-GRU四模型对比多变量时序预测

WOA-CNN-GRU-Attention、CNN-GRU-Attention、WOA-CNN-GRU、CNN-GRU四模型对比多变量时序预测 目录 WOA-CNN-GRU-Attention、CNN-GRU-Attention、WOA-CNN-GRU、CNN-GRU四模型对比多变量时序预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 基于WOA-CNN-GRU-Attention、…

Spring Boot整合WebSocket

目录 ?引言 1.WebSocket 基础知识 ?1.1 什么是 WebSocket? ?1.2 WebSocket 的应用场景 ?2.Spring Boot WebSocket 整合步骤 2.1 创建 Spring Boot 项目 2.2 添加 Maven 依赖 2.3 配置 WebSocket 2.4 创建 WebSocket 控制器 2.5 创建前端页面 引言 在…

K8S 集群搭建和访问 Kubernetes 仪表板(Dashboard)

一、环境准备 服务器要求: 最小硬件配置:2核CPU、4G内存、30G硬盘。 服务器可以访问外网。 软件环境: 操作系统:Anolis OS 7.9 Docker:19.03.9版本 Kubernetes:v1.18.0版本 内核版本:5.4.203-…

2024:成长、创作与平衡的年度全景回顾

文章目录 1.前言2.突破自我:2024年个人成长与关键突破3.创作历程:从构想到落笔,2024年的文字旅程4.生活与学业的双重奏:如何平衡博客事业与个人生活5.每一步都是前行:2024年度的挑战与收获6.总结 1.前言 回首2024年&a…

计算机网络 (45)动态主机配置协议DHCP

前言 计算机网络中的动态主机配置协议(DHCP,Dynamic Host Configuration Protocol)是一种网络管理协议,主要用于自动分配IP地址和其他网络配置参数给连接到网络的设备。 一、基本概念 定义:DHCP是一种网络协议&#xf…

学习记录1

[SUCTF 2019]EasyWeb 直接给了源代码&#xff0c;分析一下 <?php function get_the_flag(){// webadmin will remove your upload file every 20 min!!!! $userdir "upload/tmp_".md5($_SERVER[REMOTE_ADDR]);if(!file_exists($userdir)){mkdir($userdir);}if…

git操作(Windows中GitHub)

使用git控制GitHub中的仓库版本&#xff0c;并在Windows桌面中创建与修改代码&#xff0c;与GitHub仓库进行同步。 创建自己的GitHub仓库 创建一个gen_code实验性仓库用来学习和验证git在Windows下的使用方法&#xff1a; gen_code仓库 注意&#xff0c;创建仓库时不要设置…

Redis的安装和使用--Windows系统

Redis下载地址&#xff1a; windows版本readis下载&#xff08;GitHub&#xff09;&#xff1a; https://github.com/tporadowski/redis/releases &#xff08;推荐使用&#xff09; https://github.com/MicrosoftArchive/redis/releases 官网下载&#xff08;无Windows版本…

【odbc】odbc连接kerberos认证的 hive和spark thriftserver

hive odbc驱动&#xff0c;以下两种都可以 教程&#xff1a;使用 ODBC 和 PowerShell 查询 Apache HiveHive ODBC Connector 2.8.0 for Cloudera Enterprise spark thriftserver本质就是披着hiveserver的外壳的spark server 完成kerberos认证: &#xff08;1&#xff09;可以…

AllData数据中台核心菜单十一:数据集成平台

&#x1f525;&#x1f525; AllData大数据产品是可定义数据中台&#xff0c;以数据平台为底座&#xff0c;以数据中台为桥梁&#xff0c;以机器学习平台为中层框架&#xff0c;以大模型应用为上游产品&#xff0c;提供全链路数字化解决方案。 ✨奥零数据科技官网&#xff1a;…

随遇随记篇

vue 函数 unref() 获取原始值 ref 定义的属性 需要 .value 才能拿到值&#xff0c;unref 直接返回原始值&#xff1b;若属性不是ref 定义的&#xff0c;也是直接返回原始值&#xff1b; /* description: 是否必填*/required?: boolean | Ref<boolean>.....let value …

Python操作Excel——openpyxl使用笔记(1)

0. 模块的安装 使用命令&#xff1a; pip install openpyxl 通过命令&#xff1a; pip show openpyxl 检查安装&#xff0c;当前使用的版本信息如下&#xff1a; 1. 文档的基本操作 1.1 创建&#xff0c;保存和关闭 几个简单的函数调用即可&#xff1a; import openpyx…

STM32之FreeRTOS开发介绍(十九)

STM32F407 系列文章 - freertos&#xff08;十九&#xff09; 目录 前言 一、简述 二、开源网址 三、原理及功能特性 1.原理 2.功能 3.特点 4.优缺点 四、参考书籍 五、实现方式 总结 前言 FreeRTOS是一个免费的、开源的实时操作系统&#xff0c;专为微控制器和嵌入…