Myslel jsem si, že tu budeme propírat OOP. Místo toho se tu hádají stoupenci FP o slovíčka. Nechcete si to vyříkat ve vlastním vlákně?
Kite, abys nebyl naštvanej, že tady plevelíme vlákno o OOP... My tady totiž právě OOP probíráme!
Množina predikátů, to je totiž třída. Ty predikáty říkají, jestli daný objekt odpovídá na danou zprávu. Nebo jinak: průnik predikátům příslušných množin individuí je množina objektů dané třídy.
Dědění je přidávání predikátů do množiny. Vícenásobná dědičnost je sjednocení množin predikátů.
Takže třeba:
Animal = {RespondsToMove}
Cat = {RespondsToMove, RespondsToMeow}
Dog = {RespondsToMove, RespondsToBark}
a model např.:
Animal_P(olgoi_khorkhoi) = true
RespondsToMeow(olgoi_khorkhoi) = false
RespondsToBark(olgoi_khorkhoi) = false
Animal_P(micka) = true
RespondsToMove(micka) = true
Cat_P(micka) = true
RespondsToMeow(micka) = true
Dog_P(micka) = false
RespondsToBark(micka) = false
Animal_P(tyrl) = true
RespondsToMove(tyrl) = true
Cat_P(tyrl) = false
RespondsToMeow(tyrl) = false
Dog_P(tyrl) = true
RespondsToBark(tyrl) = true
Animal_S = {olgoi_khorkhoi, micka, tyrl}
Cat_S = {micka}
Dog_S = {tyrl}
Animal je třída
Animal_P je predikát odpovídající třídě
Animal_S je množina individuí dané třídy
Akorát teda tenhle model (o kterém se tady celou dobu bavíme) se nejmíň ve dvou věcech odlišuje od běžných reálných implementací. Ale to Cikáda považoval za tak zřejmé, že ani neměl potřebu to nějak rozebírat.