Component Oriented Programming

The differences between ComProgramming? and standard ObjectOrientedProgramming, as quoted from the foreword by CharlieKindel? in EssentialCom by DonBox:

ObjectOrientedProgramming = Polymorphism + (Some) Late Binding + (Some) Encapsulation + Inheritance

ComponentOrientedProgramming = Polymorphism + (Really) Late Binding + (Real, Enforced) Encapsulation + Interface Inheritance + Binary Reuse

Implementation Inheritance is not considered Component Oriented Programming because the idea behind component programming is limited dependence, and implementation inheritance is the strongest dependence in programming. See the FragileBaseClassProblem.
Do we need yet another term for ComponentBasedDevelopment?

Otherwise, I have some problems with both definitions, they are overly simplisitic, and inexact. For example, I once created a specialized Delphi component, by inheriting the TDBLookupCombo implementation and modifying some behaviour, and by that definition I wasn't doing component oriented programming, and if creating components is not component oriented programming, then we really have a problem. -- CostinCozianu

Direct inheritance is against the idea of COP more or less. Inheritance creates a dependency, but components should be relatively independent. If they "inherit", it is through DuckTyping: they fit a predefined interface.

See: ComponentObjectModel, ComponentOrientedProgrammingLanguage, ProgrammingParadigm

View edit of September 8, 2008 or FindPage with title or text search