技术标签: uml类图
注释:资料根据尚硅谷设计模式课程中的UML使用整理,老师使用的是eclipse的插件手动画的,这里使用idea的PlantUML自动生成类图
UML——Unified modeling language UML (统一建模语言),是一种用于软件系统 分析和设计的语言工具,它用于帮助软 件开发人员进行思考和记录思路的结果 。UML本身是一套符号的规定,就像数学 符和化学符号一样,这些符号用于描 述软件模型中的各个元素和他们之间的 关系,比如类、接口、实现、泛化、依 赖、组合、聚合等
只要是在类中用到了对方,那么他们之间就存在依赖关系。
public class PersonDao{
}
public class IDCard{
}
public class Person{
}
public class Department{
}
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();
}
}
@startuml
class PersonDao
class IDCard
class Person
class Department
class PersonServiceBean{
- PersonDao personDao
+ void save(Person person)
+ IDCard getIDCard(Integer personid)
+ void modify()
}
PersonDao <.. PersonServiceBean
IDCard <.. PersonServiceBean
Person <.. PersonServiceBean
Department <.. PersonServiceBean
@enduml
泛化关系实际上就是继承关系,他是依赖关系的特例
public abstract class DaoSupport {
public void save(Object entity) {
}
public void delete(Object id) {
}
}
public class PersonServiceBean extends DaoSupport{
}
@startuml
abstract class DaoSupport{
+ void save(Object entity)
+ void delete(Object id)
}
class PersonServiceBean
DaoSupport <|-- PersonServiceBean
@enduml
实现关系实际上就是A类实现B接口,他是依赖关系的特例
public interface PersonService {
public void delete(Interger id);
}
public class PersonServiceBean implements PersonService {
public void delete(Integer id) {
}
}
@startuml
interface PersonService
class PersonServiceBean
PersonService <|... PersonServiceBean
@enduml
public class Person {
private IDCard idCard;
}
public class IDCard {
private Person person;
}
@startuml
class Person{
- IDCard idCard
}
class IDCard{
- Person person
}
Person <-- IDCard
Person --> IDCard
@enduml
聚合关系表示的是整体和部分的关系,整体与部分可以分开。聚合关系是关联关系的特例,所以他具有关联的导航性与多重性。
如:一台电脑由键盘(keyboard)、显示器(monitor),鼠标等组成;组成电脑的各个 配件是可以从电脑上分离出来的,使用带空心菱形的实线来表示:
public class Monitor {
}
public class Mouse {
}
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;
}
}
@startuml
class Monitor
class Mouse
class Computer{
- Monitor Monitor
- Mouse mouse
}
Computer o-- Monitor
Computer o-- Mouse
@enduml
如果A类使用了B类但是不是必须使用到B类,并不是创建A时B类必须被创建/马上被创建(并不是同生共死)。那么他们就是聚合关系
组合关系:也是整体与部分的关系,但是整体与部分不可以分开。
再看一个案例:在程序中我们定义实体:Person与IDCard、Head, 那么 Head 和 Person 就是 组合,IDCard 和 Person 就是聚合。
public class IDCard{}
public class Head{}
public class Person{
//IDCard并不是必须存在/实例化/创建的,是聚合关系
private IDCard idCard;
//Person 类创建的时候,Head类就会被实例化那么他们是同生共死的关系,他们就是组合关系
private Head head = new Head();
}
@startuml
class IDCard
class Head
class Person{
- IDCard idCard
- Head head = new Head()
}
Person o-- IDCard
Person *-- Head
@enduml
public class Mouse {
}
public class Monitor {
}
///Computer被创建时,Mouse和Monitor会马上被new/实例化出来,组合关系
public class Computer {
private Mouse mouse = new Mouse();//鼠标和Computer不能分离
private Monitor monitor = new Monitor();//显示器和Computer不能分离
public void setMouse(Mouse mouse) {
this.mouse = mouse;
}
public void setMonitor(Monitor monitor) {
this.monitor = monitor;
}
}
@startuml
class Monitor
class Mouse
class Computer{
- Monitor Monitor = new Monitor()
- Mouse mouse = new Mouse)(
}
Computer *-- Monitor
Computer *-- Mouse
@enduml
蓝桥杯嵌入式STM32G431RBT6的学习(总大纲)(HAL库学习)_stm32g431rbt6
点击上方“3D视觉工坊”,选择“星标”干货第一时间送达来源 | 量子位(QbitAI)编辑| 梦晨、丰色、萧萧、发自、凹非寺要说起华为“天才少年”,那话题度可以说是直接拉满。但在百万级..._华为诺亚方舟年薪
0 CDH的SparkCDH上面Spark的版本都是1.6的版本1.查看官网部署文档https://docs.cloudera.com/documentation/spark2/latest.html官网给出的一些建议和前置条件,https://docs.cloudera.com/documentation/spark2/latest/topics/spark2_requirements.ht...
人们一提到.htaccess配置文件,首先映入他们脑海的就是用mod_rewrite进行URL地址重定向。对mod_rewrite的看法各不相同,为了就人们对mod_rewrite是怎么认识的有一个快速的看法,我在twitter上搜索了一下"mod_rewrite",并且将我写这篇文章时的前几个搜索页面的结果找出来: midk:啊!.hatccess和mod_rewrite是如此的痛苦……..._apache module mod_rewrite
先说一下:亟待解决的题今天下午打CodeForces第二题,我至今还是不知道错在哪QAQ。第二题就是给定一个数组,求出让数组升序的最少移动次数。以下是我自己的思路,但是出错了。这个题包括两种情况,一种是交换位置,另一种是插入。刚开始我只注意到了交换位置,但是尝试时发现第三个数据没过。这时我突然想到一个自方法:先求出最长不下降子序列元素个数,然后用原数组个数一减就出来了。于是有了这段代码:#include <iostream>#include <algorithm>
3.XML方式 前面的两种方式都能传递数据,但是都有一个问题,就是提交数据后,页面会刷新,由于web是无状态的,所以我们必须通过代码来维持页面上的状态。(在asp.net里面微软通过ViewState来维护)所以我们要做到交互数据但是不刷新页面的话,就只有用xml了。 哇,不知道xml是什么冬冬啊?倒…… XML (eXtensible Markup Language)建议你看看两只老虎的《无废话
git 使用命令 提交代码,git 解决错误的 commit,git 解决冲突_tortoisegit撤销提交
介绍ln是linux的一个重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接。当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。平时使用感觉就像桌面应用上的快捷图标一样,比如你安装的nginx文件在usr/local/n..._ln -f
如果神经网络中没有激活函数,无论网络结构再如何复杂,学习的模型都只能得到线性函数,只能解决线性可分问题。激活函数的引入,使得神经网络能够拟合任何一个非线性函数,可用于解决线性不可分问题。不同的激活函数具有不同的特征,适合的场景也因数据的差异而各不相同,需要根据具体的情况选择合适的激活函数,否则无法得到一个令人满意的模型。这篇博客以tf.keras.activations中提供的激活函数为基础,对..._tf.keras.activations.relu自定义
cudnn.benchmark=True 将会让程序在开始时花费一点额外时间,为整个网络的每个卷积层搜索最适合它的卷积实现算法,进而实现网络的加速。适用场景是网络结构固定(不是动态变化的),网络的输入形状(包括 batch size,图片大小,输入的通道)是不变的,其实也就是一般情况下都比较适用。反之,如果卷积层的设置一直变化,将会导致程序不停地做优化,反而会耗费更多的时间。作者:xiaopl链接:https://zhuanlan.zhihu.com/p/73711222单个Epoch速度
答案 我名字++答案 我名字2019 7传媒 2019 年 7 月 《计算机文化基础》课程考试作业考核试题传媒 年 月 《计算机文化基础》课程考试作业考核试题100 --总分:100 分 时间:--总分: 分 时间:答题中答题中25 50一、单选题共 25 题,50 分一、单选题共 题, 分1122 分分微型计..._计算机文化基础邓凯英答案
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------一、注解部分1、注解(Annotation):一个注解本质上是一个类。2、JDK基本注解(3个):@SuppressWarnings("deprecation")://压缩"过时"@Deprecated://声明_黑马程序员注解笔记