类和类之间的关系
一、继承 inheritance,generalization:子类拥有父类的属性和方法;
1.uml:子类父类用实线,空三角(子指向父),类和接口用虚线,空三角;
2.语法:
类和类之间,extends;
类和接口之间,implements;
3.判断是否可以继承?
用is判断;
二、依赖 dependency:两个类之间偶然发生的联系(该关系具有临时性),就是依赖,比如想要过河的人和船;
1.UML:需要空心三角加虚线,人指向船,英雄指向宠物;
2.如何判断:use;
3.代码表现:一个类的某个方法使用的局部变量或形式参数是以另一个类为类型临时创建的对象;
三、关联 association:两个类之间有强依赖,关系稳定(就像朋友一样,即使不调用,依然存在关系),一般来说,两个类是平等的;
1.UML:实线+箭头;
2.判断:has;
3.代码表现:一个类的某个属性是以另一个类为类型创建的;
四、聚合 Aggregation:聚合是关联的一部分,一种细分;
1.uml:空菱形+实线+箭头;
2.判断:has,强调整体和局部的关系;
举例:公司指向员工;汽车指向轮胎;
3.代码表现:与关联一样;
五、组合 Composition,组合也是关联的一种细分;
1.uml:实菱形+实线+箭头;
2.判断:has,是整体和局部的关系,但强调具有相同的生命周期,与聚合最大的不同是很难分离,像卡车指向卡车的发动机;
3.代码表示:与关联一样;
注意:依赖强了是关联,关联强了是聚合,聚合强了是组合;
六、要求:
1.能识别出类和类之间的关系
2.会画类图
箭头方向的原则:由子指向父,由整体指向部分;
类继承类:需要空心三角加实线
类继承接口:需要空心三角加虚线
3.会写代码
七、设计原则:
奉行高内聚,低耦合原则;
高内聚:类的内部,属性和方法之间的关系越强越好;如方法可以用到所有的属性;
低耦合:对于类和类之间的关系,倾向于类之间互相影响的程度越低越好;
八、耦合度从高到低
继承-->组合-->聚合-->关联-->依赖
注意:能用依赖不用关联,能用关联不用继承;