1、什么是UML类图?
在使用高级语言编程时,无疑会遇到面向对象编程这一回事。而面向对象编程又无疑会涉及到【方法】、【属性】、【接口】、【继承】、及具体实现某一个功能或者某一个模块时所需要使用到的【设计模式】。一个庞大的系统无疑会遇到各种各样的类,而这些类与类之间的关系,想要直观清晰的描述出来,就可以使用UML类图来进行描述。【额,主要是Java编程思想、设计模式等等书上再描述类与类的关系时,但是用的这个。。。。】本文所有图片来源于这里图片原文。
2、类——类图
类,什么是类?一个类应该有啥?类,对一类事物的抽象,没有实体,像图纸。【额,本人理解。。。】。类应该有类名,属性,方法。【当然硬是不写属性、方法类还是可创建】。
so....UML类图一般也分三层:类名、属性、方法。【当然没有属性或者方法时也可以留空】
3、泛化?is-a[继承】
表示is-a的关系,是对象之间耦合度最大的一种关系,子类继承父类的所有细节。直接使用语言中的继承表达。在类图中使用带三角箭头的实线表示,箭头从子类指向父类。【直接复制的原文】。主要是记忆继承的表示方法。【PS,继承子类继承父类,表示的方式有没有像初中生物课上认识的小蝌蚪】,多用组合,少用继承!!!继承是耦合度最高的实现方式了。【从现实角度想,就是不能到处认爸爸【😂】】
4、实现【接口】
实现(Realization):在类图中就是接口和实现的关系。这个没什么好讲的。在类图中使用带三角箭头的虚线表示,箭头从实现类指向接口。【又是直接复制的原文】,重点来了------------------------------接口使用的类名加了《》书名号。实现的类是虚线小蝌蚪实现。
5、依赖【简单点,说话的方式简单点】
如:A类里有一个接口的引用,而接口又携带了B类的引用。则A类与接口和B达成依赖关系。
6、关联、聚合、组合、多重性【这些都是什么鬼?】
关联?啥啥啥?妈蛋上面不是有依赖了吗?额,这个我的理解是,南极跟企鹅,香蕉跟牛奶,贝多芬跟钢琴,隔壁和老王。说A与B有关系也有,但是他们之间不是必须的。
聚合?啥啥啥?电脑跟鼠标跟打印机。他们都可以独立存在啊。A可以有B,B也可以独立存在。
组合?汽车与汽车轮胎,与方向盘,不可分割。
7、聚合和组合的区别【复制原文】
这两个比较难理解,重点说一下。聚合和组合的区别在于:聚合关系是“has-a”关系,组合关系是“contains-a”关系;聚合关系表示整体与部分的关系比较弱,而组合比较强;聚合关系中代表部分事物的对象与代表聚合事物的对象的生存期无关,一旦删除了聚合对象不一定就删除了代表部分事物的对象。组合中一旦删除了组合对象,同时也就删除了代表部分事物的对象。