1、软件工程导论全册配套软件工程导论全册配套复习重点课件复习重点课件考试题型一、单项选择题(10个小题,共20分)二、填空题(10个小题,共20分)三、简答题(4个小题,共20分)五、综合题综合题 (4个小题,共40分)软件工程课程的内容软件工程课程的内容软件工程学概述软件工程学概述结构化方法学结构化方法学(生命周期方法学)(生命周期方法学)面向对象方法学面向对象方法学软件项目管理软件项目管理可行性研究可行性研究需求分析需求分析形式化说明技术形式化说明技术总体设计总体设计详细设计详细设计实现实现维护维护面向对象方法学引论面向对象方法学引论面向对象分析面向对象分析面向对象设计面向对象设计面向对象实现
2、面向对象实现第1章 软件工程学概述 重点: 1.产生软件危机的原因 2.消除软件危机的途径 3.软件工程的基本原理 4.软件生命周期的三个时期和八个阶段 5.软件过程模型:瀑布模型、快速原型模型、增量模型、螺旋模型 复习要点: 1.软件生命周期的3个时期、8个阶段 2.软件工程方法学:传统方法学和面向对象方法学 3.软件过程模型:瀑布模型、快速原型模型、增量模型、螺旋模型第2章 可行性研究 重点 1.画系统流程图的方法 2.画数据流图的方法 3.数据字典的用途 4.数据字典的实现 复习要点 1.可行性研究主要研究系统的哪些可行性? 2.掌握数据流图的画法 3.数据流图与程序流程图的区别第3章
3、需求分析 重点 1.需求分析的任务 2.获取需求的方法 3.分析建模 4.实体-联系图 复习要点 1.需求分析的基本任务是分析系统做什么,确定系统的逻辑功能。 2.需求分析阶段建立3种模型:数据模型、功能模型、行为模型。 3.掌握实体-联系图(E-R图)的画法。第5章 总体设计 重点 1. 设计原理:模块化 、模块独立 2. 面向数据流的设计方法 复习要点 1. 模块独立的两个定性标准度量:内聚和耦合。 2. 面向数据流的设计方法第6章 详细设计 重点 1.结构程序设计 2.过程设计的工具:程序流程图 、N-S图 、判定表 复习要点 1.程序的基本控制结构有哪些? 2.程序流程图和N-S图(盒
4、图)的基本符号 3.会画程序流程图、N-S图和判定表、判定树第7章 实现 重点 1.编码风格 2.测试步骤 3.Alpha和Beta测试 4.白盒测试:逻辑覆盖 5.黑盒测试:等价划分 6.调试途径 复习要点 1.测试的目的、任务及分类(黑盒测试和白盒测试) 2. Alpha和Beta测试 3.掌握逻辑覆盖法 4.掌握等价划分法和边界值分析法第8章 维护 重点 1.软件维护的定义 2.软件维护的类型 3.软件维护的过程 4.决定软件可维护性的因素 复习要点 1.软件维护:改正性维护、适应性维护、完善性维护、预防性维护 2.决定软件可维护性的因素:可理解性、可测试性、可修改性、可移植性、可重用性
5、第9章 面向对象方法学引论 重点 1.面向对象方法学与结构化方法学的区别 2.面向对象的基本概念:对象与类 3.面向对象建模的三种模型:对象模型、动态模型、功能模型 4.用例图 5.三种模型之间的关系 复习要点 1.面向对象方法学与结构化方法学的区别 2.面向对象方法学及意义 3.面向对象建模的三种模型及三种模型之间的关系 4.面向对象方法学的优点第10章 面向对象分析 重点 1.建立对象模型:确定类与对象 、确定关联 2.建立动态模型:编写脚本 、画事件跟踪图 、画状态图 3.建立功能模型:画基本系统模型 、画功能级数据流图 复习要点 1.建立对象模型、动态模型、功能模型 2.动态模型和功能
6、模型中包含了对象模型中的操作(即服务或方法) 3.面向对象分析的首要工作是建立问题域的对象模型。第11章 面向对象设计 重点 1.启发规则 2.设计数据管理子系统 3.确定类中应用的服务 4.设计实现服务的方法 复习要点 1.面向对象设计准则有哪些? 2.数据存储管理模式有哪些? 3.需要综合考虑对象模型、动态模型和功能模型,才能正确确定类中应用的服务。 4.设计实现服务的方法第12章 面向对象实现 重点 1.提高可重用性的方法 2.测试类的方法 复习要点 1.面向对象实现包括哪两项工作? 2.提高可重用性的方法有哪些? 3.测试类的方法有哪些?第第1 1章章 软件工程学概述软件工程学概述1
7、1、什么是软件危机?、什么是软件危机?P1P12 2、软件危机产生的原因有哪些?、软件危机产生的原因有哪些?P3P33 3、什么是软件工程?、什么是软件工程?P5P54 4、软件工程方法学包含哪些要素?、软件工程方法学包含哪些要素?P9P95 5、在软件过程中有哪些模型?他们各自的特点、在软件过程中有哪些模型?他们各自的特点是哪些?是哪些?P15P15P22P22第第2 2章章 可行性研究可行性研究1 1、可行性研究的目的是什么?P252、应从哪些方面研究可行性?P253、如何画系统流程图?P27P304、如何画数据流图?P30P375、了解数据字典及成本效益分析。数据流图数据流图(Data
8、Flow DiagramData Flow Diagram,DFDDFD)是描述系统中数据流)是描述系统中数据流程的图形工具,它标识了一个系统的逻辑输入和逻辑输出,以程的图形工具,它标识了一个系统的逻辑输入和逻辑输出,以及把逻辑输入转换为逻辑输出所需的加工处理。及把逻辑输入转换为逻辑输出所需的加工处理。2.42.4数据流图数据流图数据存储数据存储数据源点数据源点或终点或终点处处 理理加工名数据流数据流数据流名文件名实体名箭箭 头头圆或椭圆圆或椭圆单或双杠单或双杠矩形框矩形框还有一些辅助的图例还有一些辅助的图例: :一、数据流图的图符一、数据流图的图符四种基本图形符号:四种基本图形符号:TAB*
9、CTAB*CTAB+CTAB+CTABC+TABC+* 与与 + 或或互斥+2.42.4数据流图数据流图举例:举例:储户储户1记录存款信息打印存款信息存款单存款信息存款存单3计算利息4打印利息清单存款信息利息值利息清单D1存款信息存款信息2第第3 3章章 需求分析需求分析1 1、需求分析的基本任务是什么?、需求分析的基本任务是什么?P46-P48P46-P482 2、分析建模、分析建模 2.1什么是模型?什么是模型? 模型:就是为了理解事物而对事物做出的一种模型:就是为了理解事物而对事物做出的一种抽象,是对事物的一种无歧义的书面描述。通常,模型由一组图形抽象,是对事物的一种无歧义的书面描述。通
10、常,模型由一组图形符号和组织这些符号的规则组成。符号和组织这些符号的规则组成。 2.22.2数据模型(数据模型(E-RE-R)、)、 功能模型(功能模型(2.42.4节数据流图)、节数据流图)、 行为模型行为模型(状态转换图是行为模型的基础)(状态转换图是行为模型的基础)3 3、要从哪些方面验证软件需求?、要从哪些方面验证软件需求?P60P60第第4 4章章 形式化说明技术形式化说明技术软件工软件工程的使程的使用方法用方法非形式化:用自然语言描述需求规格说明非形式化:用自然语言描述需求规格说明半形式化:用数据流图或实体半形式化:用数据流图或实体联系图联系图建立模型建立模型形式化:描述系统性质的
11、基于数学的技术形式化:描述系统性质的基于数学的技术1、有穷状态机P67P722、Petri网技术P72P751、在设计过程中,总体设计一般有哪两个主要阶段组成?P812、什么模块化?模块独立性包含哪些内容?度量准则是什么?P85P893、启发规则有哪些?P90P924、描绘软件结构的图形工具P92-P945、面向数据流的设计方法P95P1025.25.2设计原理设计原理u 模块是程序对象有名字的集合例如,过程、函数、子程序、宏等,是构成软件系统结构的基本元素。u 模块化就是将系统划分为若干个模块,每个模块完成一个子功能模块化的目的是将系统“分而治之”,模块化能够降低问题的复杂性,使软件结构清晰
12、,易阅读、易理解,易于测试和调试,因而也有助于提高软件的可靠性。5.2.55.2.5模块独立模块独立 “模块模块”,又称,又称“构件构件”,一般指用一个名字可调用的一段程,一般指用一个名字可调用的一段程序。它一般具有如下三个基本属性:序。它一般具有如下三个基本属性:功能功能 即指该模块实现什么功能,做什么事情。必须注意:模块即指该模块实现什么功能,做什么事情。必须注意:模块功能,应是该模块本身的功能加上它所调用的所有子模块的功能。功能,应是该模块本身的功能加上它所调用的所有子模块的功能。逻辑逻辑 即描述模块内部怎么做。即描述模块内部怎么做。状态状态 即该模块使用时的环境和条件。即该模块使用时的
13、环境和条件。所谓模块的独立性,是指软件系统中每个模块只涉及软件要所谓模块的独立性,是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他模块的接口是简单的。求的具体的子功能,而和软件系统中其他模块的接口是简单的。即功能专一,模块之间无过多的相互作用的模块。即功能专一,模块之间无过多的相互作用的模块。这种类型的模块可以并行开发,模块独立性越强,开发越容这种类型的模块可以并行开发,模块独立性越强,开发越容易。独立性强的模块,还能减少错误的影响,使模块容易组合、易。独立性强的模块,还能减少错误的影响,使模块容易组合、修改及测试。修改及测试。5.2.5 5.2.5 模块独立性模块独立性
14、模块独立性的度量标准是两个定性准则:模块独立性的度量标准是两个定性准则: 用于描述模块之间联系的紧密程度。用于描述模块之间联系的紧密程度。 用于描述模块内部联系的紧密程度。用于描述模块内部联系的紧密程度。 模块独立性比较强的模块应该是具有高内聚性和的低耦模块独立性比较强的模块应该是具有高内聚性和的低耦合度。合度。 变换中心变换输入输出图图5.8 变换型数据流图的基本模型变换型数据流图的基本模型 图 事务型数据流图的基本模型事务中心输入流接收路径加工路径l变换分析设计:把具有变换流特点的数据流图按预先确定的模变换分析设计:把具有变换流特点的数据流图按预先确定的模式映射成软件结构式映射成软件结构。
15、不具有显著的事务特点不具有显著的事务特点。l虽然在任何情况下都可以使用变换分析方法设计软件结构,但虽然在任何情况下都可以使用变换分析方法设计软件结构,但是在是在数据流具有明显的事务特点数据流具有明显的事务特点时,也就是有一个明显的时,也就是有一个明显的“发发射中心射中心”(事务中心事务中心)时,还是以采用事务分析方法为宜。时,还是以采用事务分析方法为宜。l两者的主要差别仅在于由数据流图到软件结构的映射方法不同。两者的主要差别仅在于由数据流图到软件结构的映射方法不同。第第6 6章章 详细设计详细设计1、结构程序设计中有哪几种基本控制结构?P1082、了解人机界面的设计。3、掌握过程设计的工具(程
16、序流程图、盒图、PAD图,判定树)P114P1194、面向数据结构的设计方法(Jackson图)5、程序复杂度的定量度量(McCabe)6.16.1结构程序设计结构程序设计图图6.1 3种基本的控制结构种基本的控制结构6.16.1结构程序设计结构程序设计图图6.2 其他常用的控制结构其他常用的控制结构6.3.1 6.3.1 程序流程图程序流程图 程序流程图是最早出现且使用较为广泛的算法表达工具之一,能够有效地描述问题求解过程中的程序逻辑结构。程序流程图中经常使用的基本符号如图6.3所示。图图6.3 程序流程图中使用的符号程序流程图中使用的符号uNS图又称为盒图,它是为了保证结构化程序设计而由N
17、assi和Shneiderman共同提出的一种图形工具。u在NS图中,所有的程序结构均使用矩形框表示,它可以清晰地表达结构中的嵌套及模块的层次关系。uNS图中,基本控制结构的表示符号如图6.4所示。6.3.2 N-S6.3.2 N-S图图6.3.2 N-S6.3.2 N-S图图图图6.4 盒图的基本符号盒图的基本符号图图6.5 PAD6.5 PAD中基本符号中基本符号(a)(a)顺序结构;顺序结构;(b) (b) 分支结构;分支结构;(c) (c) 多分支多分支CASECASE结构;结构;(d) (d) 当型循环;当型循环;(e)(e);直到型循环;直到型循环;(f) (f) 语句标号;(语句
18、标号;(g g)定义)定义6.3.3 PAD6.3.3 PAD图图6.3.3 PAD6.3.3 PAD图图图图6.6 使用使用PAD图提供的定义功能来逐步求精的例子图提供的定义功能来逐步求精的例子6.4 6.4 面向数据结构的设计方法面向数据结构的设计方法 Jackson方法和方法和Warnier方法是最著名的两个面方法是最著名的两个面向数据结构的设计方法向数据结构的设计方法uJackson方法是由英国的M.A.Jackson在1975年首先提出的,他同时还提出了与这种方法配套使用的、用于描述系统数据结构和程序结构的图形工具,被称为Jackson图。uJackson方法从目标系统的输入、输出数
19、据结构入手,导出程序框架结构,再补充其他细节,就可得到完整的程序结构图。u这一方法对输入、输出数据结构明确的中、小型系统特别有效,如商业应用中的文件、表格处理。该方法也可与其他方法结合,用于模块的详细设计。6.4 6.4 面向数据结构的设计方法面向数据结构的设计方法图6.8 三种基本结构在Jackson图中的表示符号(a) 顺序结构;(b) 选择结构;(c);循环结构6.4.1 Jackson6.4.1 Jackson图图(a)(c)(b)6.4 6.4 面向数据结构的设计方法面向数据结构的设计方法图图6.9 改进的改进的Jackson图图6.5 6.5 程序复杂程度的定量度量程序复杂程度的定
20、量度量 定量度量程序复杂程度的方法很有价值:把程序的定量度量程序复杂程度的方法很有价值:把程序的复杂程度复杂程度乘以乘以适当常数适当常数即可即可估算出软件中错误的数量估算出软件中错误的数量以以及及软件开发需要用的工作量软件开发需要用的工作量,定量度量的结果可以用来,定量度量的结果可以用来比较两个不同的设计比较两个不同的设计或或两个不同算法的优劣两个不同算法的优劣;程序的定;程序的定量的复杂程度可以作为模块规模的精确限度。量的复杂程度可以作为模块规模的精确限度。6.5 6.5 程序复杂程度的定量度量程序复杂程度的定量度量u McCabe方法根据程序控制流的复杂程度定量度量程方法根据程序控制流的复
21、杂程度定量度量程序的复杂程度,这样度量出的结果称为程序的环形复杂序的复杂程度,这样度量出的结果称为程序的环形复杂度。度。u 为了突出表示程序的控制流,人们通常使用流图为了突出表示程序的控制流,人们通常使用流图(也称也称为程序图为程序图)。所谓流图实质上是。所谓流图实质上是“退化了的退化了的”程序流程图,程序流程图,它仅仅描绘程序的控制流程,完全不表现对数据的具体它仅仅描绘程序的控制流程,完全不表现对数据的具体操作以及分支或循环的具体条件。操作以及分支或循环的具体条件。6.5 6.5 程序复杂程度的定量度量程序复杂程度的定量度量图图6.16 把程序流程图影射成流图把程序流程图影射成流图6.5.1
22、 6.5.1 计算环形复杂度的方法计算环形复杂度的方法第第7 7章章 实现实现1、编码2、测试技术P139P1693、调试的途径有哪些?P1684、软件可靠性和可用性的基本概念P169u 编码:把软件设计结果翻译成用某种程序语言书写的程序。u 测试:软件测试的目的是在软件投入生产性运行前,尽可能多的发现软件中的错误。 实现实现编码和测试编码和测试7.27.2软件测试基础软件测试基础u 软件测试:为发现程序中的错误而执行程序的过程。软件测试:为发现程序中的错误而执行程序的过程。u 软件测试的准则(尽早和不断的测试、彻底测试的不软件测试的准则(尽早和不断的测试、彻底测试的不可能、软件测试是有风险的
23、行为、并非所有的软件错误可能、软件测试是有风险的行为、并非所有的软件错误都能恢复、反向思维逻辑、由小到大的测试范围、避免都能恢复、反向思维逻辑、由小到大的测试范围、避免检查自己的代码、追溯至用户需求)检查自己的代码、追溯至用户需求)u 测试方法(黑盒测试和白盒测试)测试方法(黑盒测试和白盒测试)u 测试步骤(模块测试、子系统测试、系统测试、验收测试步骤(模块测试、子系统测试、系统测试、验收测试、平行运行)测试、平行运行)模块模块模块接口测试模块接口测试局部数据结构测试局部数据结构测试重要路径测试重要路径测试错误处理测试错误处理测试边界条件测试边界条件测试I/O I/O 参数值的个数、类参数值的
24、个数、类型、次序、格式是否正型、次序、格式是否正确,确,I/OI/O文件属性、操作文件属性、操作是否正确等。是否正确等。数据说明是否正确、数据说明是否正确、一致,变量及其初一致,变量及其初值定义是否正确等。值定义是否正确等。检查检查“错误处错误处理程序理程序”本身本身的错误。的错误。边界条件常包括循环边边界条件常包括循环边界,最大最小值、控制界,最大最小值、控制流中等于、大于、小于流中等于、大于、小于的比较值等。的比较值等。重要重要路径通常是指完成路径通常是指完成模块功能的主要路径,模块功能的主要路径,一般是控制结构。一般是控制结构。也称模块测试(也称模块测试(modulemodule tes
25、ting testing ) )7.3.1 7.3.1 单元测试重点单元测试重点语语句句覆覆盖盖判判定定覆覆盖盖条条件件覆覆盖盖判判定定条条件件覆覆盖盖条条件件组组合合覆覆盖盖弱弱强强7.6 7.6 白盒测试技术白盒测试技术 语句覆盖语句覆盖: 选择足够的测试用例,使得程序中每个语选择足够的测试用例,使得程序中每个语句至少都能被执行一次。句至少都能被执行一次。 判定覆盖判定覆盖: 执行足够的测试用例,使得程序中每个判执行足够的测试用例,使得程序中每个判定至少都获得一次定至少都获得一次“真真”值和值和“假假”值。值。 条件覆盖条件覆盖:执行足够的测试用例,使得判定中的每个:执行足够的测试用例,使
26、得判定中的每个条件获得各种可能的结果。条件获得各种可能的结果。 判定判定/ /条件覆盖条件覆盖: 执行足够的测试用例,使得判定中执行足够的测试用例,使得判定中每个条件取到各种可能的值,并使每个判定取到各种可能每个条件取到各种可能的值,并使每个判定取到各种可能的结果。的结果。 条件组合覆盖条件组合覆盖: 执行足够的例子,使得每个判定中条执行足够的例子,使得每个判定中条件的各种可能组合都至少出现一次。件的各种可能组合都至少出现一次。白盒法白盒法常用的覆盖标准常用的覆盖标准等等价价分分类类法法边边值值分分析析法法错错误误推推测测法法黑盒法黑盒法 不考虑程序的内部结构与特性,不考虑程序的内部结构与特性
27、,只根据程序功能或程序的外部特性只根据程序功能或程序的外部特性设计测试用例。设计测试用例。7.7 7.7 黑盒测试技术黑盒测试技术l 调试调试(也称为纠错)作为成功测试的后果出现,也就是说,(也称为纠错)作为成功测试的后果出现,也就是说,调试是在测试发现错误之后排除错误的过程。调试是在测试发现错误之后排除错误的过程。l 调试过程调试过程如下图所示:如下图所示:7.8 7.8 调试调试7.8 7.8 调试途径调试途径l 软件可靠性的定义:软件可靠性的定义:对于软件可靠性有许多不同的定义,对于软件可靠性有许多不同的定义,其中多数人承认的一个定义是:其中多数人承认的一个定义是:软件可靠性是程序在给定
28、软件可靠性是程序在给定的时间间隔内,按照规格说明书的规定成功地运行的概率的时间间隔内,按照规格说明书的规定成功地运行的概率l 软件可用性的一个定义:软件可用性的一个定义: 软件可用性是程序在软件可用性是程序在给定的时给定的时间点间点,按照规格说明书的规定,成功地运行的概率。,按照规格说明书的规定,成功地运行的概率。7.9 7.9 调试调试1、软件维护的定义P1792、了解软件维护的特点3、软件维护过程中维护组织包括哪些人员?P1828.4 决定软件的可维护性的因素有哪些?P185P1868.5 软件再工程过程8.18.1软件维护的定义软件维护的定义l 软件维护软件维护是指软件系统交付使用以后,
29、为了改正错误或满足是指软件系统交付使用以后,为了改正错误或满足新的需求而修改软件的过程。按照不同的维护目的,维护工作新的需求而修改软件的过程。按照不同的维护目的,维护工作可分成可分成4类。类。u完善性维护完善性维护(Perfective Maintenance):扩充原有系统的):扩充原有系统的功能,提高原有系统的性能,满足用户的实际需要。功能,提高原有系统的性能,满足用户的实际需要。u纠错性维护纠错性维护(Corrective Maintenance):对在测试阶段未):对在测试阶段未能发现的,在软件投入使用后才逐渐暴露出来的错误的测能发现的,在软件投入使用后才逐渐暴露出来的错误的测试、诊断
30、、定位、纠错以及验证、修改的回归测试过程。试、诊断、定位、纠错以及验证、修改的回归测试过程。u适应性维护适应性维护(Adaptive Maintenance):): 要使运行的软件要使运行的软件能适应运行环境的变动而修改软件的过程。能适应运行环境的变动而修改软件的过程。u预防性维护预防性维护(Preventive Maintenance):为了进一步改善):为了进一步改善软件的可靠性和易维护性,或者为将来的维护奠定更好的软件的可靠性和易维护性,或者为将来的维护奠定更好的基础而对软件进行修改。(基础而对软件进行修改。(8.5节)节)8.38.3软件维护过程软件维护过程图图8.1 维护组织维护组织
31、8.48.4软件的可维护性软件的可维护性l软件的可维护性定性地定义为: 维护人员理解、改正、改动或改进这个软件的难易程度。l重用:同一事物不做修改或稍加改动就在不同环境中多次重复使用。l提高可维护性是支配软件工程方法学所有步骤的关键目标。1、面向对象方法学概述P193P2002、面向对象建模(涵盖第9章和第10章)3、面向对象分析的基本过程4、面向对象的设计准则9.1 概述l 面向对象方法学的面向对象方法学的出发点和基本原则出发点和基本原则,是,是尽可能模拟人类习尽可能模拟人类习惯的思维方式,惯的思维方式,使开发软件的方法与过程使开发软件的方法与过程尽可能接近人类认识尽可能接近人类认识世界解决
32、问题的方法与过程世界解决问题的方法与过程,也就是使描述问题的问题空间,也就是使描述问题的问题空间(也也称为问题域称为问题域)与实现解法的解空间与实现解法的解空间(也称为求解域也称为求解域)在结构上尽可在结构上尽可能一致。能一致。u认为客观世界是由各种对象组成的,任何事物都是对象,认为客观世界是由各种对象组成的,任何事物都是对象,复杂的对象可以由比较简单的对象以某种方式组合而成。复杂的对象可以由比较简单的对象以某种方式组合而成。u把所有对象都划分成各种对象类把所有对象都划分成各种对象类(简称为类,简称为类,class),每个,每个对象类都定义了一组数据和一组方法。对象类都定义了一组数据和一组方法
33、。u按照子类按照子类(或称为派生类或称为派生类)与父类与父类(或称为基类或称为基类)的关系,把的关系,把若干个对象类组成一个层次结构的系统若干个对象类组成一个层次结构的系统(也称为类等级也称为类等级)。u对象彼此之间仅能通过传递消息互相联系。对象彼此之间仅能通过传递消息互相联系。类又称对象类类又称对象类一组具有相同属性和一组具有相同属性和相同操作的对象的集合。在一个类中,每个对象都是类的实例相同操作的对象的集合。在一个类中,每个对象都是类的实例(instance) ,它们都可以使用类中提供的函数。,它们都可以使用类中提供的函数。类具有属性,用数据结构来描述类的属性,类具有操作,类具有属性,用数
34、据结构来描述类的属性,类具有操作,它 是 对 象 的 行 为 的 抽 象 , 操 作 实 现 的 过 程 称 为 方 法它 是 对 象 的 行 为 的 抽 象 , 操 作 实 现 的 过 程 称 为 方 法(method) ,方法有方法名,方法体和参数。,方法有方法名,方法体和参数。 由于对象是类的实例,在进行分析和设计时,通常把注由于对象是类的实例,在进行分析和设计时,通常把注意力集中在类上,而不是具体的对象上意力集中在类上,而不是具体的对象上。 实例:实例:实际上类是建立对象时使用的实际上类是建立对象时使用的“样板样板”,按照,按照这个样板所建立的一个个具体的对象,就是类的实际例子,这个样
35、板所建立的一个个具体的对象,就是类的实际例子,通常称为通常称为实例实例。当使用。当使用“对象对象”这个术语时,既可以指一这个术语时,既可以指一个具体的对象,也可以泛指一般的对象,但是,当使用个具体的对象,也可以泛指一般的对象,但是,当使用“实例实例”这个术语时,必然是指一个具体的对象。这个术语时,必然是指一个具体的对象。几何对象几何对象颜色颜色位置位置移动(移动(delta:矢量):矢量)选择(选择(P:指针型)指针型):布尔型布尔型旋转旋转(角度角度)人人姓姓 名名:字符串字符串年年 龄龄: 整整 型型改换工作改换工作改换地址改换地址文件文件文件名文件名文件大小文件大小最近更新日期最近更新日
36、期打印打印(人人)里斯里斯28绘图员绘图员人民路人民路8号号(人人)张山张山24程序员程序员无无类名类名属性属性运算运算 对象图对象图 类图类图 互相联系、协同工互相联系、协同工作等作等对象之间的联系可表示为对象间的消息传递,即对象之间的联系可表示为对象间的消息传递,即对象间的通讯机制。对象间的通讯机制。 一个消息应该包含以下信息:消息名、接收消息对象一个消息应该包含以下信息:消息名、接收消息对象的标识、服务标识的标识、服务标识 、消息和方法、输入信息、回答信息。、消息和方法、输入信息、回答信息。在对象的操作中当一个消息发送给某个对象时,消息在对象的操作中当一个消息发送给某个对象时,消息包含接
37、收对象去执行某种操作的消息。包含接收对象去执行某种操作的消息。属性:姓名属性:姓名 年龄年龄 单位单位 职称职称 工资工资状态:李立状态:李立 25 计算机系计算机系 讲师讲师 900属性:调工资属性:调工资 评职称评职称 受受 聘聘方法:调工资方法:调工资 (计算公式)(计算公式) 评职称评职称 (步骤、条件)(步骤、条件)属性:调工资属性:调工资 评职称评职称 受受 聘聘李立,调工资(李立,调工资( )数数据据结结构构数数据据值值人事处向对象发消息人事处向对象发消息执行执行的的操作操作方方法法体体类:教师类:教师对象:李立对象:李立抽象抽象实例实例抽象抽象实例实例抽象抽象方法名(参数)方法
38、名(参数)图9.7 对象、类和消息传递l 方法:方法:就是对象所能执行的操作,也就是类中所定义的就是对象所能执行的操作,也就是类中所定义的服务。方法描述了对象执行操作的算法,响应消息的方法。服务。方法描述了对象执行操作的算法,响应消息的方法。在在C+语言中把方法称为成员函数。语言中把方法称为成员函数。l 属性:属性:就是类中所定义的数据,它是对客观世界实体所就是类中所定义的数据,它是对客观世界实体所具有的性质的抽象。类的每个实例都有自己特有的属性值。具有的性质的抽象。类的每个实例都有自己特有的属性值。在在C+语言中把属性称为数据成员。语言中把属性称为数据成员。 继承是使用现存的定义作为基础,建
39、立新定义的技术。继承是使用现存的定义作为基础,建立新定义的技术。是是父类和子类之间共享数据结构和方法的机制,这是类之间的一父类和子类之间共享数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础上来进行,把这个已经存在的类所定义的内容做为自类的基础上来进行,把这个已经存在的类所定义的内容做为自己的内容,并加入若干新内容。己的内容,并加入若干新内容。 继承性分:继承性分: 单重继承:一个子类只有一个父类。即子类只继承一个父类单重继承:一个子类只有一个父类。即子类只继承一个父类 的数据结构和方法。的数
40、据结构和方法。 多重继承:一个子类可有多个父类。继承多个父类的数据结多重继承:一个子类可有多个父类。继承多个父类的数据结 构和方法。构和方法。基类基类子类子类A子类子类B图 9.9 继承性描述现存类定义现存类定义父类父类( (基类基类) )新类定义新类定义子类子类( (派生类派生类) )继继 承承图 9.8 继承性图图9.8 实现继承机制的原理实现继承机制的原理 (1) 面向对象分析的三个模型u 面向对象建模是面向对象分析的关键。u 面向对象的模型包括:对象模型、动态模型和功能模型。对对象模型象模型描述了系统的静态结构;动态模型动态模型描述了系统的互交次序;功能模型功能模型描述了系统的数据变换
41、。不同的问题,三个子模型的侧重程度不同,但是,对象模型是最基础的、最核心的、对象模型是最基础的、最核心的、最重要的最重要的。u 无论解决什么问题,首先要在问题域中提取和定义出对象模型。当问题涉及用户界与过程控制问题涉及用户界与过程控制时,动态模型是重点动态模型是重点。如果问题涉及大量数据变换问题涉及大量数据变换,则功能模型非常重要功能模型非常重要。对象模型中的操作(服务)可以出现在动态模型和功能模型内。面向对象分析的基本过程9.3 39.3 3个子模型与个子模型与5 5个层次个层次1.1. 模块化模块化2.2. 抽象抽象3.3. 信息隐藏信息隐藏4.4. 弱耦合弱耦合5.5. 强内聚强内聚6.6. 可重用可重用 面向对象设计的准则面向对象设计的准则面向对象设计的准则面向对象设计的准则问答题产生软件危机软件开发模型 周期需求获取模块化 白盒测试黑盒测试面向数据流设计方法 面向数据结构设计方法 综合题 数据流图 用例图 判定树 判定表 程序流程图 三角形构成问题 软件结构图 测试用例设计
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。