KingNo jsi lamer, a nic jsi nepochopil. A tím příkladem to navíc hezky dokládáš.
ST jsem viděl z rychlíku. Ale něco mi utkvělo v paměti a to že ve ST je všechno objekt. Dokonce i číslo a řetězec je objekt, stejně tak množina (set). Dále jsou definované různé vztahy mezi objekty, mimojiné i to, že existuje vztah mezi objektem "řetězec" a objektem "množina" (set). Proto jsi schopen provést převod řetězce na množinu.
V čistém C++ nemáš nic definované. Ale to nijak nedegraduje OOP. Můžeš si přece nadefinovat. Nadefinuješ si řetězec, nadefinuješ si množinu a nadefinuješ si konverzi z řetězce na množinu. To že vlastni konverze proběhne procedurálně - to mimochodem proběhne i ve ST. OOP implementaci neřeší. Pouze pojmenovává stavebni prvky (objekty) a řeší vztahy mezi nimi (zprávy nebo metody, konverze a spoustu dalších). Takže jednou jedinkrát musím implementovat konverzi řetězce na množinu, ale právě vlastnost OOP - "re-use", mi umožňuje od toho okamžiku používat tuto konverzi a na implementaci procedurou s klidem zapomenout.
Výbava programovacího jazyka nemá vliv na hodnocení jak moc je nebo není jazyk objektový. Jediným efektem je to, že některé základní operace již nemusíš programovat.
Abych byl korektní, C++ některé věci z OOP skutečně nemá, nebo má řešeno nějak podivně. Nejznámnější je asi polymorfizmus, který je v C++ nutné speciálně oznamovat pomocí klíčových slov "virtual" (virtuální funkce, virtuální třídy) - toto lépe řeší Java. Také úplně chybí třídní proměnné (proměnná, jenž není vztažená na instanci, ale typ třídy - v C++ jsou jen statické proměnné, které jsou vázány k typu, ale nejde i nich uplatnit polymorfizmus). OOP dále umožňuje měnit třídu během programu, takže všechny instance pak reflektují změnu. v C++ jsou třídy pevně "zadrátované" v kódu, program v C++ už musí dopředu předpokládat všechny varianty změn třídy a řešit toto děděním.
C++ je do určité míry plnohodnotný objektový jazyk, pokud nepotřebujeme výše uvedené "finesy". Zároveň je to kompromis mezi OOP a implementací kde je kladen vysoký nárok na výkon (viz právě třeba ony virtuální metody, kde jsou výkonové nároky vyšší) |