如何定义一个软件组件,以及OOP和组件编程之间有什么样的关系?这些模式的优缺点是什么,什么是“黄金比例”?你如何定义一个软件组件?
回答
我认为组件编程实质上是对oo的再造。
oo旨在成为黑匣子......但不是,组件编程试图成为黑匣子。因此,我认为组件编程意味着超过工程设计(以一种积极的方式) - 因为要成为黑盒子,你必须预见未来的用例并已经为它们照顾。
这也意味着一个彻底的测试文档的心理学,在我的经验,无论如何似乎在oo编码后退。
所以你会提供线程和异步支持。您将发布接口,文档和单元测试。有明确的事件结构和行为。
基本上任何你可以允许某人重复使用它并帮助他们这样做。
问题是组件有一个定义良好的接口和一个定义良好的函数。实际的实现细节不是其中的一部分,因为在考虑如何使用组件时它们超出了范围。即一个组件可能是相当复杂的一组对象。
软件组件的粒度应映射到重用的粒度。如果一块软件在其他地方被重用,那么它应该作为自己的组件进行版本化和发布。如果它在其他地方没有被重用,那么这增加了很小的价值。
如果小于完整类的任何东西都被认为是一个组件,并且预期一组类将形成一个组件,那将是令人惊讶的。
我觉得Component是一个比Object更高级的组织概念。
组件通常是发布和部署的单元。您会期望定义它们公开的接口以及它们在其他组件和基础设施方面的错误。系统中的不同组件可能使用非常不同的技术开发,并且实际上单个组件不需要是同质的。
如果使用某种面向对象语言开发组件,则可以分解责任,并为该组件创建一个面向对象的设计。
理论上一个完全可以设计一个系统,没有任何组件的OO层次。我必须同意霍华德的看法,重用的粒度似乎决定了组件应该是多大和多大。 – citn 2009-07-09 13:37:26
我会想到一个组件作为一个应用程序的子系统,你可以考虑像一个黑盒子。
因此,在OOD中,一组具有明确规范的类和接口是一个明确的目的,它允许您执行一些计算,而无需知道框由哪个组成。
输入 - > [黑盒] - >输出
什么furter标识成分是:
- 高内coesion
- 否相对于所述应用程序的其余的依赖关系,使得组件可以轻松导入一个或多个项目中。
组件编程我觉得其实是组装组件来构建较大的应用程序。
在一个非常“utopistic”的看法应该有公共的资源,你可以查找fullfills您的规范的组件。一旦你找到了组件,你可以将它集成到你的应用程序中。
- 1. 你如何在另一个组件中调用组件?
- 2. 一个软件如何运行另一个软件
- 3. WPF自定义控件 - 你如何测试自定义控件?
- 4. 如何在Linux中将一组软件安装为一个软件包?
- 5. 你如何为软件公司提出一个好名字?
- 6. 你将如何为内部软件项目组织一个Subversion版本库?
- 7. Flex - 如何在另一个组件中定义一个功能?
- 8. 如何使用一个.js文件中定义ReactJS组件
- 9. 你可以在一个UIPickerView中混合自定义视图组件和非自定义视图组件吗?
- 10. 在与scalajs scalajs - 反应如何将一个scalajs定义的组件传递给一个javascript定义的组件?
- 11. 你如何学习软件动画?
- 12. 作为一个软件开发的只是你的SNMP套件,方便地集成到你的软件
- 13. 你知道一个好的事件管理软件吗?
- 14. 你如何组织你的Backbone文件?
- 15. 你如何组织异常定义?
- 16. 您对软件产品中“组件”的定义是什么?
- 17. 如何自定义反应物料ui下一个组件
- 18. 如何在UITableViewController中创建一个自定义的UIToolbar组件?
- 19. 如何访问另一个JS定义JS数组文件
- 20. 你如何压力测试你自己的软件?
- 21. 你如何向客户端提供SQL与你的软件?
- 22. 你如何为你的软件UI创建原型?
- 23. 你如何打开一个hxs文件?
- 24. 你如何组表格子组件
- 25. 隐藏父反应组件,当你点击一个子组件
- 26. 在另一个节点的定义中定义的Puppet安装软件
- 27. 你将如何传递一个OBJ文件定义面对OpenGL的
- 28. 在React中,你将如何动态渲染一个组件?
- 29. 术语:软件界面,软件组件,软件单元,软件模块
我会说,一类是黑盒(一个希望),在程序的情况下工作,而一个组件将是一个黑盒子,在几个不同的方案,其中包括一些尚未被写入的情况下工作。 – 2009-07-09 14:32:02