Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 如何定义软件组件?_Oop_Components_System - Fatal编程技术网

Oop 如何定义软件组件?

Oop 如何定义软件组件?,oop,components,system,Oop,Components,System,如何定义软件组件,OOP和组件编程之间有什么关系?这些范例的优缺点是什么?黄金比例是多少?软件组件的粒度应与重用的粒度对应。如果某个软件块在其他地方被重用,那么它应该作为自己的组件进行版本控制和发布。如果它没有在其他地方重用,那么这几乎没有什么价值 如果任何小于一个完整类的东西被视为一个组件,并且预期一组类将形成一个组件,那将是令人惊讶的。我认为组件是一个更高层次的组织概念,而不是一个对象 组件通常是发布和部署的单元。您希望定义它们公开的接口以及它们在其他组件和基础架构方面的深度。一个系统中的不

如何定义软件组件,OOP和组件编程之间有什么关系?这些范例的优缺点是什么?黄金比例是多少?

软件组件的粒度应与重用的粒度对应。如果某个软件块在其他地方被重用,那么它应该作为自己的组件进行版本控制和发布。如果它没有在其他地方重用,那么这几乎没有什么价值


如果任何小于一个完整类的东西被视为一个组件,并且预期一组类将形成一个组件,那将是令人惊讶的。

我认为组件是一个更高层次的组织概念,而不是一个对象

组件通常是发布和部署的单元。您希望定义它们公开的接口以及它们在其他组件和基础架构方面的深度。一个系统中的不同组件很可能使用非常不同的技术开发,事实上,单个组件不必是同质的


如果用某种OO语言开发一个组件,那么您将分解职责,并为该组件进行OO设计。

我认为组件编程本质上是OO的再发明

oo的目标是成为黑匣子。。。但事实并非如此,组件编程正试图成为一个黑匣子

因此,我认为组件编程意味着过度工程化(以一种积极的方式),因为为了成为黑匣子,您必须预测未来的用例,并且已经满足了它们

它还意味着一种记录彻底测试的心理学,根据我的经验,这种心理学似乎在oo编码中处于次要地位

因此,您将提供线程和异步支持。您将发布接口、文档和单元测试。具有明确的活动结构和行为

基本上,你可以做任何事情来允许某人重用它并帮助他们这样做


关键是组件有一个定义良好的接口和一个定义良好的函数。实际的实现细节不是其中的一部分,因为在考虑如何使用组件时,它们超出了范围。IE组件可以是一组相当复杂的对象。

我会把一个组件看作是一个应用程序的子系统,你可以把它看作一个黑箱。 因此,在OOD中,一组类和接口有一个明确的规范,一个明确的目的,允许您执行一些计算,而不必知道盒子是由什么组成的

输入->[黑盒]->输出

更进一步识别组件的是:

  • 高内切分
  • 与应用程序的其余部分没有依赖关系,因此可以在一个或多个项目中轻松导入组件
我认为组件编程实际上是组装组件以构建更大的应用程序。

在一个非常“乌托邦式”的视图中,应该有公共存储库,您可以在其中查找符合您的规范的组件。一旦找到了组件,就可以将其集成到应用程序中。

理论上,可以将系统设计为完全没有任何组件的OO层次结构。我必须同意Howard的观点,重用的粒度似乎决定了一个组件应该是什么以及有多大。我想说的是,一个类是一个在程序上下文中工作的黑盒子(我们希望),而一个组件是一个在多个不同程序上下文中工作的黑盒子,包括一些尚未编写的程序。是的,同意。我一直在想,但始终没有说出来;)