UML图:类图 --详细介绍

类图的概念

描述类、接口及它们之间关系的图,显示系统中各个类的静态结构
在这里插入图片描述

类图的元素

  • 面向对象系统组织结构的核心
  • 对一组具有相同属性、操作、关系和语义的对象的抽象
  • 包括名称部分(Name)、属性部分(Attribute)和操作部分(Operation)

类的组成

  • 名称
  • 属性
  • 操作
    在这里插入图片描述

名称:应该是一个名词,分为简单名称和路径名称,每个单词首字母大写
属性:描述了类在软件系统中代表的事物(即对象)所具备的特性,类可以有任意数目的属性,也可以没有属性

在 UML 中,类属性的语法为
在这里插入图片描述
属性的可见性

  • 公有(Public) “+” 所有类可见
  • 私有(Private)“-” 该类及子孙可见
  • 受保护(Protected)“#”只对该类本身可见
  • 包(Package) “~” 只对同一包声明的类可见

属性名

  • 每个属性必须有一个名字以区别于类中的其他属性
  • 属性名由描述所属类的特性的名词或名词短语组成
  • 除了第一个单词外其余单词的首字母要大写

属性的类型:简单类型,整型,浮点型,布尔型,枚举类型,……,SDK中的类、系统中的其他自定义类

属性的初始值:
保护系统的完整性,防止漏掉取值或被非法的值破坏系统的完整性
为用户提供易用性

操作
对类的对象所能做的事务的抽象
一个类可以有任意数量的操作或者根本没有操作
返回类型、名称和参数一起被称为操作签名
在 UML 中,类操作的语法为
在这里插入图片描述
操作的可见性:

  • 公有(Public) “+”
  • 私有(Private) “-”
  • 受保护(Protected) “#”
  • 包(Package) “~”

操作名

  • 用来描述所属类的行为的动词或动词短语
  • 命名规则与属性相同

操作的参数表 :

  • 一些按顺序排列的属性定义了操作的输入
  • 是可选的,即操作不一定必须有参数才行
  • 定义方式:“名称:类型”
  • 若存在多个参数,将各个参数用逗号隔开
  • 参数可以具有默认值

操作的返回类型

  • 是可选的,即操作不一定必须有返回类型
  • 绝大部分编程语言只支持一个返回值
  • 具体的编程语言一般要加一个关键字 void 来表示无返回值

接口
在没有给出对象的实现和状态的情况下对对象行为的描述
包含操作但不包含属性
没有对外界可见的关联
一个类可以实现一个或多个接口
在这里插入图片描述

类之间的关系

依赖关系

表示两个或多个模型元素之间语义上的关系
客户以某种形式依赖于提供者

在这里插入图片描述
只要是在类中用到了对方,那么他们之间就存在依赖关系。

类中用到了对方:

  1. 如果是类的成员属性
  2. 如果是方法的返回类型
  3. 是方法接收的参数类型
  4. 方法中使用到
package com.longstudy.princple.uml;public class PersonServiceBean {private PersonDao personDao;//public void save(Person person) {}public IDCard getIDCard(Integer personid) {return null;}public void modify() {Department department = new Department();}}public class PersonDao{}
public class IDCard{}
public class Person{}
public class Department{}

在这里插入图片描述

依赖关系的分类:

  • 使用依赖(Usage)
  • 抽象依赖(Abstraction)
  • 授权依赖(Permission)
  • 绑定依赖(Binding)

泛化关系

泛化关系实际上就是继承关系,他是依赖关系的特例,如果A类继承了B类,我们就说A和B存在泛化关系

  • 存在于一般元素和特殊元素间的分类关系
  • 可以用于类、用例以及其他模型元素
  • 描述了一种“is a kind of” 的关系

在这里插入图片描述

实现关系

规格说明(接口)和其实现之间的关系
客户必须至少支持提供者的所有操作
泛化和实现都可以将一般描述与具体描述联系起来
泛化将同一语义层上的元素连接起来,并且通常在同一模型内
实现将不同语义层内的元素连接起来,并且通常建立在不同的模型内
在这里插入图片描述
在这里插入图片描述

关联关系

一种结构关系
指明事物的对象之间的联系
在这里插入图片描述
关联的名称:
使用一个动词或动词短语来命名关联
清晰而简洁地说明对象间关系
关联的名称并不是必需的
可以前缀或后缀一个指引阅读方向的方向指示符,以消除歧义

在这里插入图片描述
关联的角色:
关联关系中一个类对另一个类所表现出来的职责
角色的名称应该是名词或名词短语,以解释对象是如何参与关系的

在这里插入图片描述
关联的多重性

  • 指有多少对象可以参与该关联
  • 可以表达一个取值范围、特定值、无限定的范围或一组离散值
  • 格式:“min … max” (均为int型)
  • 赋给一个端点的多重性表示该端点可以有多少个对象与另一个端点的一个对象关联
    在这里插入图片描述

聚合关系

一种特殊类型的关联
表示整体与部分关系的关联
描述了“has a”的关系

在这里插入图片描述

组合关系

组合是聚合关系中的一种特殊情况,是更强形式的聚合,又称强聚合
成员对象的生命周期取决于聚合的生命周期
聚合不仅控制着成员对象的行为,而且控制着成员对象的创建和析构

在这里插入图片描述

UML类图实例

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

UML-认识六种箭头,轻松读懂UML图

进行系统设计时,UML是一种常见的面向对象结构设计方式,里面的各种箭头表示经常会把人弄糊涂,如果不能正确理解,实现阶段就会出大问题,失之毫厘,谬以千里,下面带着大家认识下6种常用箭头。 1. 泛…

一文学会UML类图

1.关系图解 2.类图详解 1.类 类图分三层: 第一层显示类的名称,如果是抽象类,则就 用斜体显示。 第二层是类的特性,通常就是字段和属性。 第三层是类 的 操 作 , 通 常 是 方 法 或 行 为 ,前面的符号表示…

[UML] 类图介绍 —— 程序员(灵魂画手)必备画图技能之一

统一建模语言(Unified Modeling Language,UML) 可分类成: 功能模型:从用户的角度展示系统的功能,包括用例图。对象模型:采用对象,属性,操作,关联等概念展示系统的结构和基础&#…

人工智能存在安全隐患?网络安全还得靠人来维护!

前言 继今年3月对ChatGPT进行安全审查后,意大利隐私监管机构表示将计划创建一个人工智能咨询委员会,对目前所有人工智能平台的数据搜集行为进行密切审查。 意大利数据保护机构 Garante 某高级官员表示,该委员会将加入目前由四人组成的隐私法…

短信接收流程分析

5,短信接收 如果有信息,RIL层会主动上报消息,RIL.java 的processUnsolicited方法会进行分发,根据网络制式,信息分为GSM和CDMA, 在此就以GSM信息为例论述, processUnsolicited方法对RIL_UNSOL_RESPONSE_NEW_SMS消息处理逻辑如下, 1,调用responseString方法从ril层读取消息内容…

Android 发送短信

一、发送短信的方法 使用 Intent 隐式调用系统短信应用进行发送 Uri uri Uri.parse("smsto:10086");Intent it new Intent(Intent.ACTION_SENDTO, uri);it.putExtra("sms_body", "Hello World!");startActivity(it); 使…

量化策略和level2行情数据股票市场需求大吗?

国内量化交易起步较晚,大约15年开始,20年开始爆发,21年量化私募规模飙升。由于容量过大,出现了一个头部量化私募中性策略导致大幅回调的问题。对于a股来说,量化交易仍然是一种相对较新的投资方式。自20年以来&#xff…

DFQ量化论文阅读

Data-Free Quantization Through Weight Equalization and Bias Correction 高通的训练后量化,提高性能 量化的不同水平 水平1:无需数据和反向传播 水平2:需要数据但不需要反向传播,例如IAO的校准 水平3:需要数据也…

【vn.py】量化策略历史回测(基于本地csv数据)

文章目录 写在前面获取数据csv数据导入历史回测写在后面REF 写在前面 策略研发之后,为了检测我们策略的效果,不可能一上来就接入实盘,所以需要的就是通过历史数据对我们的策略进行检验,也就是历史回测。vn.py也有推出历史回测的教…

「量化技术」Inv_Strategy 胜率76%的趋势反转策略

0 简介 Inv_Strategy为自研的趋势反转策略,能够有效识别到时间序列的趋势拐点,能辅助进行交易决策,规避风险、降低持仓成本。策略基于深度神经网络技术,利用前2个月的量价关系进行inference(推理)&#xf…

基于BigQuant的量化策略实现

文章目录 一、BigQuant的重要模块说明 1.回测模块 二、基于技术指标的策略实现 1.库函数导入与全局变量初始化 2.每日逻辑函数编写 策略1: MACD金叉MA多头买入 策略2: 利用MA指标进行择股 3.策略结果展示 策略1: MACD金叉MA多头买入 策略2: MA择股 三、基于QP优化的策略实现 …

【定量分析、量化金融与统计学】纵向数据分析(1)——截面数据、时间序列数据和纵向数据

一、截面数据(Cross-sectional Data) 截面数据就是固定时间来分析其他变量同一时间内的关系。 例如:比较2022年的全国20个省市的GDP与人口,那么我们就是限定了2022年,去找GDP和人口的可能关系。 再例如:…

gdp数据分析

1 概述 本文主要分析china,usa,king,japan,russia5个国家的gdp,时间从1800-2040,后面的数据为预测数据,不准确。 2 绘制折线图 import pandas as pd import matplotlib.pyplot as pltdata pd.read_csv("line_animation.csv") x…

Python量化策略入门1-如何利用聚宽(JoinQuant)下载金融数据

[TOC]量化策略入门1-如何利用聚宽(JoinQuant)下载金融数据 前言 量化策略入门系列文章是本人学习股票量化笔记,最终输出结果希望是一个可在本地运行的回测框架,包含数据获取,数据处理,策略回测等。 本文主要为了介绍如何利用聚…

金 融 量 化 分 析 • 外 篇 • 绘 制 行 情 数 据 数 据 图

文章目录 前言一、k 线 图 是 什 么 ?二、K 线 图 结 构(1) 影 线 和 实 体(2) 十 字 线 四、 双 均 线 策 略(一)、金叉(二)、死叉(三)、均 线 策…

老板,摊牌了,不装了,pyechart高端实现我国GDP大数据图

pyechart实现我国GDP大屏展示图 from typing import Listimport pyecharts.options as opts from pyecharts.globals import ThemeType from pyecharts.commons.utils import JsCode from pyecharts.charts import Timeline, Grid, Bar, Map, Pie, Linedata [{"time"…

将《2020中国统计年鉴》中的GDP数据换算成不变GDP数据

文章目录 前言一、数据来源二、计算步骤1.理解一下公式和不同的指数国内生产总值指数(上一年100)国内生产总值指数(1978年100)现价GDP: 即当年价GDP,也叫名义GDP,包含价格浮动因素,不可比不变价…

【qstock量化】数据篇之宏观指标和财经新闻文本

qstock简介 qstock由“Python金融量化”公众号开发,试图打造成个人量化投研分析开源库,目前包括数据获取(data)、可视化(plot)、选股(stock)和量化回测(backtest)四个模块。其中数据模块(data&a…

使用Postman模拟发送get、post、delete、put请求

使用Postman模拟发送get、post、delete、put请求 现在的模拟发送请求插件很多,包括在idea上都自带了Test restful web service来模拟请求,但亲测postman更好用一些 今天来分享如何使用postman发送各种请求 1.下载 postman是谷歌的一款插件&#xff0…

使用hutool发送POST请求

之前使用Java程序发送请求都是使用的HttpURLConnection&#xff0c;不太方便&#xff0c;可以使用hutool封装好的方法。 引入依赖 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.0.M4</…