A zase oblíbený problém vejce vs. slepice...
Kolik toho o tom bylo napsáno a kolikrát na tento problém někdo skutečně v praxi narazil? Proč někdo za každou cenu potřebuje vydělovat čtverec od obdélníku do speciální podtřídy? Jen kvůli tomu, že se to nabízí a že to jde? To není dostatečný argument. Vytvářet speciální podtřídy má smysl jedině tehdy, bude-li to k něčemu dobré, tedy ušetří-li se tím někde nějaká práce, či zpřehlední-li se tím něco. Potřebuje-li někdo mermomocí čtverec, může k tomu dobře posloužit speciální konstruktor (či jiný prostředek k výrobě instancí), který prostě vrátí obdélník s a = b.
Tohle je přesně ten moment, kdy mi na OOP vadí, že spoustu lidí tak nějak motivuje k vytváření si dalších problémů, jež zdánlivě přináší objektový návrh, ještě nad rámec těch, které je třeba doopravdy řešit. Programy manipulující s obdélníky a čtverci existovaly dávno před OOP, ale teprve s OOP lidi od počítačů začali meditovat nad tím, co je od čeho odvozené, a ještě se o tom do krve hádat.
I když ono je to podobné jako s makry v Lispu či s definujícími slovy ve Forthu. Obojí také svádí k nadužívání, jakmile člověk pochopí, jak to funguje. Jenže další fází by mělo být taky pochopení, kdy se na to vykašlat a raději použít nějaký méně cool prostředek.