第二章 面向对象技术
一、面向对象的基础
1、面向对象基础概念
面向对象=对象+类+继承+消息通信
1、对象:在面向对象的系统中,对象是基本运行时的实体,即包括数据(属性),也包括作用于数据的操作(行为)。对象内进行的操作通常称为方法。一个对象一般由对象名(标识)、属性和方法三个部分 组成。
2、消息:对象之间进行通信的一种构造称为消息。当一个消息发送给某个对象时,包含要求接收对 象去执行某些活动的信息。接收到信息的对象经过解释,然后予以响应。这种通信机制称为消 息传递。发送消息的对象不需要知道接收消息的对象如何对请求予以响应。
3、类:类是在对象之上的抽象,对象是类的具体化,是类的实例(instance )。在分析和设计时, 通常把注意力集中在类上,而不是具体的对象。也不必逐个定义每个对象,只需对类做出定义, 而对类的属性进行不同赋值即可得到该类的对象实例。
4、继承:继承是父类与子类之间共享数据和方法的机制。这是类之间的一种关系,在定义和实现一 个类的时候,可以在一个已经存在的类的基础上进行,并把这个已经的类所定义的内容作为自己的内容,并加入若干新的内容。
5、多态:在收到消息时,对象要予以响应。不同的对象收到同一信息可以产生不同的结果,这一个 现象称为多态(polymorphism)。Cardelli 和 Wegner 把它分为四类,通用的(参数的、包含的)、 特定的(过载的、强制的)。
6、动态绑定:绑定是一个把过程调用和响应调用所需要执行的代码加以结合的过程。在一般的程序设计 语言中,绑定是在编译时进行的,成为静态绑定。动态绑定则是在运行时进化的,因此,一个给定的过程调用和代码的结合直到调用发生时才进行。
2、面向对象分析
面向对象分析(OOA)的目的是为了获得对应用问题的理解。包括5个活动
认定对象
组织对象
对象间的相互作用
定义对象的操作
定义对象的内部信息
3、面向对象设计
面向对象设计(OOD)含义是设计分析模型和实现相应源代码,在目标代码环境中这种 源代码可以被执行。通常情况时,由概念模型生成的分析模型被装入到相应的执行环境中时, 还需要被修改。
对象标识期间的目标是分析对象,设计过程也是发现对象的过程,称之为再处理。 面向对象是一种程序设计风格,不只是一种具有构造继承性、封装性和多态的程序设计语言族的命名。
4、面向对象程序设计
面向对象程序设计(OOP)的实质是选用一种面向对象程序设计语言(OOPL),采用对 象、类及其相关概念所进行的程序设计。它的关键在于加入了类和继承性,从而进一步提高了 抽象程度。
5、面向对象测试
(1)算法层。测试类中定义的每个方法,基本上相当于传统软件测试中的单元测试。
(2)类层。测试封装在同一个类中的所有方法与属性之间的相互作用。在面向对象软件中类是基本模块,因此可以认为这是面向对象测试中所特有的模块测试。
(3)模板层。测试一组协同工作的类之间的相互作用。大体上相当于传统软件测试中的 集成测试,但是也有面向对象软件的特点(例如,对象之间通过发送消息相互作用)。
(4)系统层。把各个子系统组装成完整的面向对象软件系统,在组装过程中同时进行测试。
软件工程中传统的测试用例设计技术,如逻辑覆盖、等价类划分和边界值分析等方法,仍然可以作为测试类中每个方法的主要技术。面向对象测试的主要目标也是用尽可能低的测试成 本和尽可能少的测试用例,发现尽可能多的错误。但是,面向对象程序中特有的封装、继承和 多态等机制,也给面向对象测试带来一些新特点,增加了测试和调试的难度。
二、UML
2.1 事物
2.2 关系
UML中有4种关系:依赖、关联、泛化和实现。
2.3 UML中的关系
2.3.1 类图:类图展现了一组对象、接口、协作和它们之间的关系。类图中包含的内容,如下图所示:
2.3.2 对象图:对象图展现了某一时刻一组对象以及它们之间的关系。对象图一般包括对象和链,如下图所示:
2.3.3 用例图:用例图展现了一组用例、参与者以及它们之前的关系,如下图所示:
2.3.4 交互图:用于对系统的动态方面进行建模。一张交互图表现的是一个交互行程序由一组对象和它们之间的关系组成,包含它们之间可能传递的消息。交互图表现为序列图、通信图、交互概览图和时序图。
1)序列图:
序列图是场景的图形化表示,描述了以时间顺序组织的对象之间的交互活动。强调的是信息时间顺序的交互图。有两个不同于通信图的特征。
(1)序列图有对象生命线。(2)序列图有控制焦点。
2)通信图
通信图强调收发信息的对象的结构组织,在早期版本中也被称为协作图,强调参加交互的对象的组织。通信图如下图所示:
通信图有两个不同于序列图的特征:
(1)通信图有路径;(2)通信图有顺序号;
3)交互概述图
交互概览图是 UML2.0 新增的交互图之一,它是活动图的变体,描述业务过程中的控制流 概览,软件过程中的详细逻辑概览,以及多个图进行拼接,抽象掉了信息和生命线。它使用活动图的表示法,如下图所示:
4)计时图
另一种新增的、特别适合实时嵌入式系统建模的交互图称为计时图。其关注沿着线性时间轴、生命线内部和生命线之间的条件改变。他描述对象状态随着时间改变的情况,很像示波器, 如下图所示:
5)状态图
状态图通常包括简单状态和组合状态、转换(事件和动作)。如下图所示:
6)活动图
活动图专注系统的动态视图,它对于系统的功能建模特别重要,并强调对象间的控制流程。一般包括活动状态和动作状态、转换和对象。如下图所示:
7)构件图
构件图展现了一组构件之间的组织和依赖,专注于系统静态实现视图。如下图所示:
8) 组合结构图
用于描述一个分类器(如类、构件等)的内部结构,分类器与系统中其他组成部分之间的交互 端口,展示一组相互协作的实例如何完成特定的任务,描述设计、架构模式或策略。
9)部署图
部署图是用来对面向对象系统的物理方面建模的方法, 展现了运行时处理 结点以及其构件(制品)的配置。一般对系统的静态部署视图进行建模,与构件图相关。如下图所示:
10)包图
包图用于把模型本身组织成层次结构的通用机制,不能执行,展现由模型本身分解而成的组织 单元以及之间的依赖关系。如下图所示:
三、设计模式
3.1 设计模式的要素
设计模式的核心在于提供了相关问题的解决方案,使得人们可以更加简单方便的复用成功的设计和体系结构。
设计模式4个基本要素: 模式名称、问题、解决方案、效果。
3.2 创建型设计模式
创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建、组合和表示它的哪些对象。一个类创建型模式使用继承改变被实例化的类,而一个对象创建型模式将实例化委托给另一个对象。
1)抽象工厂(Abstract Factory);2)生成器(Builder);3)工厂方法(Factory Method);4)原型(Prototype);5)单例(Singleton)
3.3 结构型设计模式
1. 适配器(Adapter)2. 桥接(Bridge)3. 组合(Composite)4. 装饰(Decorator)5. 外观(Facade)6. 享元(Flyweight)7. 代理(Proxy)
3.4 行为设计模式
行为模式涉及算法和对象间职责的分配。行为模式不仅描述对象或类的模式,还描述了它 们之间的通信模式。这些模式刻画了在运行时难以跟踪的、复杂的控制流。它们将用户的注意力从控制流转移到对象间的联系方式上来。
1. 责任链(Chain of Responsibility)2. 命令(Command)3. 解释器(Interpreter)4. 迭代器(Iterator)5. 中介者(Mediator)6. 备忘录(Memento)7. 观察者(Observer)8. 状态(State)9. 策略(Strategy)10. 模板方法(Template Method)11. 访问者(Visitor)
————————————————
版权声明:本文为CSDN博主「阳仔蛋炒饭」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yangzhiwei273/article/details/120335683

