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

【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.lryc.cn/news/360085.html

相关文章:

  • (2024,LoRA,全量微调,低秩,强正则化,缓解遗忘,多样性)LoRA 学习更少,遗忘更少
  • 【Java】面向对象的三大特征:封装、继承、多态
  • 请问Java8进阶水平中,常用的设计模式有哪些?
  • 力扣--最大子数组和
  • C# 中的字符与字符串
  • TPM之VMK密封
  • Fastjson 反序列化漏洞[1.2.24-rce]
  • 【面试宝藏】Go基础面试题其一
  • python如何安装pyqt4
  • 调用上传文件接口出现格式错误
  • leetcode148. 排序链表,归并法,分治的集大成之作
  • 一维时间序列信号的小波模极大值分解与重建(matlab R2018A)
  • 五分钟“手撕”栈
  • MAC也能玩转3A大作 Crossover使用指南 crossover运行战地5
  • docker私有镜像仓库的搭建及认证
  • simCSE句子向量表示(1)-使用transformers API
  • 网络运维的重要性
  • 还不会使用多线程优化代码执行效率?codefun教你在业务场景中使用CompletableFuture进行优化!
  • 数据结构-堆(带图)详解
  • React Native 之 react-native-share(分享)库 (二十三)
  • JCR一区级 | Matlab实现TCN-BiGRU-MATT时间卷积双向门控循环单元多特征分类预测
  • 游戏心理学Day01
  • 错误模块路径: ...\v4.0.30319\clr.dll,v4.0.30319 .NET 运行时中出现内部错误,进程终止,退出代码为 80131506。
  • 005 CentOS 7.9 RabbitMQ安装及配置
  • Xcode 15 libarclite 缺失问题
  • 绘画智能体分享
  • 7_2、C++程序设计进阶:数据共享
  • d2-crud-plus 使用小技巧(五)—— 搜索时间(或下拉列表)后,点击X清除按钮后返回值为null,导致异常
  • ChatGPT成知名度最高生成式AI产品,使用频率却不高
  • R19 NR移动性增强概况