作者:小傅哥
博客:https://bugstack.cn

沉淀、分享、成长,让自己和他人都能有所收获!

一、码场心得

有个词叫内卷严重!

最开始听到这个词是有个小伙伴在我的一篇HashMap源码分析文章下的留言:“哥们,你这叫内卷!”。这篇文章深度解释了扰动函数、负载因子以及相关数学方式的结果验证,有兴趣的可以跳过去阅读。《HashMap核心知识,扰动函数、负载因子、扩容链表拆分,深度学习》

那什么叫内卷呢,乍一看这词还是有点新的。其实内卷化来自单词 involution,也可以称作“过密化”。这样就好解释了,比如;

  1. 100个人上卫生间就3个坑,没法公平分配,那就谁今天谁穿裤衩谁先上
  2. 100个700分以上的,就30%个名额能去清北。3万多600分以上的考生里,很多人可能连211都上不了。
  3. 道路拥堵,不能让每个人都开车,只能遥遥无期的摇号排队。

这些都可以解释为过密化带来的内卷严重问题,但好在这些都在不断的优化完善。

程序员也有内卷?!

其实大部分时候大家说的程序员内卷,指的是面试造火箭,求职越来越难。

其实从某种角度来说,我个人是不太认可说程序员有内卷的。就整个行业来看,程序员的工作就业情况和薪资待遇都是不错的。有人会觉得面试还得刷题、学源码、看框架、懂架构等等,可这些难道不应该是你做成程序员职业发展道路上,必经的突破吗?

可能每个人都会在某个时期感觉自己一直处于瓶颈期,做着重复的事情、码着CRUD的逻辑、接触不到核心的技术等等,都会猛的瞬间觉得自己快狒狒了。那这样的你似乎只能用内卷这个词让自己内心平衡了,试问自己,你对自己投入过学习成长的时间吗?你有计划破局突破自己的瓶颈吗?如果没有那不叫内卷!

二、会议室

谢飞机,小记,假期回来上班的一周的 飞机,被组长安排了一次项目成长分享。

小组长:飞机,你分享的项目中,核心模块要给大家讲清楚。这块蛮有技术点的!

谢飞机:嗯嗯,我也在想怎么能让大家听懂。

小组长:最好借助一些工具,把代码逻辑、功能流程,通过图的方式表达出来。

谢飞机:流程图我会画了,但是这里的核心功能类,我还不知道怎么弄。

小组长:咳咳,用UML类图哇,把核心类体现出来。

谢飞机:...,没画过,我内卷了吗?

小组长:不要脸!等我画点资料,教你!

三、乡村爱情类图学习

UML(Unified Modeling Language),是一种面向对象设计的建模工具,建模的核心是模型,模型是现实的简化、真实的抽象。

在 UML 中,所有的描述包括:事务、关系、图这三部分构件组成,如下图为所有构件的关系。

接下来,我们就着重讲解UML中的类图关系,在乡村爱情人物里的体现。

1. 类图模型

UML 类图(Class Diagrams),是使用频率最高的 UML 图之一,类图可以表示出类、接口和它们之间的协作关系。各个接口、类、属性、方法,可以用如下方式表达。

2. 继承关系

代码

public class 谢广坤 {private String 辈分;public void 作妖(){}
}public class 谢永强 extends 谢广坤 {}public class 谢飞机 extends 谢广坤 {}

类图


  • 功能:继承关系
  • 概念:继承(Generaliztion)又叫泛化,用于表示子类继承父类的所有功能。
  • 场景:谢广坤的作妖技能,谢永强和谢飞机继承。谢飞机继承的更好,更能作。

3. 实现关系

代码

public interface 舞术 {void 招式();
}public class 刘能 implements 舞术 {private String 来将姓名;public void 招式() {}
}public class 赵四 implements 舞术 {private String 来将姓名;public void 招式() {}
}

类图


  • 功能:实现关系
  • 概念:接口、抽象类声明的方法,由类实现(Realiztion)其功能。
  • 场景:在赵四和刘能的一场比舞中,赵四花式走位,被刘能找准时机一踢撂倒。

4. 组合关系

代码

public class 结婚证 {private 赵玉田 男方;private 刘英 女方;public void set男方(赵玉田 男方) {this.男方 = 男方;}public void set女方(刘英 女方) {this.女方 = 女方;}
}public class 赵玉田 {private int 年龄;private String 性别;}public class 刘英 {private int 年龄;private int 性别;}

类图


  • 功能:组合关系
  • 概念:组合(Combination)关系表示类中整体与部分的关系,整体与部分相依相存。
  • 场景:赵玉田和刘英的结婚证,缺一不可。

5. 聚合关系

代码

public class 山庄 {private 宋晓峰 晓峰;private 李宝库 宝库;public void 药膳房(李宝库 宝库) {this.宝库 = 宝库;}public void 保安部(宋晓峰 晓峰) {this.晓峰 = 晓峰;}}public class 李宝库 {private String 职业;}public class 宋晓峰 {private String 职业;}

类图


  • 功能:聚合关系
  • 概念:聚合(Aggregate)关系,也是用于表示对象的整体和部分,但成员对象可以与整体对象分离独立存在。
  • 场景:在⛰山庄中药膳方有李宝库、保安部有宋晓峰。但李宝库和宋晓峰都只是其中的一员,都可以离开山庄。

6. 关联关系

代码

public class 豆腐厂 {private 王小蒙 员工;public void 添加员工(王小蒙 小蒙){this.员工 = 小蒙;}
}public class 王小蒙 {private 豆腐厂 企业;public void 添加企业(豆腐厂 豆腐厂){this.企业 = 豆腐厂;}}

类图


  • 功能:关联关系
  • 概念:关联(Association)关系,是类之间常用的一种关系,表示一类对象与另一类对象的联系。组合、聚合也属于这种关系,但关联关系更弱。
  • 场景:豆腐厂里有王小蒙,但豆腐厂里又不只是有王小蒙,还有王老七。即使小蒙不在,豆腐厂也可以正常运行。而王小蒙还有自己的其他企业,所以这属于一种关联关系。

7. 依赖关系

代码

public class 招商引资 {public void 招商(王大拿 大拿){}
}public class 王大拿 {private String 资源;
}

类图


  • 功能:依赖关系
  • 概念:依赖(Dependency)关系当表示一个事务需要使用另外一个事务时,可以使用依赖关系。
  • 场景:招商引资需要王大拿,但并只是就只有这一个大拿。王大拿不来,可能还有李大拿、张大拿。

四、赵家班全景类图

综上,这6种关系里,组合、聚合、关联代码结构类似,可以从依赖的强弱进行理解。强弱关系依次是:继承 > 实现 > 组合 > 聚合 > 关联 > 依赖。

为了更清楚的表达出 UML 类关系,我们把这些画到一整张图中,如下;

五、总结

  • 有人说,如果我们和外星人 非常友善的通信了。那么两个星球之间会进行一些交流,比如问,你好,地球人 人你多高呀?地球说1.75米。外星人晕了,米是什么单位?这样就只能选取两个星球通用的标准来定义,比如:1米是光在真空中1/299792458秒内经过的距离。
  • 其实程序开发也是这样的,为了可以让大家减少对新知识内容的理解的沟通成本,需要定义一些沟通标准,比如UML类图。所以我们需要学习这些标准的工具化语言,来减少沟通成本,提升工作效率。
  • UML类图也是最常用的图稿,同时也非常易于掌握。为了可以把自己的知识面铺设的更加完善,技术栈掌握的更加夯实,也为了突破每一个阶段的瓶颈。那就需要不断学习,不断的积累,找机会破局。

六、系列推荐

  • 握草,你竟然在代码里下毒!
  • 一次代码评审,差点过不了试用期!
  • 程序员为什么热衷于造轮子,升职加薪吗?
  • 全网最火10万下载量,《重学Java设计模式》(22个真实开发场景)
  • 面经手册(上最快的车,拿最贵的offer)

abstract类中不可以有private的成员_UML类图还不懂?来看看这版乡村爱情类图,一把学会!相关推荐

  1. abstract类中不可以有private的成员_别再说你不懂java面向对象了,阿里P7大佬一次性给你讲的明明白白

    前言 面向对象在百度百科中是这样解释的:"面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物".说的好像很流弊的样子,看看就行. 包的认识 1.1:包 ...

  2. abstract类中不可以有private的成员_C++类成员的三种访问权限:public/protected/private...

    1.访问限定符 C++ 通过 public.protected.private 三个关键字来控制成员变量和成员函数的访问权限(也称为可见性),分别表示:公有的.受保护的.私有的. class 2.访问 ...

  3. abstract类中不可以有private的成员_C++ 类:声明成员函数与实现

    接上文... 16.3类的成员 2.成员函数 1.构造函数 ... 2.拷贝构造函数 有了类的构造函数我们就可以创建类的实例了,下图中分别使用不同的构造函数一共创建了4个动物的对象,现在程序中就有4个 ...

  4. abstract类中不可以有private的成员_我要告诉你:java接口中可以定义private私有方法...

    在传统的Java编程中,被广为人知的一个知识点是:java Interface接口中不能定义private私有方法.只允许我们定义public访问权限的方法.抽象方法或静态方法.但是从Java 9 开 ...

  5. abstract类中不可以有private的成员_C++中public、protected、private的区别

    1.访问范围 private:只能由该类的成员函数.友元的成员函数访问,不能被其他类的成员函数访问,即使是该类的对象也不能直接访问 protected:可以被该类中的成员函数访问.子类中的成员函数访问 ...

  6. python类中包含一个特殊的变量、它可以访问类的成员_Python类中包含一个特殊的变量( ),它表示当前对象自身,可以访问类的成员....

    包含票务系统的业务管理主要内容包括()A:运营监督B:规则管理C:信息管理D:财务管理E:模式管理 特殊表嘌呤核苷酸补救合成途径的主要器官是().A:脑组织B:小肠C:胸腺D:肝脏E:肾脏 示当身嘌呤 ...

  7. C++中如何初始化类中const或引用类型的数据成员?

    在C++中,如果没有在构造函数初始值列表中显示地初始化成员,则该成员将在构造函数体之前执行默认初始化.之后,再进入构造函数体{}中,随着构造函数体一开始执行,初始化地工作实际上就完成了. 下面两个构造 ...

  8. C++在类中能定义本身类型的成员

    链接:https://www.zhihu.com/question/341035289/answer/1047747826 来源:知乎 ----故事1---- class MyClass {publi ...

  9. C++类中有如vector, map等容器类成员时如何编写构造函数

    假如一个类的成员函数如下: class A{int a;vector<int> v;map<int, int> m; }; 编写构造函数有三种方式: ①:默认构造函数 ②:容器 ...

最新文章

  1. JSON||获取数据||json数据语法
  2. 外挂学习之路(8)--- 释放技能call
  3. jmeter中重定向多个正则表达式_2020年jmeter技术实战续集,最新技术全栈,值得收藏
  4. SPSS分析技术:多元方差分析
  5. 51单片机redefinition_lcd12864程序在keil中出现好多重新定义,尝试了很多办法都改不了,求助大家了...
  6. 如何备份MySql的数据库
  7. 分享改进 完全定制自己的代码生成器
  8. 容斥原理模板(二进制表示)
  9. tomcat绕过同源策略(CORS)--亲测有效
  10. 面试被问到HashMap 底层原理?看完这边文章绝对不慌!
  11. 智慧工地:绿色智能 让施工更简单
  12. 量化策略“高股息率模型”长期有效性的实证
  13. 在线CAD平台,MxCAD云图 2021.01.20更新,在线CAD软件
  14. phpstudy安装和使用
  15. sever and mirroring(服务器和镜像)是什么
  16. 中文核心期刊、科技核心期刊、CSCD核心期刊区别
  17. 常用的电路保护元件有哪些?
  18. linux qt 字体哪个好,QT的的字体使用(全局自带字体特别好用)
  19. 哭的时候没人哄,我学会了坚强
  20. 19级爪哇程序设计新手赛(题解)

热门文章

  1. html5 css3光晕
  2. mssqlserver 2008的安装
  3. MsSqlServer 错误
  4. hive中日期格式转换
  5. pyecharts系列之Bar的用法
  6. 业内人士告诉你,买流量卡时一定要问的几个问题?
  7. 按计算机发展来讲共有发展时代,全国2008年10月自考02384计算机原理试卷
  8. LatinIME输入法分析
  9. 美国次贷危机就是这样爆发的——通俗易懂
  10. C++学习笔记04--语句