当前位置: 首页 > news >正文

用户界面的UML建模07

4.2 抽象表示层的行为(Abstract Presentation Behaviour)

AbstractForm 类定义了一组如下所示的四种操作: showForm() , getData() , sendConfirmation() 和sendCancellation()。在该阶段的设计过程(design process)中,这四种操作可被基本理解成一组能够被《boundary》对象以某种方式实现的可能操作。

􀂄 showForm()一般用来作为一个自我委托(self-delegate)的消息,在输出设备上进行窗体(form)的绘制工作。当《boundary》对象创建时,该方法可自动执行。

􀂄 getData()负责收集在一次交互后用户所提供的信息,并将这些信息根据需要转换成系统操作的适当参数。

􀂄 sendConfirmation()和sendCancellation()消息用于建模那些在一个系统用户和《boundary》
对象间进行交互的底层系统操作。它们是由于《boundary》对象的聚合组件(aggregate components)产生了系统事件而相应产生的。sendConfirmation()操作通知《boundary》对象系统用户正在向系统提交信息;而sendCancellation()则指明系统用户需要中止(abort)与窗体的交互,而不进行任何信息的提交。

4.3 使用抽象表示层模型

先让我们回到图4 所示的ConnectToSystem 的序列图中去,Library System 创建了AbstractForm 类的《boundary》ConnectionUI 对象,其将执行showForm()方法。该方法负责绘制ConnectionUI 窗体并将其显示给用户。通过与UI 进行交互,用户可以向ConnectionUI 对象发送一个sendConfirmation()消息。

sendConfirmation()消息可作为一个与OK 按钮(参见图5)相关联的事件,但这并没有在抽象表示层建模过程中进行详细说明。ConnectionUI 对象执行一个getData()操作,以获取那些由用户所提供的数据。当数据收集完成后,ConnectionUI 对象发送一个系统操作的消息checkUser() 给《control 》ConnectionController 对象, 并将登录名称和密码作为传递参数。

ConnectionController 对象提交一次对于数据库管理系统的查询操作,数据库负责实例化一个Person。然后,《control》ConnectionController 对象向《entity》Person 对象发送一个消息,该消息用于验证所提供的密码。若密码正确,ConnectionController 对象将会创建MainUI 对象,并销毁ConnectionUI。以上提到的序列图仅给出了当用户成功登录进系统的场景,而针对登录系统失败时场景的建模可参见节6.1。

在节3 中提出的那些活动与抽象表示层模型之间通过活动图中的流对象进行弱关联(weakly connect)。的确,AbstratComponents 应该用在活动图中来解释说明UI 与底层应用之间的数据流。然而我们相信,一个定义良好的活动与AbstractForms 实例之间的关系,能够促进任务和抽象表示层的设计。例如,用户交互中包含的活动应该由《boundary》对象来提供支持。但是,我们很难从一个活动中标识出《boundary》对象,或者从《boundary》对象中标识出活动。

5 具体表示层建模

抽象表示层模型没有描述每一个《boundary》类是由哪些组件组成的,也不提供关于布局的任何描述。此外,它们也并没有描述用户界面组件的事件与《control》类的操作是如何进行关联的。所以在UI 设计的过程中,有时往往需要具体表示层模型。


5.1 具体表示层的结构和布局

从具体表示层的观点来看,图6 中所示的抽象表示层模型可以作为UI 表示层模型的设计模式规约。该模式称为表示层框架(Presentation Framework)。事实上,设计模式的方法是由Gamma 等提出[5]并最终并入UML,该方法可用来描述如何在使用抽象表示层模型元素的图中适应各种不同的环境,如图4 所示的序列图。其实,具体表示层模型是依赖于环境的,因为它们往往是作为环境类(environment class)及组件的术语来进行描述的。在我们的术语中,“环境”指的是面向对象程序设计语言中的类,组件或两者都是。我们可以使用Java[6]来说明UI 类是如何与环境类进行关联的。构造型《cpm》可用来标识这些环境类。

图8 说明了一个使用了表示层框架和一些Java AWT 组件的具体表示层模型。表示层框架使用了UML 中的协作(collaboration)符号来说明以下五个不同的角色(roles):AbstractForm,AbstractContainer,StaticDisplay,InteractionControl 和ActionInvoker。遵照抽象表示层模型中的关系(如图6 所示),表示层框架模式可以清晰地描述出抽象表示层类是如何被具体表示层类进行替换的。事实上,图8 也表明了《cpm》Frame 对应着《apm》AbstractForm,《cpm》Container 对应着《apm》AbstractContainer,《cpm》Label 对应着《apm》StaticDiaplay,《cpm》
TextField 对应着《apm》InteractionControl,以及《cpm》Button 对应着《apm》ctionInvoker。

相关文章:

用户界面的UML建模07

4.2 抽象表示层的行为(Abstract Presentation Behaviour) AbstractForm 类定义了一组如下所示的四种操作: showForm() , getData() , sendConfirmation() 和sendCancellation()。在该阶段的设计过程(desig…...

Node.js中使用Joi 和 express-joi-validation进行数据验证和校验

在进行项目开发的过程中,很多时候系统对用户输入的数据会进行严格校验的,通常我们会以“前端校验为辅,后端校验为主”的思想进行校验处理。 后端接口校验的时候,是只能一直使用if进行逻辑判断呢,还是有更加方便的方法…...

InstructGPT:基于人类反馈训练语言模型遵从指令的能力

大家读完觉得有意义记得关注和点赞!!! 大模型进化树,可以看到 InstructGPT 所处的年代和位置。来自 大语言模型(LLM)综述与实用指南(Amazon,2023) 目录 摘要 1 引言 …...

jrc水体分类对水体二值掩码修正

使用deepwatermap生成的水体二值掩码中有部分区域由于被云挡住无法识别,造成水体不连续是使用jrc离线数据进行修正,jrc数据下载连接如下:https://global-surface-water.appspot.com/download 选择指定区域的数据集合下载如图: 使…...

营销/CDP/MA/SCRM

最近几年面向企业用户的营销系统,cdp,ma,scrm等发展迅速,下面就简单介绍一下这些系统。 架构图 架构图中显示了CDP,MA,SCRM的核心功能,其实还有基础底座的功能。 比如统一登录,权限…...

免费CDN加速,零成本提升网站速度!

1. 起因 免备案的服务器要么在海外,要么是国内通过内网穿透才能访问,这两种方法好处是免费,坏处是延迟太高,有的地区延迟能到四五百甚至超时,这样明显是不行的。 所以需套一个cdn来加速,在2024年&#xff0…...

2024-12-29-sklearn学习(25)无监督学习-神经网络模型(无监督) 烟笼寒水月笼沙,夜泊秦淮近酒家。

文章目录 sklearn学习(25) 无监督学习-神经网络模型(无监督)25.1 限制波尔兹曼机25.1.1 图形模型和参数化25.1.2 伯努利限制玻尔兹曼机25.1.3 随机最大似然学习 sklearn学习(25) 无监督学习-神经网络模型(无监督) 文章参考网站&a…...

RSA e与phi不互质(AMM算法进行有限域开根)

e与phi不互质 这一部分学习来自trup师傅的博客 针对CTFer的e与phi不互素的问题 - 跳跳糖 1&#xff1a;m^t<n from Crypto.Util.number import * from secret import flag flag bflag{*********} m bytes_to_long(flag) p getPrime(1024) q getPrime(1024) n p * q …...

网络物理互连

案例简介 美乐公司为新创建公司&#xff0c;公司现需要架设网络&#xff0c;需要下属分公司通过路由器与外网服务器联通&#xff0c;请使用Packet Tracer&#xff0c; 按照任务要求完成实验。实验中需配置设备或端口的IP地址。 1、绘制拓扑图 2、配置ip地址 3、配置路由ip R0 …...

论文研读:Text2Video-Zero 无需微调,仅改动<文生图模型>推理函数实现文生视频(Arxiv 2023-03-23)

论文名&#xff1a;Text2Video-Zero: Text-to-Image Diffusion Models are Zero-Shot Video Generators 1. 摘要 1.1 方法总结 通过潜空间插值, 实现动作连续帧。 以第一帧为锚定&#xff0c;替换原模型的self-attention&#xff0c;改为cross-attention 实现 保证图片整体场…...

服务端错误的处理和web安全检测

文章目录 I 服务端错误的处理业务返回码处理前端处理业务返回码nginx处理http状态码II web安全检测区分服务器类型主机扫漏III 使用 micro_httpd 搭建一个PHP站点步骤下载micro_httpd 并安装它配置micro_httpd 来服务PHP文件I 服务端错误的处理 服务端发生错误时,返回给前端的…...

鸿蒙TCPSocket通信模拟智能家居模拟案例

效果图 一、智能家居热潮下的鸿蒙契机 在当下科技飞速发展的时代&#xff0c;智能家居已如浪潮般席卷而来&#xff0c;深刻地改变着我们的生活方式。从能依据环境光线自动调节亮度的智能灯具&#xff0c;到可远程操控、精准控温的智能空调&#xff0c;再到实时监测健康数据的智…...

SQL-leetcode-197. 上升的温度

197. 上升的温度 表&#xff1a; Weather ---------------------- | Column Name | Type | ---------------------- | id | int | | recordDate | date | | temperature | int | ---------------------- id 是该表具有唯一值的列。 没有具有相同 recordDate 的不同行。 该表包…...

C++系列关键字static

文章目录 1.静态变量2.静态成员变量 1.静态变量 在C的&#xff0c;静态变量是一个非常有用的特性&#xff0c;它在程序执行期间只初始化一次&#xff0c;并在程序的整个执行期间都保持其值。 1.局部静态变量。定义在函数中&#xff0c;只初始化一次&#xff0c;不像普通的局部…...

使用Fn Connect之后,如何访问到其他程序页面?原来一直都可以!

前言 昨天小白讲过在飞牛上登录Fn Connect&#xff0c;就可以实现远程访问家里的NAS。 接着就有小伙伴咨询&#xff1a;如何远程访问到家里其他需要使用不同端口号才能访问到的软件&#xff0c;比如Jellyfin、Emby等。 这个小白在写文章的时候确实没有考虑到&#xff0c;因为…...

探索Composable Architecture:小众但高效的现代框架技术

近年来&#xff0c;随着应用规模和复杂性的不断提升&#xff0c;对开发效率和可维护性的要求也水涨船高。特别是在领域驱动设计 (DDD) 和反应式编程 (Reactive Programming) 的趋势影响下&#xff0c;一些小众但极具潜力的框架应运而生。本篇博客将深入探讨一种日益受到关注但尚…...

改投论文时如何重构

摘要: 不同期刊和会议对于论文的风格、页数限制等方面有一些差别, 论文在某个地方被拒, 改投别处时需要进行重构. 本贴描述重构的基本方案. 你的衣柜乱糟糟的, 如何清理呢? 方案 A. 把不喜欢的衣服一件件丢掉.方案 B. 把衣服全部丢出来, 然后再把喜欢的衣服一件件放进去. 对…...

P8打卡——YOLOv5-C3模块实现天气识别

&#x1f368; 本文为&#x1f517;365天深度学习训练营中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 1.检查GPU import torch import torch.nn as nn import torchvision.transforms as transforms import torchvision from torchvision import transforms, dat…...

基于微信小程序的校园点餐平台的设计与实现(源码+SQL+LW+部署讲解)

文章目录 摘 要1. 第1章 选题背景及研究意义1.1 选题背景1.2 研究意义1.3 论文结构安排 2. 第2章 相关开发技术2.1 前端技术2.2 后端技术2.3 数据库技术 3. 第3章 可行性及需求分析3.1 可行性分析3.2 系统需求分析 4. 第4章 系统概要设计4.1 系统功能模块设计4.2 数据库设计 5.…...

PyTorch快速入门教程【小土堆】之完整模型训练套路

视频地址完整的模型训练套路&#xff08;一&#xff09;_哔哩哔哩_bilibili import torch import torchvision from model import * from torch import nn from torch.utils.data import DataLoader# 准备数据集 train_data torchvision.datasets.CIFAR10(root"CIFAR10&…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销&#xff0c;平衡网络负载&#xff0c;延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路

进入2025年以来&#xff0c;尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断&#xff0c;但全球市场热度依然高涨&#xff0c;入局者持续增加。 以国内市场为例&#xff0c;天眼查专业版数据显示&#xff0c;截至5月底&#xff0c;我国现存在业、存续状态的机器人相关企…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...

LeetCode - 199. 二叉树的右视图

题目 199. 二叉树的右视图 - 力扣&#xff08;LeetCode&#xff09; 思路 右视图是指从树的右侧看&#xff0c;对于每一层&#xff0c;只能看到该层最右边的节点。实现思路是&#xff1a; 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...

Python 实现 Web 静态服务器(HTTP 协议)

目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1&#xff09;下载安装包2&#xff09;配置环境变量3&#xff09;安装镜像4&#xff09;node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1&#xff09;使用 http-server2&#xff09;详解 …...

Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?

Pod IP 的本质与特性 Pod IP 的定位 纯端点地址&#xff1a;Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址&#xff08;如 10.244.1.2&#xff09;无特殊名称&#xff1a;在 Kubernetes 中&#xff0c;它通常被称为 “Pod IP” 或 “容器 IP”生命周期&#xff1a;与 Pod …...

【版本控制】GitHub Desktop 入门教程与开源协作全流程解析

目录 0 引言1 GitHub Desktop 入门教程1.1 安装与基础配置1.2 核心功能使用指南仓库管理日常开发流程分支管理 2 GitHub 开源协作流程详解2.1 Fork & Pull Request 模型2.2 完整协作流程步骤步骤 1: Fork&#xff08;创建个人副本&#xff09;步骤 2: Clone&#xff08;克隆…...

6.计算机网络核心知识点精要手册

计算机网络核心知识点精要手册 1.协议基础篇 网络协议三要素 语法&#xff1a;数据与控制信息的结构或格式&#xff0c;如同语言中的语法规则语义&#xff1a;控制信息的具体含义和响应方式&#xff0c;规定通信双方"说什么"同步&#xff1a;事件执行的顺序与时序…...