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