系统设计与面向对象设计的区别

7

请问有人能够解释一下系统设计和面向对象设计的区别吗?

面向对象设计包括对象建模,并使用面向对象的概念,如抽象、封装、分解和泛化。这两种设计都涉及架构设计和概念设计。

其中一个设计范例是另一个的子集吗?

4个回答

5
系统设计是将软件/应用程序作为一个整体进行设计[高层次],可能包括分析、建模、架构、组件、基础设施等。而面向对象设计是一组定义的规则/概念,用于实现软件功能。
以足球比赛为类比。
因此,系统设计涉及到足球场地的设计、球门柱、草地、场地位置、长度/宽度、在地面上划线标记、计分牌、定义参赛队伍、玩家数量等。
现在,以面向对象设计为例:如何进行游戏由一组需要遵循的规则来定义。因此,玩家需要在规定的规则内进行游戏。因此,玩家对这些规则了解得越多,就能更好地玩游戏而不犯规。同样,面向对象的概念的规则有继承、组合、抽象、封装。因此,我们越了解这些概念,就能做出更好的设计。
@Prashant,希望这解释了一点。

2
假设您想设计一个在线购物网站应用程序(如amazon.com)。在制作该Web应用程序之前,您必须考虑以下几点:
  1. 负载均衡以处理用户请求
  2. 数据库是否使用SQL或NOSQL
  3. 是否使用缓存,如Redis
  4. 为不同任务制作微服务(例如通知服务、订单处理服务等)
  5. 监控您的Web应用程序(例如内存、CPU等)
  6. 记录日志(例如在sumoLogic中)
  7. CI/CD
因此,所有这些都将归入系统设计范畴,因为对于任何系统而言,它们都是必需的。
现在,一旦您确定了所有这些内容并开始实施(编写代码)系统的任何部分,那么您可以遵循面向对象的设计来制作类、接口等。
例如,您开始实施通知微服务(例如在Java中),因此现在您必须设计类、接口等,为此,您可以使用面向对象的设计原则,如SOLID。
因此,我们可以说,面向对象的设计是系统设计的一部分,在我们开始为系统的任何部分工作的实际实现时才会涉及到。

1

在系统理论中,系统可以是任何东西。(《系统科学的方面》,乔治·克利尔,1991年)系统位于树的顶部,是其他类别的超类。
总体而言,系统开发包括2个主要阶段

1- 系统分析:包括规划、需求、分析等。这些项目与系统理论中的特定方法有关。

2- 系统设计:包括设计、实现、测试、部署、维护等。

正如我所说,系统可以是任何东西。例如:
机械系统、心理系统、社会系统、飞行器系统等。每个类别可能都有基于上述2个主要阶段的详细和具体的分析和设计步骤。

在计算机世界中,软件系统是系统类别之一。 每种软件分析和设计方法也都基于上述2个主要阶段。

此外,在软件系统中,我们还有一些分析和设计范式,如:
结构/过程中心化
数据中心化
面向对象
面向服务
等等。

它们每个都有自己的分析和设计步骤。这些步骤也基于2个主要阶段,但在细节上有所不同。

总之,系统分析与设计是所有其他类型系统的大局观。学习系统分析与设计有助于理解所有其他系统的分析与设计,特别是有助于比较和评估它们。

0

对象是系统的一部分。您可以认为面向对象设计是系统设计的一部分。您可以以高层次(概述)或低层次(详细说明)设计系统。它将突出显示:

  1. 基础设施
  2. 数据流管理
  3. 服务
  4. 缓存管理
  5. 请求/响应管理等

在进行面向对象设计时,您可以考虑使用一些对象并在它们之间建立关系。但在创建对象之前,您需要设计一些类。因此,实际上面向对象设计(OOD)是:

  1. 设计类图(可选)
  2. 创建一些类
  3. 在类之间建立关系
  4. 使用类创建对象
  5. 实现目的(基本功能和逻辑)等

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接