第八章 面向对象(软考笔记)

UML(Unified Modeling Language)

统一建模语言(Unified Modeling Language,UML)是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言,是非专利的第三代建模和规约语言。UML是面向对象设计的建模工具,独立于任何具体程序设计语言。

UML的词汇表包含三种构造块:事物、关系和图。事物是对模型中最具有代表性的成分的抽象;关系把事物结合在一起;图聚集了相关的事物。

1.事物

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

(1)结构事物(structural thing)。结构事物是UML模型中的名词。它们通常是模型的静态部分,描述概念或物理元素。结构事物包括类(class)、接口(interface)、协作(collaboration)、用例

(use case)、主动类(active class)、构件(component)和节点(node)。

类:多个长方形 接口:园 用例:椭圆 主动类:加粗边框的类

(2)行为事物(behavior thing)。行为事物是UML模型的动态部分。它们是模型中的动词,描述了跨越时间和空间的行为。共有两类主要的行为事物:交互(interaction)和状态机(state machine)。

交互由在特定语境中共同完成一定任务的一组对象之间交换的消息组成。在图形上,把一个消息表示为一条有向直线,通常在表示消息的线段上总有操作名。

消息:实心箭头

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

状态:圆角长方形

3)分组事物(grouping thing)。分组事物是UML模型的组织部分。它们是一些由模型分解成的“盒子”。在所有的分组事物中,最主要的分组事物是包(package)。

结构事物、行为事物甚至其他分组事物都可以放进包内。

(4)注释事物(annotational thing)。注释事物是UML模型的解释部分。这些注释事物用来描述、说明和标注模型的任何元素。

2.关系

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

(1)依赖(dependency)。依赖是两个事物间的语义关系,其中一个事物(独立事物)发生变化会影响另一个事物(依赖事物)的语义。在图形上,把一个依赖画成一条可能有方向的虚线,如图10-12所示。

依赖:虚线箭头

(2)关联(association)。关联是一种结构关系,它描述了一组链,链是对象之间的连接。聚集(aggregation)是一种特殊类型的关联,它描述了整体和部分间的结构关系。关联和聚集的图形化表示如图10-13和图10-14所示。

关联:直线,两端有重复度(数字)和角色

聚集:虚心菱形

在关联上可以标注重复度(multiplicity)和角色(role)。

组合:实心菱形

(3)泛化(generalization)。泛化是一种特殊/一般关系,特殊元素(子元素)的对象可替代一般元素(父元素)的对象。用这种方法,子元素共享了父元素的结构和行为。在图形上,把一个泛化关系画成一条带有空心箭头的实线,它指向父元素,如图10-15所示

(4)实现(realization)。实现是类元之间的语义关系,其中一个类元指定了由另一个类元保证执行的契约。在两种地方要遇到实现关系:一种是在接口和实现它们的类或构件之间;另一种是在用例和实现它们的协作之间。在图形上,把一个实现关系画成一条带有空心箭头的虚线,如图10-16所示

3.UML中的图

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

1)类图

类图(class diagram)展现了一组对象、接口、协作和它们之间的关系。在面向对象系统的建模中所建立的最常见的图就是类图。类图给出系统的静态设计视图。

(1)类。

(2)接口。

(3)协作。

(4)依赖、泛化和关联关系。

2)对象图

对象图(object diagram)展现了一组对象以及它们之间的关系。对象图描述了在类图中所建立的事物的实例的静态快照。对象图一般包括对象和链。

3)用例图

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

(1)用例。

(2)参与者。

(3)扩展关系、包含关系。

4)交互图

序列图、通信图、交互概览图和时序图均被称为交互图,它们用于对系统的动态方面进行建模。一张交互图显示的是一个交互,由一组对象和它们之间的关系组成,包含它们之间可能传递的消息。顺序图是强调消息时间顺序的交互图;通信图则是强调接收和发送消息的对象的结构组织的交互图

(1)序列图。序列图(sequence diagram)是场景(scenario)的图形化表示,描述了以时间顺序组织的对象之间的交互活动。如图10-19所示,形成序列图时,首先把参加交互的对象放在图的上方,沿x轴方向排列。通常把发起交互的对象放在左边,下级对象依次放在右边。然后,把这些对象发送和接收的消息沿Y轴方向按时间顺序从上到下放置。

(2)通信图。通信图(communication diagram)强调收发消息的对象的结构组织,在早期的版本中也被称作协作图。(对象与对象之间的关系)

通信图有两个不同于序列图的特性。

① 通信图有路径。

② 通信图有顺序号。

5)状态图

状态图(state diagram)展现了一个状态机,它由状态、转换、事件和活动组成。状态图关注系统的动态视图,它对于接口、类和协作的行为建模尤为重要,强调对象行为的事件顺序。

状态图通常包括简单状态和组合状态、转换(事件和动作)。如图10-20所示。

6)活动图

活动图(activity diagram)是一种特殊的状态图,它展现了在系统内从一个活动到另一个活动的流程。活动图专注于系统的动态视图,它对于系统的功能建模特别重要,并强调对象间的控制流程

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

数据流图

数据流图或称数据流程图(Data Flow Diagram, DFD),是一种便于用户理解、分析系统数据流程的图形工具。它摆脱了系统的物理内容,精确地在逻辑上描述系统的功能、输入、输出和数据存储等,

是系统逻辑模型的重要组成部分。


设计模式

抽象工厂模式(Abstract Factory):提供一个接口,可以创建一系列相关或相互依赖的对象,而无需指定它们具体的类。

构建器模式(Builder):将一个复杂类的表示与其构造相分离,使得相同的构建过程能够得出不同的表示。

工厂方法模式(Factory Method):定义一个创建对象的接口,但由子类决定需要实例化哪一个类。工厂方法使得子类实例化的过程推迟。

适配器模式(Adapter):将一个类的接口转换成用户希望得到的另一种接口。它使原本不相容的接口得以协同工作。

装饰模式

一种对象结构型模式,可动态地给一个对象增加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活。通过装饰模式,可以在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责;当需要动态地给一个对象增加功能,这些功能可以再动态地被撤销时可使用装饰模式;当不能采用生成子类的方法进行扩充时也可使用装饰模式。

外观模式

一种对象的结构模式,要求外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

策略模式:

策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。

应用场景:

1、 多个类只区别在表现行为不同,可以使用Strategy模式,在运行时动态选择具体要执行的行为。 2、 需要在不同情况下使用不同的策略(算法),或者策略还可能在未来用其它方式来实现。

3、 对客户隐藏具体策略(算法)的实现细节,彼此完全独立。

生成器模式:

将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

状态模式:

当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。

命令模式(Command):

将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化,将请求排队或记录请求日志,支持可撤销的操作

享元模式(Flyweight):提供支持大量细粒度对象共享的有效方法。

代理模式(Proxy):为其他对象提供一种代理以控制这个对象的访问。

职责链模式(Chain of Responsibility):通过给多个对象处理请求的机会,减少请求的发送者与接收者之间的耦合。将接收对象链接起来,在链中传递请求,直到有一个对象处理这个请求。

命令模式(Command):将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化,将请求排队或记录请求日志,支持可撤销的操作。

中介者模式(Mediator):用一个中介对象来封装一系列的对象交互。它使各对象不需要显式地相互调用,从而达到低耦合,还可以独立地改变对象间的交互。

观察者模式(Observer):定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。

桥接模式(bridge):将抽象部分与实现部分分离,使得它们两部分可以独立地变化。

状态模式(State):允许一个对象在其内部状态改变时改变它的行为。

策略模式(Strategy):定义一系列算法,把它们一个个封装起来,并且使它们之间可互相替换,从而让算法可以独立于使用它的用户而变化。

真题:

1.UML图

(1)类图(class diagram)。类图描述一组类、接口、协作和它们之间的关系。在OO系统的建模中,最常见的图就是类图。类图给出了系统的静态设计视图,活动类的类图给出了系统的静态进程视图。

(2)对象图(object diagram)。对象图描述一组对象及它们之间的关系。对象图描述了在类图中所建立的事物实例的静态快照。和类图一样,这些图给出系统的静态设计视图或静态进程视图,但它们是从真实案例或原型案例的角度建立的。

(5)用例图(use case diagram)。用例图描述一组用例、参与者及它们之间的关系。用例图给出系统的静态用例视图。这些图在对系统的行为进行组织和建模时是非常重要的。

(6)顺序图(sequence diagram,序列图)。顺序图是一种交互图(interaction diagram),交互图展现了一种交互,它由一组对象或参与者以及它们之间可能发送的消息构成。交互图专注于系统的动态视图。顺序图是强调消息的时间次序的交互图。

(7)通信图(communication diagram)。通信图也是一种交互图,它强调收发消息的对象或参与者的结构组织。顺序图和通信图表达了类似的基本概念,但它们所强调的概念不同,顺序图强调的是时序,通信图强调的是对象之间的组织结构(关系)。在UML 1.X版本中,通信图称为协作图(collaboration diagram)。

(9)状态图(state diagram)。状态图描述一个状态机,它由状态、转移、事件和活动组成。状态图给出了对象的动态视图。它对于接口、类或协作的行为建模尤为重要,而且它强调事件导致的对象行为,这非常有助于对反应式系统建模。

(10)活动图(activity diagram)。活动图将进程或其他计算结构展示为计算内部一步步的控制流和数据流。活动图专注于系统的动态视图。它对系统的功能建模和业务流程建模特别重要,并强调对象间的控制流程。

(11)部署图(deployment diagram)。部署图描述对运行时的处理节点及在其中生存的构件的配置。部署图给出了架构的静态部署视图,通常一个节点包含一个或多个部署图。描述的是待开发软件系统中软件组件和硬件之间的物理关系。

2.活动图


3.UML 用关系把事物结合在一起,主要有下列四种关系:

(1)依赖(dependency)。依赖是两个事物之间的语义关系,其中一个事物发生变化会影响另一个事物的语义。

(2)关联(association)。关联描述一组对象之间连接的结构关系。

(3)泛化(generalization)。泛化是一般化和特殊化的关系,描述特殊元素的对象可替换一般元素的对象。

(4)实现(realization)。实现是类之间的语义关系,其中的一个类指定了由另一个类保证执行的契约。

4.模式分类

创建型模式包括工厂方法(Factory Method)、抽象工厂(Abstract Factory)、单例(Singleton)、构建(Builder)、原型(Prototype)模式 。

结构型模式包括适配器(Adapter)、合成(Composite)、装饰(Decorator)、代理(Proxy)、享元(Flyweight)、门面(Façade)、桥接(Bridge)模式。

行为型模式包括策略(Strategy)、模板方法(Template Method)、迭代器(Iterator)、责任链(Chain of Responsibility)、命令(Command)、备忘录(Memento)、状态(State)、访问者(Visitor)、解释器((Interpreter)、调停者(Mediator)、观察者(Observer)模式。

5.组合是一种很强的“拥有”关系,“部分”和“整体”的生命周期通常一样。整体对象完全支配其组成部分,包括它们的创建和销毁等;

聚合有时候“部分”对象可以在不同的“整体”对象之间共享,并且“部分”对象的生命周期也可以与“整体”对象不同,甚至“部分”对象可以脱离“整体”对象而单独存在。

展开阅读全文

页面更新:2024-04-27

标签:数据流   建模   视图   事物   接口   对象   状态   模式   关系   笔记   系统

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top