面向对象方法
在面向对象方法中,重点是将信息系统的结构和行为捕获到结合数据和流程的小模块中。面向对象设计 (OOD) 的主要目的是通过提高系统分析和设计的质量和生产力来提高其可用性。
在分析阶段,OO 模型用于填补问题和解决方案之间的空白。它在系统持续进行设计、调整和维护的情况下表现良好。它识别问题域中的对象,并根据数据和行为对其进行分类。
OO 模型在以下方面具有优势 −
它以低成本促进了系统的变更。
它促进了组件的重用。
它简化了集成组件以配置大型系统的问题。
它简化了分布式系统的设计。
面向对象系统的元素
让我们来看看 OO 系统的特征 −
对象 − 对象是存在于问题域中的东西,可以通过数据(属性)或行为来识别。所有有形实体(学生、患者)和一些无形实体(银行账户)都建模为对象。
属性 − 它们描述有关对象的信息。
行为 − 它指定对象可以做什么。它定义对对象执行的操作。
类 − 类封装了数据及其行为。具有相似含义和目的的对象组合在一起作为类。
方法 − 方法决定类的行为。它们只不过是对象可以执行的操作。
消息 − 消息是从一个对象到另一个对象的函数或过程调用。它们是发送给对象以触发方法的信息。本质上,消息是从一个对象到另一个对象的函数或过程调用。
面向对象系统的特征
面向对象系统具有几个很棒的功能,下面将进行讨论。
封装
封装是信息隐藏的过程。它只是将过程和数据组合成一个实体。对象的数据对系统的其余部分隐藏,只能通过类的服务获得。它允许改进或修改对象使用的方法,而不会影响系统的其他部分。
抽象
它是采取或选择必要方法和属性来指定对象的过程。它关注对象相对于用户视角的基本特征。
关系
系统中的所有类都相互关联。对象并不是孤立存在的,它们存在于与其他对象的关系中。
对象关系有三种类型 −
聚合 − 它表示整体与其部分之间的关系。
关联 − 在这种情况下,两个类以某种方式相关或连接,例如一个类与另一个类协作执行任务或一个类作用于另一个类。
泛化 − 子类基于父类。它表示两个类相似但有一些差异。
继承
继承是一项很棒的功能,它允许通过继承现有类的属性和/或操作从现有类创建子类。
多态性和动态绑定
多态性是采用多种不同形式的能力。它适用于对象和操作。多态对象是真实类型隐藏在超类或父类中的对象。
在多态操作中,不同类的对象可以以不同的方式执行操作。它允许我们通过仅了解不同类的共同属性来操纵它们。
结构化方法与面向对象方法
下表解释了面向对象方法与传统结构化方法的不同之处 −
结构化方法 | 面向对象方法 |
---|---|
它适用于自上而下的方法。 | 它适用于自下而上的方法。 |
程序分为多个子模块或功能。 | 程序通过具有多个类和对象来组织。 |
使用函数调用。 | 使用消息传递。 |
无法重用软件。 | 可以重用。 |
结构化设计编程通常留到最后阶段。 | 面向对象设计编程与其他阶段同时完成。 |
结构化设计更适合离岸外包。 | 它适合内部开发。 |
它显示了从设计到实现的清晰过渡。 | 从设计到实现的过渡不太清晰。 |
它适用于实时系统、嵌入式系统和对象不是最有用的抽象级别的项目。 | 它适用于大多数商业应用程序、游戏开发项目,这些项目需要定制或扩展。 |
DFD & E-R 图对数据进行建模。 | 类图、序列图、状态图和用例均有贡献。 |
在此方法中,由于阶段清晰可辨,因此可以轻松管理项目。 | 在此方法中,由于阶段之间的转换不确定,项目可能难以管理。 |
统一建模语言 (UML)
UML 是一种可视化语言,可让您对流程、软件和系统进行建模,以表达系统架构的设计。它是一种以面向对象的方式设计和记录系统的标准语言,允许技术架构师与开发人员进行沟通。
它被定义为由对象管理组创建和分发的一组规范。 UML 是可扩展和可伸缩的。
UML 的目标是提供面向对象术语和图表技术的通用词汇表,这些词汇表足够丰富,可以对从分析到实施的任何系统开发项目进行建模。
UML 由 − 组成
图表 − 它是流程、系统或其某些部分的图形表示。
符号 − 它由在图表中协同工作的元素组成,例如连接器、符号、注释等。
类的 UML 符号示例
实例图 - UML 符号
对对象执行的操作
对对象执行以下操作 −
构造函数/析构函数 − 创建类的新实例并删除类的现有实例。例如,添加新员工。
查询 − 访问状态而不更改值,没有副作用。例如,查找特定员工的地址。
更新 −更改一个或多个属性的值并影响对象的状态。例如,更改员工的地址。
UML 的用途
UML 对于以下目的非常有用 −
- 对业务流程进行建模
- 描述系统架构
- 显示应用程序结构
- 捕获系统行为
- 对数据结构进行建模
- 构建系统的详细规范
- 勾勒想法
- 生成程序代码
静态模型
静态模型显示系统的结构特征,描述其系统结构,并强调组成系统的部分。
它们用于定义类名、属性、方法、签名和包。
表示静态模型的UML图包括类图、对象图和用例图。
动态模型
动态模型显示系统的行为特征,即系统如何响应外部事件。
动态模型识别所需的对象以及它们如何通过方法和消息协同工作。
它们用于设计系统的逻辑和行为。
表示动态模型的UML图包括序列图、通信图、状态图、活动图。
面向对象系统开发生命周期
它由三个宏观过程组成−
- 面向对象分析 (OOA)
- 面向对象设计 (OOD)
- 面向对象实现 (OOI)
面向对象系统开发活动
面向对象系统开发包括以下阶段 −
- 面向对象分析
- 面向对象设计
- 原型设计
- 实施
- 增量测试
面向对象分析
此阶段涉及确定系统需求,并了解系统需求,构建用例模型。用例是描述用户与计算机系统之间交互的场景。此模型表示用户需求或用户对系统的看法。
它还包括识别构成应用程序的类及其与问题域中其他类的关系。
面向对象设计
此阶段的目标是设计和改进在分析阶段、用户界面和数据访问期间识别的类、属性、方法和结构。此阶段还识别和定义支持实现需求的其他类或对象。
原型设计
原型设计能够充分了解实现系统某些功能的难易程度。
它还可以让用户有机会评论设计的可用性和实用性。它可以进一步定义用例并使用例建模更加容易。
实施
它使用基于组件的开发 (CBD) 或快速应用程序开发 (RAD)。
基于组件的开发 (CBD)
CODD 是一种工业化的软件开发过程方法,使用各种技术,如 CASE 工具。应用程序开发从定制开发转变为组装预先构建、预先测试、可重复使用的相互操作的软件组件。 CBD 开发人员可以组装组件来构建完整的软件系统。
快速应用程序开发 (RAD)
RAD 是一套工具和技术,可用于比传统方法更快地构建应用程序。它不会取代 SDLC,而是对其进行补充,因为它更注重流程描述,并且可以与面向对象方法完美结合。
其任务是快速构建应用程序,并通过 Visual Basic、Power Builder 等工具逐步实现用户需求设计。
增量测试
软件开发及其所有活动(包括测试)都是一个迭代过程。因此,如果我们等到产品完全开发后才进行测试,这可能是一项昂贵的任务。这里需要进行增量测试,在产品开发的各个阶段对其进行测试。