设计模式学习笔记(2)——UML图详解_uml代码if不想要小菱形-程序员宅基地

技术标签: 设计模式  

1、注释(comment)
注释就是对类图的补充说明,可以附加在任何元素上,用右上角有折角的矩形来表示,其内放置说明文字,通过虚线连接被注释的元素。
注释
2、类(Class)
在面向对象(OO) 编程中,类是对现实世界中一组具有相同特征的物体的抽象。在UML类图中,类使用包含类名、属性(field) 和方法
(method) 且带有分割线的矩形来表示:
类的属性的完整表示方式:
可见性 名称 :类型 [ = 缺省值]
中括号中的内容表示是可选的
类的方法的完整表示方式:
可见性 名称(参数列表) [ : 返回类型]
中括号中的内容是可选的。
在这里插入图片描述
3、接口(Interface)
接口是一种特殊的类,具有类的结构但不可被实例化,只可以被实现(继承)。C++中,通过类实现面向对象的编程,在基类中只给出纯虚函(接口)的声明,然后在派生类中实现纯虚函数的具体定义的方式实现接口,不同派生类实现接口的方式也不尽相同,从而实现多态。
java中,在抽象类定义抽象函数(接口),抽象函数不能有函数体,抽象类不能被实例化,由其子类实现抽象函 数(接口),不同子类实现接口的方式可以不同,从而实现多态。
在UML中,接口有两种表示方式: 普通接口表示法(飞翔);棒棒糖表示法(讲人话),使用一个带有名称的小圆圈来表示,在旁边写上相应接口名称,没有具体接口方法。
接口名称通常以大写字母I(interface)开头。
在这里插入图片描述
4、UML类图中的关系
类与类之间的关系(relation) 在UML类图中,常见的有以下几种关系:
在这里插入图片描述
(1)类图 类图—依赖关系 依赖关系( (Dependency) )
在这里插入图片描述在这里插入图片描述
(2)类图— 关联关系(Association) )
关联关系实际上就是类与类之间的联系 , 是依赖关系的特例 。实线箭头
关联具有 导航性 :即双向关系或单向关系
关系具有 多重性。
a.单向一对一 关系
// 一个人一个身份证号 一对一单向的 一对一
public class Person { private IDCard card;}
public class IDCard{}
在这里插入图片描述
b.双向 一对一 关系
// 一个人 对应 一 个身份证号 一对一
//一 一 个身份证号也对应一个人
public class Person { private IDCard card;}
public class IDCard{ private Person person; }
在这里插入图片描述
(3)类图— 继承关系(Inheritance) )
继承关系也称泛化关系,是依赖关系的 特例。 。 A 类继承了B类也相当于A 类用到了B 类。 空心三角形+ 实线
public abstract class DaoSupport{
public void save(Object entity){ }
public void delete(Object id){ }
}
public class PersonServiceBean extends
DaoSupport{ }
PersonServiceBean 继承了 了DaoSupport
在这里插入图片描述
(4)类图— 实现关系(Implementation) )
实 现关系实际上就是A类实现B接口 ,是依赖关系的特例 ,依赖关系更强。 空心三角形+ 虚线
public interface PersonService {
public void delete(Interger id);
}
public class PersonServiceBean implements PersonService {
public void delete(Interger id){}
}
PersonServiceBean 实现了 PersonService 这个接口- - 实现关系实现 关系实际上就是A类实现B接口
在这里插入图片描述
(5)类图— 聚合关系(Aggregation) )
聚合关系表示的是整体和部分的关系, 整体与部分可以分开。 聚合关系是关联关系的特例,所以他具有关联的导航性与多重性 。使用带空心菱形的实线,菱形指向整体来表示。
如 :一台电脑由键盘(keyboard) 、显示器(monitor),鼠标等组成。考虑计算机与鼠标、显示器能不能分开?
如果认为:关系是可以分开的,则是聚合关系 ;
关系是不可以分开的 ,则是组合关系。
鼠标是可以分离的:可以插上也可以不插上,电脑没有鼠标还是一个电脑;显示器也是可以分离的;鼠标类、显示器类与电脑类构成聚合关系。
public class Computer {
private Mouse mouse; // 鼠标可以和computer 分离
private Monitor monitor; // 显示器可以和Computer 分离
public void setMouse(Mouse mouse) {this.mouse = mouse; }
public void setMonitor (Monitor monitor) {
this.monitor = monitor;}
}
在这里插入图片描述
认为不 可以 分开, 是组合关系,
代码 :
public class Computer {
private Mouse mouse = new Mouse();
// 鼠标 不 可以和 和computer 分离—— 组合关系
private Moniter monitor = new Monitor();
// 显示器 不 可以和 和Computer 分离—— 组合关系
public void setMouse(Mouse mouse) {this .mouse=mouse;}
public void setMonitor(Monitor monitor) {
this .monitor = monitor;}
}
在这里插入图片描述
(6)类图— 组合关系(Composition) )
组合关系:也是整体与部分的关系,但是整体与部分 不可以分开 。 实心菱形+实线
组合关系:也是整体与部分的关系,但是整体与部分 不可以分开 。
public class Person{
private IDCard card; // 聚合
private Head head = new Head(); // 组合
}
public class IDCard{}
public class Head{}
在这里插入图片描述
组合关系:也是整体与部分的关系,但是整体与部分不可以分开 。
public class Person{
private IDCard card = new IDCard(); // 组合
private Head head = new Head(); // 组合
}
public class IDCard{}
public class Head{}

在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Aurora__213/article/details/104860631

智能推荐

Android烧录镜像文件介绍_devcfg.mbn-程序员宅基地

文章浏览阅读6.9k次,点赞2次,收藏44次。sbl1.mbn烧录命令:fastboot flash sbl1 sbl1.bin作用:second bootloader1的缩写,是在little kernel(lk)前启动,起到引导lk的作用,如果将该分区擦除,则设备表现为进入紧急下载模式,即,擦除该分区后,插入USB显示QDload端口。rpm.mbn烧录命令:fastboot flash rpm rpm.mbn作用:电源管理器,..._devcfg.mbn

大数据GIS及应用浅析_大数据gis特征-程序员宅基地

文章浏览阅读8k次,点赞18次,收藏69次。大数据GIS是在大数据浪潮下,GIS从传统迈向大数据时代的一次变革。大数据GIS能为空间大数据的存储、分析和可视化提供更先进的理论方法和软件平台,促进了传统GIS的产业升级,为地理信息产业发展提供新的渠道和原动力,服务于我国“十三五”期间的大数据产业发展和部署。本文将浅析大数据GIS的产生及其在相关行业中的应用方式。大数据GIS的产生• 大数据近几年,大数据(Big Data)一词越来越多地..._大数据gis特征

Python给Word加水印_python给word添加水印-程序员宅基地

文章浏览阅读3.5k次。# coding:utf8import win32comfrom win32com.client import Dispatch, constantsdef getWordAddWatermark(): wordApp = win32com.client.DispatchEx("Word.Application") # 打开word进程 wordApp.Visible = True wordApp.DisplayAlerts = False doc = wordApp_python给word添加水印

[]DDR2 SDRAM初始化_ldqs和udqs是dqsn-程序员宅基地

文章浏览阅读3.4k次。DDR2知识点汇总_ldqs和udqs是dqsn

Null value is eliminated by an aggregate or other SET operation and returned error code 0xC0202009_warning: null value is eliminated by an aggregate -程序员宅基地

文章浏览阅读3.4k次。[OE Source [791]] Error: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80004005.An OLE DB record is available. Source: "Microsoft SQL Server Native Client 10.0" H_warning: null value is eliminated by an aggregate or other set operation.

origin2016绘制气泡图&颜色映射图_origin气泡图图例-程序员宅基地

文章浏览阅读5.9k次,点赞2次,收藏5次。Step1:导入数据File-Import-选择预先准备的数据(这里我选择的是excel存储的数据,导入数据后,数据会出现在Book1中)导入数据后如图所示:(其中颜色与便签栏可没有)Step2:选择数据鼠标单击A(X)轴,按住Ctrl键,继续单击C1(Y)轴和D1(Y)轴(一般选择一个x轴数据和两个y轴数据绘制泡泡图)如果预计作为X轴的数据导入Book后不是x轴,可参照步骤2.1设置数据轴类别。Step2.1:设置x,y轴鼠标放置在列首(如图E1),右键-Set as-X/Y/Z进行_origin气泡图图例

随便推点

elasticsearch7外网访问与503错误解决方案_elasticsearch 503-程序员宅基地

文章浏览阅读1.2w次,点赞3次,收藏10次。笔者安装的是elasticsearch7版本的,安装环境为centos7,配置的java为jdk11。一、elasticsearch外网访问这个问题困扰笔者许久,查阅相关资料才发现那人正在灯火阑珊处解决方案如下:相关配置文件的修改 修改安装的elasticsearch文件下的config/elasticsearch.yml文件。添加:network.http: 0.0.0.0 ..._elasticsearch 503

URLEncode,URLEncode python实现,处理cookie加密,js逆向_python urlencode函数 base64字符串-程序员宅基地

文章浏览阅读966次。URL编码(URL encoding),也称作百分号编码(Percent-encoding), 是特定上下文的统一资源定位符 (URL)的编码机制。将需要转码的字符转为16进制,然后从右到左取4位(不足4位直接处理),每2位做一位,前面加上%,编码成%XY格式。_python urlencode函数 base64字符串

SATA与PATA接口硬盘的区别_pata和sata接口区别-程序员宅基地

文章浏览阅读2k次。 一、PATA与SATA技术方面的区分 PATA的全称是Parallel ATA,就是并行ATA硬盘接口规范,也就是我们现在最常见的硬盘接口规范了。PATA硬盘接口规模已经具有相当的辉煌的历史了,而且从ATA33/66一直发展到ATA100/133,一直到目前最高的ATA150。SATA硬盘全称则是Serial ATA,即串行ATA硬盘接口规范。目前PATA100硬盘的一般写入速度为65MB/s,而第一代SATA硬盘的写入速度为150MB/s,第二代SATA硬盘的写入速度_pata和sata接口区别

实现mysql的sequence_mywseq-程序员宅基地

文章浏览阅读3.5k次。背景因为做oracle迁移mysql的工作,mysql并不具有sequence语法,所以需要自己想办法模拟实现一个sequence。步骤建一张表e_sys_sequence用来记录序列名称和值CREATE TABLE `e_sys_sequence` ( `sequence_name` varchar(64) NOT NULL COMMENT '序列名称' , `va..._mywseq

STM32 IO寄存器操作_idr的复位值是多少-程序员宅基地

文章浏览阅读1.1w次,点赞7次,收藏34次。STM32的IO端口有八种模式:1、输入浮空 5、开漏输出2、输入上拉 6、推挽输出3、输入下拉 7、推挽复用4、模拟输入 8、开漏复用每个IO口都有七个寄存器来控制:CHL、CHR :端口配置寄存器(32位)IDR、ODR :数据寄存器(32位)BSRR ..._idr的复位值是多少

[cesium] | 3dTilset建筑物 | 模型 | Shader 泛光涟漪特效_cesium在坐标点上加载涟漪图-程序员宅基地

文章浏览阅读4.3k次。效果比较简单,修改了一点源码,还可以再加一些其他的shader,后续上传github效果_cesium在坐标点上加载涟漪图