面向对象技术

合集下载

第四章_面向对象技术

第四章_面向对象技术

4. 具有良好的可重用性
由于对象所具有的封装性和信息隐蔽,具有很强的 独立性。
4.1.2 面向对象的概念
理解面向对象的基本概念对于学习和掌握面向 对象的开发方法是十分重要的。 对象(Object)
类(Class)
继承(Inheritance) 消息(Information) 多态性(Polymorphism) 永久对象(Persistent object)
4.3 面向对象的分析
面向对象分析OOA(Object-Oriented Analysis)的 目标是完成对所求解问题的分析,确定系统“作什 么”,并建立系统的模型。 基本概念: 问题域(problem domain) — 被开发系统的应用领域。 系统责任(system responsibilities) — 所开发的系统应 具备的职能。 OOA的基本任务 运用面向对象的方法,对问题域和系统责任进行 分析和理解,找出描述它们的类和对象,定义其属 性和操作,及其结构、静态联系和动态联系。
4.3.1 OOA的分析过程
获取用户基本需求 标识类和对象
定义类的结构和层次 表示类(对象)间的关系
为对象行为建模
图4.7 OOA分析过程
4.3.2 OOA模型
基本模型 (类图)
交 对象层 主
互 特征层
图 关系层 详 细 说 明 图4.8 OOA模型与详细说明 基本模型是一个类图(class diagram), 是以直观的方式表达系统最重要的 信息。OOA基本模型的三个层次分 别描述了:系统中应设哪几类对象, 每类对象的内部构成,对象与外部 的关系。
4.4.1 OOD基本任务
1. 系统设计 将分析模型划分为若干子系统,子系统应该具有 良好的接口,子系统内的类相互协作。标识问题本身 的并发性,为子系统分配处理器。

面向对象技术在软件开发中的应用

面向对象技术在软件开发中的应用

面向对象技术在软件开发中的应用随着计算机技术的发展和计算机的广泛应用,软件应用越来越广泛,人们对于软件开发的要求也越来越高。

在软件开发中,面向对象技术被广泛应用,成为开发的重要手段之一。

本文将详细介绍面向对象技术在软件开发中的应用。

一、面向对象技术的概念面向对象技术是一种基于对象的程序设计方法,它将系统看作一组对象的集合,每个对象都有自己的状态和行为,通过对对象的状态和行为进行抽象和封装,实现代码的重用和更好的可维护性。

面向对象技术主要包括以下三个特性:封装:在面向对象技术中,每个对象都有自己的数据和方法,并将其封装起来,以避免其他对象直接访问和改变它们的值。

继承:通过继承可以将一个类的属性和方法继承到另一个类中,实现代码的复用,减少代码的冗余。

多态:多态是指同一种方法可以被不同的对象以不同方式调用,通过多态可以提高代码的可扩展性。

二、面向对象技术在软件开发中有以下几个常见的应用:1.面向对象分析(OOA)面向对象分析(OOA)是一种软件开发方法,其主要目的是将问题域转换为面向对象的模型。

通过面向对象分析,可以将需求变成可执行的模型,同时有效的抵制需求波动造成的影响。

在OOA中,首先需要对问题进行分析,确定系统的需求和功能,然后通过细化这些需求和功能,逐步将其转化为面向对象的模型。

最终得到的模型就可以直接映射到程序代码中。

2.面向对象设计(OOD)面向对象设计(OOD)是一种根据面向对象技术的相关规定对编程进行设计的方式。

这种设计方式将业务领域中的复杂性进行分析与设计,将其转化为面向对象的模型。

在面向对象设计中,首先要创建一个类图,根据需求,在类图上添加所需的类,然后建立类之间的关系。

在建立好类图之后,开始设计每个类的成员方法和属性,最终得到模型,可以直接映射到程序代码中。

3.面向对象编程(OOP)面向对象编程(OOP)是一种开发应用程序的编程技术,通过面向对象编程,可以将任务的操作对象看作是一个独立的对象。

面向对象技术概述

面向对象技术概述

1.1 知识要点1.面向对象技术的基本概念∙面向对象技术是以对象为基础、以事件或者消息来驱动对象执行处理的程序设计技术。

∙对象是包含客观事物特征的抽象实体,是属性和行为的封装体。

在程序设计领域,可以用“对象=数据+作用于这些数据上的操作”这一公式来表达。

∙类是对具有相同属性和行为的一组对象的抽象描述。

∙事件是系统产生的动作或是运行应用程序产生的动作。

事件通过消息描述,消息是描述事件发生的信息。

∙消息是对象间交互的手段,是要求某个对象执行某个操作的规格说明。

2.面向对象技术的基本特征∙抽象性是指忽略事物中与当前目标无关的非本质特征,而强调本质特征的特征。

∙封装性是指把对象的属性和行为封装在一起,并尽可能隐藏对象的内部细节的特征。

∙继承性是指特殊类的对象拥有其一般类的属性和行为的类与类之间层次关系的特征。

∙多态性是指不同对象收到相同消息时可以产生多种不同的行为方式的特征。

【重点】∙面向对象技术的概念。

∙类与对象的概念及关系。

∙面向对象与面向过程程序设计的区别。

∙面向对象技术的基本特征。

面向对象技术与Visual C++学习指导2【难点】∙类与对象的概念。

∙面向对象与面向过程程序设计的区别。

∙面向对象技术的基本特征。

1.2 习题解答1.什么是面向对象技术?【问题解答】面向对象技术是一种以对象为基础,以事件或消息来驱动对象执行处理的程序设计技术。

它具有抽象性、封装性、继承性及多态性。

2.面向对象与面向过程程序设计有什么不同?【问题解答】面向对象与面向过程程序设计有如下不同:(1)面向过程程序设计方法采用函数(或过程)来描述对数据的操作,但又将函数与其操作的数据分离开来;面向对象程序设计方法将数据和对数据的操作封装在一起,作为一个整体来处理。

(2)面向过程程序设计方法以功能为中心来设计功能模块,难于维护;而面向对象程序设计方法以数据为中心来描述系统,数据相对于功能而言具有较强的稳定性,因此更易于维护。

(3)面向过程程序的控制流程由程序中预定顺序来决定;面向对象程序的控制流程由运行时各种事件的实际发生来触发,而不再由预定顺序来决定,更符合实际需要。

简述面向对象技术的三大机制。

简述面向对象技术的三大机制。

简述面向对象技术的三大机制。

面向对象技术(Object-Oriented Technology)是一种常用的编程范式,它基于对象的概念来设计程序和系统。

面向对象技术的三大机制分别是封装(Encapsulation)、继承(Inheritance)和多态(Polymorphism)。

封装是面向对象技术的基本原则之一,它将数据和操作封装在对象内部,对象对外部的数据和操作进行隐藏,只提供有限的接口供外部访问。

通过封装,对象可以控制对自身数据的访问,确保数据的安全性和完整性。

封装使得对象的实现细节对外部隐藏,提高了系统的可维护性和可扩展性。

同时,封装也使得对象之间的耦合度降低,各对象之间更加独立,提高了系统的灵活性。

继承是面向对象技术的另一个重要特性,它允许一个类(子类)继承另一个类(父类)的属性和方法。

通过继承,子类可以重用父类的代码,减少了重复编码的工作量,提高了代码的复用性和可维护性。

同时,继承也体现了类之间的层次关系,使得程序结构更加清晰和易于理解。

通过继承,可以实现代码的统一管理和扩展,提高了系统的可扩展性和可维护性。

多态是面向对象技术的另一重要机制,它允许不同的对象对同一消息作出不同的响应。

通过多态,可以实现接口的统一,提高了代码的灵活性和可重用性。

多态使得程序可以根据不同的对象类型调用不同的方法,实现了代码的动态绑定,提高了程序的可扩展性和可维护性。

多态是面向对象技术的一个重要特点,它使得程序更加灵活和易于扩展,提高了程序的可读性和可维护性。

封装、继承和多态是面向对象技术的三大机制,它们共同构成了面向对象技术的基本特性。

通过封装,可以保护对象的数据和实现细节;通过继承,可以实现代码的重用和扩展;通过多态,可以实现接口的统一和动态绑定。

这三大机制相互配合,共同构成了面向对象技术的核心思想,为软件开发提供了强大的支持和工具。

面向对象技术已成为现代软件开发的主流范式,它不仅提高了程序的可维护性和可扩展性,还提高了程序的质量和效率,是软件开发领域的一项重要技朧。

面向对象技术与UML

面向对象技术与UML

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

面向对象编程技术的优势和缺陷

面向对象编程技术的优势和缺陷

面向对象编程技术的优势和缺陷一、引言面向对象编程技术(Object-Oriented Programming,OOP),是一种广泛应用于软件开发的编程范式。

它的最大特点是将真实世界中的对象抽象成软件世界中的类,通过将属性和行为封装在一起来实现对真实世界的模拟。

本文将分析面向对象编程技术的优势和缺陷。

二、优势1.可重用性面向对象编程技术中,类可以被多次实例化,每个实例化的对象都可以应用其所属类中的属性和方法,从而实现了代码的可重用性,使得软件的开发更加高效、简便、快速。

2.可扩展性维护和升级软件几乎是软件开发生命周期的一部分。

由于面向对象的开发方式,可以将一个程序划分成多个相互独立、可以被修改和升级的模块,而不破坏程序的整体结构。

这样就可以避免了因为添加或删除代码而导致的程序重构,减小了程序开发和维护的难度。

3.封装性封装是面向对象编程语言中最常见的编程技术,它通过合理划分类的行为和状态并将它们放在一起,使得访问这些行为和状态的其他对象必须通过公共接口进行,从而保障了类的封闭性和单一职责原则。

这种强化了数据的安全性、可维护性和可重用性的封装性,可以防止其他模块直接操作访问私有数据,提高了程序的安全性和稳定性。

三、缺陷1.异构性的处理虽然类似的对象可以放在同一个类中,但不能强制所有的对象都符合相同的结构,不同的对象可能需要不同的方法,以及不同的数据属性等等。

这就要求程序员要真正理解不同对象的特点,并为不同的对象编写出可以工作的代码。

2.继承和多态的理解和实现继承和多态是面向对象编程中的关键概念。

如果在使用过程中没有理解和应用好继承和多态的概念,会导致代码的复杂性和不可扩展性。

另一方面,继承和多态的实现也不容易,需要许多必要的调整和改进,以避免在程序开发时产生适当的冲突。

3.内存的消耗在面向对象编程中,因为需要多次实例化类,类的对象、成员变量、方法占用比较大的内存空间。

在大规模软件开发中,内存使用的多少可能会成为性能瓶颈。

面向对象技术

面向对象技术

面向对象的软件过程


传统的和面向对象的软件生命周期模型 面向对象软件生命周期中的主要活动 完全面向对象的软件生命周期的概念
传统的软件生命周期模型


内部视图

把系统当作一个黑盒子, 从外部来描述系统,这 种模型就是外部模型 由于这是从外部来观察 系统得到的结果,又称 之为外部视图。 外部视图说明了系统是 什么,用来定义需求
外部视图


作用


作用

建模技术的表示法和语义学



建模技术两组成部分 表示方法,它能使分析人员、设计人员、编程人员、管理 人员以及用户彼此沟通,用得最多的,也是最直观的表示 方法是图形表示法 语义学。语义学可用自然语言来描述,也可用形式语言来 描述,或者两者相结合,这要根据建模技术的严格程度而 定。 模型元素 通过建模技术中的表示方法能使我们从要被建模的系统中 抽象出各种元素,这些元素称为模型元素,其目的是提供 人们可以理解的表示。 建模元素 在说明各种建模技术的语义学时,还将用到一些概念和符 号,它们在最后组成的软件系统模型中不直接表现出来, 这些元素称为建模元素。
面向对象技术的组成部分

明确给出面向对象的基本概念

对象、类、继承、消息和封装等基本概念 定义面向对象技术中用到的扩展的概念如建模、系统行为 等。 表示方法,使分析人员、设计人员、编程人员、管理人员 以及用户彼此沟通。 这种技术的语义学。语义学可用自然语言来描述,也可用 形式语言来描述。 包括对软件生命周期各阶段的描述,对各个阶段的进一步 细化,以及在生命周期各阶段如何运用建模技术和面向对 象语言来完成各阶段的任务。
消息性质和类型

面向对象技术(答案)

面向对象技术(答案)

●下面关于面向对象方法中消息的叙述,不正确的是____(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章 面向对象技术与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》

《面向对象技术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章 面向对象技术概述

第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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
自顶向下,逐步求精
程序设计侧面
小结构:顺序,选择,循环 大结构:过程抽象,避免全局变量
回顾:结构化软件开发
“结构化(structured)”的合理性
管理复杂性的有效手段
分解, 抽象, 层次
Correctness
规约与实现
Extendibility? Reusability?
从面向过程到面向对象
代数规范
语法部分
ADT名 运算(函数)的定义域和值域
公理部分
给出一组刻画各运算之间相互关系的方程来定义各 运算的含义
Abstract Data Types
抽象数据类型
摘要
从面向过程到面向对象 如何规约对象?——抽象! Abstract data type ADT与软件开发
回顾:结构化软件开发
何谓“结构化(structured)”开发方法?
The Big Name “E.W. Dijkstra”
开发过程侧面
对象刻画问题
主要问题:如何描述程序对象(数据结构)?
Completely Unambiguously Without overspecifying?
(Remember information hiding)
A stack, concrete object
capacity
(array_up)
Extendibility, Continuity: 对象更直接对应问题 空间的概念,因而较“功能”更稳定.
现实世界 问题世界 软件世界
Reality 抽象
例:考虑一个工资系统
一开始,客户说ee information
Hours worked
Produce Paychecks
Fortran, Algol: 整型、实数、布尔数
第二阶段:从基本类型到用户自定义类型
Algol68, Pascal
第三阶段:从用户自定义类型到抽象数据类型 (Abstract Data Types)-- 面向对象
模块化程序设计和模块
面向对象的分解好在何处?
Reusability: 数据(结构)及其上之操作的整 体复用,而非仅仅复用操作功能;
面向对象设计的相关问题
如何找到对象类型? 如何描述对象类型? 如何描述对象类型之间的关系和共性? 如何使用对象类型来构造程序?
对象刻画
考虑一类具有相似属性的对象而不是单个对象 定义对象的类型不是通过定义对象的物理表述,
而是通过定义它们的行为:即它们提供给外部 的服务
External, not internal view: ABSTRACT DATA TYPES
“结构化”的基本思想已经深入人心
但对于复杂、易变、交互性软件系统,以“功 能”为中心的分解方式有局限
完全自顶向下的功能分解? 线性过程式的程序组织?
应变?
The first step
程序运行:在某个数据体上施以某些操作。 两个要素
操作(功能)Functions [or: Operations, Actions] 客体(对象)Objects [or: Data]
数据类型由一个对象集合(值集合)以及在该集合 上定义的若干合法运算所组成的运算集合组成。
抽象数据类型(ADT):用数学方法定义对象集合 和运算集合,仅通过运算的性质刻画数据对象, 而独立于计算机中可能的表示方法
ADT规约方法
代数方法 模型方法
C.A.R. Hoare的前后断言方法:通过已定义的(抽象) 数据类型来给出要定义的新类型的抽象模型
数据抽象:定义了数据类型和施加于该类型对 象上的操作,并限定了对象的值只能通过使用 这些操作修改和观察。包含了2个概念:
1. 模块封装 2. 信息隐蔽
数据抽象的意义
数据抽象提供了面向对象计算的起点:系统应 该被分解为概念上的实体,实体的内部细节应 该被隐藏!
数据抽象发展
第一阶段:从无类型的二进制到基本数据类型
new n
1 representation
item (linked)
previous item
previous previous
item
“Push” operation: new (n) n.item := x n.previous := last head := n
19
Abstract Data Type
“面向对象的软件构造”含义(1)
面向对象的软件构造(OOSC)乃是基于系统所 操作之对象类型(而非系统需实现之功能)来 架构系统的途径。
Meyer: “Object-oriented software construction is the approach to system structuring that bases the architecture of software systems on the types of objects they manipulate — not on “the” function they achieve.”
Paychecks
例:考虑一个工资系统
这种功能明确的系统确实适合结构化的开发方法:自顶向 下,逐步求精。
你完美地完成了任务。
而后,极有可能,客户会跑过来跟你说:
给我加个统计报表撒 下个月我想一些人发记时工资,一些人发计件工资啊行啊,有人
每月一发,有人每周一发哦 加个个人所得税系统接口 再加个图像用户界面,用来交互查询吧 ……
count
“Push” operation: count := count + 1 representation [count] := x
representation
(array_down) free
“Push” operation: representation [free] := x free := free - 1
Action
Object
Processor
如何导出软件系统的结构?
两条途径:
从操作/功能入手 从客体/对象入手
形成两种抽象方法:
基于过程的抽象 基于数据的抽象
过程抽象 vs. 数据抽象
过程抽象:指任何一个明确定义功能的操作都 可以被使用者看作单个的实体,尽管这个操作 实际上可能由一系列更低级的操作完成
相关文档
最新文档