UML建模和设计模式——常考点整理
UML中的9种图
1、类图
静态图,为系统的静态设计视图,展现一组对象、接口、协作和它们之间的关系。
2、对象图
静态图,展现某一时刻一组对象及它们之间的关系,为类图的某一快照。在没有类图的前提下,对象图就是静态设计视图。
3、用例图
静态图,展现了一组用例、参与者以及它们之间的关系。用例图中的参与者是人、硬件或其他系统可以扮演的角色;用例是参与者完成的一系列操作,用例之间的关系有扩展、包含、泛化。
4、序列图(顺序图)
动态图,是场景的图形化表示,描述了以时间顺序组织的对象之间的交互活动。有同步消息(实心箭头)、异步消息(空心箭头)、返回消息(虚线箭头)三种。上方的对象对应下方箭头上的成员和方法。
5、通信图(协作图)
动态图,强调参加交互的对象的组织。
6、状态图
动态图,展现了一个状态机,描述单个对象在多个用例中的行为,包括简单状态和组合状态。
7、活动图
动态图,是一种特殊的状态图,展现了在系统内从一个活动到另一个活动的流程。活动的分岔和汇合线是一条水平粗线。
8、构件图(组件图)
静态图,为系统静态实现视图,展现了一组构件之间的组织和依赖。
9、部署图
静态图,为系统静态部署视图,部署图物理模块的节点分布。它与构件图相关,通常一个节点包含一个或多个构件。
设计模式
设计模式主要分三种:创建型模式、结构型模式、行为型模式。
1、创建型模式
解决对象的创建机制,将对象的创建与使用分离,隐藏实例化过程的细节。
- Abstract Factory(抽象工厂模式,抽象接口)
- Builder(构建器模式,类和构造分离)
- Factory Method(工厂方法模式,子类决定实例化)
- Prototype(原型模式,原型实例,拷贝)
- Singleton(单例模式,唯一实例)
2、结构型模式
处理类或对象的组合方式,形成更大的结构以扩展功能。
- Adapter(适配器模式,转换,兼容接口)
- Bridge(桥接模式,抽象和实现分离)
- Composite(组合模式,整体-部分,树形结构)
- Decorator(装饰模式,附加职责)
- Facade(外观模式,对外统一接口)
- Flyweight(享元模式,细粒度,共享)
- Proxy(代理模式,代理控制)
3、行为型模式
定义对象间的交互与职责分配,管理算法流程和状态变化。
- Chain of Responsibility(职责链模式,传递请求、职责、链接)
- Command(命令模式,日志记录、可撤销)
- Interpreter(解释器模式,解释器,虚拟机)
- Iterator(迭代器模式,顺序访问,不暴露内部)
- Mediator(中介者模式,不直接引用)
- Memento(备忘录模式,保存,恢复)
- Observer(观察者模式,通知、自动更新)
- State(状态模式,状态变成类)
- Strategy(策略模式,算法替换)
- Template Method(模板方法模式,定义算法骨架,然后再细化)
- Visitor(访问者模式,数据和操作分离)
4+1视图
体系结构模型的多视图表示是从不同的视角描述特定系统的体系结构。
- 逻辑视图
- 开发视图
- 物理视图
- 进程视图
- 统一的场景
面向对象基础
1、面向对象的基本概念
- 对象:对象名,属性,方法
- 类:实体类、接口类、控制类
- 抽象:抽取共同特征
- 封装:对数据的访问或修改只能通过接口
- 继承:单继承、多继承
- 多态:参数多态、包含多态、过载多态、强制多态
- 接口:描述对操作规范的说明
- 消息:通过它向目标对象发送操作请求
- 覆盖:在子类中重定义一个与父类同名同参的方法
- 函数重载:同名不同参
- 绑定:把过程调用和响应调用所需要执行的代码加以结合
2、面向对象的分析
为了确定问题域,理解问题,包含五个活动
- 认定对象
- 组织对象
- 描述对象间的相互作用
- 确定对象的操作
- 定义对象的内部信息
3、面向对象需求建模
- 用例模型(识别参与者、合并需求获得用例、细化用例描述、调整用例模型)
- 分析模型(定义概念类、识别类之间的关系、为类添加职责、建立交互图)
4、面向对象的设计
是设计分析模型和实现相应源代码,设计问题域的解决方案,与技术相关。
- 面向对象的分析模型(顶层架构图、用例与用例图、领域概念模型)
- 设计模型(软件体系结构图、用例实现图、类图、状态图、活动图)
设计原则:
- 单一责任原则(一个类只做一种类型责任)
- 开放——封闭原则(软件实体可扩展、不可修改)
- 里氏替换原则(子类必能替换基类)
- 依赖倒置原则(高层模块不应该依赖于低层模块)
- 接口分离原则(不应该强迫客户依赖于它们不用的方法)
- 重用发布等价原则(重用的粒度就是发布的粒度)
- 共同封闭原则(一个变化若对一个包产生影响,则将对该包中的所有类产生影响,而对于其他的包不造成任何影响)
- 共同重用原则(如果重用了包中的一个类,那么就要重用包中的所有类)
- 无环依赖原则(在包的依赖关系图中不允许存在环)
- 稳定依赖原则(朝着稳定的方向进行依赖)
- 稳定抽象原则(包的抽象程度应该和其稳定程度一致)
5、面向对象的测试
分为四个层次进行:
- 算法层:测试类中每个方法。
- 类层:测试封装在同一个类中的所有方法与属性之间的相互作用。
- 模板层:测试一组协同工作的类之间的相互作用。
- 系统层:把各个子系统组装成完整的面向对象软件系统,在组装过程进行测试。