面向对象设计原则和UML表示

面向对象的设计原则

单一职责原则
类的功能要单一。
开闭原则
在尽量不修改源代码前提下扩展
里氏代换原则
父类引用的地方也能用子类。就是说尽量不要覆盖父类的方法
依赖倒转原则
要针对接口编程,而不是针对实现编程。
接口隔离原则
接口设计要专一,不需要多余的方法实现
合成复用原则
少用继承,多用依赖关联等
迪米特法则
一个类的改变最少的影响别的类的运转。

衡量面向对象的的优劣就是高耦合低内聚。耦合性就是类和类之间的关联程度。关联程度越高,耦合性越高。内聚性和和耦合性相反,关联程度越高,内聚程度越低

UML表示

Unified Modeling Language (UML)又称统一建模语言或标准建模语言.我们可以用他来描述对象和集合的关系。
UML 用类图(Class Diagram)表示类。
面向对象设计原则和UML表示_第1张图片

一个类图属性方法描述一个类。

接着我们按照耦合性从高到低来描述类和类之间的关系

实现(Realization)

对应接口实现
面向对象设计原则和UML表示_第2张图片

泛化(generalization)#

对应继承关系,表示is-a的关系。
面向对象设计原则和UML表示_第3张图片

组合(Composition)

对应类的属性。 表示contains-a的关系,是一种特殊的关联

面向对象设计原则和UML表示_第4张图片

聚合(Aggregation)

对应类的属性。 表示has-a的关系的关系。是一种特殊的关联
面向对象设计原则和UML表示_第5张图片

Tips:
组合和聚合很像,主要区别在于关联对象是否脱离对象能单独存在。例如汽车类和轮子类。如果轮子类是具体的轮子类,我们可以理解为是聚合关系。因为没有汽车类,轮子可以单独滚动(即可以单独存在)。但是如果轮子类是一个抽象类,就是组合关系了,因为抽象轮子类是无法单独存在的。

关联(Association)

通常使用类的属性表达。下面为双向关联。除了组合和聚合意外的关联我们称为一般关联
面向对象设计原则和UML表示_第6张图片

Tips:
组合和聚合是一种包含关系,而我们的一般关联只是一种简单的引用而已。如我们不能说Mother包含Son或者Son 包含Mother。但是我们的Mother 可能都会有一个Son。每一Son 也可能由一位Mother。

依赖(Dependency)#

依赖(Dependency):对象之间最弱的一种关联方式,是临时性的关联。代码中一般指由局部变量、函数参数、返回值建立的对于其他对象的调用关系。

面向对象设计原则和UML表示_第7张图片

你可能感兴趣的:(面向对象设计原则和UML表示)