面向对象方法有【Booch】方法、【Coad】方法和【OMT】方法等。P351

面向对象方法包括面向对象【分析】、面向对象【设计】和面向对象【实现】,其界线并不明显,它们采用相同的符号表示,能方便地从分析阶段平滑地过渡到设计阶段。P351

7.1 面向对象基础P351

7.1.1 面向对象的基本概念P351

面向对象=【对象】(Object)+【分类】(Classification)+【继承】(Inheritance)+通过【消息】的通信(Communication with Messages)。P351

1.对象

在面向对象的系统中,【对象】是基本的运行时的实体,它既包括数据(属性),也包括作用于数据的操作(行为)。P352

【封装】是一种信息隐蔽技术,它的目的是使对象的使用者和生产者分离,使对象的定义和实现分开。P352

2.消息

对象之间进行通信的一种构造叫作【消息】。P352

3.类

类是在对象之上的【抽象】,对象是类的【具体化】,是类的实例(Instance)。P352

类可以分为三种:【实体】类、【接口】类(【边界】类)和【控制】类。P352

【实体】类的对象表示现实世界中真实的实体,如人、物等。P352

【接口】类(【边界】类)的对象为用户提供一种与系统合作交互的方式。P352

接口类(边界类)分为【人】和【系统】两大类。P352

【人】的接口可以是显示屏、窗口、Web窗体、对话框、菜单、列表框、其他显示控制、条形码、二维码或者用户与系统交互的其他方法。P352

【系统】接口涉及到把数据发送到其他系统,或者从其他系统接收数据。P352

【控制】类的对象用来控制活动流,充当协调者。P352

4.继承

【继承】是父类和子类之间共享数据和方法的机制。P353

5.多态

在收到消息时,对象要予以响应。不同的对象收到同一消息可以产生完全不同的结果,这一现象称为【多态】。P353

软件设计师教程(第5版)第7章 面向对象技术(更新中)_软件设计师

多态分为【通用】的和【特定】的。P354

通用的分为【参数】的和【包含】的。P354

特定的分为【过载】的和【强制】的。P354

6.动态绑定(Dynamic Binding)

【绑定】是一个把过程调用和响应调用所需要执行的代码加以结合的过程。P354

在一般的程序设计语言中,绑定是在编译时进行的,叫作【静态】绑定。P354

【动态】绑定则是在运行时进行的,因此,一个给定的过程调用和代码的结合直到调用发生时才进行。P354

7.1.2 面向对象分析P354

【面向对象分析】包含5个活动:认定对象、组织对象、描述对象间的相互作用、确定对象的操作、定义对象的内部信息。P354

1.认定对象
2.组织对象
3.对象间的相互作用
4.基于对象的操作

7.1.3 面向对象设计P355

【面向对象设计】(【OOD】)是将OOA所创建的析模型转化为设计模型,其目标是定义系统构造蓝图。P355

1.面向对象设计的活动
2.面向对象设计的原则

面向对象设计的原则:单一责任原则(【SRP】)、开放-封闭原则(【OCP】)、里氏替换原则(【LSP】)、依赖倒置原则( 【DIP】)、接口分离原则(【ISP】)。还有 重用发布等价原则(【REP】)、共同封闭原则(【CCP】)、共同重用原则(【CRP】)、无环依赖原则(【ADP】)、稳定依赖原则(【SDP】)、稳定抽象原则(【SAP】)。P357

7.1.4 面向对象程序设计P357

【程序设计范型】是人们在程序设计时所采用的基本方式模型,决定了程序设计时采用的思维方式、使用的工具,同时又有一定的应用范畴。P357

面向对象程序设计(【OOP】)的实质是选用一种面向对象程序设计语言(【OOPL】),采用对象、类及其相关概念所进行的程序设计。P357

1.类
2.继承和类层次结构
3.对象、消息传递和方法
4.对象自身引用
5.重置

【重置】或【覆盖】是在子类中重新定义父类中已经定义的方法,其基本思想是通过一种动态绑定机制的支持,使得子类在继承父类接口定义的前提下用适合自己要求的实现去置换父类中的相应实现。P360

6.类属类

【类属类】可以看成是类的模板。P361

7.无实例的类

要创建无实例的类,仍然需要语言的支持。在C++和Java语言中,【抽象类】就是这样的类。P362

7.1.5 面向对象测试P362

对面向对象软件的测试可分为下列4个层次进行:【算法】层、【类】层、【模板】层、【系统】层。P363

【算法】层。测试类中定义的每个方法,基本上相当于传统软件测试中的单元测试。363

【类】层。测试封装在同一个类中的所有方法与属性之间的相互作用。在面向对象软件中类是基本模块,因此可以认为这是面向对象测试中所特有的模块测试。363

【模板】层。测试一组协同工作的类之间的相互作用,大体上相当于传统软件测试中的集成测试,但是也有面向对象软件的特点(例如,对象之间通过发送消息相互作用)。363

【系统】层。把各个子系统组装成完整的面向对象软件系统,在组装过程中同时进行测试。363

【面向对象测试】的主要目标也是用尽可能低的测试成本和尽可能少的测试用例,发现尽可能多的错误。363

7.2 UML P363

UML的词汇表包含3种构造块:【事物】、【关系】和【图】。P364

【事物】是对模型中最具有代表性的成分的抽象;P364

【关系】把事物结合在一起;P364

【图】聚集了相关的事物。P364

7.2.1 事物P364

UML中有4种事物:【结构】事物、【行为】事物、【分组】事物和【注释】事物。P364

【交互】由在特定语境中共同完成一定任务的一组对象之间交换的消息组成。P364

【状态机】描述了一个对象或一个交互在生命期内响应事件所经历的状态序列。P365

【活动】是描述计算机过程执行的步骤序列,注重步骤之间的流而不关心哪个对象执行哪个步骤。P365

【交互】、【状态机】和【活动】是可以包含在UML模型中的基本行为事物。P365

7.2.2 关系P365

UML中有4种关系:【依赖】、【关联】、【泛化】和【实现】。P365

依赖的变体有【精化】、【跟踪】、【包含】和【延伸】。P366

7.2.3 UML中的图P366

【图】是一组元素的图形表示,大多数情况下把图画成顶点(代表事物)和弧(代表关系)的连通图。P366

UML 2.0提供了13种图,分别是【类】图、【对象】图、【用例】图、【序列】图、【通信】图、【状态】图、【活动】图、【构件】图、【组合结构】图、【部署】图、【包】图、【交互概览】图和【计时】图。P366

【序列】图、【通信】图、【交互概览】图和【计时】图均被称为【交互】图。P366

1.类图

【类】图展现了一组对象、接口、协作和它们之间的关系。P366

类图通常包含以下类容:【类】;【接口】;【协作】;依赖、泛化和关联【关系】。P366

2.对象图

【对象】图展现了某一时刻一组对象以及它们之间的关系,描述了在类图中所建立的事物的实例的静态快照。P368

对象图一般包括【对象】和【链】。P368

3.用例图

【用例】图展现了一组【用例】、【参与者】(Actor)以及它们之间的【关系】。P368

4.交互图

【交互】图用于对系统的动态方面进行建模。P369

交互图表现为【序列】图、【通信】图、【交互概览】图和【计时】图,每种针对不同的目的,能适用于不同的情况。P369

【序列】图是强调消息时间顺序的交互图;P369

【通信】图是强调接收和发送消息的对象的结构组织的交互图;P369

【交互概览】图强调控制流的交互图。P369

【交互】图用于对一个系统的动态方面建模。P369

交互图一般包含【对象】、【链】和【消息】。P370

1) 序列图

【序列图】是【场景】(Scenario)的图形化表示,描述了以时间顺序组织的对象之间的交互活动。P370

2) 通信图

【通信】图强调收发消息的对象的结构组织,在早期的版本中也被称作【协作】图。P371

【序列】图和【通信】图是同构的,它们之间可以相互转换。P371

3) 交互概览图

【交互概览】图是UML 2.0新增的交互图之一,它是活动图的变体,描述业务过程中的控制流概览,软件过程中的详细逻辑概览,以及将多个图进行连接,抽象掉了消息和生命线。P371

4) 计时图

【计时】图是另一种新增的、特别适合实时和嵌入式系统建模的交互图,关注沿着线性时间轴、生命线内部和生命线之间的条件改变。它描述对象状态随着时间改变的情况,很像示波器。P372

5.状态图

【状态】图展现了一个状态机,它由【状态】、【转换】、【事件】和【活动】组成。P372

状态图通常包括【简单】状态和【组合】状态、【转换】(事件和动作)。P373

6.活动图

【活动】图是一种特殊的状态图,它展现了在系统内从一个活动到另一个活动的流程。P374

【活动】图一般包括活动状态和动作状态、转换和对象。P374

7.构件图

【构件】图展现了一组构件之间的组织和依赖。P375

8.组合结构图

【组合结构】图用于描述一个分类器(如类、构件或用例)的内部结构,分类器与系统中其他组成部分之间的交互端口,展示一组相互协作的实例如何完成特定的任务,描述设计、架构模式或策略。P376

9.部署图

【部署】图是用来对面向对象系统的物理方面建模的方法,展现了运行时处理结点以及其中构件(制品)的配置。P377

10.包图

【包】图是用于把模型本身组织成层次结构的通用机制,不能执行,展现由模型本身分解而成的组织单元以及其间的依赖关系。P377

7.3 设计模式P378

7.3.1 设计模式的要素P378

设计模式一般有以下4个基本要素:【模式名称】、【问题】、【解决方案】、【效果】。P378

软件设计师教程(第5版)第7章 面向对象技术(更新中)_软件设计师_02

7.3.2 创建型设计模式P379

【创建】型模式抽象了实例化过程,它们帮助一个系统独立于如何创建、组合和表示它的那些对象。P379

1.Abstract Factory(抽象工厂)
1)意图
2)结构
3) 适用性
2. Builder(生成器)
1)意图
2)结构
3) 适用性
3. Factory Method(工厂方法)
1)意图
2)结构
3) 适用性
4. Prototype(原型)
1)意图
2)结构
3) 适用性
5. Singleton(单例)
1)意图
2)结构
3) 适用性
6. 创建型模式比较

7.3.3 结构型设计模式P384

【结构】型设计模式涉及如何组合类和对象以获得更大的结构。P384

1. Adapter(适配器)
1)意图
2)结构
3) 适用性
2. Bridge(桥接)
1)意图
2)结构
3) 适用性
3. Composite(组合)
1)意图
2)结构
3) 适用性
4. Decorator(装饰)
1)意图
2)结构
3) 适用性
5. Facade(外观)
1)意图
2)结构
3) 适用性
6. Flyweight(享元)
1)意图
2)结构
3) 适用性
7.Proxy(代理)
1)意图
2)结构
3) 适用性
8.结构型模式比较

7.3.4 行为设计模式P394

1.Chain of Responsibility(责任链)
1)意图
2)结构
3) 适用性
2.Command(命令)
1)意图
2)结构
3) 适用性
3.Interpreter(解释器)
1)意图
2)结构
3) 适用性
4.Iterator(迭代器)
1)意图
2)结构
3) 适用性
5.Mediator(中介者)
1)意图
2)结构
3) 适用性
6.Memento(备忘录)
1)意图
2)结构
3) 适用性
7. Observer(观察者)
1)意图
2)结构
3) 适用性
8. State(状态)
1)意图
2)结构
3) 适用性
9. Strategy(策略)
1)意图
2)结构
3) 适用性
10. Template Method(模板方法)
1)意图
2)结构
3) 适用性
11. Visitor(访问者)
1)意图
2)结构
3) 适用性
12. 行为模式比较

7.3.5 应用举例P407