软考——软件设计师大题(应用技术)总结
Posted 中二病没有蛀牙
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软考——软件设计师大题(应用技术)总结相关的知识,希望对你有一定的参考价值。
第一题
知识点
四要素:外部实体(读者),数据流(数据沿箭头方向流动,图书,借书证),加工(借阅),数据存储(数据库文件)
结构化设计方法是一种面向数据流的设计方法,与结构化分析方法衔接。在需求分析阶段,结构化分析方法产生了数据流图,而在设计阶段,结构化设计方法将数据流映射为软件系统的模块结构。
数据流图中从系统的输入数据流到系统的输出数据流的一连串变换形成了一条信息流,其中的信息流一般情况下包括变换流型和事务已流型,不同类型的数据流到程序模块的映射方法不同,一个软件系统往往不仅仅有一种数据流类型
考题
结构化语言(2020下)
eg:2020年第4题采用结构化语言对缺陷检测的加工逻辑进行描述。
缺陷检测:根据检测模型和检测质量标准对图像采集所收到的产品检测信息中所有图像进行检测或所有图像检测合格。若一个产品出现一张图像检测不合格,就表示该产品不合格,对不合格产品,其检测结果包括,产品型号和不合格类型。
如下:
缺陷检测{
WHILE(接收图像)
DO{
检测所收到的所有图像;
IF(出现一张图像检测不合格)
THEN{
返回产品不合格;
不合格产品检测结果=产品星号+不合格类型;
}
ENDIF
} ENDDO
}
第二题数据库
数据库设计步骤:
需求分析:对现实世界要处理的对象进行详细调查,了解现行系统的概况,确定新系统功能的过程中,确定系统边界,收集支持系统目标的基础数据及其处理方法。(需求说明文档,数据字典,数据流程图)
概念设计:对用户要求描述的现实世界(可能是一个工厂、一个商场或者一个学校等),通过对其中诸处的分类、聚集和概括,建立抽象的概念数据模型。
主要采用E-R模型进行设计
逻辑设计:对关系模式进行进一步的规范化处理,作部分关系模式的处理,分解,合并或增加冗余属性,提高存储效率和处理效率。
将E-R图转换成表
物理设计:根据特定数据库管理系统所提供的多种存储结构和存取方法等依赖于具体计算机结构的各项物理设计措施,对具体的应用任务选定最合适的物理存储结构(包括文件类型、索引结构和数据的存放次序与位逻辑等)、存取方法和存取路径等。这一步设计的结果就是所谓“物理数据库”。
数据库实施
数据库的运行和维护
基本知识点
主码:从候选码中选择一个。
主属性:包含在任何一个候选码中的属性。
非主属性:不包含在任何码中的属性。
主键
唯一标识一条记录,不能有重复的,不允许为空
用来保证数据完整性
主键只能有一个
外键
表的外键是另一表的主键, 外键可以有重复的, 可以是空值
用来和其他表建立联系用的
一个表可以有多个外键
范式
规范化过程是为了解决数据冗余、删除异常、插入异常、更新异常等问题。
(1)第一范式(1NF):在关系模式R中,当且仅当所有域只包含原子值,即每个属性都是不可再分的数据项,则称关系模式R是第一范式。
(2)第二范式(2NF):当且仅当关系模式R是第一范式(1NF),且每一个非主属性完全依赖候选键(没有不完全依赖)时,则称关系模式R是第二范式
(3)第三范式(3NF):当且仅当关系模式R是第二范式(2NF),且R中没有非主属性传递依赖于候选键时,则称关系模式R是第三范式。
(4)BC范式(BCNF):设R是一个关系模式,F是它的依赖集,R属于BCNF当且仅当其F中每个依赖的决定因素必定包含R的某个候选码。
考题
完整性约束关系(2019上半年)
(1)实体完整性(必须)
若属性A是基本关系R的主属性,则A不能取空值。
(2)参照完整性(必须)
若属性F是基本关系R的外码,它与基本关系S的主码K相对应,则对于R中每个元组在F上的值要么为空值,要么等于S中某个元组的主码值。
(3)用户定义的完整性(可选)
比如唯一性、能否取空值等。
例:
答:
(a)所属公司代码 (b) 投资方编号
完整性约束关系:
员工-外键:所属公司代码
项目-外键:投资方编号,创业公司代码,孵化公司员工工号
项目-主键:(项目编号,创业公司代码)组合
信息发生变化
(2019上)
答:
(1)不需要添加实体
(2)关系模式修改:项目增加属性投资额,投资时间。
(2018下)
第三题
知识点
来自于这位大佬的博客:https://www.cnblogs.com/jiangds/p/6596595.html
基本关系
各种关系的强弱顺序: 泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖
泛化
【泛化关系】:是一种继承关系,表示一般与特殊的关系,它指定了子类如何继承父类的所有特征和行为。例如:老虎是动物的一种,即有老虎的特性也有动物的共性。
实现
【实现关系】:是一种类与接口的关系,表示类是接口所有特征和行为的实现。
关联
【关联关系】:是一种拥有的关系,它使一个类知道另一个类的属性和方法;如:老师与学生,丈夫与妻子关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。
【代码体现】:成员变量
聚合
【聚合关系】:是整体与部分的关系,且部分可以离开整体而单独存在。如车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。
聚合关系是关联关系的一种,是强的关联关系;关联和聚合在语法上无法区分,必须考察具体的逻辑关系。
【代码体现】:成员变量
组合
【组合关系】:是整体与部分的关系,但部分不能离开整体而单独存在。如公司和部门是整体和部分的关系,没有公司就不存在部门。
组合关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。
【代码体现】:成员变量
【箭头及指向】:带实心菱形的实线,菱形指向整体
依赖
【依赖关系】:是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖.
【代码表现】:局部变量、方法的参数或者对静态方法的调用
【箭头及指向】:带箭头的虚线,指向被使用者
用例图
用例图的基本元素有4种:用例、参与者、关系和系统边界。
关系:关联、泛化、包含、扩展。
包含:用来把一个较复杂用例所表示的功能分解成较小的步骤;基础用例可以看到包含用例,并依赖于包含用例的执行结果。但是二者不能访问对方的属性。
【箭头指向】:指向分解出来的功能用例(即被包含的用例)。
表示方法:虚线箭头< < include >>字样。
扩展:指用例功能的延伸,把新行为插入到已有用例,相当于为基础用例提供一个附加功能。
【箭头指向】:指向基础用例(即被扩展的用例)
表示方法:虚线箭头<< extend>>字样。
考题
用例描述(2019上半年)
答:
U3(购买书籍)用例描述:
参与者:顾客
主要事件流:
① 顾客登录系统
② 顾客浏览书籍信息;
③ 顾客检查某种书籍的库存量是否为0;
④ 顾客选择所学购买的书籍及购买数量;
⑤ 系统检查库存量是否足够;
⑥ 系统显示验证界面;
⑦ 顾客验证;
⑧ 系统自动生成订单;
备选事件流:
若库存量为0则无法查询到书籍信息,退回到2;
若购买数量超过库存量,则提示库存不足,并退回到4;
若验证错误,则提示验证错误,并退回到6;
若顾客需要可以选择打印订单。
第五题
知识点
常考点:实现接口,定义方法,继承抽象,定义抽象,调用方法
注意:Java Object 类是所有类的父类,也就是说 Java 的所有类都继承了 Object,子类可以使用 Object 的所有方法。
基本概念
对象:属性(数据)+方法(操作)+对象ID
类(实体类/控制类/边界类)
抽象类:只为继承而出现,不定义具体的内容,只规定该有哪些东西
一般抽象类中只放置抽象方法,只规定了返回类型和参数
1.关键字:abstract
2.抽象类可以包含抽象方法和普通方法
3.abstract关键字可以定义方法为抽象方法,抽象方法没有函数体,花括号也得去掉,直接加上分号,如:public abstract void speak();)
4.抽象类无法被实例化,抽象类主要做为一个基类,让别的类继承。
5.sealed和abstract关键字不能同时出现
6.如果一个子类继承自抽象类,那么子类中必须实现所有的抽象方法
7.如果子类中没有实现父类的抽象方法,那么该子类必须是抽象类
8.如果一个类里面包含抽象方法,那么该类一定是抽象类
有抽象方法的,一定是抽象类
抽象类中,不一定有抽象方法
//定义抽象类
public abstract class DongWu
{
public void Run()
{
}
public abstract void Eat();
}
//做一个人类来继承抽象类
public class Ren:DongWu
{
public override void Eat()
{
Console.WriteLine("吃熟食");
}
}
接口:一种特殊的类,他只有方法定义没有实现
关键字:interface
要让一个类遵循某组特地的接口需要使用implements关键字
不用写public因为本身就是public,不用写abstract接口里面所有的都是抽象的
凡是继承接口的非抽象类,接口中定义的方法都要实现
对于遵循某个接口的抽象类,可以不实现该接口中的抽象方法。
//定义接口
interface IUSB
{
//开始读取USB
void Start();
//关闭USB
void Stop();
}
//做一个鼠标类来实现USB接口
class ShuBiao:IUSB
{
public void Start()
{
Console.WriteLine("鼠标启动了");
}
public void Stop()
{
Console.WriteLine("鼠标停止了");
}
}
多态:
不同对象收到同样的消息产生不同的结果。多态实质上是将子类的指针对象或者引用对象传递给父类指针对象后,通过这个父类指针对象调用的函数(此函数在父类中声明为虚函数,且在各个子类中重写这个函数),不是父类中定义的,而是传递进来的子类对象中重写的函数。
参数多态:应用广泛、最纯的多态。
包含多态:同样的操作可用于一个类型及其子类型。包含多态一般需要进行运行时的类型检查。包含多态在许多语言中都存在,最常见的例子就是子类型化,即一个类型是另外一个类型的子类型。
强制多态:编译程序通过语义操作,把操作对象的类型强行加以变换,以符合函数或操作符的要求。
过载多态:同一个名(操作符﹑函数名)在不同的上下文中有不同的类型。 目前软设考查比较多的是过载多态。
重载:一个类可以有多个同名而参数类型不同的方法
(它们的调用地址在编译期就绑定了,即我们常说的静态多态(静态联编)也就是静态绑定或早绑定。)
继承与泛化:复用机制。面向对象技术中,继承是父类和子类之间共享数据和方法的机制。这是类之间的一种关系,在定义和实现一个类的时候,可以在一个已经存在的类的基础上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。可以存在多重继承的概念,但不同的程序设计语言可以有自己的规定。
消息和消息通信:消息是异步通信的
设计模式
创建型模式:
结构型模式:
行为型模式
考题
观察者模式(2019下)
接口引用指向子类对象
这种写法其实Java多态的表现形式(一个接口类型的引用变量来引用实现接口的类的实例,当这个引用调用方法时,它会根据实际引用的类的实例来判断具体调用哪个方法)
需要换成其它的实现类,你只要将new的实现类对象换成你想要的就行了, 其它地方的代码根本不需要改动。
注意:
没有在接口定义的方法(实现类增加的方法)是不可以被访问到的。
在接口的实现类中该实现方法的类型和参数必须与接口中所定义的精确匹配。
(2019上)策略模式 第四空
以上是关于软考——软件设计师大题(应用技术)总结的主要内容,如果未能解决你的问题,请参考以下文章