面向对象方法



在面向对象方法中,重点在于将信息系统的结构和行为捕获到小型模块中,这些模块结合了数据和过程。面向对象设计(OOD)的主要目标是通过使其更易用,来提高系统分析和设计的质量和生产力。

在分析阶段,OO模型用于填补问题和解决方案之间的差距。它在系统不断进行设计、适应和维护的情况下表现良好。它识别问题域中的对象,并根据数据和行为对它们进行分类。

OO模型在以下方面具有优势:

  • 它以低成本促进系统更改。

  • 它促进了组件的重用。

  • 它简化了集成组件以配置大型系统的问题。

  • 它简化了分布式系统的设计。

面向对象系统的元素

让我们了解一下OO系统的特征:

  • 对象 - 对象是问题域中存在的事物,可以通过数据(属性)或行为来识别。所有有形实体(学生、病人)和一些无形实体(银行账户)都被建模为对象。

  • 属性 - 它们描述有关对象的信息。

  • 行为 - 它指定对象可以做什么。它定义对对象执行的操作。

  • - 类封装了数据及其行为。具有相似含义和目的的对象被组合在一起作为类。

  • 方法 - 方法确定类的行为。它们只不过是对象可以执行的动作。

  • 消息 - 消息是从一个对象到另一个对象的函数或过程调用。它们是发送到对象以触发方法的信息。本质上,消息是从一个对象到另一个对象的函数或过程调用。

面向对象系统的特性

面向对象系统具有几个强大的特性,如下所述。

封装

封装是信息隐藏的过程。它只是将过程和数据组合成一个实体。对象的的数据对系统其余部分隐藏,并且只能通过类的服务访问。它允许改进或修改对象使用的方法,而不会影响系统的其他部分。

抽象

它是获取或选择必要的方法和属性以指定对象的过程。它侧重于相对于用户视角的对象的基本特征。

关系

系统中的所有类都彼此相关。对象不是孤立存在的,它们与其他对象存在关系。

对象关系有三种类型:

  • 聚合 - 它表示整体与其部分之间的关系。

  • 关联 - 在这里,两个类以某种方式相关或连接,例如一个类与另一个类一起执行任务,或一个类作用于另一个类。

  • 泛化 - 子类基于父类。它表明两个类相似,但存在一些差异。

继承

继承是一项强大的功能,它允许通过继承现有类的属性和/或操作来从现有类创建子类。

多态和动态绑定

多态性是能够采用多种不同形式的能力。它适用于对象和操作。多态对象是指其真实类型隐藏在超类或父类中的对象。

在多态操作中,操作可能由不同类的对象以不同的方式执行。它允许我们仅通过了解对象的共同属性来操作不同类的对象。

结构化方法与面向对象方法

下表说明了面向对象方法与传统结构化方法的不同之处:

结构化方法 面向对象方法
它使用自顶向下的方法。 它使用自底向上的方法。
程序被分成多个子模块或函数。 程序通过具有多个类和对象来组织。
使用函数调用。 使用消息传递。
软件重用不可行。 可重用。
结构化设计编程通常留到最后阶段。 面向对象设计编程与其他阶段同时进行。
结构化设计更适合离岸外包。 它适合内部开发。
它显示了从设计到实现的清晰过渡。 从设计到实现的过渡不太清晰。
它适用于实时系统、嵌入式系统以及对象不是最有用的抽象级别的项目。 它适用于大多数业务应用程序、游戏开发项目,这些项目预计会被自定义或扩展。
DFD和E-R图对数据进行建模。 类图、序列图、状态图和用例图都有贡献。
在此,由于阶段清晰可识别,因此可以轻松管理项目。 在这种方法中,由于阶段之间的过渡不确定,因此项目可能难以管理。

统一建模语言 (UML)

UML是一种可视化语言,允许您对流程、软件和系统进行建模,以表达系统架构的设计。它是一种用于以面向对象的方式设计和记录系统的标准语言,允许技术架构师与开发人员进行沟通。

它被定义为由对象管理组创建和分发的规范集。UML是可扩展的。

UML的目标是提供一套通用的面向对象术语和图表技术词汇,该词汇足够丰富,可以对从分析到实施的任何系统开发项目进行建模。

UML由以下组成:

  • - 它是流程、系统或其某些部分的图形表示。

  • 符号 - 它包含在图中一起工作的元素,例如连接器、符号、注释等。

类UML符号示例

Class Notation

实例图-UML符号

UML Notation

对对象执行的操作

对对象执行以下操作:

  • 构造函数/析构函数 - 创建类的新的实例并删除类的现有实例。例如,添加新员工。

  • 查询 - 访问状态而不更改值,没有副作用。例如,查找特定员工的地址。

  • 更新 - 更改一个或多个属性的值并影响对象的状态,例如,更改员工的地址。

UML的用途

UML对于以下目的非常有用:

  • 建模业务流程
  • 描述系统架构
  • 显示应用程序结构
  • 捕获系统行为
  • 建模数据结构
  • 构建系统的详细规范
  • 草绘想法
  • 生成程序代码

静态模型

静态模型显示系统的结构特征,描述其系统结构,并强调构成系统的各个部分。

  • 它们用于定义类名、属性、方法、签名和包。

  • 表示静态模型的UML图包括类图、对象图和用例图。

动态模型

动态模型显示系统的行为特征,即系统如何响应外部事件。

  • 动态模型识别所需的对象以及它们如何通过方法和消息协同工作。

  • 它们用于设计系统的逻辑和行为。

  • UML图表示动态模型,包括序列图、通信图、状态图、活动图。

面向对象系统开发生命周期

它包括三个宏过程:

  • 面向对象分析 (OOA)
  • 面向对象设计 (OOD)
  • 面向对象实现 (OOI)
Object Oriented Life Cycle

面向对象系统开发活动

面向对象系统开发包括以下阶段:

  • 面向对象分析
  • 面向对象设计
  • 原型设计
  • 实施
  • 增量测试

面向对象分析

此阶段涉及确定系统需求并了解系统需求,以构建用例模型。用例是描述用户和计算机系统之间交互的场景。此模型表示用户需求或用户对系统的看法。

它还包括识别类及其与问题域中其他类的关系,这些类构成应用程序。

面向对象设计

此阶段的目标是设计和细化在分析阶段、用户界面和数据访问中识别的类、属性、方法和结构。此阶段还识别和定义支持实现需求的其他类或对象。

原型设计

原型设计能够充分了解实现系统某些功能的难易程度。

它还可以让用户有机会评论设计的可用性和实用性。它可以进一步定义用例并使用例建模更容易。

实施

它使用基于组件的开发 (CBD) 或快速应用程序开发 (RAD)。

基于组件的开发 (CBD)

CODD 是一种将各种技术(如 CASE 工具)应用于软件开发过程的工业化方法。应用程序开发从定制开发转向组装预构建、预测试、可重用的软件组件,这些组件可以相互协作。CBD 开发人员可以组装组件以构建完整的软件系统。

快速应用程序开发 (RAD)

RAD 是一套工具和技术,可用于比传统方法更快地构建应用程序。它不替代 SDLC,而是对其进行补充,因为它更侧重于过程描述,并且可以与面向对象的方法完美结合。

其任务是快速构建应用程序并通过 Visual Basic、PowerBuilder 等工具增量实现用户需求设计。

增量测试

软件开发及其所有活动(包括测试)都是一个迭代过程。因此,如果我们等到产品完全开发完成后再进行测试,这可能会是一笔昂贵的开销。在这里,增量测试发挥作用,产品在开发的不同阶段进行测试。

广告