聚合是整体和个体之间的关系,即has-a的关系,整体与个体可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享。程序中聚合和关联关系是一致的,只能从语义级别来区分;<br>表示方法:尾部为空心菱形的实线箭头(也可以没箭头),类A指向类B<br><img><br>组合<br>概念:组合也是关联关系的一种特例。组合是一种整体与部分的关系,即contains-a的关系,比聚合更强。部分与整体的生命周期一致,整体的生命周期结束也就意味着部分的生命周期结束,组合关系不能共享。程序中组合和关联关系是一致的,只能从语义级别来区分。<br>表示方法:尾部为实心菱形的实现箭头(也可以没箭头),类A指向类B<br><img><br>UML类图的箭头含义<br><img><br>1、关联:类之间的一种关系,如学生和老师。<br>代码中的表示:<br>class Student{<br>private Teacher mTeacher;<br>}<br>class Teacher{<br>}<br>2、双向关联:和关联一样,不过它是两个方向的,如学生和老师,老师和学生,双向关系。<br>代码中表示:<br>class Student{<br>private Teacher mTeacher;<br>}<br>clsass Teacher{<br>private Student mStuent;<br>}<br>3、聚合:整体和部分的关系,has-a的关系,如汽车拥有引擎。通常是通过构造函数或者setter赋值进去的。<br>代码中表示:<br>class Car{<br>private Engine mEngine;<br>public void setEngine(Engine e){<br>mEngine = e;<br>}<br>}<br>4、组合:整体和部分的关系,is-a的关系,如手是人体的一分部。通常是在构造函数的时候,通过new创建出来。<br>代码中的表示:<br>class People{<br>private Hand mHand;<br>public People(){<br>mHand = new Hand();<br>}<br>}<br>5、依赖:是使用的关系,例如汽车使用喇叭来鸣笛,调用汽车鸣笛的方法时,就依赖于喇叭鸣笛方法。<br>代码中表示:<br>class Car{<br>private Horn mHorn;<br>public void whistle(){<br>mHorn.whistle();<br>}<br>6、继承:不解释。<br>7、实现接口:不解释。<br>小结:<br>1、继承已实现的类图,箭头是三角形的,其他的是不闭合的箭头。<br>2、关联与聚合在代码中的表示,都类似。主要是构建模型的时候,理解上的差别。<br>作者:q2014818<br>来源:CSDN<br>原文:https://blog.csdn.net/q2014818/article/details/50634588<br>实心箭头表关联关系,他使一个类知道另一个类中的属性和方法,比依赖要强,这种关系一般是长期性的.