第2章面向对象的基本概念
《软件工程》-重点考试知识点,简答

第一章1、软件概念:由计算机程序,数据,软件文档组成软件的特点:无法直接观察它的物理形态,只能通过观察他的是实际运行情况来了解他的功能特性和质量等;人们在分析设计开发测试过程以及软件开发项目的管理过程中渗透了大量的人类的脑力劳动;不存在磨损和老化但存在缺陷维护和技术更新的问题;开发运行依赖一定的计算机系统环境;具有可复用性软件的分类:按功能分:系统支撑应用软件;按服务对象:通用定制软件;按规模:大中小型软件;按工作方式:实时分时交互式批处理2、软件危机:是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件的开发与维护过程中出现一系列严重问题的现象。
主要表现:●开发人员开发的软件产品不能完全满足用户的需求;●软件产品的质量难以得到保障;●开发周期开发经费和维护费用很难被准确估计从而给项目的管理带来很多麻烦;●随着技术的更新,用户的扩大,已有的软件产品不能灵活地适应环境的改变;●软件文档不完备并且存在文档内容与软件产品不符的情况。
原因:①软件开发是一项复杂的工程,需要用科学的工程化思想来组织和指导软件开发的各个阶段②没有完善的质量保证体系③软件文档的重要性没有得到软件开发人员和用户的足够重视④从事软件开发的专业人员对这个产业认识不够充分缺乏经验⑤软件独有的特点也给软件的开发和维护带来困难3、软件工程是指应用计算机科学与技术,数学和管理学的原理,运用工程学理论方法和技术,研究和指导软件开发和演化的一门交叉学科。
软件工程的目标:●使软件开发的成本控制在预计的合理范围内;●使软件产品的各项功能和性能能够满足用户需求;●提高软件产品的可靠性;●使生产出来的软件产品易于移植维护升级和使用;●使软件产品的开发周期能够控制在预计的合理时间范围内。
软件工程学科内容:●软件工程原理过程方法模型管理度量环境应用。
软件工程的基本原则:●将软件的生命周期划分为多个阶段,对各个阶段实施严格的项目管理;●坚持阶段评审制度已确保软件产品的质量;●实施严格的产品控制以适应软件规格的变更;●采用现代程序设计技术;开发出来的产品应该能够清楚地被审查;●合理地安排软件开发小组人员并且开发小组的人员要少而精;●不断改进软件工程的实践。
面向对象数据模型基本概念

(1) RUS
(2) R∩S
2.1数据库基本概念
A a1
B b3
C c2
(3) R-S
2.1数据库基本概念
练习1: 集合A={12,10,15,6,7,4} 集合B={2,4,6,8,10,12} 求(1)AUB (2) A-B (3) A∩B
2.1数据库基本概念
练习2: 集合A={北京,上海,天津,云南,长春,深圳} 集合B={天津,甘肃,云南,上西} 求(1)AUB (2) A-B (3) A∩B
2.1数据库基本概念
• 关系模式( Relation mode ):关系的描述,用 关系名(属性名 1 ,属性名 2 , … ,属性名 n )来 表示。 • 用关系模式表示实体,实体名用关系名表示,实 体的属性对应关系的属性。 • 关系模型的主要特点: • ①关系中的每一数据项不可再分,也就是说不允 许表中还有表。 • ②每一列中的各个数据项具有相同的属性。
2.1数据库基本概念
选择运算:选择关系中满足一定条件的元组。 从关系中找出满足给定条件的那些元组称为选择。 其中的条件是以逻辑表达式给出的,值为真的元 组将被选取。 投影运算:选取关系中的某些列,并且将这些列 组成一个新的关系。从关系模型中挑选若干属性 组成新的关系称为投影。 联接运算:选择和投影运算都属于一目运算,它 们的操作对象只是一个关系。联接运算是二目运 算,需要两个关系作为操作对象。
2.1数据库基本概念
• 2.1.4关系数据库 • 1、关系模型的组成 • 关系完整性约束:关系数据模型的操作必须满足 关系的完整性约束条件。 • 它可以保证数据库中数据的正确性和一致性,关 系的完整性约束条件包括实体完整性,参照完整 性和用户定义完整性。 • 其中实体完整性和参照完整性是关系模型必须满 足的完整性约束条件,用户定义完整性是用户针 对某一具体应用领域提出的约束条件。
第二章 面向对象分析

一个可行的解决方案
重新根据问题的本质特性分解细节
忘掉:烧水壶、阀门、加热托盘、传感器等 专注本质问题: 怎样冲咖啡? 向咖啡粉上倒热水,然后将产生的液体收集到 某种容器内。 可设定为两个抽象类: HotWaterSource(烧水壶、阀门、传感器)加热水, 把热水送到咖啡粉,最后滴到ContainmentVessel (保温托盘、传感器演了这个角色)容器中,且保温。
7
其描述:
HotWater Source
CoffeeFlow 图 2 交叉线 Containment Vessel
这个关系是根据物理特性设定的,而不是根 据软件操作的控制设定的。
HotWater Source
start
Containment Vessel
图 3 开启热水水流
设计中的关联是在对象间发送消息的通道, 和物理对象的流程无关。
8
用户与系统是怎样交互的?
用类UserInterface(按钮、指示灯)来表示。
这三个类实例之间是怎样交互的? # 由哪个对象检测用户按下加热“Brew”按钮这一事件? UserInterface对象
# 加热按钮被按下时,这个对象应该做什么? 确认烧水壶满了,咖啡壶是空的,且放在保温托盘上。 UserInterface对象发送消息给: HotWaterSource ContainmentVessel,是否就绪。
9
User Interface
IsReady
HotWater Source
IsReady
Containment Vessel
图 4 加热按钮被按下,检查是否就绪 1a:IsReady User HotWater Interface Source 3a:Start
第1-2章考点【更新】(10)

七、宏 1. 宏的基本概念。 2. 宏的基本操作: (1) 创建宏:创建一个宏,创建宏组。
(2) 运行宏。
(3) 在宏中使用条件。 (4) 设置宏操作参数。 (5) 常用的宏操作。
八、模块
1. 模块的基本概念:
(1) 类模块。
(2) 标准模块。 (3) 将宏转换为模块。 2. 创建模块:
(1) 创建VBA 模块:在模块中加入过程,在模块中执行宏。
请重新输入。”
◦ >=10
and
<=60
14:设置"入校时间"字段的有效性规则和有效性文本,具体规则是:输
入日期必须在2000年1月1日之后(不包括2000年1月1日);有效性文本内 容为:"输入的日期有误,重新输入"。
◦ >#2000-1-1#
16:设置新表"tBranch"中的"房间号"字段的"有效性规则",保证输 入的数字在100到900之间(不包括100和900)。>100 and <900
模块
◦ ACCESS2010主界面:后台视图、功能区、导航窗格
涉及知识点
◦ ACCESS2010扩展名.accdb
◦ 创建数据库两种方法:创建空库、利用模板创建
◦ 打开和关闭数据库
◦ 数据表的组成:表结构、表内容(记录) ◦ 字段的命名规则 ◦ 字段数据的12种类型
<=255 65535 1.2.4.8 固定8 固定8 固定4 固定1 最大1GB
三者之间的关系
◦ 数据处理的三个阶段:人工管理阶段、文件系统阶段、数
三个阶段各自的特点、区别
◦ 数据库、数据库管理系统、数据库系统
C7+VisualStudio2017快速入门学习C#语言视频课程课件PPT模板

1-4运算符和分支结构介绍c#中常 见的运算符以及分支结构例如 if/while/switch等,这是可以开 始编写简单程序的基础
1-6方法和参数(2)介绍c# 中可变参数,可选参数和方法 的递归调用
05
2-5继承(1)介 绍c#是如何体现 继承的
06
2-6继承(2)介 绍c#是如何体现 继承的:方法的 重写,重载和隐 藏,抽象类的概 念和实例
第2章面向对象
2-7多态和接口(1)介绍面向对象的重要特性-多态,以及在c#中的体现-接 口 2-8多态和接口(2)通过一个案例介绍接口的使用以及引出策略模式 2-9猜数字(1)实现文曲星的经典游戏-猜数字 2-10猜数字(2)实现文曲星的经典游戏-猜数字 2-8多态和接口(2)通过一个案例介绍接口的使用以及引出策略模式 2-9猜数字(1)实现文曲星的经典游戏-猜数字 2-10猜数字(2)实现文曲星的经典游戏-猜数字
2
0
2
0
感谢聆听
02
第2章面向对象
01
2-1面向对象和 类(1)介绍面 向对象的基本概 念,并结合例子 使用c#实现
第2章面向对象
02
2-2面向对象和 类(2)介绍c# 中的类以及类可 以有的成员,包 括常量,字段, 属性和构造函数
03
2-3面向对象和 类(3)继续介 绍c#的类中可以 有的成员
04
2-4结构介绍c# 中的结构 (struct)
第1章基础知识
1-7数组和循环(1)介绍c#中的数组和循环结构while/dowhile 1-8数组和循环(2)冒泡排序介绍c#的foreach关键字,以及冒泡排序的概 念和实现 1-9综合练习(1)c#基础综合练习:杨辉三角形 1-10综合练习(2)c#基础综合练习:判断字符串是否为回文 1-8数组和循环(2)冒泡排序介绍C#的foreach关键字,以及冒泡排序的概 念和实现 1-9综合练习(1)C#基础综合练习:杨辉三角形 1-10综合练习(2)C#基础综合练习:判断字符串是否为回文
面向对象技术与UML

继承性举例
继承传递:大学生可以继承“人”和“学生”的特
征 父类 多重继承: 在职研究生既可以继承“学生”的特 征,又可以继承“教师”的特征 人
工人 学生 教师 农民
中学生 大学生 研究生 派生类
助教
讲师
具有继承关系的对象的特性
对象类间具有共享特征(包括数据和程序代
码的共享) 对象类间具有细微的差别或新增部分(包括 非共享的程序代码和数据) 对象类间具有层次结构。 继承所具有的作用有两个方面:
第二节 面向对象分析
本节要求了解面向对象分析的基本过程和基本原则 OOA: Object-oriented Analysis . 指利用面向对象的概念和方法构建软 件模型。 面向对象分析的基本过程 理解 表达
验证
对理解和表达进 行校验,以达到 理想效果。
需求
建立模型
在面向对象分析中,主要建立对象模型,动态模型和功能模型。 对象模型是最基本最重要的模型。
3) 可重用性好 有两种方法可以重复使用一个对象类:一种方法是创 建该类的实例,从而直接使用它;另一种方法是从它 派生出一个满足当前需要的新类。 4)较易开发大型软件产品 5)可维护性好
2.1.2 喷泉模型
“喷泉”这个词体现了面向对象软 件开发过程迭代和无缝的特性。 图中代表不同阶段的圆圈相互重 叠,这明确表示两个活动之间存 在交迭;而面向对象方法在概念 和表示方法上的一致性,保证了 在各项开发活动之间的无缝过渡, 事实上,用面向对象方法开发软 件时,在分析、设计和编码等项 开发活动之间并不存在明显的边 界。图中在一个阶段内的向下箭 头代表该阶段内的迭代(或求 精)。图中较小的圆圈代表维护, 圆圈较小象征着采用了面向对象 范型之后维护时间缩短了。
第2章 C++面向对象程序设计-2学时

类的定义一般地分为声明部分和实现部分。 类的定义一般地分为声明部分和实现部分。 声明部分
class <类名>//声明部分将告诉使用者“干什么” 声明部分将告诉使用者“ 声明部分将告诉使用者 干什么” { private: [<私有数据和函数>] public: [<公有数据和函数>] }; <各个成员函数的实现>//实现部分是告诉使用者“怎么干” 实现部分是告诉使用者“ 实现部分是告诉使用者 怎么干”
2.1.3 构造函数和析构函数
void main() { CDate day1(2002, 8); CDate day2(day1); }
运行结果为: 运行结果为:
8
2.1.3 构造函数和析构函数
5. 拷贝构造函数
实际上,如果类中没有声明拷贝构造函数,则编译器自动生成一 个默认的拷贝构造函数。例如: [例Ex_ConCopyDefault] 默认拷贝构造函数的使用 例 #include <iostream.h> class CDate public: CDate(int year = 2002, int month = 7, int day = 30) { cout<<"调用构造函数"<<endl; nYear = year; nMonth = month; nDay = day; } void output() { cout<<nYear<<"-"<<nMonth<<"-"<<nDay<<endl;} private: int nYear, nMonth, nDay; }; void main() { CDate day1(2002, 8); CDate day2(day1); // 调用默认的拷贝函数 day1.output(); day2.output(); }
第2章 面向对象技术与UML-郭

在结构化方法中,现实世界被映射为功能(函数)的集合。
结构化方法的特点: 结构化程序设计:程序 = 算法 + 数据结构 从算法的角度进行建模,大量精力都集中在控制流程和 算法的分解上(功能分解)。 缺点:需求变动、维护困难
2.1 面向对象技术概述
面向对象方 法的引入: 软件复杂性 的增长, 使软件开发 越来越困难。 面向对象的 方法按照人 类的自然思 维的方式, 面对客观世 界建立软件 模型。
对象的标识(名字)
每一个对象都有一个唯一的标识, 即使其状态有可 能与其它对象一样。
no1 no2 no3
对象的状态(数据属性)
一个对象的状态是它反映于现实世界的一系列 属性:
基本描述 载客人数 它与其它对象的关系 任一时刻的历史状态
飞机类型 飞机驾驶员 所属的航空公司
可能的状态: 停泊 班机 747 飞行 着陆
继承的描述
子类可以继承父类的全部属性与操作,并 可以添加或重新定义所继承的方法。 如果是重新定义,称为覆盖。
注意:覆盖和重载是不同的。
覆盖的例子
重载的例子
public class A{ String name; public String getValues(){ return “Name is”+name; } } public class B extends A{ String address; public String getValues(){ return “address is”+address; } }
6. 多态性
定义:同一操作作用于不同的对象,可以有 不同的解释,产生不同的执行结果。 例子: 动物叫
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
直线 virtual draw()
圆 virtual draw()
矩形 virtual draw()
2.4 多态(Polymorphism)
多态性的作用: 增强了操作的透明性,可理解性和可扩展性。 例如要再画三角形,则直接从图形抽象类继承。 在三角形类中定义虚函数画图。在其方法中编 写画三角形具体画法即可。 增强了软件的灵活性和重用性。
第2章 面向对象基本概念
戴立红
2.1对象(Object)和类(Class)
一、对象的定义 客观世界的一切事物皆可作为对象。对象是人 们要进行研究的任何事物,从简单的整数到复 杂的飞机等均可看作对象。任何目标系统都由 一组对象组成。 对象不仅能表示具体的事物,还能表示抽象的 规则、计划或事件。 所有的事物只要在概念上能够独立存在并且有 清晰的边界,皆可作为对象。
交通工具
飞机
汽车
轮船
水陆两栖车
2.4 多态(Polymorphism)
不同的对象收到同一消息可产生完全不同的结果,这一现 象叫做多态。 用户发送一个通用的消息,而实现的细节由接收对象自行 决定。 达到单一接口,多种功能的目的。 多态性是一种在单一界面下隐藏很多不同“实现”的能力。
图形 virtual draw()=0
2.1对象(Object)和类(Class)
四、对象的特征 对象的状态:每个对象具有状态,一个对象用数据值 来描述它的状态。 对象的行为:对象还有操作,用于改变对象的状态。 对象及其操作是对象的行为。 例如:有一个教师,姓名李伟,年龄25,单位计算机 系,职称讲师,工资300。在这里,李四,25、计算机 系,讲师,工资300是这个教师的特征,为对象的状态。 调工资和评职称是这个教师具有的操作。 对象的操作可以改变对象的状态。例如,李伟进行评 职称操作后,由原来的讲师变成了副教授,则李伟的 职称改变了,对象状态发生了变化。
2.2 封装( Encapsulation)
对象是对客观事物的一种抽象,它由描述自身状态 的属性和对这些属性的操作(方法)组成。所以 对象是属性与操作封装体。 封装是软件开发方法的重要原则,有两个涵义: 1、把对象的全部属性和全部服务结合在一起,形 成一个不可分割的独立单位(对象)。 2、尽可能隐蔽对象的内部细节(信息隐蔽)。
对象、实体和类之间的关系如图所示。
2.1对象(Object)和类(Class)
计算机世界
对象
映射
现实世界 实体
实 例 化
抽 象 计算机逻 辑的实现 类
抽 象
概念世界 抽象数据类
类和对象之间的关系实例
抽象
类:讲师
属性:姓名 年龄 单位 职称 工资
实例
抽象
对象:李伟
状态:李伟 25 计算机系 讲师 300
2.1对象(Object)和类(Class)
三、类的特征 类的属性:类的所有对象具有的属性。描述了静态特 征。用数据结构来描述类的属性。 类的操作:类的所有对象具有的功能,能够提供的服 务。用操作名和实现该操作的方法来描述。 方法是操作的具体实现。 例如:张三、李四、王五都是教师。抽象出教师类。 类的属性:姓名,年龄,单位,职称,工资。 类的操作:调工资和评职称。 方法:具体按照一定的公式调工资,按照一定的条件 和步骤来评职称。
对象把数据和处理数据的方法封装成一个单元
2.3 继承(Inheritance)
在面向对象方法中,若一个类描述的是一组对象的共性信息,另一
个类描述的是一组对象的特性信息,则可以把前一个类定义为父类, 后一个类定义为子类。父类C++中称作基类,子类称作派生类。继 承指子类自动继承父类中定义的属性和服务。 面向对象方法中的类的继承性,完全和现实世界中人们描述事物的 方法相同。例如,在现实世界中,我们要描述猫、狗、狼、虎,由 于猫、狗、狼、虎都属于哺乳类动物,所以我们可以先定义哺乳类 动物。我们把哺乳类动物所共有的特征和习性定义在哺乳类动物中, 然后再分别定义猫、狗、狼、虎类动物各自特有的特征和习性。由 一般到特殊的分类方法是人们总结出的高效率地分类认识世界的方 法。 另外继承表示了类之间的“是一种”(is a kind of)关系。例如狗 是一种哺乳动物。 广义地说,继承是指能够直接获得已有的性质和特征,而不必重复 定义它们。在面向对象的软件技术中,继承是子类自动地共享基类 中定义的数据和方法的机制。
2.3 继承(Inheritance)
继承性的特点: 继承性是父类和子类之 间共享数据和方法的机 制。 继承性具有传递性。 继承性包括单继承和多 重继承。
交通工具
飞机
汽车
轮船
水陆两栖车
2.3 继承(Inheritance)
继承性的优点 : 使软件系统具有开放性。 可扩展。 更好地进行抽象与分类。 抽象类构成系统框架, 随着认识深入和具体化, 派生出更具体的派生类。 增强代码的重用率。当 继承另外一个类的行为 时,提供这些行为的代 码将不需要重新编写。
2.1对象(Object)和类(Class)
五、类和对象之间的关系 类可以理解为一个模板,通过它来生成具体的对象, 即类实例。类和对象之间的关系:类是对象的抽象; 对象是类的实例。 对象是现实世界中某个具体的物理实体或概念在计算 机逻辑中的映射和体现。
在现实世界中:是客观世界中的一个实体。 面向对象程序中:表达成计算机可理解、可操纵、具有 一定属性和行为的对象。 在计算机世界中: 是一个可标识的存储区域。
传统方法和面向对象方法的比较
输入 输出 过程1 过程2 过程3
数据实体
传统方法:系统 是过程的集合, 过程与数据实体 交互,过程接受 输入并产生输出。
面向对象方法: 系统是交互对象 的集合,对象与 人或其它对象交 互,对象发送与 响应消息。
传统方法:数据和象 的数据 处理数据的方法
2.1对象(Object)和类(Class)
二、类的定义 根据人类思维的习惯,为了便于对目标系统的 深入理解,将具有相同属性和操作的对象归为 一类(Class)。 在面向对象方法中,类是对具有相同属性和相 同服务的一组相似对象的抽象,或者说,类所 包含的属性和服务描述了一组对象的共有的属 性和服务。
2.2 封装( Encapsulation)
操作1 界 面 操作2 操作3
状态 S
操作1,2,3的实现 对象的形象表示
信息隐藏主要有两个方面: • 一方面,对象的属性对外不可见,只能通过对外提供 的接口即操作来获得对象所提供的服务。 • 另一方面,对象操作的具体实现方法对外不可见,对外 只提供接口(操作)。接口和实现分离。
2.4 多态(Polymorphism)
多态的四种类型: 参数多态性是指对象或函数等能以一致的形式用于不同 的类型。例:C++中的类模板和函数模板。 包含多态性是同样的操作可以用于一种类型及其子类型。 例:C++中主要通过虚函数来实现。利用抽象类定义操 作,而用子类定义处理该操作的方法。 重载多态性是指一个函数名可以具有多个不同的功能, 这种不同的功能通过该函数名的多个重载定义体确定。 例:C++中的函数重载和运算符重载。 强制多态性是指通过语义操作把一个对象或变量类型加 以变换。这种类型变换可以有显式的和隐式的两种。例: C++语言中的强制类型转换。
2.5 消息(Message)与方法(Method)
一、消息的定义 消息:是要求某个对象执行某个功能操作的规格说明。 消息内容:通常包含接收方及请求接收方完成的功能 信息。 发送方:发出消息,请求接收方响应。 接收方:收到消息后,经过解释,激活方法,予以响 应。 二、消息的组成部分 接收消息的对象; 消息选择符(也称为消息名); 零个或多个变元(参数)。 例:前面的例子中的消息:李四.调工资()。
数据 结构
数据值
操作:调工资 评职称 受 聘
方法名 (参数)
抽象
行为:调工资 评职称 受 聘
执行的操作
方法:调工资 [计算公式] 评职称 [步骤、条件]
方法体
李伟.调工资(……)
抽象(Abstract)
抽象:指对一个过程或者一件制品的某些细节的有目
的的隐藏,以便把其他方面、细节或者结构表达得更 加清楚。 依据我们所研究的问题领域进行抽象,得到系统所需 要的类。和所研究的问题域无关的类要去掉。 另外,对于类的属性类似,和问题域相关的属性抽象 出来,其他属性去掉。比如教师类,眼睛大小,肤色 与研究的问题域无关,没必要抽象出来。
2.5 消息(Message)与方法(Method)
三、方法 当某一个对象收到消息后,要启动相应的操作来 对消息做出应答,而这些操作对外的表现形式 被称为方法。 方法往往会改变对象自身的状态或是发送出消息 给其它对象。 例:前面的例子中的方法:调工资(){公式}