面向对象技术&UML-复习答案
面向对象技术第一章
1.2.5 软件设计
2、模块化准则
2、模块化准则 模块化方法已经为所有工程 领域所接受。模块化的主要优点 是,模块化设计降低了软件系统 的复杂性,使得系统容易修改, 同时使得系统各个部分可以并行 开发,从而提高了软件的生产率。
成本 最小成本区 M 软件总成本 接口成本 模块成本 模块 数目
图1.7 模块化与软件成本的关系
三、需求分析的文档
需求规格说明书,目标系统的模型。显然,采用不同的 开发方法,建摸的方法是不同的。
1.2.5 软件设计
1.2.5 软件设计
软件设计阶段要解决“怎么做”的问题,是整个软件开发 过程的核心问题,所有的开发工作都将根据设计的方案进行。 系统的总体结构在该阶段决定,因此软件的总体设计决定了系 统的质量。软件设计的任务是分为总体设计和详细设计两个阶 段。
复合耦合 数据耦合
低
内聚性(cohesion)
图 1.8
内聚性表示一个模块内部各种数据和各种处理之间联系的 紧密程度,它是从功能的角度来度量模块间的联系。显然,块内 联系愈紧,即内聚性愈强,模块独立性愈好。
偶然型 逻辑型 瞬时型 通讯型 顺序型 功能型 强
内聚性 弱
图 1.9
1.3 软件开发模型
1.3 软件开发模型
修 需求 说明书 软件 总体 结构 设计 改
修
改
设计说 明书 复审
复审
详细 可接受 设计 模块描述
1、设计阶段结束要交付的文档是设计说明书,根据设计方 法的不同,有不同的设计文档。 2、每个设计步骤完成后,都应进行复审。
1.2.5 一、软件设计任务 软件设计 软件设计的目标
一、软件设计阶段的任务
1、划分模块,确定软件结构 开发方法不同,确定软件结构的方法也不同。例如SD法, 是从分层的DFD图导出初始的结构图,再对初始的结构图进行 改进,获得最终的结构图。 一般包括确定系统的软件结构,分解模块 ,确定系统的 模块层次关系。 2、确定系统的数据结构 数据结构的建立对于信息系统而言尤为重要。要确定数 据的类型,组织、存取方式,相关程度及处理方式等。 3、设计用户界面 作为人机接口的用户界面起着越来越重要的作用,它直 接影响到软件的寿命。
面向对象技术概述
1.1 知识要点1.面向对象技术的基本概念∙面向对象技术是以对象为基础、以事件或者消息来驱动对象执行处理的程序设计技术。
∙对象是包含客观事物特征的抽象实体,是属性和行为的封装体。
在程序设计领域,可以用“对象=数据+作用于这些数据上的操作”这一公式来表达。
∙类是对具有相同属性和行为的一组对象的抽象描述。
∙事件是系统产生的动作或是运行应用程序产生的动作。
事件通过消息描述,消息是描述事件发生的信息。
∙消息是对象间交互的手段,是要求某个对象执行某个操作的规格说明。
2.面向对象技术的基本特征∙抽象性是指忽略事物中与当前目标无关的非本质特征,而强调本质特征的特征。
∙封装性是指把对象的属性和行为封装在一起,并尽可能隐藏对象的内部细节的特征。
∙继承性是指特殊类的对象拥有其一般类的属性和行为的类与类之间层次关系的特征。
∙多态性是指不同对象收到相同消息时可以产生多种不同的行为方式的特征。
【重点】∙面向对象技术的概念。
∙类与对象的概念及关系。
∙面向对象与面向过程程序设计的区别。
∙面向对象技术的基本特征。
面向对象技术与Visual C++学习指导2【难点】∙类与对象的概念。
∙面向对象与面向过程程序设计的区别。
∙面向对象技术的基本特征。
1.2 习题解答1.什么是面向对象技术?【问题解答】面向对象技术是一种以对象为基础,以事件或消息来驱动对象执行处理的程序设计技术。
它具有抽象性、封装性、继承性及多态性。
2.面向对象与面向过程程序设计有什么不同?【问题解答】面向对象与面向过程程序设计有如下不同:(1)面向过程程序设计方法采用函数(或过程)来描述对数据的操作,但又将函数与其操作的数据分离开来;面向对象程序设计方法将数据和对数据的操作封装在一起,作为一个整体来处理。
(2)面向过程程序设计方法以功能为中心来设计功能模块,难于维护;而面向对象程序设计方法以数据为中心来描述系统,数据相对于功能而言具有较强的稳定性,因此更易于维护。
(3)面向过程程序的控制流程由程序中预定顺序来决定;面向对象程序的控制流程由运行时各种事件的实际发生来触发,而不再由预定顺序来决定,更符合实际需要。
面向对象的软件测试技术(转)
面向对象的软件测试技术(转)面向对象的软件测试技术相关知识点-面象对象(=objectoriented)技术1.对象和类l面象对象的编程语言:以对象为中心,以消息为驱动,程序=对象+消息l类就是一种代莱数据类型,就是设计的核心,就是通过抽象数据类型的方法去同时实现的一种数据类型l类是对某一对象的抽象,对象是某一类的实例,两者密切相关2.PCB、承继和多态性(1)封装:把数据和操作结合一体,使程序结构更加紧凑,避免了数据紊乱带来的调试与维护的困难(2)承继:可以从一个类衍生至另一个类,派生类承继了父类和祖先类的数据成员和函数,减少了软件的可扩充性,并为代码器重提供更多了强有力的手段(3)多态性:多种表现形式,可以用‘一个对外接口,多个内在实现方法’表示。
一.面向对象测试模型1.面向对象测试的分类依据面向对象研发模型(面向对象分析、面向对象设计、面向对向编程),分成:(1)面向对象分析的测试(ooatest)、面向对象设计的测试(oodtest):是对分析结果和设计结果的测试,主要对分析设计产生的文本进行的,是软件开发前期的关键性测试(2)面向对象编程的测试(ooptest):对编程风格和程序代码同时实现展开测试,主要的测试内容在oounittest和oointegratetest中彰显(3)面向对象单元测试(oounittest):对程序内部具体单一的功能模块的测试,主要对类成员函数的测试,是oointegratetest的基础(4)面向对象内置测试(oointergratetest):对系统内部的相互服务展开测试,例如成员函数间的相互作用,类间的消息传递。
不仅必须基于oounittest,还要参照ood、oodtest的结果(5)面向对象确认测试(oosystemtest)、面向对象系统测试(oosystemtest):最后阶段的测试,以用户需求为测试标准,借鉴ooa、ooatest的结果二.面向对象软件的测试策略1.面向对象分析的测试(1)面向对象分析是把e-r图和语义网络模型,即信息造型中的概念,与面向对象程序设计语方中的重要概念结合在一起而形成的分析方法。
简述面向对象技术的三大机制。
简述面向对象技术的三大机制。
面向对象技术(Object-Oriented Technology)是一种常用的编程范式,它基于对象的概念来设计程序和系统。
面向对象技术的三大机制分别是封装(Encapsulation)、继承(Inheritance)和多态(Polymorphism)。
封装是面向对象技术的基本原则之一,它将数据和操作封装在对象内部,对象对外部的数据和操作进行隐藏,只提供有限的接口供外部访问。
通过封装,对象可以控制对自身数据的访问,确保数据的安全性和完整性。
封装使得对象的实现细节对外部隐藏,提高了系统的可维护性和可扩展性。
同时,封装也使得对象之间的耦合度降低,各对象之间更加独立,提高了系统的灵活性。
继承是面向对象技术的另一个重要特性,它允许一个类(子类)继承另一个类(父类)的属性和方法。
通过继承,子类可以重用父类的代码,减少了重复编码的工作量,提高了代码的复用性和可维护性。
同时,继承也体现了类之间的层次关系,使得程序结构更加清晰和易于理解。
通过继承,可以实现代码的统一管理和扩展,提高了系统的可扩展性和可维护性。
多态是面向对象技术的另一重要机制,它允许不同的对象对同一消息作出不同的响应。
通过多态,可以实现接口的统一,提高了代码的灵活性和可重用性。
多态使得程序可以根据不同的对象类型调用不同的方法,实现了代码的动态绑定,提高了程序的可扩展性和可维护性。
多态是面向对象技术的一个重要特点,它使得程序更加灵活和易于扩展,提高了程序的可读性和可维护性。
封装、继承和多态是面向对象技术的三大机制,它们共同构成了面向对象技术的基本特性。
通过封装,可以保护对象的数据和实现细节;通过继承,可以实现代码的重用和扩展;通过多态,可以实现接口的统一和动态绑定。
这三大机制相互配合,共同构成了面向对象技术的核心思想,为软件开发提供了强大的支持和工具。
面向对象技术已成为现代软件开发的主流范式,它不仅提高了程序的可维护性和可扩展性,还提高了程序的质量和效率,是软件开发领域的一项重要技朧。
面向对象技术与UML
继承性举例
继承传递:大学生可以继承“人”和“学生”的特
征 父类 多重继承: 在职研究生既可以继承“学生”的特 征,又可以继承“教师”的特征 人
工人 学生 教师 农民
中学生 大学生 研究生 派生类
助教
讲师
具有继承关系的对象的特性
对象类间具有共享特征(包括数据和程序代
码的共享) 对象类间具有细微的差别或新增部分(包括 非共享的程序代码和数据) 对象类间具有层次结构。 继承所具有的作用有两个方面:
第二节 面向对象分析
本节要求了解面向对象分析的基本过程和基本原则 OOA: Object-oriented Analysis . 指利用面向对象的概念和方法构建软 件模型。 面向对象分析的基本过程 理解 表达
验证
对理解和表达进 行校验,以达到 理想效果。
需求
建立模型
在面向对象分析中,主要建立对象模型,动态模型和功能模型。 对象模型是最基本最重要的模型。
3) 可重用性好 有两种方法可以重复使用一个对象类:一种方法是创 建该类的实例,从而直接使用它;另一种方法是从它 派生出一个满足当前需要的新类。 4)较易开发大型软件产品 5)可维护性好
2.1.2 喷泉模型
“喷泉”这个词体现了面向对象软 件开发过程迭代和无缝的特性。 图中代表不同阶段的圆圈相互重 叠,这明确表示两个活动之间存 在交迭;而面向对象方法在概念 和表示方法上的一致性,保证了 在各项开发活动之间的无缝过渡, 事实上,用面向对象方法开发软 件时,在分析、设计和编码等项 开发活动之间并不存在明显的边 界。图中在一个阶段内的向下箭 头代表该阶段内的迭代(或求 精)。图中较小的圆圈代表维护, 圆圈较小象征着采用了面向对象 范型之后维护时间缩短了。
面向对象技术
面向对象的软件过程
传统的和面向对象的软件生命周期模型 面向对象软件生命周期中的主要活动 完全面向对象的软件生命周期的概念
传统的软件生命周期模型
内部视图
把系统当作一个黑盒子, 从外部来描述系统,这 种模型就是外部模型 由于这是从外部来观察 系统得到的结果,又称 之为外部视图。 外部视图说明了系统是 什么,用来定义需求
外部视图
作用
作用
建模技术的表示法和语义学
建模技术两组成部分 表示方法,它能使分析人员、设计人员、编程人员、管理 人员以及用户彼此沟通,用得最多的,也是最直观的表示 方法是图形表示法 语义学。语义学可用自然语言来描述,也可用形式语言来 描述,或者两者相结合,这要根据建模技术的严格程度而 定。 模型元素 通过建模技术中的表示方法能使我们从要被建模的系统中 抽象出各种元素,这些元素称为模型元素,其目的是提供 人们可以理解的表示。 建模元素 在说明各种建模技术的语义学时,还将用到一些概念和符 号,它们在最后组成的软件系统模型中不直接表现出来, 这些元素称为建模元素。
面向对象技术的组成部分
明确给出面向对象的基本概念
对象、类、继承、消息和封装等基本概念 定义面向对象技术中用到的扩展的概念如建模、系统行为 等。 表示方法,使分析人员、设计人员、编程人员、管理人员 以及用户彼此沟通。 这种技术的语义学。语义学可用自然语言来描述,也可用 形式语言来描述。 包括对软件生命周期各阶段的描述,对各个阶段的进一步 细化,以及在生命周期各阶段如何运用建模技术和面向对 象语言来完成各阶段的任务。
消息性质和类型
面向对象技术(答案)
●下面关于面向对象方法中消息的叙述,不正确的是____(2)__。
(2)A. 键盘、鼠标、通信端口、网络等设备一有变化,就会产生消息B.操作系统不断向应用程序发送消息,但应用程序不能向操作系统发送消息C. 应用程序之间可以相互发送消息D.发送与接收消息的通信机制与传统的子程序调用机制不同正确答案:B【解析】在系统中既使用对象又使用类和继承等机制,而且对象之间仅能通过传递消息实现彼此的通信,这样的方法才称为"面向对象的方法"。
●面向对象技术中,对象是类的实例。
对象有三种成份:____(3)____、属性和方法(或操作)。
(3) A. 标识B. 规则C. 封装D. 消息正确答案:A解析:对象有三种成份:标识(对象名)、属性和方法(或操作)。
●在面向对象技术中,类属是一种__(1)__机制。
一个类属类是关于一组类的一个特性抽象,它强调的是这些类的成员特征中与__(2)__的那些部分,而用变元来表示与__(3)__的那些部分。
(1)A.包含多态B.参数多态C.过载多态D.强制多态(2)A.具体对象无关B.具体类型无关C.具体对象相关D.具体类型相关(3)A.具体对象无关B.具体类型无关C.具体对象相关D.具体类型相关解析:在面向对象技术中,对象在收到信息后要予以响应。
不同的对象收到同一消息可产生完全不同的结果,这一现象称为多态。
多态有多种不同的形式,其中参数多态和包含多态称为通用多态,过载多态和强制多态成为特定多态。
参数多态应用比较广泛,被称为最纯的多态。
这是因为同一对象、函数或过程能以一致的形式用于不同的类型。
包含多态最常见的例子就是子类型化,即一个类型是另一类型的子类型。
过载多态是同一变量被用来表示不同的功能,通过上下文以决定一个类所代表的功能。
即通过语法对不同语义的对象使用相同的名,编译能够消除这一模糊。
强制多态是通过语义操作把一个变元的类型加以变换,以符合一个函数的要求,如果不做这一强制性变换将出现类型错误。
论面向对象的数据库技术
论面向对象的数据库技术近年来,面向对象技术在软件开发领域得到了广泛的应用,而数据库也逐渐采用面向对象的方式进行设计和实现。
面向对象的数据库技术将对象的概念引入到了数据库中,使得数据库具有更加强大和灵活的功能特性。
本文将从面向对象技术和数据库技术两个方面入手,探讨面向对象的数据库技术的特点、应用和优缺点。
面向对象技术面向对象技术是一种软件开发方法,其核心概念为“对象”。
对象是指具有某种属性和行为的实体,可以对其进行封装、继承和多态等操作。
面向对象技术具有以下优点:•可重用性:对象的封装和继承使得代码更加模块化,可以方便地复用已有的代码,从而提高开发效率和代码质量。
•可扩展性:对象的继承和多态使得程序更加易于扩展和修改,可以方便地添加新的功能特性,从而适应不同的需求。
•易于维护:对象的封装和继承使得程序更加易于理解和维护,可以快速定位和修复问题。
面向对象数据库技术面向对象数据库技术是将面向对象技术应用于数据库设计和实现中的一种方法。
与传统的关系型数据库相比,面向对象数据库具有以下特点:1. 对象模型和数据库模型的一致性面向对象数据库将面向对象的概念引入到了数据库中,将对象作为数据库的基本单位。
与之相应的,面向对象数据库使用基于对象的模型来描述数据,与对象模型进行一一映射,从而实现了对象模型和数据库模型的一致性。
2. 可扩展性和灵活性面向对象数据库提供了更加丰富和灵活的数据结构和查询方式。
由于对象的继承和多态机制,可以方便地扩展数据结构和增加新的查询方式,满足应用程序不断变化的需求。
3. 高效性和安全性面向对象数据库采用了先进的数据访问和存储技术,具有更高的性能和安全性。
由于对象的封装和继承特点,可以实现更加高效的数据检索和处理,避免了传统关系型数据库的数据冗余和性能瓶颈问题。
4. 支持面向对象开发面向对象数据库直接支持面向对象开发。
开发人员可以直接将数据库中的对象作为应用程序的对象,从而更加方便地进行代码开发和维护。
第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. 多态性
定义:同一操作作用于不同的对象,可以有 不同的解释,产生不同的执行结果。 例子: 动物叫
《面向对象技术4》
2、思维组织模式 系统分析的本质是一种思维过程,就是考虑问题的次 序、条理、层次等方面的模式。在传统的分析模式中, 从问题空间到分析结果的映射是间接的,因为分析方法 所决定的思维模式与人们所采用的思维模式有一定的距 离,为了减少这些距离,只好进行转换,以利于分析结 果的传递。
从根本上统一思维模式的方法是在系统开发的各个环 节中,统一采用人类原有的思维组织模式。人类典型的 思维过程是由三部分来进行组织的: (1)从现实世界中区分出特定的客体及其属性; (2)对客体的整体和组成部分加以区分; (3)对不同种类的客体给出表示,在此基础上并加以区 分。 面向对象的分析方法就是建立在这3个来自人类自己思 维组织模式之上,依照客观世界本来的规律来开发应用 系统的。
3)对候选对象考察什么? 对候选对象,能否认定它是一个对象,要考虑: (1)需要记忆:即系统是否有必要记忆对象的某些或全 部成分; (2)需要服务:即系统是否有必要对该对象的行为提供 服务; (3)多于一个属性:若只有一个属性的对象,通常应看 成其它对象的属性; (4)共有属性:即对于一种对象所有的实例,能否认定 一组为这些实例所共有的属性;
一、主要数据结构(多层次多组元的模型) 面向对象的分析和面向对象的设计之间并没有象传统开发方法那 样有明显的界限,但的确存在差别,即在抽象程度上、先后顺序及 侧重点的差别。这种特点与采用了一致的思维方式有关,也与面向 对象模式本身就状态交换和进化的认识有关。 在Coad方法的面向对象的分析中,有5种活动: (1)标识对象; (2)识别类的结构; (3)确定主题; (4)定义属性; (5)定义服务。
(3)图:能收集到一切图,如结构图、接口图、系统构 件图、高层次的数据流图和控制流图等,根据这些图再 用图表和联线画出内容丰富的图来,以形成问题空间的 初始框架。
面向对象
面向对象技术面向对象技术强调在软件开发过程中面向客观世界或问题域中的事物,采用人类在认识客观世界的过程中普遍运用的思维方法,直观、自然地描述客观世界中的有关事物。
面向对象技术的基本特征主要有抽象性、封装性、继承性和多态性。
1.抽象性把众多的事物进行归纳、分类是人们在认识客观世界时经常采用的思维方法,“物以类聚,人以群分”就是分类的意思,分类所依据的原则是抽象。
抽象(Abstract)就是忽略事物中与当前目标无关的非本质特征,更充分地注意与当前目标有关的本质特征。
从而找出事物的共性,并把具有共性的事物划为一类,得到一个抽象的概念。
例如,在设计一个学生成绩管理系统的过程中,考察学生张华这个对象时,就只关心他的班级、学号、成绩等,而忽略他的身高、体重等信息。
因此,抽象性是对事物的抽象概括描述,实现了客观世界向计算机世界的转化。
将客观事物抽象成对象及类是比较难的过程,也是面向对象方法的第一步。
2.封装性封装(Encapsulation)就是把对象的属性和行为结合成一个独立的单位,并尽可能隐蔽对象的内部细节。
封装有两个含义:一是把对象的全部属性和行为结合在一起,形成一个不可分割的独立单位。
对象的属性值(除了公有的属性值)只能由这个对象的行为来读取和修改;二是尽可能隐蔽对象的内部细节,对外形成一道屏障,与外部的联系只能通过外部接口实现。
封装的结果使对象以外的部分不能随意存取对象的内部属性,从而有效地避免了外部错误对它的影响,大大减小了查错和排错的难度。
另一方面,当对象内部进行修改时,由于它只通过少量的外部接口对外提供服务,因此同样减小了内部的修改对外部的影响。
封装机制将对象的使用者与设计者分开,使用者不必知道对象行为实现的细节,只需要用设计者提供的外部接口让对象去做。
封装的结果实际上隐蔽了复杂性,并提供了代码重用性,从而降低了软件开发的难度。
3.继承性继承(Inheritance)是一种联结类与类的层次模型。
第01章 面向对象技术概述
Ada Lovelace是英国著名诗人 拜伦的女儿,世界上第一个程序 员。Ada语言以她的名字命名
20
面向对象技术发展-4
里程碑4:C++ (1982, 贝尔实验室)
• 第一个被工业界广泛接 受的支持面向对象能力 的语言,创造者Bjarne Stroustrup(本贾尼· 斯 特劳斯特卢普) • 动机是给C添加一些 Simula特性,以完成当 时刚刚出现的大规模复 杂任务 • 商业化
1.2.3 面向对象技术 VS 结构化
31
1.2.3 面向对象 VS 结构化-1
扬弃,不是否定
订单 订单项 PK 订单项ID
PK 订单ID 下单日期 税金 运费 总价
购买数量 价格 FK1 订单ID
顾客
顾客 帐号、数额 取款功能
提款机
1: 请办理提款(帐号,金额)
32
面向对象 VS 结构化-2
预言历史的最佳方式是创造历史 -- Alan Kay
19
面向对象技术发展-3
里程碑3:ADT, Ada 83, 基于对象(19771983)
• 编程理论界在结构化运 动中提出ADT思想,以 N. Wirth和Liskov为代 表 • 美国防部军用开发语言 评选,Ada被指定为强 制性军用编程语言,实 际上已经进入“基于对 象”阶段
1
1.2 面向对象技术
1.2.1 基本概念 1.2.2 面向对象技术发展 1.2.3 面向对象技术 VS 结构化
7
1.2.1 面向对象领域的基本概念
OO技术领域存在一些基本术语和概念,需 要掌握和理解。
8
对象和实例
对象(Object)
• 它是系统用来描述客观事物的一个实体,是构 成系统的一个基本单位。 • 对象包括:属性和方法 • 对象之间通过消息进行通信。
简述面向对象技术的三大机制。
简述面向对象技术的三大机制。
面向对象技术是一种软件开发方法论,它将现实世界中的事物抽象为对象,通过封装、继承和多态这三大机制来实现软件的模块化、灵活性和可复用性。
封装是面向对象技术的第一个重要机制。
封装指的是将对象的属性和方法封装在一起,形成一个独立的实体。
对象的属性表示对象的状态,而方法表示对象的行为。
通过封装,对象可以对外隐藏内部的实现细节,只暴露必要的接口供其他对象使用。
这样可以提高代码的可读性和可维护性,也可以保护对象的内部状态不被外部对象随意修改。
封装还可以实现信息隐藏,对外部只提供公共接口,隐藏内部的实现细节,从而提高代码的安全性。
继承是面向对象技术的第二个重要机制。
继承指的是一个类可以从另一个类继承属性和方法。
继承可以使代码的复用性更高,减少代码的冗余。
子类可以继承父类的属性和方法,并可以在此基础上进行扩展或修改。
通过继承,可以构建出类之间的层次结构,使代码更加结构化和可维护。
继承还可以实现多态,即同一个方法在不同的子类中有不同的实现。
这样可以增加代码的灵活性和可扩展性,使程序可以根据不同的对象类型进行不同的操作。
多态是面向对象技术的第三个重要机制。
多态指的是同一个类型的对象在不同的情况下表现出不同的行为。
多态可以通过继承和接口来实现。
通过继承,父类的引用可以指向子类的对象,从而可以调用子类中覆盖或新增的方法。
通过接口,可以定义多个类实现同一个接口,并且可以通过接口引用来调用不同类的方法。
多态可以提高代码的灵活性和可扩展性,使程序的逻辑更加清晰和简洁。
多态还可以实现运行时的动态绑定,提高代码的可读性和可维护性。
总结来说,面向对象技术的三大机制封装、继承和多态分别实现了代码的封装性、复用性、灵活性和可扩展性。
封装将对象的属性和方法封装在一起,隐藏内部的实现细节;继承可以实现属性和方法的继承和扩展,减少代码的冗余;多态可以实现同一类型的对象在不同情况下表现出不同的行为,提高代码的灵活性和可读性。
面向对象技术概述
常用软件开发方法
面向过程的方法: 面向过程的方法主要考虑事务流和 要完成的功能,数据被当作系统整体的一个部分来处 理,常常是分析过程的一个副产品。其代表方法是结 构化分析与设计方法.
面向数据的方法: 面向数据的方法将数据作为一种 独立的资源对待,数据是支持所有应用项目的基 础,处理过程也是重要的,但是它们必须存取数 据库中的数据。其代表方法是数据库设计方法。 信息工程的方法:信息工程是在软件工程和数据库 基础上形成和发展起来的,其方法采用的前提是 数据位于现代数据处理系统的中心,数据类型不 会发生很大的变化,因此这种方法是面向数据的 方法。
消息一般由三个部分组成:(接受消息的对象,接受 对象应采用的方法,方法所需要的参数)。计算任务 通常先由某一对象受理(该对象接收到某种消息),然 后,通过对象间的通信,计算任务就分散到各个有关 对象中,最后,再由某些对象给出结果(通过发送消 息)。 对象可以动态地创建,创建后即可以活动。对象在不 同时刻可处于不同状态,对象的活动是指对象状态的 改变,它是由对象所接收的消息引发的。对象一经创 建,就能接收消息,并向其他对象发送消息。对象接 收到消息后,可能出现:(1)自身状态改变(2)创建新 对象(3)向其他对象发送消息。
面向对象分析
对象模型。对象模型表示静态的、结构化的系统的“数据”性 质。它是对模拟客观世界实体的对象以及对象彼此间的关系的 映射,描述了系统的静态结构。面向对象方法强调围绕对象而 不是围绕功能来构造系统。对象模型为建立动态模型和功能模 型,提供了实质性的框架。在建立对象模型时,人们的目标是 从客观世界中提炼出对具体应用有价值的概念。 动态模型。动态模型表示瞬时的、行为化的系统的“控制”性 质,它规定了对象模型中的对象的合法变化序列。 功能模型。功能模型表示变化的系统的“功能”性质,它指明 了系统应该“做什么”,因此更直接地反映了用户对目标系统 的需求。
软件工程面向对象分析技术
的 个问题,才能最终把模型建立进来。
基
本
过
程
前一页
需求陈述
主
要
▪ 书写要点
内 容
▪ 例子
前一页
书写要点
需求陈述的内容包括:
需 求
• 问题范围
陈
• 功能范围
述
• 性能需求
• 应用环境
• 假设条件等
前一页
书写要点
需
求
书写需求陈述时,应该慎重选用名 词、动词、形容词和同义词;不可将实
陈 际需求和设计混为一谈。
软件工程学系列
软件工程面向对象分析技术
面向对象分析
分析的过程都是通过理解、表达和验证,提 取系统需求的过程。
首先,系统分析员通过与用户及领域专家的 充分交流,力求完全理解用户需求和该应用领域 的背景知识,并用某种无二义性的方式把这种理
解表达成文档资料。分析过程得出的最重要的文 档资料是软件需求规格说明(在面向对象分析中, 主要由对象模型、动态模型和功能模型组成)。
型,取款额,账单,访问。
前一页
建 立 对 象 模 型
前一页
筛选的标准
冗余:
如果两个类表达了同样的信息,则保留 在此问题域中最富于描述力的名称。
例如:用非正式分析法得出了34个候选 的类,其中储户与用户,现金兑换卡与磁卡 及副本分别描述了相同的二类信息,因此, 应该去掉“用户”、“磁卡”、“副本”等 冗余的类,仅保留“储户”和“现金兑换卡” 这两个类 。
对 能促使分析员考虑问题域的边缘情况,有
象 助于发现那些尚未被发现的类—&—对象。
模
在分析确定关联的过程中,不必花过
型
多的精力去区分关联和聚集。事实上,聚 集不过是一组特殊的关联,是关联的一个
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
复习
1.软件生命周期的几个阶段
软件生命周期主要包括以下几个阶段:
需求分析(Requirement Analysis);
软件设计(Software Design);
编码(Coding/Programming);
测试/调试(Testing/Debug);
运行/维护(Running/Maintenance)
2.述说Rational Unified Process的三个核心特征
RUP的基本特征:
(1)受控的迭代(Iterative)式增量(Incremental)开发
(2)用例(Use Cases)驱动
(3)以软件体系结构为中心
3.简述软件开发过程的实质
软件开发过程的实质:在开发过程中定义并构建一系列模型,通过这些模型越来越详细地描述系统,直到对需求的充分了解,能够开始编程。
4.UML的“4+1”视图
Use Case 视图:用于描述系统的功能集,它是从系统使用者的角度出发,对系统的抽象表示。
它只考虑系统提供什么样的功能。
包括以下图:用例图、序列图、协作图和活动图。
Logical 视图:用来表示系统的概念设计、详细设计、子系统结构、动态模型等,包括类图、包的组织方式。
包括以下图:类图、对象图、包图和状态图。
Process视图:与logical视图相似,侧重于描述系统的线程和进程,对系统中重要对象的同步机制和通讯过程进行描述。
Development 视图:描述代码组件的组织方式。
包括:Component图。
Deployment 视图:描述部署系统的物理结构图,包括系统硬件、软件构件的拓扑结构。
5.用例图的三要素
用例图组成的三要素:
用例(Use Case):描述的是用户可见的需求,一个具体的用户目标
参与者(Actor):使用系统的人或其他系统
参与者与用例之间的关系(Relationship)
6.简述用例建模的步骤
识别Actor;
捕获系统功能特性;
合并功能特性获得用例;
绘制用例图;
细化用例描述;
7.列举三种用例之间的关系
用例之间的关系:
泛化(Generalization):抽取一些用例共同的属性,定义一个基础用例;
包含(include):一个用例的执行要用到另外的用例;
扩展(extend):把新的用例(功能)插入到已有用例(基础用例);
8.根据下图阐述包之间的关系。
改动Account包中的元素时,需要注意什么问题。
(注:如果A包依赖B包,表示B包中的元素发生修改,则要检查A包中的元素是否也需要修改,反之是不需要的)
因为Customer包依赖Account包,当Account中的元素发生修改时,应当先检查Customer包中的元素是否也需要修改,如果Customer包的元素不需要修改,则相应地也不用修改Loan包中的元素,如果Customer包中的元素发生修改时,因为Loan包依赖Customer 包,则要检查Loan包中的元素是否也需要修改。
9.RUP把系统类划分的三种类型
RUP中把系统类划分为三大类型(stereotype):边界类(boundary)、控制类(Controller)、实体类(Entity);
boundary:处于系统与外界的交界处,通常用来完成参与者与系统之间的交互。
Controller:协调控制其他类的工作,主要用来体现程序的执行逻辑。
Entity:描述具体的实现,维护数据,通常映射到数据库基表或文件。
10.列举类之间的关系
泛化(Generalization):表示类之间的继承;
关联(Association):对象之间发生的关系;
聚合(Aggregation):整体与局部;
组成(Composition):强聚合关系;
依赖(Dependency):一个对象的方法要用到另外的对象作为参数;
抽象类&接口;
11.比较描述用例的事件流(Flow of Events)和活动图(Activity Diagram)的异同
12.简述时序图(Sequence Diagram)和合作图(Collaboration Diagram)的异同
时序图是按照时间的先后顺序来描述对象之间的交互过程;
与顺序图类似,也是用于描述对象之间的交互关系;
两种描述的内容相同(语义相同),都是用于描述系统的动态特性,只是表现形式不同;
合作图强调交互对象的组织,对于一些复杂的交互,适合采用合作图;
13.用包组织的方式举出一种典型的系统设计架构
案例:
1.大学选课系统是与学生有着紧密的联系的系统。
学生可以登录该系统选修课程,查看分数。
教授可以登录到系统选择课程授课,提交学生成绩。
学校另有一个系统里面保存有课程目录信息,选课系统需要和课程目录系统通讯以取得课程目录信息。
分析其UML模型(actor:学生、教师、课程目录系统;学生用例:登陆、查看分数、选修课程;老师用例:登陆、递交学生成绩、选择课程。
然后画出用例模型图)
采用用例驱动的方法分析需求的主要任务是识别参与者和用例,并建立用例模型,主要分为以下三个部分。
(一)识别参与者(角色)
参与者表示与系统进行交互的任何人或物。
可以包括人(不只是最终用户)、外部系统和其它机构。
通过分析选课系统的功能需求,确定有以下三个参与者:
(1)学生:在系统中申请注册讨论班的人
(2)教师:完成验证注册信息的人或外部系统
(3)课程目录系统:指导或协助讨论班和管理学生成绩
(二)识别用例(用况)
用例是一系列活动,描述真实世界中参与者与系统相互交互的方式。
通过分析选课系统的功能需求,确定有如下用例:
(1)学生用例:
1)登陆
2)查看分数
3)选修课程
(2)老师用例:
1)登陆
2)递交学生成绩
3)选修课程
(三)建立用例模型
2.软件学院暑期短学期开设实训课,聘请的每位教师分别承担一门实训课,每位学生只能选其中的一门课程,每门课程的人数在40-60人之间(这段描述中有如下实体:学生、实训课程、老师,老师和课程是一对一的关系,课程和学生是1对多的关系,然后建立类图模型)
静态建模主要分为两步:
1)定义类
2)确定类的名字、属性和操作,建立类图。
第1步:识别分析类。
分析用例模型的每个用例,确定实现用例的类,分析每个类的职责、属性和关联。
将参与用例实现的类收集到一个类图中。
界面类——描述系统与角色之间的接口。
控制类——在分析模型内表示协调、顺序、事务处理以及控制其他对象的类。
实体型——为需要长久保存的信息进行建模的类。
第2步构造类图。