A ze tim prestanes splnovat kontrakt obdelniku je ti jedno?
Člověče, vy jste si o tom někde něco přečetl, ale totálně vám chybí cit pro praktickou aplikaci. Substituční princip není žádné posvátné tele. Naproti tomu, zákaz provádět mimo objekt něco, co je v kompetenci toho objektu, nebo nepředpokládat o vnitřních vlastnostech toho objektu něco, co není explicitně specifikováno, se tomu svatému teleti blíží mnohem více.
Dovedu si představit spoustu aplikací, kde by čtverec, jakožto potomek obdélníku (a jiné analogické aplikace), měl smysl, a jiné, kde by to naopak nešlo. Že má obdélník, jakožto abstraktní
geometrický útvar, dvě nezávislé strany, je jedna věc, ale že by
objekt obdélník, jakožto prostředek nějakého konkrétního
objektového modelu, musel mít bezpodmínečně stejnou vlastnost, to už tedy zdaleka tak zřejmé není. Jestliže někde budu chtít mít obdélníky se zaručenou vlastností, že mají poměr stran 2:1, tak se mi taková definice hodí. Protože budu mít zaručen tento poměr a přitom na takový obdélník mohu aplikovat vše, co platí pro obecný obdélník. Pokud bude obecný obdélník disponovat metodou např. pro nastavení jedné strany na základě zadaného obsahu a druhé strany, tak nastane problém. Ale tohle záleží na
konkrétním modelu. Nejde o tom říci nic obecně. Snad jen kromě toho, že kdybych něco takového potřeboval, mělo by to opravdu být součástí toho objektu, ať už obecného obdélníku, nebo nějakého jeho potomka (podle potřeby), ale rozhodně bych to neměl počítat někde mimo, jak tu naznačujete, protože vztahy mezi stranami, obsahem, úhlopříčkami a dalšími vlastnosti obdélníku jsou
vnitřními záležitostmi toho objektu.
A ještě jednou zdůrazňuji rozdíl mezi geometrickým pojmem obdélník a obdélníkem jakožto prostředkem objektového modelu, kdyby vás opět napadlo jak zaseklá deska blábolit cosi o porušení kontraktu obdélníku (o němž nic nevíte, protože ho tu nikdo nespecifikoval).