面向对象技术
面向对象
对象:由数据及其操作所构成的封装体,是系统中用来描述客观事务的一个实体,是构成系统的 一个基本单位。 一个对象通常可以由对象名、属性和方 法3个部分组成。
类:现实世界中实体的形式化描述,类将该实体的属性(数据)和操作 (函数)封装在一起。对象是类的实例,类是对象的模板
抽象:通过特定的实例抽取共同特征以后形成概念的过程
封装:是一种信息隐蔽技术, 将相关的概念组成一个单元模块, 并通过一个名称来引用 。面向对象封装是将数据和基于数据的操作封装成一个整体对象
继承:表示类之间的层次关系 (父类与子类)
多态:不同的对象收到同 一个消息时产生完全不同的结果
接口:其只说明操作应该做什么, 并没有定义操作如何做
消息:体现对象间的交互, 通过它向目标对象发送操作请求
覆盖:子类在原有父类接口的基础上, 用适合于自己要求的实现去置换父类中的相应实现 。即在子类中重定义-个与父类同名同参的方法
重载: 与覆盖要区分开, 函数重载与子类父类无关, 且函数是同名不同参数
绑定:是一个把过程调用和响应调用所需要执行的代码加以结合的过程。动态绑定,运行时,静态绑定,编译时
UML统一建模语言
UML三要素:UML的基本构造块、支配这些构造块如何放置在一起的规则和运用与整个语言的一些公共机制
UML的基本构造块包括:事物(对模型中最具有代表性的成分的抽象)、关系(把事务结合在一起)、图(聚集了相关的事物)。
事物
UML中有四种事物:结构事物(静态事物)、行为事物(动态事物)、分组事物、注释事物
关系
依赖:一个事物的语义依赖于另一个事物的语义的变化而变化
关联:是一种结构关系,描述了一组链,链是对象之间的连接。分为组合和聚合,都是部分和整体的关系,其中组合事物之间关系更强。两个类之间的关联,实际上是两个类所扮演角色的关联,因此,两个类之间可以有多个由不同角色标识的关联。
泛化:一般/特殊的关系,子类和父类之间的关系,继承关系
实现:一个类元指定了另一个类元保证执行的契约。
图例
长方形:类
实习菱形:组合,强关联
空心菱形:聚集,弱关联
横线:关联
虚线箭头:依赖
圆形:接口
空心三角:泛化
虚线三角:实现
点点*:多重度,1个到多个
类图:静态图,为系统的静态设计视图,展现一组对象、接口、协作和它们之间的关系。
对象图:静态图,展现某一时刻一组对象及它们之间的关系,为类图的某一快照。在没有类图的前提下,对象图就是静态设计视图。
用例图:静态图,展现了一组用例、参与者以及它们之间的关系。用例图中的参与者是人、硬件或其他系统可以扮演的角色;用例是参与者完成的一系列操作。用例之间的关系:包含(include)、扩展(extend)、泛化。
序列图:即顺序图,动态图,是场景的图形化表示,描述了以时间顺序组织的对象之间的交互活动。有同步消息(进行阻塞调用,调用者中止执行,等待控制权返回,需要等待返回消息,用实心三角箭头表示)、异步消息(发出消息后继续执行,不引起调用者阻塞,也不等待返回消息,由空心箭头表示)、返回消息(由从右到左的虚线箭头表示)三种。
实心箭头:同步消息
异步消息:空心箭头
返回消息:虚线箭头
通信图:动态图,即协作图,是顺序图的另一种表示方法,也是由对象和消息组成的图,只不过不强调时间顺序,只强调事件之间的通信,而且也没有固定的画法规则,和顺序图统称为交互图
状态图:动态图,展现了一个状态机,描述单个对象在多个用例中的行为,包括简单状态和组合状态。转换可以通过事件触发器触发,事件触发后相应的监护条件会进行检查。状态图中转换和状态是两个独立的概念,如下:图中方框代表状态,箭头上的代表触发事件,实心圆点为起点和终点
活动图:动态图,是一种特殊的状态图,展现了在系统内从一个活动到另二个活动的流程。活动的分岔和汇合线是一条水平粗线。每个分岔的分支数代表了可同时运行的线程数。活动图中能够并行执行的是在一个分岔粗线下的分支上的活动。
构件图(组件图):静态图,为系统静态实现视图,展现了一组构件之间的组织和依赖。
部署图:静态图,为系统静态部署视图,部署图描述的事物理模块的节点分布。它与构件图相关,通常一个结点包含一个或多个构件。其依赖关系类似于包依赖,因此部署组件之间的依赖是单向的类似于包含关系。
设计模式
架构模式:软件设计中的高层决策,例如C/S结构就属于架构模式, 架构模式反映了开发软件系统过程中所作的基本设计决策。
设计模式:每一个设计模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动。设计模式的核心在于提供了相关问题的解决方案,使得人们可以更加简单方便的复用成功的的设计和体系结构。
四个基本要素:模式名称、问题(应该在何时使用模式)、解决方案(设计的内容)、效果(模式应用的效果)。
惯用法:是最低层的模式,关注软件系统的设计与实现,实现时通过某种特定的程序设计语言来描述构件与构件之间的关系。每种编程语言都有它自己特定的模式,即语言的惯用法。例如引用一计数就是C++语言中的一种惯用法。
创建型
抽象工厂模式:抽象接口
构件器模式:类与构造分离
单例模式:唯一实例
工厂方法模式:子类决定实例化
原型模式:原型,拷贝
结构型
适配器模式:转换,兼容接口
桥接模式:抽象和实现分离
组合模式:整体部分,树形结构
装饰模式:附加职责
外观模式:对外统一接口
享元模式:细粒度,共享
代理模式:代理控制
行为型
责任链模式:传递请求,指责链接
命令模式:日志记录,可撤销
解释器模式:解释器,虚拟机
迭代器模式:顺序访问,不暴露内部
中介者模式:不直接引用
备忘录模式:保存恢复
观察者模式:通知,自定更新
状态模式:状态变成类
策略模式:算法替换
模板方法模式
访问者模式:数据和操作分离