面向对象技术

面向对象基础:面向对象基本概念、面向对象分析、面向对象设计(设计模式的概念都要掌握)、面向对象测试

一定要掌握各个图的特点

UML:事务、关系、图

设计模式:创建型设计模式、结构型设计模式、行为型设计模式

面向对象基本概念

  • 对象:基本的运行实体,为类的实例,封装了数据和行为的整体,如学生、汽车等真实存在的实体。对象具有清晰的边界、良好定义的行为和可扩展性。
  • 消息:对象之间进行通信的一种构造称为消息。
  • :是对象的抽象,定义了一组大体相似的对象结构,定义了数据和行为。包括实体类(用于对必须存储的信息和相关行为建模的类,是需要长久保存且一直存在的类)、边界类(系统内部与系统外部的业务主角之间进行交互建模的类)、控制类(用于对一个或几个用例所特有的控制行为进行建模,在用例执行过程中被动出现的特定行为的类)。在领域类模型中会涉及描述类自身情况的属性与操作,还会有描述类与类之间的关联,但不会有对象层次的内容。
  • 继承:父类和子类之间共享数据和方法的机制。是类之间的一种关系。
  • 多态:不同的对象收到同一个消息时产生完全不同的反应。包括参数多态(不同类型参数多种结构类型)、包含多态(父子类型关系)、过载多态(类似于重载,一个名字不同含义)、强制多态(强制类型转换)四种类型。多态由继承机制支持。
  • 覆盖子类在原有父类接口的基础上,用适合于自己要求的实现去置换父类中的相应实现。即在子类中重定义一个与父类同名同参的方法。

  • 函数重载:与覆盖要区分开,函数重载与子类父类无关,且函数是同名不同参数

  • 封装:一种信息隐蔽技术,其目的是使对象的使用者和生产者分离,也就是使其他开发人员无需了解所要使用的软件组件内部的工作机制,只需知道如何使用组件。

  • 静态类型是指一个对象的类型在编译时就确定:

  • 动态类型指对象类型在运行时才能确定。

  • 静态绑定(静态分配)是基于静态类型的,在程序执行前方法已经被绑定;

  • 动态绑定是基于动态类型的,运行时根据变量实际引用的对象类型决定调用哪个方法,动态绑定支持多态

面向对象分析设计 

  • 面向对象分析:是为了确定问题域,理解问题。
  • 包含五个活动:认定对象(按自然存在的实体确定对象)、组织对象(分析对象关系,抽象成类)、对象间的相互作用(描述各对象在应用系统中的关系)、确定对象的操作(操作,如创建增加删除等)、定义对象的内部信息(属性)。
  • 面向对象设计:是设计分析模型和实现相应源代码,在目标代码环境中这种源代码可被执行。设计问题域的解决方案
  • 面向对象程序设计:用面向对象程序设计语言实现设计方案。详见下午软件设计
  • 面向对象测试:与普通测试步骤并无不同。可分为四个层次算法层(测试类中定义的每个方法,类似单元测试)、类层(测试同一个类中所有方法与属性的相互作用,特有的模块测试)、模板层(测试一组协同工作的类之间的相互作用,类似集成测试)、系统层(类似系统测试)

例:在面向对象技术中,(多态)说明一个对象具有多种形态,(继承)定义超类与子类之间的关系。 (多态是不同对象在接受同一个消息会产生不同的反应。

例:面向对象(程序设计选择合适的面向对象程序设计语言,将程序组织为相互协作的对象集合,每个对象表示某个类的实例,类通过继承等关系进行组织。

面向对象设计不涉及具体语言,只从系统逻辑结构层面设计解决方案

例:在面向对象的系统中,对象是运行的实体,其组成部分不包括(消息);一个类定义了一组大体相似的对象,这些对象共享(属性与行为

对象和消息是两个独立的概念,对象是类的实体,因此包括行为、属性,对象运行时必然有状态

 UML

  •  UML 是统一建模语言,和程序设计语言并无关系
  •  UML 三个要素: UML 的基本构造块、支配这些构造块如何放置在一起的规则和运用与整个语言的一些公共机制。
  •  UML 的基本构造块包括:事物(对模型中最具有代表性的成分的抽象)、关系(把事务结合在一起)、图(聚集了相关的事物)。
  •  UML 中有四种事物:结构事物、行为事物、分组事物、注释事物。

 结构事物:模型的静态部分,如类、接口、用例、构件等;如上图示例。

事物 

行为事物:模型的动态部分,如交互、活动、状态机

分组事物:模型的组成部分,如包;

注释事物:模型的解释部分,依附于一个元素或一组元素之上对其进行约束或解释的简单符号

 关系(考的比较多是关联里边的组合和聚合

  • 依赖:一个事物的语义依赖于另一个事物的语义的变化而变化
  • 关联:是一种结构关系,描述了一组,链是对象之间的连接。分为组合和聚合,都是部分和整体的关系,其中组合事物之间关系更强。两个类之间的关联,实际上是两个类所扮演角色的关联,因此,两个类之间可以有多个由不同角色标识的关联。
  • 泛化:一般/特殊的关系,子类和父类之间的关系
  • 实现:一个类元指定了另一个类元保证执行的契约。

每一个图都要掌握,基本都会考

类图(很重要

 类图:静态图,为系统的静态设计视图展现一组对象、接口、协作和它们之间的关系。UML类图如下:

 

 对象图(考的不多

对象图:静态图,展现某一时刻一组对象及它们之间的关系,为类图的某一快照。在没有类图的前提下,对象图就是静态设计图。如下:(类图中是抽象的属性和方法,这里是把实例也就是值直接给出来的

 

 用例图(也很重要

用例图:静态图,展现了一组用例、参与者以及它们之间的关系。

用例图中的参与者是人、硬件或其他系统可以扮演的角色;用例是参与者完成的一系列操作。

用例之间的关系:包含、扩展、泛化

 要用这个用例(Enroll Student University),则必须先有这个用例(Enroll in Seminar),包含关系

扩展关系的意思就是可做可不做。

序列图

 序列图:即顺序图,动态图,是场景的图形化表示,描述了以时间顺序组织的对象之间的交互活动。

有同步消息(进行阻塞调用,调用者中止执行,等待控制权返回,需要等待返回消息,用实心三角箭头表示),异步消息(发出消息后继续执行,不引起调用者阻塞,也不等待返回消息,由空心箭头表示同步和异步都是从左往右、返回消息(由从右到左的虚线箭头表示)三种。如图所示。

 通信图

通信图:动态图,即协作图,是顺序图的另一种表示方法,也是由对象和消息组成的图,只不过不强调时间顺序(跟序列图的区别,只强调事件之间的通信,而且也没有固定的画法规则,和顺序图统称为交互图。如下:

 消息定义的格式:前缀(序列号) 守卫条件(条件子句) 序列表达式([intrger|name][recurrence]) 返回值:=说明

状态图

状态图:动态图,展现了一个状态机,描述单个对象在多个用例中的行为,包括简单状态和组合状态。(执行不同的操作,产生不同的状态

转换可以通过事件触发器触发,事件触发后相应的监护条件会进行检查。状态图中转换和状态是两个独立的概念,如下:图中方框代表状态,箭头上的代表触发事件,实心圆点为起点和终点。 

活动图(考的也比较多

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

活动的分岔和汇合线是一条水平粗线。(并发分岔、并发汇合

并发分岔、并发汇合、监护表达式(分支之间的表达式)、分支、流等名词及含义。

每个分岔的分支数代表了可同时运行的线程数。活动图中能够并行执行的是一个分岔粗线下的分枝上的活动。

构件图(了解即可)

构件图:静态图,为系统静态实现视图 (类图是静态设计视图),展现了一组构件之间的组织和依赖。如下:

 部署图

部署图:静态图,为系统静态部署视图,部署图物理模块的节点分布。它与构件图相关,通常一个结点包含一个或多个构件。其依赖关系类似于包依赖,因此部署组件之间的依赖是单向的类似包含关系,如下:(常考考点:是物理模块相关的

一定要掌握各个图的特点

  • 例:UML中接口可用于()

A、提供构造型(stereotype)名称为《interface》的具体类来表示接口这个概念,而并非具体类

B、Java和C++程序设计中,而C#程序设计中不支持(UML是统一建模语言,和程序设计语言并无关系

C、定义可以在多个类中重用的可执行逻辑

D、声明对象类所需要的服务 (而服务具体如何执行,有实现它的具体类完成

  • 例:以下关于UML状态图(描述单个对象在多个用例中的行为的叙述中,不正确的是(1)。对下图的描述,正确的是(2)

1、

A、用于描述一个对象在多个用例中的行为

B、用于某些具有多个状态的对象而不是系统中大多数或全部对象

C、用于描述多个对象之间的交互

D、可以用于用户

2、

A、ON是一个并发状态

B、因此状态图中没有终点(final)状态,所以此图是无效的

C、play stop和new是动作(是事件,状态图只有状态和触发事件

D、ON是超状态(组合状态

 解析:状态图是动态图,用于描述一个对象在多个用例中的行为状态,是针对单个对象的多个状态,不是多个对象之间的关系;在状态图中,方框代表的是形态,箭头上的是触发事件,实心圆点代表的是起点和终点,状态图可以没有终点,但是不能没有起点。图中ON状态包括多个状态,因此是超状态的。

  • 例:(2014年上半年)如下所示的UML序列图中,(3)表示返回消息(从右到左的消息),Account类必须实现的方法有(4)

3、A、tansID B、balance C、withdraw D、deposit

4、A、start0 B、checkBalance()和Withdraw() C、deposit() D、checkBalance()、withdraw()和deposit()

图中第二个、第三个时间线都是Account类方法,因此包括245三个方法,3虽然也在Account类范围中,但不是方法

设计模式 

每一个设计模式描述了一个在我们周围不断重复发生的问题,以及该问题事务解决方案的核心。

设计模式的四个基本要素:模式名称、问题(应该在何时使用模式)、解决方案(设计的内容)、效果(模式应用的效果)

分为三类:1)创建型模式主要是处理创建对象 2)结构型模式主要是处理类和对象的组合 3)行为模式主要是描述类或者对象的交互行为 (常考

重点:哪一类包含哪些模式,以及这些设计模式的具体定义)(名称的中英文都要记忆

创建型设计模式定义记忆关键字

Abstract Factory

抽象工厂模式

提供一个接口,可以创建一系列相关或相互依赖的对象,而无需指定它们具体的类抽象接口

Builder

构建器模式

将一个复杂类的表示与其构造相分离,使得相同的构建过程能够得出不同的表示类和构造分离

Factory Method

工厂方法模式

定义一个创建对象的接口,但由子类决定需要实例化哪一个类,使得子类实例化过程推迟子类决定实例化

Prototype

原型模式

用原型实例指定创建对象的类型,并且通过拷贝这个原型来创建新的对象原型实例,拷贝

Singleton

单例模式

保证一个类只有一个实例,并提供一个访问它的全局访问点唯一实例
结构型设计模式定义记忆关键字

Adapter

适配器模式

将一个类的接口转换成用户希望得到的另一种接口,它使原本不相容的接口得以协同工作转换,兼容接口

Bridge

桥接模式

将类的抽象部分和它的实现部分分离开来,使他们可以独立的变化抽象和实现分离

Composite

组合模式

将对象组合成树型结构以表示“整体-部分”的层次结构,使得用户对单个对象和组合对象的使用具有一致性整体-部分,树型结构

Decorator

装饰模式

动态地给一个对象添加一些额外的职责,它提供了用子类扩展功能的一个灵活的替代,比派生一个子类更加灵活附加职责

Facade

外观模式

定义一个高层接口,为子系统中的一组接口提供一个一致的外观,从而简化了该子系统的使用对外统一接口

Flyweight

享元模式

提供支持大量细粒度对象共享的有效方法细粒度、共享

Proxy

代理模式

为其他对象提供一种代理以控制这个对象的访问代理控制
行为型设计模式定义记忆关键字

Chain of Responsibility

职责链模式

通过多个对象处理请求的机会,减少请求的发送者和接受者之间的耦合。将接收对象链接起来,在链中传递请求,直到有一个对象处理这个请求。传递请求、职责、链接

Command

命令模式

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

Interpreter

解释器模式

给定一种语言,定义它的文法表示,并定义一个解释器,该解释器用来根据文法表示来解释语言中的句子。文法、解释

Iterator

迭代器模式

提供一种方法来顺序访问一个聚合对象中的各个元素而不需要暴露该对象的内部表示顺序访问

Mediator

中介者模式

用一个中介对象来封装一系列的对象交互。它使各对象不需要显示地相互调用,从而达到低耦合,还可以独立地改变对象之间的交互。不直接引用

Memento

备忘录模式

在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,从而可以在以后将该对象恢复到原先保存的状态保存、恢复

Observer

观察者模式

定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新(例如,订阅的新闻通知、自动更新

State

状态模式

允许一个对象在其内部状态改变时改变它的行为状态变成类

Strategy

策略模式

定义一系列算法,把它们一个个封装起来,并且使他们之间可互相替换,从而让算法可以独立于使用它的用户而变化算法替换

Template Method

模板方法模式

定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重新定义算法的某些特定步骤

Visitor

访问者模式

表示一个作用于某对象结构中的各元素的操作,使得在不改变各元素的类的前提下定义作用于这些元素的新操作。新操作
  •  例:下图所示为(1)设计模式,适用于(2)

1、A、适配器(Adapter) B、责任链(Chain of Responsibility)C、外观(Facade)D、桥接(Bridge)

2、

A、有多个对象可以处理一个请求,在运行时刻自动确定由哪个对象处理

B、想使用一个已经存在的类,而其接口不符合要求(转换、兼容接口:Adapter

C、类的抽象和其实现之间不希望有一个固定的绑定方式(抽象跟实现分离:bridge

D、需要为一个复杂子系统提供一个简单接口

解析:

方框内编译子系统的类十分复杂,但提供了一个提供一个统一的接口Compiler供使用,隐藏了内部复杂的结构,因此是外观模式,适用于为一个复杂子系统提供一个简单接口。

  •  例:(2014年下半年)下图所示(1)设计模式,适用于(2)

1、A抽象工厂(Abstract Factory) B、生成器(Builder)(直接看图可知)C、工厂方法(Factory Method)D、原型(Prototype)

2、

A、一个系统要由多个产品系列的一个来配置时

B、当一个类希望由它的子类来指定它所创建的对象时

C、当创建复杂对象的算法应该独立于该对象的组成部分及其装配方式时

D、当一个系统应该独立于它的产品创建、构成和表示时

例:(2015年下半年)(装饰器)设计模式能够动态地给一个对象添加一些额外的职责而无需修改此对象结构,(工厂方法)设计模式定义一个用于创建对象的接口,让子类决定实例化哪一个类;欲使一个后端数据模型能够被多个前端用户界面连接,采用(中介者)模式最合适(那么后端数据不能被直接引用,需要通过中介引用)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值