你如何定义一个软件组件?

时间:2009-07-09 13:24:49

标签: oop components system

如何定义软件组件以及OOP和组件编程之间存在何种关系?什么是优点和内容以及这些范例的“黄金比例”是什么?

4 个答案:

答案 0 :(得分:2)

我认为Component是一个比Object更高级别的组织概念。

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

如果使用某种OO语言开发组件,您将分解职责,并为该组件达到OO设计。

答案 1 :(得分:1)

软件组件的粒度应映射到重用的粒度。如果在其他地方重复使用了一块软件,那么它应该被版本化并作为它自己的组件发布。如果它没有在其他地方重复使用,那么这几乎没有增加价值。

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

答案 2 :(得分:1)

我认为组件编程本质上是对oo的重新发明。

oo旨在成为黑盒子......但不是,组件编程试图成为黑盒子。

因此我认为组件编程意味着过度工程(以积极的方式) - 因为为了成为黑盒子,你必须预见未来的用例并且已经为它们提供了帮助。

它还暗示了一种全面测试记录的心理学,无论如何,根据我的经验,这似乎在编码方面占据了一席之地。

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

基本上你可以允许任何人重复使用它并帮助他们这样做。

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

答案 3 :(得分:0)

我会将组件视为应用程序的子系统,您可以将其视为黑盒子 因此,在OOD中,一组具有明确规范的类和接口具有ONE CLEAR目的,允许您执行一些计算而无需知道该框是由什么构成的。

输入 - > [BlackBox] - >输出

进一步确定组件的是:

  • 高内部协议
  • 不依赖于应用程序的其余部分,因此可以在一个或多个项目中轻松导入组件。

组件编程我认为实际上是组装组件来构建更大的应用程序 在一个非常“乌托邦”的视图中,应该有公共存储库,您可以在其中查找满足您的规范的组件。找到组件后,您可以将其集成到您的应用中。