有人能解释一下系统设计和面向对象设计之间的区别吗?
面向对象设计涉及对象建模,并使用面向对象的概念,如抽象、封装、分解和泛化。设计包括建筑设计和概念设计。
一种设计范式是另一种的子集吗?
系统设计是将软件/应用程序作为一个整体[高级]进行设计,其中可能包括分析、建模、体系结构、组件、基础设施等。而面向对象的设计是一组定义的规则/概念,用于实现软件中的功能。
打个比方,一场足球比赛。
因此,系统设计涉及足球场、球门杆、地面草地、地面位置、地面长度/宽度、在地面上划线、记分牌、定义比赛队伍、比赛人数等的设计。
现在,以面向对象设计为例:需要如何玩游戏是由一组需要遵循的规则定义的。因此,玩家需要在定义的规则内进行游戏。因此,球员越了解这些规则,就越能在不犯规的情况下更好地比赛。类似地,面向对象概念的规则是继承、组合、抽象和封装。因此,我们对这些概念了解得越多,我们就能做出更好的设计。
@Prashant,希望能解释一下
假设您想设计一个在线购物web应用程序(如amazon.com)。因此,在制作该web应用程序之前,您必须考虑:
- 负载平衡来处理用户请求
- 数据库是否使用SQL或NOSQL
- 是否使用类似Redis的缓存
- 为不同的任务提供微服务(如通知服务、订单处理服务等)
- 监控您的web应用程序(如内存、cpu等)
- 日志记录(比如sumoLogic)
- CI/CD
因此,所有这些都将属于系统设计,因为它们是任何系统工作所必需的。
现在,一旦你完成了所有这些事情,并开始实现(编写代码)系统的任何部分,那么你就可以按照面向对象的设计来制作类、接口等。
例如,您开始实现通知微服务(比如Java),所以现在您必须设计类、接口等,为此,您可以使用面向对象的设计原则,如SOLID。
因此,我们可以说,面向对象设计是系统设计的一部分,当我们开始为系统的任何部分进行实际实现时,它就会显现出来。
系统论中的系统可以是一切。(《系统科学的面》,乔治·克利尔,1991年)系统在树上名列前茅,是其他类别的超类
总体而言,系统开发包括两个主要阶段:
1-系统分析:包括计划、需求、分析等。这些项目与系统理论中的具体方法论有关。
2-系统设计:包括设计、实施、测试、部署、维护等
正如我所说,系统可以是一切。例如:
机械系统、心理系统、社会系统、飞机系统等。每个类别都可能根据上述两个主要阶段有详细而具体的分析和设计步骤。
在计算机世界中,软件系统是系统类别之一。每种软件分析和设计方法也基于上述两个主要阶段。
此外,在软件系统中,我们有一些分析和设计的范例,如:
以结构/过程为中心
数据为中心
面向对象
面向服务
等等
它们每个都有自己的分析和设计步骤。这些步骤也基于两个主要阶段。但在细节上,他们有一些不同。
总之,系统分析和设计是所有其他类型系统的一个大局。学习系统分析和设计有助于理解所有其他系统的分析和设计,特别有助于比较和评估它们。
对象是系统的一部分。你可以认为面向对象设计是系统设计的一部分。您可以在高级(带概述)或低级(带详细信息)中设计系统。它将突出显示
- 基础设施
- 数据流管理
- 服务
- 缓存管理
- 请求/响应管理等
在进行面向对象设计时,你可能会认为你必须使用一些对象并在它们之间建立关系。但在制作对象之前,您需要设计一些类。所以实际上OOD(面向对象设计)就是
- 设计类图(可选)
- 制作一些课程
- 建立阶级关系
- 使用类创建对象
- 实现目的(基本功能和逻辑)等