十二、面向对象

1,概念

对象:对象名,属性,方法

类:实体类(人)、接口类(交互)、控制类(控制流)

抽象(单一化描述)、封装(信息隐蔽)、继承(层次关系,父类和子类)

多态(参数多态(不同参数类型))、包含多态(父子类型关系)、过载多态(重载,一个名字的不同含义)、强制多态(强制类型转换)

多态不同的对象收到同一个消息时产生完全不同的结果。包括参数多态(不同类型参数多种结构类型)、包含多态(父子类型关系)、过载多态(类似于重载,一个名字不同含义)、强制多态(强制类型转换)四种类型。多态由继承机制支持,将通用消息放在抽象层,具体不同的功能实现放在低层。

覆盖:子类重新定义一个同名同参方法

函数重载:与父类子类无关,函数同名不同参数

绑定:

编译时,静态绑定

运行时,动态绑定

2,面向对象设计原则

solid原则

单一职责原则:(Single Responsibility Principle, SRP) 一个类只负责一个职责

开闭原则:(Open-Closed Principle, OCP) 对扩展开放,对修改关闭

里氏代换原则:(Liskov Substitution Principle, LSP) 所有引用基类的地方必须能透明地使用其子类的对象。使用子类的实例来替代父类的实例,而不引发问题

依赖倒转原则:(Dependence Inversion Principle, DIP) 面向接口编程

接口隔离原则:(Interface Segregation Principle, ISP) 客户端不应该依赖那些它不需要的接口(更大粒度的单一职责原则,不局限于类)

合成复用原则;(Composite Reuse Principle, CRP) 减少继承,多使用对象组合

迪米特法则;(Law of Demeter, LoD) 最小知识原则

3,UML图:

UML三要素

1,构造块 1,事物(结构事物、行为(交互、行为、状态机)、分组(包)、注释(注解))

2,关系(依赖(虚线实心三角形,一个事物依赖于另一个事务)、关联(组合(强关联)、聚合(弱关联)部分和整体的关系)、泛化(实线空心三角形,父类和子类)、实现(虚线空,保证执行的契约)

3,图

2,规则、

3,公共机制

虚空实 实空泛 虚实依、关联

类图:静态图。包含属性和方法,表示类的关系

对象图:静态图,类图的快照

用例图(用例和参与者的关系静态图):(包含(include_必须做,有顺序)拓展(extend 反向尽头_可做)泛化(实空泛_多选择))

构件图(组件图):反应组件之间的组织和依赖。(有特殊的组件标志) 静态图

部署图:静 物理模块分布

交互图:通信图和顺序图统称

1,序列图(顺序图、时序图):以时间顺序组织对象之间的交互活动。动态图,有时间线

同步消息实,异步消息空,返回消息虚

2,通信图(协作图):不强调时间顺序

状态图:状态机,有黑点。动态图

活动图:特殊的状态图 有水平粗线

4,设计模式

分为三类,创建型模式主要是处理创建对象,结构型模式主要是处理类和对象的组合搭配,行为型模式主要是描述类或者对象的交互行为,具体如下(红色粗体记忆关键字表示常考必须记住的):

创建型 (单例,一个类一个实例,唯一)(抽象工厂,抽象接口)(原型,复制,拷贝)(建造者,类和构造分离)(工厂,子类决定实例化)

结构型 (外观,对外统一,统一外观)(桥接,抽象和现实分离)(组合,整体-部分,树形)(享元,细粒度,共享)(代理,代理控制)(适配器,兼容转换)(装饰,附加职责,添加新的功能)

行为型 (观察者,自动更新,订阅)(模板方法,步骤)(迭代器,顺序访问,不暴露内部)(策略,算法替换,解决问题的多种方法),

(职责链,传递请求)(命令,日志可撤销,遥控器)(解释器,虚拟机,编译)(访问者,数据操作分离),

(中介者,不直接引用)(备忘录,保存恢复还原)(状态,状态变类)