【UML用户指南】-04-从代码到UML的关键抽象

1、关键抽象

声明了一个名为paint的操作,它的实现调用名为drawString的另一个操作,drawString操作负责在指定的位置上打印“Hello,World!”。在通常的面向对象的方式下,drawString是一个名称为g的参数上的一个操作,g的类型是类Graphics。
 

import java.awt.Graphics;class HelloWorld extends java.applet.Applet{public void paint (Graphics g){g.drawString("Hello,World!",10,10);}}

有上述代码实例,生成对应的UML模型

补充Applet和Graphics外部引用类,其中Applet 作为父类,属于泛化关系;Graphics 属于依赖关系(影响元素的变化)

更上层的泛化关系如下图所示,ImageObserver 作为接口元素

包之间的依赖关系,如下图所示,在UML中,包被表示成带有标签的文件夹,包可以被嵌套,邮箱的虚线段描述了包之间的依赖。

例如,HelloWorld 依赖包java.applet,java.applet依赖包java.awt。

2、机制

各部分如何协同工作

顺序图

序列从运行对象Thread开始,它调用Toolkit的一个操作run。对象Toolkit调用它自己的(callbackLoop),然后它调用ComponentPeer的操作handleExpose。对象ComponentPeer调用它的目标操作paint。对象ComponentPeer假设它的目标是Component,但在这种情况下,目标实际是Component的子类(即HelloWorld),因此,HelloWorld的操作paint被多态地处理。
 

3、制品

“Hello,World!”被实现为一个小应用程序(applet),它不是单独存在的,而通常是某个网页的一部分。打开含有该程序的网页,并由一些运行该程序的Thread对象的浏览器机制触发,程序就开始执行了。然而,直接作为网页一部分的并不是类HelloWorld,而是由Java编译器(它把描述该类的源代码转换成可执行的制品)产生的该类的二进制形式。这说明对一个系统存在非常不同的观察角度。所有早先的图描述的是程序的逻辑视图,这里所说的是applet的物理制品的视图。

制品图

逻辑类 HelloWorld 被表示成位于顶部的一个类矩形,这个图中的其他每个图符都表示了系统实现视图中一个UML制品。制品是一种物理表示,如文件。名为hello.java的制品表示了逻辑类HelloWorld的源代码,它是可以由开发环境和配置管理工具操纵的文件。用Java编译器可把这段源代码转换成二进制程序 HelloWorld.class,以使得它适合于在计算机的 Java虚拟机上执行。源代码和二进制程序都表现了(即物理上实现了)逻辑类,这被表示为带着关键字«manifest»的虚线箭头。

制品的图符是名字之上标注了关键字«artifact»的矩形

制品间的依赖用虚箭头表示

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VMWare下安装Linux虚拟机(图文)

大家好,在当今科技发展迅速的时代,虚拟化技术在企业和个人用户中变得越来越普遍。VMware作为一款领先的虚拟化软件,为用户提供了在单一物理计算机上运行多个操作系统的能力,为开发、测试和运维等任务提供了便利。在这篇文章中&…

打开C语言常用的内存函数大门(三) —— memset()函数(内含讲解用法和模拟实现)

文章目录 1. 前言2. memset函数2.1 memset函数原型2.2 memset函数参数的介绍2.3 memset函数的使用演示 3. memset函数的模拟实现4. 总结 1. 前言 哈喽,我们又见面了。通过前面两个内存函数(memcpy、memmove函数)讲解的锤炼后,对如何解析一个自己从来没有…

【TB作品】msp430f5529单片机墨水屏,口袋板,tmp421温度,温控风扇

文章目录 一、扬声器模块介绍二、驱动介绍三、程序介绍四、全部代码下载 msp430f5529d单片机墨水屏,口袋板,tmp421温度,温控风扇 基本要求:高于20度开转,温度越高转速越快,高于40度风扇停转,温…

知识计算概述

文章目录 知识计算研究现状技术发展趋势 知识计算 随着知识图谱技术及应用的不断发展,图谱质量和知识完备性成为影响知识图谱应用的两大重要难题,以图谱质量提升、潜在关系挖掘与补全、知识统计与知识推理作为主要研究内容的知识计算成为知识图谱应用的重…

C语言 | Leetcode C语言题解之第119题杨辉三角II

题目&#xff1a; 题解&#xff1a; int* getRow(int rowIndex, int* returnSize) {*returnSize rowIndex 1;int* row malloc(sizeof(int) * (*returnSize));row[0] 1;for (int i 1; i < rowIndex; i) {row[i] 1LL * row[i - 1] * (rowIndex - i 1) / i;}return row…

Qt第三方库QicsTable简单实例(1)

闲来无事&#xff0c;无意间看到一个Qics表格操作第三方库&#xff0c;自己写了一个特别简单的实例&#xff0c;效果如图所示&#xff1a; 操作界面的数据还是特别快的&#xff0c;因为使用了模型

【Spring Cloud】分布式配置动态刷新

目录 问题解决方案1.使用Spring Boot Actuator监控接口【不推荐】流程图使用Spring Boot Actuator的步骤 2.Spring Cloud Bus第一种方案问题Spring Cloud Bus流程图Spring Cloud Bus实现客户端刷新的步骤开发准备实现1. 在config-server中添加依赖2.在config-server中添加配置a…

你喜欢什么样的狗?喜欢内狗还是外狗?论看门狗的重要性:极低功耗微处理器复位电路CN803/CN809/CN810

看门狗&#xff1a;缩写WTD,英文WATCH DOG. 你的程序会死机吗&#xff1f; 陷入死循环或程序指针不知跑哪里去了&#xff0c;看门狗的作用是把程序拉回来&#xff0c;重新开始跑。 有了看门狗&#xff0c;程序就不会死机&#xff0c;所以很重要。 比如一个温度控制器&#xf…

OBproxy基础运维

简介 obproxy 属于OceanBase的代理&#xff0c;生产环境中 OceanBase 数据库的数据 会以 多副本的形式 存放在各个 OBServer 节点上&#xff0c;obproxy 接收用户发出的 SQL 请求&#xff0c;并将 SQL 请求转发至最佳目标 OBServer 节点&#xff0c;最后将执行结果返回给用户&…

算法题解记录27+++随机链表的复制(百日筑基)

一、题目描述&#xff1a; 题目难度&#xff1a;中等 给你一个长度为 n 的链表&#xff0c;每个节点包含一个额外增加的随机指针 random &#xff0c;该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成&#xff0c;其中每…

小柴带你学AutoSar系列一、基础知识篇(4)编译

小柴带你学AutoSar总目录https://blog.csdn.net/qianshang52013/article/details/138140235?spm1001.2014.3001.5501 Flechazohttps://www.zhihu.com/people/jiu_sheng 编译真的很重要&#xff01;了解一下机器是如何工作的吧。当然啦&#xff01;通过学习这篇文章还可以学习…

unityBIM

Revit模型到Unity勉强能用 1、Revit直接导出FBX&#xff0c;然后拖到unity里面 2、通过Navisworks导出FBX&#xff0c;拖到unity里面。 我什么都还没做&#xff0c;只建立了一个空的URP效果&#xff0c;把FBX拖进去&#xff0c;挂了一个相机控制器&#xff0c;效果勉强看得过…

中医的悠久历史文化

中医&#xff0c;作为中华民族的传统医学&#xff0c;拥有着悠久的历史和深厚的文化底蕴。自古以来&#xff0c;中医便以其独特的理论体系和治疗方法&#xff0c;为中华民族的繁衍昌盛做出了巨大贡献。如今&#xff0c;随着现代医学的不断发展&#xff0c;中医依然以其独特的魅…

【计算机毕设】SpringBoot海滨体育馆管理系统设计与实现 - 源码免费(私信领取)

免费领取源码 &#xff5c; 项目完整可运行 &#xff5c; v&#xff1a;chengn7890 诚招源码校园代理&#xff01; 1. 引言 体育馆作为重要的体育场馆&#xff0c;承担着举办体育赛事、健身活动和文化演出等多种功能。为了提高体育馆的管理效率和服务质量&#xff0c;本项目旨在…

DASK==python并行计算

文档10 Minutes to Dask — Dask documentation demo代码 import numpy as np import pandas as pd import dask.dataframe as dd import dask# 设置调度器为多线程 dask.config.set(schedulerthreads) # 创建一个示例的Pandas DataFrame index pd.date_range("2021-09…

Java后端代码框架包设计-什么是Domain,BO,VO?我们改如何区分和定义?

我们先来看看一个项目的代码结构,如下图: 1.定义包名用domain这个单词是什么含义 在Java中,domain 这个单词通常用于表示应用程序的“领域模型”(Domain Model)或“领域层”(Domain Layer)。领域模型是描述系统业务逻辑和规则的对象集合,它通常包含实体(Entities)、…

主机加固解决方案分享

在信息化社会的今天&#xff0c;网络安全问题日益凸显&#xff0c;其中主机的安全性更是至关重要。主机加固&#xff0c;作为提升计算机系统安全性的重要手段&#xff0c;其重要性不言而喻。那么&#xff0c;有什么好的方案呢&#xff1f;今天我就给大家介绍个主机加固的解决方…

Git使用规范及命令

文章目录 一、Git工作流二、分支管理三、Git命令操作规范1. 切到develop分支&#xff0c;更新develop最新代码2. 新建feature分支&#xff0c;开发新功能3. 完成feature分支&#xff0c;合并到develop分支4. 当某个版本所有的 feature 分支均合并到 develop 分支&#xff0c;就…

领域建模(系统操作复习)

习题 问题 考察点 领域建模 识别概念类 固定模板 Conceptual Class Category Examples specifications,designs, or descriptions of things roles of people containers of other things things in a container abstract noun concepts organizations events processes (…

vs2022 MSVC2017_64 调试Qt5.14.2源码

pdb调试文件下载路径https://download.qt.io/online/qtsdkrepository/windows_x86/desktop/qt5_5142/qt.qt5.5142.debug_info.win64_msvc2017_64/ 在vs中添加pdb文件符号路径&#xff0c;使其qt在调试时能查找到相应的符号文件。 在需要调试的解决方案下通过解决方案点击&…