K objektovému programování je zapotřebí:
1) předávání zpráv jako konstrukce jazyka,
2) místní ukládání stavu výpočetního procesu, ukrytí tohoto stavu před zbytkem programu a jeho ochrana před jakýmkoli jiným přístupem než 1), a nakonec
3) extrémně pozdní vazba všeho, co pozdně vázat lze.
To je kanonická definice přímo z úst tvůrce OOP. Jestli tvůrce C++ za vlastnosti objektů považoval "zapouzdření, dědičnost a polymorfismus", tak to asi budou vlastnosti programování a la C++. Co zrovna dědičnost dělá v definici OOP a la C++, to jsem skutečně nikdy nepochopil.
> Praktických pohledů na OOP je vícero a žádný bych „nekanonizoval“.
Opravdu zabavne aneb „to ja prisel s terminem objektove orientovane programovani a musim rict ze jsem tim nemel na mysli C++“ (Alan Kay)
Ta „kanonicka“ definice oop je taktez z jeho ust, doporucuju si od nej neco precist, dost dobre vysvetluje _proc_ zrovna tyhle vlastnosti jsou tak dulezite pro to, co nazval OOP (aneb co budou jazyky ktere je nenaplnuji pravdepodobne postradat).