软件设计师考试(二)——面向对象


title: 面向对象
date: 2021-01-27 23:24:29
tags: exam
description: 软考(二)

1.基本概念

  • 面向对象的四个核心概念:对象、类、继承、消息传递(对象之间进行通信的一种构造)

  • 面向对象技术开发主要步骤:面向对象分析、面向对象设计、面向对象程序设计、面向对象测试

  • 对象=属性(数据)+行为,特性:

    清晰的边界、良好定义的行为和可扩展性

  • 多态(同一操作作用于不同的对象,客户类无需知道所调用方法的特定子类的实现)

    通用的多态

    ​ 参数多态(泛型)

    ​ 包含多态(接口实现分离):同样的操作可以用于一个类型及其子类型

    特定的多态

    ​ 过载多态(重载)

    ​ 强制多态(强制类型转换、隐含类型转换)

2. UML

image-20210129183159698

​ (结构图、静态图) (行为图、动态图)

2.1图

(重点研究:

1.类图、对象图、包图、构件图

2.部署图:软件构建在硬件的某个结点

3.用例图:系统和外部的交互关系(展现用例、参与者及它们之间的关系,用于对一个系统的需求进行建模)

4.顺序图:按时间顺序、通信图:不强调时间顺序

5.状态图:状态的转移情况

6.活动图:与流程图类似

2.1.1分类
  • 静态结构图:类图、对象图、用例图
  • 交互图:顺序图、协作图、状态图、活动图
  • 实现图:构件图、部署图

image-20210129183432922

image-20210129183447574

2.1.1 基本考点
  • 用例图

    image-20210203171637820

  • 类图与对象图

    多重度

    image-20210203172245280

2.2关系

image-20210129183544250

泛化——父子继承

关联:聚合关系 (整体可以缺少部分)

​ 组合关系(整体不能缺少部分)

image-20210203172349228

  • 顺序图(时序图)

    image-20210203172538591

  • 活动图

    image-20210203174638854

    image-20210203174712831

  • 状态图

    image-20210203175208675

  • 通信图(协作图)

    image-20210203175449489

2.3事物
  1. 结构事物

    类+接口+协作+用例+活动类+组件+结点

  2. 行为事物

    交互+状态机

  3. 分组事物

  4. 注释事物

    UML模型的解释部分

3.设计模式

https://www.cnblogs.com/chenssy/p/3357683.html

3.1设计原则(设计模式优点:在需求变化的情况下,尽可能不更改原有的设计和实现)

image-20210131183316947

3.2设计模式的概念
  • 架构模式:软件设计中的高层决策,如C/S、B/S
  • 设计模式:软件系统的设计
  • 惯用法:最底层的模式,通过特定程序设计语言来实现
3.3设计模式的分类

image-20210131195144150

1.创建型模式(处理对象创建的设计模式,使用合适的方式创建对象)

image-20210131195218443

  • 构建者模式(使用于产品对象的内部结构比较复杂)

建造者模式

建造者模式将复杂产品的构建过程封装分解在不同的方法中,使得创建过程非常清晰,能够让我们更加精确的控制复杂产品对 象的创建过程

  • 原型模式

    主要应用与那些创建新对象的成本过大时。它的主要优点就是简化了新对象的创建过程,提高了效率,同时原型模式提供了简化的创建结构

    原型模式

    ​ 参与者:

    ​ Prototype:抽象原型类。声明克隆自身的接口。
    ​ ConcretePrototype:具体原型类。实现克隆的具体操作。
    ​ Client:客户类。让一个原型克隆自身,从而获得一个新的对象。

2.结构型模式(用于处理类或者对象的组合,从程序的结构上解决模块之间的耦合问题)

image-20210131201841628

  • 适配器模式(适配器作为中间件,将目标类和适配者解耦)

    (适配器模式既是类型结构模式,又是对象结构型模式)

    适配器模式

    参与者:

    ​ Target:目标抽象类 。

    ​ Adapter:适配器类 。通过在内部包装一个Adaptee,将源接口转成目标接口。

    ​ Adaptee:适配者类 。需要适配的类。

    ​ Client:客户类。

  • 桥接模式(将继承关系转化成关联关系,封装了变化,完成了解耦,减少了系统中类的数量,也减少了代码量)

    桥接模式

    参与者

    ​ Abstraction:抽象类。
    ​ RefinedAbstraction:扩充抽象类。
    ​ Implementor:实现类接口。
    ​ ConcreteImplementor:具体实现类 。

  • 组合模式(叶子对象和组合对象实现相同的接口。这就是组合模式能够将叶子节点和对象节点进行一致处理的原因)

    组合模式

    参与者:

    ​ Component :组合中的对象声明接口,在适当的情况下,实现所有类共有接口的默认行为。声明一个接口用于访问和管理Component子部件。
    ​ Leaf:叶子对象。叶子结点没有子结点。
    ​ Composite:容器对象,定义有枝节点行为,用来存储子部件,在Component接口中实现与子部件有关操作,如增加(add)和删除(remove)等。

  • 外观模式**(提供了一个统一的接口,用来访问子系统中的一群接口)**

    外观模式

    参与者:

    ​ Facade: 外观角色。知道哪些子系统类负责处理请求,将客户的请求代理给适合的子系统处理。

    ​ SubSystem:子系统角色。实现子系统功能,处理Facade对象发来的请求。

  • 享元模式(运行共享技术有效地支持大量细粒度对象的复用)

    享元模式

    参与者:

    ​ Flyweight: 抽象享元类。所有具体享元类的超类或者接口,通过这个接口,Flyweight可以接受并作用于外部专题。
    ​ ConcreteFlyweight: 具体享元类。指定内部状态,为内部状态增加存储空间。
    ​ UnsharedConcreteFlyweight: 非共享具体享元类。指出那些不需要共享的Flyweight子类。
    ​ FlyweightFactory: 享元工厂类。用来创建并管理Flyweight对象,它主要用来确保合理地共享Flyweight,当用户请求一个Flyweight时,FlyweightFactory就会提供一个已经创建的Flyweight对象或者新建一个(如果不存在)

  • 代理模式(代理模式就是给一个对象提供一个代理,并由代理对象控制对原对象的引用)

    代理模式

    参与者:

    ​ Subject: 抽象角色。声明真实对象和代理对象的共同接口。

    ​ Proxy: 代理角色。代理对象与真实对象实现相同的接口,所以它能够在任何时刻都能够代理真实对象。代理角色内部包含有对真实对象的引用,所以她可以操作真实对象,同时也可以附加其他的操作,相当于对真实对象进行封装。

    ​ RealSubject: 真实角色。它代表着真实对象,是我们最终要引用的对象。

3.行为型模式(描述类或者对象是怎样交互和怎样分配职责的)

image-20210131201910882

image-20210131201928165

  • 职责链模式

    职责链模式描述了请求如何沿着对象所组成的链来传递的。它将对象组成一条链,发送者将请求发给链的第一个接收者,并且沿着这条链传递,直到有一个对象来处理它或者直到最后也没有对象处理而留在链末尾端。在职责链模式中,使得每一个对象都有可能来处理请求,从而实现了请求的发送者和接收者之间的解耦。

  • 命令模式

    命令模式将请求封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。同时命令模式支持可撤销的操作。命令模式可以将请求的发送者和接收者之间实现完全的解耦,发送者和接收者之间没有直接的联系,发送者只需要知道如何发送请求命令即可,其余的可以一概不管,甚至命令是否成功都无需关心。

  • 解释器模式

    定义语言的文法,并且建立一个解释器来解释该语言中的句子。解释器模式描述了如何构成一个简单的语言解释器,主要应用在使用面向对象语言开发的编译器中。

  • 迭代器模式

    提供一种方法顺序访问一个聚合对象中的各个元素,而不是暴露其内部的表示。迭代器模式是将迭代元素的责任交给迭代器,而不是聚合对象,我们甚至在不需要知道该聚合对象的内部结构就可以实现该聚合对象的迭代。

  • 中介者模式(一个后端数据模型能够被多个前端用户界面连接)

    用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。在中介者模式中,中介对象用来封装对象之间的关系,各个对象可以不需要知道具体的信息通过中介者对象就可以实现相互通信。它减少了对象之间的互相关系,提供了系统可复用性,简化了系统的结构。

  • 备忘录模式

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

  • 观察者模式(中介者模式与观察者模式是相互竞争的关系)

    定义了对象之间的一对多依赖关系,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并且自动更新。在这里,发生改变的对象称之为观察目标,而被通知的对象称之为观察者。一个观察目标可以对应多个观察者,而且这些观察者之间没有相互联系,所以么可以根据需要增加和删除观察者,使得系统更易于扩展。

  • 状态模式

    允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。状态模式势必会增加系统中类或者对象的个数。

  • 策略模式

    定义了算法族,分别封装起来,让他们之前可以互相转换,此模式然该算法的变化独立于使用算法的客户。在策略模式中它将这些解决问题的方法定义成一个算法群,每一个方法都对应着一个具体的算法,这里的一个算法我就称之为一个策略。对于策略的选择还是要客户端来做。客户必须要清楚的知道每个算法之间的区别和在什么时候什么地方使用什么策略是最合适的,这样就增加客户端的负担。

  • 模板方法模式

    在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 模板方法模式就是基于继承的代码复用技术的。在模板方法模式中,我们可以将相同部分的代码放在父类中,而将不同的代码放入不同的子类中。

  • 访问者模式

    表示一个作用于某对象结构中的各元素的操作,它使我们可以在不改变各元素的类的前提下定义作用于这些元素的新操作。

4.领域模型

领域类模型中涉及描述类自身情况的属性与操作,还有描述类之间关系的关联,但不会有对象层次的内容

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值