什么是面向组件的编程,它与面向对象编程有什么不同?
谢谢
发布于 2014-02-07 11:44:55
我将面向组件编程称为面向对象编程的专门后代,因为其目标是生成易于重用的通用对象。
在20世纪90年代末,我参加了UT奥斯汀计算机科学系的开放之家。我的目标是和一位老朋友,一位教授交谈,以便深入了解我在工作中遇到的一个问题。(他给了我确切的指点,还建议我和另一个老朋友谈谈,他也给了我很好的帮助。)当我在那里的时候,我和其他一些人交谈过,其中之一是generators,他正在构建程序生成器,使构建和组合组件对象变得更加容易。
他的评论是,面向对象编程是不够的。它为您提供了具有定义接口的对象,但它们不一定是干净的可重用的。它需要额外的设计努力,以防止无关的关注点悄悄进入对象。Batory博士是从数据库世界进入这个领域的,他试图使建立数据库系统变得更容易。有一次,他听说过一些人在操作系统构建中处理类似的问题,并震惊地发现,他们正在工作的解决方案与他正在做的工作几乎完全相同,这表明存在着一套可重用的基本知识。
真实的例子:在上世纪90年代中期我从事的一个项目中,有一条“商业规则”规定,除非跟踪器锁定目标,否则激光测距仪不应发射。面向对象方法允许将锁定状态传递到测距器对象,作为触发命令的最终联锁。组件模型表示,rangefinder对象导出Fire()方法,使用rangefinder的业务逻辑在触发之前检查目标锁定状态。
发布于 2014-02-07 09:53:46
OOP方法侧重于类之间的关系,COP则更多地关注独立工作且不需要确切了解它们是如何工作的可互换模块。
编辑-我不认为这是不清楚的,问题解决了不同的方法,他们不是完全分开。在COP中,模块可以被认为是一个可重用的、功能驱动的对象(通常是一组类),可以按原样使用和重用。OOP是更细粒度的,专注于单个类本身,这可能需要与其他类进行特定的交互才能在功能上执行。
https://softwareengineering.stackexchange.com/questions/228063
复制相似问题