软件工程中的面向对象生命周期模型
面向对象生命周期模型将“对象”作为软件工程过程的基础。开发团队首先观察和分析他们打算开发的系统,然后定义需求。一旦过程结束,他们就专注于识别系统的对象。现在,对象可以是任何东西;它可以具有物理存在,例如客户、汽车等。对象还构成无形元素,例如过程或项目。
面向对象生命周期模型的优势
除了增强系统性能外,面向对象编程还提供一些优势,例如:
因为它专注于数据并且易于处理问题领域。
它使用封装和数据隐藏过程,允许开发人员构建防篡改系统。
它使软件模块化,从而更容易管理和维护复杂的软件。
它允许开发人员使用现有模型创建新模块,从而节省组织的时间和开发成本。
面向对象模型的主要目标
- 面向对象分析
- 面向对象设计
- 面向对象实现
面向对象分析 (OOA)
面向对象分析包括开发团队评估系统并将需求组织为对象的过程。与传统的结构化分析相反,OOA 很大程度上依赖于高级数据,例如**用例**和**对象模型**。
用例
用例是对用户访问您的网站或应用程序时的行为方式的书面描述。它包括每个用户从进入到退出的目标。
对象模型
对象模型允许开发团队在实现或编程之前创建软件或系统架构模型。它有助于用对象和类定义软件/系统。它告知开发人员:
- 不同模型之间的交互
- 继承
- 封装
- 其他类型的面向对象接口
OOA 从分析问题领域开始,通过彻底评估给定领域中的信息来生成概念模型。有大量数据可从各种来源获得,例如:
- 正式文件
- 需求说明
- 通过利益相关者收集的主要数据
分析完成后,开发团队准备一个概念模型,描述系统的功能和需求。
面向对象设计
这是面向对象生命周期模型的下一个开发阶段,分析师在此阶段设计所需系统的整体架构。系统被划分为一组相互交互的子系统。分析师考虑系统分析中的规范。这完全是评估最终用户对新系统的期望。
根据面向对象设计,系统被认为是对象的集合,每个对象处理特定的状态数据。例如,在银行软件中,每个帐户可能具有一些具有单独数据和功能的专用对象。
面向对象设计的理念是创建一组在现实世界中看到的相互交互的对象。开发人员不是使用基于过程的结构化编程,而是通过数据结构创建对象。
每种编程语言都带有多种数据类型,每种类型都包含各种变量。同样,对象也具有一些预定义的数据类型。
面向对象设计的有用定义
类
类是指一组相似对象的集合。它被创建为一个蓝图,用于定义与对象具有某些相似性的变量和方法。
如上所述,面向对象设计与现实世界相似。假设您购买了一部智能手机。现在,您的智能手机只是世界上众多“智能手机”中的一种。我们可以将“智能手机”视为一类对象,而您的智能手机对象是该类对象的实例。智能手机具有许多共同的状态(操作系统、RAM 和主板)和行为(播放音乐、通话、消息传递)。但是,每部智能手机的状态都是独立的,可能与其他智能手机不同。
在制造智能手机时,制造商可以使用精确的蓝图来制造许多智能手机,因为它们具有共同的特征。这允许制造商更有效地创建新的蓝图。
同样,在面向对象编程中,开发人员可以使用许多相似的对象来创建蓝图。这称为类。
抽象
抽象是开发人员用来构建类的本质。开发人员观察一组相似的对象和重要的特征来定义类。抽象分为两部分——全局抽象和局部抽象。
全局抽象是静态的,为用户提供一个有限时间的接口。同时,局部抽象负责根据用户/开发人员的要求提供视图。
对象的抽象因应用程序而异。例如,在定义用户的智能手机类时,开发人员可能会设置诸如颜色、功能、价格等属性。但是,对于制造公司,开发人员可能会设置包含诸如每部智能手机的制造成本、质量控制、周转时间等属性。
继承
面向对象设计中的继承概念定义了“对象”重用的过程。开发人员可以使用类似的现有类定义新的类类型。
例如,掀背车、轿车、SUV 和四轮驱动车都是机动车辆的一种形式。因此,根据面向对象编程,我们可以将掀背车、轿车、SUV 等称为机动车辆类的子类。同样,机动车辆类是子类的超类。
现在,每个子类(轿车、掀背车、SUV)都继承了超类的一些状态(速度、节奏等)、方法和行为(制动、换挡)。但是,子类的状态和行为并不限于超类提供给它们的内容。开发人员可以根据需要向子类添加变量和方法。
面向对象实现
在此阶段,开发人员使用编程语言转换类对象以及类和代码的相互关系。这是创建数据库并为系统建立功能的阶段。
面向对象方法侧重于识别系统中的对象。开发人员仔细观察每个对象以识别特征和行为模式。开发人员确保对象完美地识别并响应事件。
让我们将智能手机屏幕视为一个对象,并将触摸特定图标视为一个事件。现在,当用户触摸图标时,屏幕会打开一个应用程序。这意味着智能手机屏幕(对象)通过打开应用程序来响应事件(触摸)。
面向对象实现方法支持三种基本模型
**对象模型** - 它描述对象及其相互关系。此模型将对象视为静态的并丢弃其动态性。
**动态模型** - 此模型侧重于与特定事件相关的各种对象的状态变化。
**功能模型** - 这描述了整个系统中数据流的变化。
对象模型描述了系统的基本元素。当所有模型组合在一起时,它代表了系统的完整功能。