UML类图解义

小菜:“对了,我时常在一些技术书中看到这些类图表示,简单的还看得懂,有些标记我很容易混淆。要不你给我讲讲吧。”

大鸟:“这个其实多看多用就熟悉了。我给你举一个例子,来看这样一幅图,其中就包括了UML类图中的基本图示法。”

UML类图图示样例

大鸟:“首先你看那个‘动物’矩形框,它就代表一个类(Class)。类图分三层,第一层显示类的名称,如果是抽象类,则就用斜体显示。第二层是类的特性,通常就是字段和属性。第三层是类的操作,通常是方法或行为。注意前面的符号,‘+’表示public,‘-’表示private,‘#’表示protected。”

大鸟:“然后注意左下角的‘飞翔’,它表示一个接口图,与类图的区别主要是顶端有<<interface>>显示。第一行是接口名称,第二行是接口方法。接口还有另一种表示方法,俗称棒棒糖表示法,就是唐老鸭类实现了‘讲人话’的接口。”

小菜:“为什么要是‘讲人话’?”

大鸟:“鸭子本来也有语言,只不过只有唐老鸭是能讲人话的鸭子。”

小菜:“有道理。”

 

大鸟:“接下来就可讲类与类,类与接口之间的关系了。你可首先注意动物、鸟、鸭、唐老鸭之间关系符号。”

小菜:“明白了,它们都是继承的关系,继承关系用空心三角形+实线来表示。”

大鸟:“我举的几种鸟中,大雁是最能飞的,我让它实现了飞翔接口。实现接口用空心三角形+虚线来表示。”

class WideGoose : IFly

{

}

 

class Bird : Animal

{

}

 
 

大鸟:“你看企鹅和气候两个类,企鹅是很特别的鸟,会游不会飞。更重要的是,它与气候有很大的关联。我们不去讨论为什么北极没有企鹅,为什么它们要每年长途跋涉。总之,企鹅需要‘知道’气候的变化,需要‘了解’气候规律。当一个类‘知道’另一个类时,可以用关联(association)。关联关系用实线箭头来表示。”

class Penguin : Bird

{

   private Climate climate;

大鸟:“我们再来看大雁与雁群这两个类,大雁是群居动物,每只大雁都是属于一个雁群,一个雁群可以有多只大雁。所以它们之间就满足聚合(Aggregation)关系。聚合表示一种弱的‘拥有’关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分[DPE](DPE表示此句摘自《设计模式》(第2版),详细摘要说明见附录二)。聚合关系用空心的菱形+实线箭头来表示。”

class WideGooseAggregate

{

   private WideGoose[] arrayWideGoose;

}

大鸟:“合成(Composition,也有翻译成‘组合’的)是一种强的‘拥有’关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样[DPE]。在这里鸟和其翅膀就是合成(组合)关系因为它们是部分和整体的关系,并且翅膀和鸟的生命周期是相同的合成关系用实心的菱形+实线箭头来表示。另外,你会注意到合成关系的连线两端还有一个数字‘1’和数字‘2’,这被称为基数。表明这一端的类可以有几个实例,很显然,一个鸟应该有两只翅膀。如果一个类可能有无数个实例,则就用‘n’来表示。关联关系、聚合关系也可以有基数的。”

class Bird

{

   private Wing wing;

   public Bird()

   {

       wing = new Wing();

   }

}

大鸟:“动物几大特征,比如有新陈代谢,能繁殖。而动物要有生命力,需要氧气、水以及食物等。也就是说,动物依赖于氧气和水。他们之间是依赖关系(Dependency),用虚线箭头来表示。”

abstract class Animal

{

   public Metabolism (Oxygen oxygen,Water water)

   {

   }

}

小菜:“啊,看来UML类图也不算难呀。回想那天我面试题写的代码,我终于明白我为什么写得不成功了,原来一个小小的计算器也可以写出这么精彩的代码,谢谢大鸟。”

大鸟:“吼吼,记住哦,编程是一门技术,更加是一门艺术,不能只满足于写完代码运行结果正确就完事,时常考虑如何让代码更加简练,更加容易维护,容易扩展和复用,只有这样才可以真正得到提高。写出优雅的代码真的是一种很爽的事情。UML类图也不是一学就会的,需要有一个慢慢熟练的过程。所谓学无止境,其实这才是理解面向对象的开始呢。”

哈哈,很好理解,多多学习了!

转载于:https://www.cnblogs.com/HeroBeast/archive/2008/01/23/1050615.html

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

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

相关文章

mybatis学习(2):基本设置和核心配置

1创建一个简单的java项目 2导入jar包 建立一个lib包 链接&#xff1a;https://pan.baidu.com/s/1eJ7xXF2qvUbgde2T--Sphg 提取码&#xff1a;3bgy 加入junit的包 右键项目---build path---add library 4导入配置文件 log4j.properties ### ### log4j.rootLogger ERROR,s…

laravel框架的数据库链接

刚才配置了数据库链接代码之后发现怎么也连不上&#xff0c;是因为有两个文件 .env和.envexample文件&#xff0c;注意配置参数要在.env文件里面&#xff0c;比如我用mysql的话配置.env里 这么一段&#xff1a; DB_CONNECTIONmysqlDB_HOSTlocalhostDB_PORT8889DB_DATABASEshopD…

2899紫金矿业和1862澳华黄金一直都是我的重仓品种啊

2899紫金矿业和1862澳华黄金一直都是我的重仓品种啊2899紫金矿业和1862澳华黄金一直都是我的重仓品种啊http://cache.tianya.cn/publicforum/content/develop/1/135210.shtml 转载于:https://www.cnblogs.com/cy163/archive/2008/02/17/1071029.html

mybatis学习(3):映射文件的配置和接口创建

配置文件 db.properties jdbc.drivercom.oracle.jdbc.OracleDriver jdbc.urljdbc:oracle:thin:127.0.0.1:1521:wiicare jdbc.usernamewiicare jdbc.passwordMdsd123 log4j.properties ### ### log4j.rootLogger ERROR,stdout### ¡ ### log4j.appender.stdout org.ap…

AlarmManager使用注意事项

在使用AlarmManager实现闹钟需要注意的是&#xff0c;intent和pendingintend的context如果是activity&#xff0c;那么当activity回收之后&#xff0c;context对象则不能被AlarmManager用于发送广播打开service之类等等&#xff0c;即使是applicationContext也只是进程唯一&…

Oracle9i OCM认证实践课考试的一些说明

当我考过Oracle9i的OCP之后&#xff0c;某一天在网上闲转&#xff0c;忽然发现在Oracle公司的这个金牌的认证项目之上又推出了一个新的更高一级的认证&#xff0c;它便是OCM&#xff0c;全称是Oracle Certified Master,我把它译为Oracle认证的大师。在网上这方面的信息很少&…

mybatis学习(4):工具类和实体类的创建

配置文件 db.properties jdbc.drivercom.oracle.jdbc.OracleDriver jdbc.urljdbc:oracle:thin:127.0.0.1:1521:wiicare jdbc.usernamewiicare jdbc.passwordMdsd123 log4j.properties ### ### log4j.rootLogger ERROR,stdout### ¡ ### log4j.appender.stdout org.ap…

WinAPI: midiOutGetID - 获取输出设备 ID

//声明: midiOutGetID(hMidiOut: HMIDIOUT; {获取输出设备句柄}lpuDeviceID: PUINT {接受 ID 的变量的指针} ): MMRESULT; {成功返回 0; 可能的错误值见下:}MMSYSERR_INVALHANDLE 5; {设备句柄无效}//举例:转载于:https://www.cnblogs.com/del/archive/2008/02/22/1…

mybatis学习(5):安装 SQL Server installsharewowdir命令值无效的问题

[错误消息] INSTALLSHAREDWOWDIR 命令行值无效。请确保指定的路径有效&#xff0c;并且与 INSTALLSHAREDDIR 路径不同。 INSTALLSHAREDDIR 和 INSTALLSHAREDWOWDIR 参数具有相同的值“D:\soft\sql”。但是&#xff0c;这些参数必须具有不同的值。请为其中一个参数指定不同的值…

windows下解决pip安装出错问题

今天使用pip install xxx突然报错&#xff0c;找了好久全是在linux上的解决方案&#xff0c;好不容易找到一个windows下的解决方案&#xff0c;所以将他记录下来。 解决方案&#xff1a; cmd中敲命令&#xff1a;python -m ensurepip 得到pip的setuptools 然后就可以用&#xf…

检测ID卡的输入或者是其它卡的输入。

由于ID卡或者是其它的一些不同类型的卡&#xff0c;它们只是负责模拟键盘的录入&#xff0c;但是&#xff0c;它们在录入的时候没有一个很好的标识位可以让我们知道当前输入的是客户手工录入的字符串还是ID卡读入的字符串&#xff0c;我相信&#xff0c;很多人在做这样的开发时…

mybatis学习(6):IntelliJ IDEA 如何创建一个普通的 Java 项目,及创建 Java 文件并运行

一、创建 Java 项目&#xff1a; 1、打开 IDEA 软件&#xff0c;点击界面上的 Create New Project 2、出现以下界面&#xff0c;选中 Java&#xff0c;然后选择 JDK&#xff0c;最后点击 Next&#xff0c;进行下一步&#xff08;我的是 jdk1.8&#xff09; 3、这里是选择生成项…

解决(?)问题

问题从来都没有真正的解决&#xff0c;所谓的解决问题只不过是在将一个问题转移成另一个问题而已 转载于:https://www.cnblogs.com/shadow-abyss/p/11248042.html

asp.net中获得客户端的IP地址

因为要在项目中取到客户端IP,在网上搜了下相关资料,其中有一篇文章总结的比较详细,这里就把一些我用的上总结一下 方便以后查阅. 通常我们都通过下面的代码获得IP: string ip System.Web.HttpContext.Current.Request.UserHostAddress; 或 string ip System.Web.HttpCon…

第一百五十期:Java程序员必备:异常的十个关键知识点

总结了Java异常十个关键知识点&#xff0c;面试或者工作中都有用哦&#xff0c;加油。异常是指阻止当前方法或作用域继续执行的问题。比如你读取的文件不存在&#xff0c;数组越界&#xff0c;进行除法时&#xff0c;除数为0等都会导致异常。 前言 总结了Java异常十个关键知识点…

学用 TStringGrid [1] - ColCount、RowCount、Cells

本例功能:1、获取 StringGrid 的行数、列数;2、给单元赋值.运行效果图://示例代码: unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, ExtCtrls, Grids;typeTForm1 class(TForm)StringGrid1: TStringG…

第六章 设计程序架构 之 设计实现WebSocket策略

1. 概述 传统网页的通信方式是请求-响应模式&#xff0c;每次请求-响应都是新的连接。连接的建立和断开也是需要消耗资源的。 WebSocket是基于TCP协议&#xff0c;实现单个连接上的双向通信。 本章内容包括&#xff1a; 异步读写字符串和二进制数据、选择连接丢失策略、何时使用…

第一百五十一期:最新计算机技能需求排名出炉:Python仅排第三,第一你猜得到吗?

除了编程语言之外&#xff0c;要想找一份计算机相关的工作&#xff0c;还需要很多其他方面的技能。最近&#xff0c;来自美国求职公司 Indeed 的一份报告显示&#xff1a;在全美工作技能需求中&#xff0c;数据库语言 SQL、编程语言 Java 分列前两位。 除了编程语言之外&#x…

Java学习笔记_身份验证机制

身份验证机制&#xff08;authentication&#xff09;&#xff1a;确定一个用户具有自己声称的那个身份 应用程序关心用户是否通过了验证而不关心是通过何种方式进行的验证&#xff1f;&#xff1f;&#xff1f; 授权&#xff08;访问控制&#xff1a;authorization&#xff09…

歌谣致学习编程的你们

目录 致学习编程的你们&#xff0c;希望对大家有所帮助&#xff0c;纯属个人学习经验 前言 学习路线 个人网课学习平台 个人推荐两款软件 个人对于参加培训的看法 个人博客写作 同事同学资源 总结 前言 我是歌谣&#xff0c;一个致力于成为一名优秀的技术革新人员。高…