初级程序员软考重点8 面向对象及数据库

在这里插入图片描述

一、面向对象的基本概念

1. 基本概念

  • 对象:程序系统中运行的实体;
  • 类:类是象的抽象,对象是类的具体化;
  • 继承:类之间的传递关系,父子之间共享数据和方法的机制;分为单重继承和多重继承;
  • 重置/重写/覆盖:一种 动态绑定机制,使子类继承父类的同时,转换父类的实现;
  • 消息:对象之间的通信构造;
  • 消息传递:接收到信息的对象经过解释予以响应。
  • 多态:收到同样的消息,不同对象可以产生不同的结果,有过载多态、通用多态、特定多态 ;

2. 面向对象的基本过程

  1. 面向对象分析:OOA
  2. 面向对象设计:OOD
  3. 面向对象程序开发:OOP
  4. 面向对象测试:OOT

二、UML

1. UML基本概念

UML是统一建模语言。

(1)UML 三要素:

  • 基本构造块
  • 放置规则
  • 语言公共机制

(2)UML构造块:

  • 事物:对模型中最有代表性的成分的抽象,如类、接口、构件;
  • 关系:事物结合在一起,如泛化、聚集;
  • 图:聚集相关的事物

2. 事务

(1)结构事物

类、接口、协作、用例、主动类、组件、节点

(2)行为事物

UML模型中的动态部分,描述了跨越时间和空间的行为,如交互(Interaction)、状态机(State machine)和活动(Activity)。

(3)分组事务

UML的组织部分,如包(Package)。

(4)注释事务

UML模型中的解释部分。

3. UML关系

  • 依赖关系
  • 泛化关系(继承)
  • 关联关系
  • 聚合关系:整合与部分生命周期不同。
  • 组合关系:整体与部分生命周期相同。
  • 实现关系:接口与类之间的关系。

4. UML图

  • 类图:静态视图,展现一组对象、接口、协作及其之间的关系;
  • 对象图:静态视图,一组对象和对象间的关系;
  • 用例图:静态视图,用例、参与者及它们之间的关系;
  • 组件图:静态视图,一组构件之间的组织和依赖,专注于系统的静态实现视图;
  • 部署图:静态视图,运行处理结点以及构件的配置给出体系结构的静态实施视图;
  • 序列图:动态视图,以时间为序描述对象间的交互活动;
  • 状态图:动态视图,展现了一个状态机,由状态、转换、事件和活动组成;
  • 活动图:动态视图,一个活动到另一个活动的流程;
  • 交互图:动态视图,用例活动的对象如何交互;
  • 定时图:动态视图,对象在改变状态时时间约束条件;
  • 包图:包管理
  • 组合结构图:分解类、组件或用例的内部结构
  • 通信图:强调收发消息的对象之间的组织结构

三、设计模式

开发人员面对一般问题的解决方案

1. 创建型

  • 工厂方法(factory method)
  • 抽象工厂(abstract factory)模式
  • 原型模式(prototype)
  • 单例(singleton)模式:保证一个类只有一个实例
  • 构建器模式(builder)

2. 行为型模式

  • 职责链(chain of responsibility)模式
  • 命令(command)模式
  • 解释器(interpreter)模式
  • 迭代器(iterator)模式
  • 中介者(mediator)模式
  • 备忘录(memento)模式
  • 观察者(observer)模式
  • 状态(state)模式
  • 策略(strategy)模式
  • 模板方法(template method)模式
  • 访问者(visitor)模式

3. 结构型模式

  • 适配器(adapter)模式
  • 桥接(bridge)模式
  • 组合(composite)模式
  • 装饰(decorator)模式
  • 外观(facade)模式
  • 享元(flyweight)模式
  • 代理(proxy)模式

四、数据库

1. 数据库系统的基本概念

  • 数据:描述事物的符号记录,可以是文字、图形、图像、声音和语言等;
  • 数据库:数据集合
  • 数据库管理系统DBMS:由数据库、硬件、软件和人员组成;
  • 大数据:无法用拥有的工具提取、存储、搜索、共享和处理的海量的、复杂的数据集合,特点有:大量化(Volume)、快速化(Velocity)、多样化(Variety)、价值密度低(Value)

2. 三层模式两层映射

(1)三层模式:

  • 外模式
  • 概念模式
  • 内模式
    在这里插入图片描述

(2)两层映射:

外模式/模式映射

定义在外模式描述中,保证逻辑独立性。

模式/内模式映射

定义在模式描述中,把描述全局逻辑结构的模式与描述物理结构的内模式联系起来,保证物理独立性。

3. 数据库的设计过程

在这里插入图片描述

4. 数据模型

(1)概念数据模型/信息模型

  • E-R模型(实体联系模型)

(2)基本数据模型

  • 层次模型(Hierarchical Model):树型结构
  • 网状模型(Network Model)
  • 关系模型(Relational Model):用二维表结构描述
  • 面向对象模型(Object Oriented Model):采用面向对象的方法来设计数据库

(3)数据模型的三要素

数据结构

所研究的对象类型的集体,是对象静态特性的描述。

数据操作

对数据库中对象所允许操作的集体,对系统动态特性的描述。

数据的约束条件

一组完整性的集合,包含:

  • 实体完整性约束:主键不能取空值
  • 参照完整性约束(引用完整性):实体之间的联系,如外键;
  • 用户自定义完整性约束:针对某一具体的关系数据库的约束条件,由环境决定。

5. 数据流图

(1)概念

一种结构化的设计工具,以图形的方式描述数据在系统中流动和处理的过程

在这里插入图片描述

  • 外部实体:系统中数据的外部来源和去处;
  • 加工:对数据的逻辑处理功能;
  • 数据存储:数据保存到的文件或表;
  • 数据流:加工功能的输入数据或输出数据;

(2)其它需求分析工具

  • 数据字典:定义数据流图中各个成分的具体含义;
  • 判定表:描述加工逻辑,对于不同条件的不同处理方式;
  • 判定树:与判定表相同,也能用于表示问题逻辑中的条件和动作的对应关系。判定树用内部节点表示问题中的条件,用叶子节点表示活动,用根节点表示问题的名字。

6. 概念模型(E-R模型)

在这里插入图片描述

(1)实体

实体集是相同属性的实体集合。每个实体有一组特性(属性)来表示。

(2)属性

  • 简单属性和复合属性
  • 单值属性和多值属性
  • Null属性
  • 派生属性

(3)联系

  • 两个不同实体集之间的联系
  • 两个以上不同实体集之间的联系
  • 同一实体内的二元联系

7. 规范化模型-主键

  • 主键是唯一的,用来保持数据完整性;
  • 复合键:将多个列作为一个索引键,一般用于复合索引;
  • 外键:用于与另一张表建立关联。能确定另一张表记录的字段,保持数据的一致性,用于和其他表建立联系;
  • 索引:用来加快查询速度

8. E-R图转关系模式

  • 一个实体型转换为一个关系模式
  • 联系转关系模式:
    • 1:1 联系: 可将联系合并至任何一端的实体关系模式中;
    • 1:n 联系: 可将联系合并至n端实体关系模式中;
    • m:n 联系: 联系必须单独转换成关系模式。
  • 三个以上实体间的一个多元联系

9. 关系运算

(1)列、行概念

  • 列:一列包含相同的数据
  • 行:一组相关的数据

(2)并、交、差(结构相同)

  • 并:行数据合并;
  • 交:数据相同的部分;
  • 差:S1-S2,从S1中减去在S2中存在的行;
  • 笛卡尔积:列是S1与S2合并 , 行是S1每一行与S2每一行合并;
  • 投影:选择所需要的列;
  • 选择:选择需要的行;
  • 自然连接:S1与S2取相同的列(记C)合并,然后取C值相同的行(数据库左连接操作);

10. SQL 语言

(1)创建表

CREATETABLE <表名> (<列名><数据类型>[列级完整性约束条件]
             (<列名><数据类型>[列级完整性约束条件] ……
             [, 表级完整性约束条件]);

约束性条件:

  • NULL , NOT NULL
  • UNIQUE
  • PRIMARY KEY(列名)
  • FOREIGN KEY(列名1) REFERNCES 表名2 (列名2)

(2)修改

ALTER TABLE <表名>
[ADD <新列名><数据类型><列级完整性约束条件>]
[DROP<列名/完整性约束条件>]
[MODIFY/CHANGE<列名><数据类型>]
[CHANGE<列名><新列名><数据类型>]

(3)删除表

DROP TABLE <表名>

(4)数据插入

INSERT INTO <表名> [(<属性列>,
    [,<属性列>……)]
    VALUES(<常量1>[,<常量2>]……);

(5)修改数据

UPDATE <表名>
SET <列名>=<表达式>,[<列名>=<表达式>]……
[WHERE <条件>];

(6) 删除数据

DELETE FROM <表名>
[WHERE <条件>];

(7)创建索引

  • CREATE
  • ALTER
  • DROP
  • UNIQUE
  • CLUSTERED
  • NONCLUSTERED
  • ASC
  • DESC
CREATE UNIQUE INDEX 索引名 ON 表名(字段名)

(8)查询语句

SELECT [ALL|DISTINCT] <目标表达式>[<目标表达式>]……
FROM <表名>[<表名>]……
[WHERE <条件表达式>]
[GROUP BY <列名1> [HAVING<条件表达式>]]
[ORDER BY <列名2> [ASC|DESC]……];

(9)查询语句——连接、嵌套查询

SELECT Sno, Sname 
FROM S,SC
WHERE S.Sno=SC.Sno AND SC.Cno='C1';

(10)分组查询GROUP BY

SELECT Sno, AVG(Grade) 
FROM SC
GROUP By Sno
HAVING AVG(Grade)>=60
ORDER BY S.Sno DESC;

(11)别名

AS子句,如:

SELECT Sname as Sname1 FROM S

(12) LIKE 模糊查询

SELECT Sname , Sno 
FROM S
WHERE SName LIKE '_明'        --下划线表示匹配单个字符, %表示匹配多个字符

11. 数据库的控制

1. 并发控制

多用户共享的系统中,多用户同时对同一数据进行操作。

并发产生的问题:
  • 丢失更新
  • 不可重复读数据
  • 读“脏”数据
解决方案——封锁协议
  • S封锁:共享锁、读锁,加S锁后可以再加S锁,不能加X锁;
  • X封锁:排他锁、写锁,加X锁后不能加其它任何锁;
  • 两段锁协议
死锁
  • 预防
  • 死锁的解除
事物的性质
  • 原子性:要么全操作、要么全不操作;
  • 一致性
  • 隔离性:事务间相互隔离;
  • 持久性

2. 故障恢复

数据库中的4类故障:

  • 内部故障
  • 系统故障
  • 介质故障
  • 计算机病毒

3. 完整性

数据库正确性和相容性,是防止合法用户使用数据库时向数据库加入不合语义的数据;

4. 安全性

保护数据库不受恶意访问,即防止不合法的使用所千万的数据泄漏、更改、破坏。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
面向对象程序设计是一种基于对象概念的程序设计方法,是计算机编程中的一种重要范型,它将数据和操作数据的方法组合成对象,以封装的方式来进行编程,从而使得程序具有更好的可重用性、可维护性和可扩展性。 软考程序员面向对象程序设计主要包括以下内容: 1. 类和对象的概念:类是对一类事物的抽象描述,对象则是类的实例化。开发者需要掌握如何定义类和创建对象,如何使用类的属性和方法等基本概念。 2. 继承和多态:继承是指一个类可以从另一个类中继承属性和方法,多态是指不同的对象可以对相同的消息做出不同的响应。开发者需要掌握如何使用继承和多态,以实现代码的复用和扩展。 3. 抽象类和接口:抽象类是不能被实例化的类,它可以定义一些抽象方法和属性,子类必须实现这些抽象方法才能被实例化。接口是一种规范,它定义了一些方法和属性的签名,子类必须实现这些方法和属性才能被实例化。开发者需要掌握如何使用抽象类和接口,以实现代码的灵活性和可扩展性。 4. 封装和信息隐藏:封装是指将数据和操作数据的方法封装在一起,以保护数据的完整性和安全性。信息隐藏是指将数据和操作数据的方法隐藏在类的内部,只暴露必要的接口给外部使用。开发者需要掌握如何使用封装和信息隐藏,以保证代码的可靠性和安全性。 5. 设计模式:设计模式是一种经过实践验证的面向对象设计思想,它提供了一些通用的解决方案,帮助开发者更好地解决问题。开发者需要掌握一些常见的设计模式,如单例模式、工厂模式、观察者模式等,以提高代码的可维护性和可扩展性。 总之,软考程序员面向对象程序设计是一个涉及广泛且复杂的领域,需要开发者具备扎实的理论基础和实践经验。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程圈子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值