类和包图模型软件逻辑设计
组件图模型实现视图
您能否通过一个非常简短的示例来阐明上述区别?
答案在于你的问题本身。你怎么看,一个软件是怎么设计的,一个软件是怎么实现的?
在设计方面,我们制定了设计可行软件的蓝图。该蓝图涉及可以转换为软件的模型,而实施涉及将该模型转换为实际软件(即代码)。
同样,组件通常比类更大、更抽象。虽然类是对象实例的相对较低级别的蓝图(设计),但组件可能是一组类,它们一起形成封装的模块(实现),然后您可以与之交互。一个组件甚至可能根本不包含任何类!
现在,组件图不显示实际代码,而是显示实际实现的软件组件之间的依赖关系(这些组件可以是可执行文件、文件、文件夹等任何东西。例如:-
正如我已经讨论过的;类图是 UML 结构图,它在类和接口级别显示设计系统的结构,显示它们的特性、约束和关系 - 关联、概括、依赖关系等。类图示例:
我希望我说清楚了。
在 UML 中,组件可以做与类图相同的事情。
但主要区别在于组件的职责比类更大
Kruchten 开发了4+1 视图模型来捕获系统的不同部分。简单地说,它可以帮助您对系统的不同视图(逻辑、物理、开发、流程、用例)进行建模
每个视图都捕获系统的特定方面
逻辑视图描述了系统由什么组成以及各部分如何交互
实现视图也称为开发视图,描述了系统的各个部分是如何组织成模块和组件的
通常可以将其视为更详细的图表。类图应该具有使用实现特定类型定义的属性,例如。
Box
- cats: list<Cat>
+ getCat: Cat
+ addCat: void
该组件是同一事物的不太详细的视图。我不记得有多少细节是可见的。据我记得,它可能与没有类型的类图相同。
组件图应该用于设计您要构建的总体概念。具有更多类的类图可能会有所不同,因为实现需要的类不必使用组件图来呈现。
我的话必须持保留态度,因为我承认我有一段时间没有画图表了。
类模型是组件模型的基础:
软件设计人员首先设计逻辑结构,指定逻辑元素(“类”)、它们的职责(“方法”)、结构(“属性”)以及与其他类的关系(泛化、关联等),而不管(在某种程度上)将使用的技术。这是类模型
基于类模型,软件工程师指定他们将编写或以其他方式购买的软件片段(“组件”)以及它们之间的连接(集成、依赖关系等),以实现设计的类模型。这是组件模型。
然后,部署模型描述了组件将在硬件或虚拟硬件上部署的位置。