`
369128396
  • 浏览: 84600 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

UML解析Hello World (转载)

    博客分类:
  • uml
阅读更多

得在学习C语言的时候,教科书上的第一个程序就是叫Hello world,一个在屏幕上简单地打印出“Hello world!”语句的例子。在系统的学习UML语言之前我们来看一个简单的例子,让大家有一个系统的认识。
在java中一个在浏览器中显示“Hello World!”的Applet代码如下:
import java.awt.Graphics;
class HelloWorld extends java.applet.Applet{
public void paint( Graphics g ){
g.drawString("Hello World!", 10,10 );
}
}
代码的第一行:
import java.awt.Graphics;
使得程序可以使用Graphics类。前缀 java.awt指出了类Graphics所在的包。
第二行代码:
class HelloWorld extends java.applet.Applet{
从Applet类派生出新的类HelloWorld,Applet类在java.applet包中。
接下来的三行代码:
public void paint( Graphics g ){
g.drawString("Hello World!", 10,10 );
}
声明了类HelloWorld的方法paint,在他的实现中调用了另一个方法drawString来输出“Hello World!”。
我们可以很直接地为这个程序用UML建立模型。如图2-1。

图2-1
图2-1表达了最基本的HelloWorld模型,但它还有很多东西没有表示出来。在我们的程序中Applet类和Graphics类的使用是不相同的。Applet用作HelloWorld类的父类,而Graphics类用在方法paint的实现中。在UML模型中可以将这些关系表示为图2-2:

图2-2
在图2-2的类关系图中,我们用简单的矩行图标表示类Applet和Graphics类,没有将它们的属性和方法显露出来是为了简化。图中的空心箭头表示HelloWorld类是Applet类的子类,代表一般化。HelloWorld和Graphics之间的虚线箭头表示依赖关系,表示HelloWorld类使用了Graphics类。
到这里或许你认为已结束了,其实不然,如果认真研究java库中的Applet类和Graphics类会发现他们都是一个庞大的继承关系中的一部分。追踪Applet的实现可以得到另外一个类图,如图2-3所示:

图2-3

分享到:
评论

相关推荐

    hacking hello world 3-3

    本文档不仅详细分析了“Hello World”程序的编译和运行过程,还介绍了使用UML和QEMU等工具进行系统调用模拟的方法。通过这些技术手段,读者可以更深入地理解程序是如何与操作系统交互的,以及如何利用虚拟化技术进行...

    StarUML_5.0_Developer_Guide

    本章通过一个简单的“Hello World”示例介绍了如何使用StarUML的Open API进行开发。 1. **创建脚本**: - **脚本基础**:使用脚本语言编写脚本,以便与StarUML交互。 - **脚本执行**:介绍如何在StarUML环境中...

    IBM Rhapsody 设计工具体验

    2. **环境测试:“Hello World”**:通过一个简单的“Hello World”示例,新手可以快速上手,测试Rhapsody的环境配置是否正确。 3. **构建秒表:**更进一步,通过构建一个秒表应用,深入理解设计、关系、构建和调试...

    JavaCodeAnalyzer

    使用我们的程序解析正在运行的“ Hello World” Java代码,并生成AST(抽象语法树)。第2周待办事项(2018年4月26日) 将配置和代码文件路径作为命令行参数讨论配置文件的结构并进行解析。 检查代码文件中特定...

    wine源码深入分析

    2. HelloWorld应用的创建流程:这部分介绍了创建一个基本Windows应用的步骤,这些步骤在Wine环境下的实现也是文章分析的重点。例如,文章提到注册窗口类、创建窗口、显示窗口、更新窗口以及消息循环等核心步骤。 3....

    2023年JAVA基础面试题.doc

    receiver.receive("Hello, World!"); } } ``` 15. Java 没有运算符重载,这里的 Integer 相加实际上是自动拆箱为 int 值相加,然后再次装箱为 Integer。Java 会自动处理这种转换。 16. 使用 StringBuffer 或 ...

    有关java的八个实验

    在Java中,"Hello, World!"是最基本的入门程序。这个实验将引导初学者了解如何创建一个简单的Java应用程序,通过`public static void main(String[] args)`方法来执行代码,并输出指定的信息。这一步是所有Java程序...

    delphi7开发指南英文原版

    此外,还会有关于安装、配置Delphi 7环境的详细步骤,以及如何创建和运行第一个“Hello, World!”程序的指导。 第二部分:Intraweb Intraweb是Delphi中的一个强大组件,用于构建Web应用程序。这部分会深入探讨...

    python学习笔记

    - 第一个Python程序(Hello World)。 - 基本输入输出操作(print、input函数)。 - **设计第一个游戏**: - 游戏逻辑设计(游戏规则、玩家交互)。 - 随机性引入(random模块)。 - 用户界面(控制台界面设计...

    Eclipse从入门到精通

    - **Hello World示例**: 通过创建一个简单的插件项目来演示插件开发的基本流程。 - **项目结构**: 包括`MypluginPlugin.java`和`SampleAction.java`等文件,以及`plugin.xml`配置文件。 - **功能演示**: 通过`...

    GEF-whole-upload.pdf

    从简单的HelloWorld示例开始,逐步深入GEF的各项特性和高级功能,是掌握这一强大框架的有效途径。无论是初学者还是有经验的开发者,通过实践和探索,都能够充分利用GEF构建出满足特定需求的图形编辑应用。

    GEF及GMF入门学习

    - 从简单的HelloWorld项目开始, 逐步熟悉GEF的基本组件和流程。 - 通过阅读官方文档和相关书籍深入理解GEF和GMF的工作原理。 - 多参考开源项目, 学习优秀的实践案例。 - **资源推荐**: - **书籍**: - "Eclipse...

    最新Java面试宝典pdf版

    s = s + " world!";这两行代码执行后,原始的String对象中的内容到底变了没有? 22 32、是否可以继承String类? 23 33、String s = new String("xyz");创建了几个String Object? 二者之间有什么区别? 23 34、String ...

    JAVA面试宝典2010

    s = s + " world!";这两行代码执行后,原始的String对象中的内容到底变了没有? 22 32、是否可以继承String类? 23 33、String s = new String("xyz");创建了几个String Object? 二者之间有什么区别? 23 34、String ...

    Java面试宝典-经典

    s = s + " world!";这两行代码执行后,原始的String对象中的内容到底变了没有? 22 32、是否可以继承String类? 23 33、String s = new String("xyz");创建了几个String Object? 二者之间有什么区别? 23 34、...

    java面试题大全(2012版)

    s = s + " world!";这两行代码执行后,原始的String对象中的内容到底变了没有? 22 32、是否可以继承String类? 23 33、String s = new String("xyz");创建了几个String Object? 二者之间有什么区别? 23 34、String ...

    Java面试宝典2012版

    s = s + " world!";这两行代码执行后,原始的String对象中的内容到底变了没有? 22 32、是否可以继承String类? 23 33、String s = new String("xyz");创建了几个String Object? 二者之间有什么区别? 23 34、...

    java面试宝典2012

    s = s + " world!";这两行代码执行后,原始的String对象中的内容到底变了没有? 24 32、是否可以继承String类? 25 33、String s = new String("xyz");创建了几个String Object? 二者之间有什么区别? 25 34、String ...

    Java面试宝典2012新版

    s = s + " world!";这两行代码执行后,原始的String对象中的内容到底变了没有? 22 32、是否可以继承String类? 23 33、String s = new String("xyz");创建了几个String Object? 二者之间有什么区别? 23 34、...

    C#完全手册

    对“Hello World”程序的每一行代码进行详细解释,包括如何声明main方法、如何使用Console.WriteLine()函数打印文本到控制台,以及程序的执行流程。 #### 3.3 运行程序 指导读者如何使用Visual Studio或命令行编译...

Global site tag (gtag.js) - Google Analytics