软考:面向对象


面向对象特征:

image-20211021094234776
  • 控制类:类与类之间的衔接、控制所用的类
  • 泛化:多个类之间存在一定的共性,我们把这些类的共性抽出来,建成一个父类,称之为泛化过程
  • image-20211021094543326
  • 消息:类之间进行交流传递的信息

设计原则

image-20211021125609823

  • 单一职责原则:一个类只管一个功能
  • 开放封闭原则:对类不要进行修改,而是要进行拓展
  • 李氏原则:子类可以替换父类
  • 依赖倒置原则:要针对接口编程,而不是实现编程
  • 接口隔离原则:使用多个专门的接口比使用单一的接口要好
  • 组合重用原则:要尽量使用组合,而不是继承关系达到重用目的(继承是高耦合)
  • Demeter原则(最少知识法则):一个对象应该尽量的对其他对象有少的了解

UML

image-20211021130419312

UML:分为构造块、规则、公共机制

构造块:事务、关系、图

事物:结构事物、行为事物、分组事物、注释事物

关系:依赖、关联、泛化、实现

图:

  • 动态图

    image-20211021130858413
  • 静态图

    扫描二维码关注公众号,回复: 13195241 查看本文章
    image-20211021130913893

设计模式

image-20211021131226691

  • 架构模式:从高层的视角来看软件的结构(宏观视角)例如CS模式等
  • 设计模式:关注的是局部的设计模式,主要关注软件系统的设计,与具体的实现语言无关
  • 惯用法: 是最底层的模式,关注软件系统的设计和时间,通过实现,某种程序设计语言来描述构件与构件之间的关系。每种编程语言都有它自己特定的模式,即语言的惯用法。例如引用-技术就是C++语言中的一种惯用法

设计模式分类

image-20211021145434878

创建型模式

创建型模式可以创建一个或者一系列相关的对象,而不需要指明它特有的类

image-20211021145911093

  • 构建器模式:有一些实例比较复杂,我们可以通过构造器模式来将一个复杂的类的表示与构造相分离,是的相同的构建过程能够得出不同的表示
  • 工厂方法模式:使用工厂方法再运行时,我们可以指定实例化哪一个对象,就导致了子类实例化的过程延迟了
  • 原型模式:(克隆模型)通过拷贝原有的原型对象来生成一个对象、为了节省资源、增大效率
  • 单例模式:保证一个类只有一个实例,访问一个类的实例保证只能访问一个对象

行为型模式

image-20211021150630573

  • 职责链:传递职责
  • 命令模式:日志记录,可撤销(命令不是参数、是一个封装好的对象)
  • 解释器模式:解释器根据文法来表示解释语言中的句子(虚拟机处理)
  • 迭代器模式:提供一种方法来顺序访问一个聚合对象中的各个元素,而不需要爆率改对象的内部表示
  • 中介者模式:用一个中介对象来封装一系列的对象交互,它时各个对象不需要显示的互相调用,从而达到低耦合,还可以独立改变对象之间的交互(对象之间互相修改可以直接向中间件来实现)

image-20211021151308826

  • 备忘录模式:可恢复、开辟控件存储对象的信息
  • 观察者模式:定义对象之间的一种已对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新
  • 状态模式:把各种状态的转换变成一个类,当通过这个类来定义对象的行为
  • 策略模式:定义一系列算法,设置灵活的方法切换时可以使用策略模式

数据流图

考察稳定!15分

基本概念

image-20211021153915639

在数据流图DFD中方没有联系,只有在ER图中才有联系用“菱形”表示

数据流图分层

image-20211021154423454

  • 外部进行了细化,不同的处理进行了细化,展示出了处理的细节

数据字典

关系各个符号表示

image-20211021233529814

数据流图的平衡原则

image-20211021233712577

  • 平衡维度有两个:

    父图和子图平衡、子图内平衡

    例题:

image-20211021234801429

  • 数据流平衡:0层数据流出现的数据流是否出现在1层的数据流中,这种数据流一定是系统和外部实体之间的数据流,因为在不同级别啥关系内部的数据流是不能投影在不同级别的数据流的

image-20211021235319718

  • 在检查数据流不平衡的时候,注意即数据流不能有遗漏,数据流流动的方向也不能错(一一匹配)

数据流图答题技巧

image-20211021235836975

数据流图例题:

image-20211022101656211

image-20211022101719518

image-20211022102218405
  • 不平衡的两种特殊错误:
    • 黑洞:有入没有出、image-20211022102652073
    • 奇迹:有出没有入image-20211022102741384

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xxW9ZbUs-1634910460993)(https://gitee.com/yong_ji/pic/raw/master/master/202110221030687.png)]

数据库设计

数据库设计过程:

image-20211022104341541

实体间联系类型

image-20211022104601952

例如:

image-20211022105157054

代表一个部门对应多个员工

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6HwhjbnY-1634910460994)(…/…/…/AppData/Roaming/Typora/typora-user-images/image-20211022110006513.png)]

image-20211022110024569

image-20211022105934388

image-20211022110912758

image-20211022110921579

image-20211022110933601

image-20211022110944726

image-20211022110957240

image-20211022111010458

image-20211022201941488

UML 建模

  • 难度相对高
image-20211022202013152

用例图、类图是重点

用例图

考点:扣掉一些用例图的名称和参与者的角色,让你填空

根据题目的提示写出两个用例之间的关系是包含关系还是扩展关系,OR泛化关系

image-20211022202221934

参与者:

image-20211022202358710

用例:

image-20211022202413531

箭头指向的用例代表参与者会使用这些用例

  • 包含关系:使用<>关键字来表示——>对箭头方向元素强依赖关系(必须的)
  • 扩展关系:使用<>关键字来表示扩展关系,就是对一些功能的扩展(可能有着方面的需求、非必须)

类图和对象图

多重度:

image-20211022203253555

image-20211022203210755

关系

image-20211022203433746

泛化关系:继承

聚合:对象聚合组成的新的对象

实现是对接口来的,泛化是对类来的

顺序图

image-20211022203640033

顺序图是动态图,表示对象之间的交互关系

考点:把某些消息扣掉,最后让你根据消息流填上相应流程的方法

活动图

image-20211022203858577

类似于程序流程图,粗线:分支

带有甬道的活动图,每一个不同的甬道代表不同的对象、明确哪一个活动是归属于谁的

image-20211022203948183

状态图

状态之间的变迁、考点:状态和状态变迁的条件

image-20211022205442442

通信图(协作图)

通信图是顺序图的另一种表示方法,二者基本一致(二者称为协作图)

注意顺序图会强调时间的顺序

image-20211022205743172

对象:图中的一系列节点、消息则通过图中的箭头来表示

例题:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TuxZEAgR-1634910461004)(…/…/…/AppData/Roaming/Typora/typora-user-images/image-20211022205949625.png)]

image-20211022210036488

image-20211022210048671

image-20211022210102561

注意选择最短图路径

猜你喜欢

转载自blog.csdn.net/learner_syj/article/details/120914004
今日推荐