- 系统分析与设计教程
- 系统分析与设计 - 首页
- 系统分析与设计 - 概述
- 系统分析和系统设计的区别
- 系统分析与设计 - 通信协议
- 系统设计中的横向和纵向扩展
- 系统设计中的容量估算
- Web服务器和代理在系统设计中的作用
- 集群和负载均衡
- 系统开发生命周期
- 系统开发生命周期
- 系统分析与设计 - 需求确定
- 系统分析与设计 - 系统实施
- 系统分析与设计 - 系统规划
- 系统分析与设计 - 结构化分析
- 系统设计
- 系统分析与设计 - 设计策略
- 系统分析与设计 - 软件部署
- 使用Docker的软件部署示例
- 功能性需求与非功能性需求
- 数据流图(DFD)
- 数据流图 - 它是什么?
- 数据流图 - 类型和组成部分
- 数据流图 - 开发
- 数据流图 - 平衡
- 数据流图 - 分解
- 系统设计中的数据库
- 系统设计 - 数据库
- 低级设计(LLD)
- 系统设计 - 身份验证与授权
- 系统实施
- 输入/输出和表单设计
- 测试和质量保证
- 实施与维护
- 系统安全与审计
- 面向对象方法
面向对象方法
在面向对象方法中,重点在于将信息系统的结构和行为捕获到小型模块中,这些模块结合了数据和过程。面向对象设计(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、PowerBuilder 等工具增量实现用户需求设计。
增量测试
软件开发及其所有活动(包括测试)都是一个迭代过程。因此,如果我们等到产品完全开发完成后再进行测试,这可能会是一笔昂贵的开销。在这里,增量测试发挥作用,产品在开发的不同阶段进行测试。