To bude asi ono. Mnoho z těch, kteří chválí OOP v C++ si jednoduše nevyzkoušelo, jak je to s OOP v jiných jazycích, např. ve jmenovaném Smalltalku. Vždyť i v proklínaném PHP je OOP na mnohem vyšším levelu než v C++.
Vyhovuje-li jim to, nemají důvod zkoušet jiné přístupy, ba dokonce by se jim IMHO zdály nesprávné. A je známá věc, že přístup, jenž si člověk osvojí jako první, se pro něj stane velmi svazující.
Pouze jsem jako většina lidí začínal s procedurálním programováním a tak nějak "cítím", že jsem se od něj ještě úplně neodprostil.
Nemyslím si, že by procedurální programování bylo ve sporu s objektovým. OOP je abstrakčně výš. Řeší principy, jakými se zachází s jednotlivými elementy programu, jak spolu interagují data a algoritmy. Procedurální přístup tuto problematiku vůbec neřeší, to je na autorovi programu, aby si to sám specifikoval. Jestliže strukturované programování přináší principy a nástroje k abstraktivizaci a interpretaci dat a k organizaci kódu (místo aby to musel dělat programátor "ručně"), tak OOP se snaží pomoci rozlousknout problém, jak to zařídit, aby si data vždy našla cestu k tomu správnému algoritmu, který je zpracuje (místo aby to musel dělat programátor "ručně"). Na jakém substrátu je to celé vybudované, jestli procedurálním či jiném, není nijak zvlášť podstatné. Čímž netvrdím, že ten substrát nebude mít na výslednou podobu mechanismů OOP žádný vliv.
I tak nějak by se to dalo popsat, akorát jsem zatím stále před tím "heuréka"...
Ten moment přijde, když najednou člověk vidí, že to, co jsem o OOP napsal v odstavci výše, mu pod rukama opravdu funguje a že k tomu, aby stejnou funkcionalitu implementoval v neobjektovém prostředí, musel by napsat násobně více kódu. Alespoň teda u mě to tak bylo.
I když se pak vrátíš k C++, to objektové myšlení ti zůstane.
Myslim si opak, ked sa clovek nauci principy oop, potom mu bude lahsie sa adaptovat na obmedzenia jazykov.
Tím si právě nejsem tak úplně jist. Člověk si snadněji zvyká na komfort než na omezení.
OOP je len jedno
Jenže různí lidé si ho představují různě a obvykle jsou přesvědčeni o správnosti té své představy (včetně mě
). A protože nerad ztrácím čas hádkami, tak se podobně kategorickým výrokům raději vyhýbám. Jestli má někdo pocit, že objektový program se získá tak, že se funkce a proměnné (nějak) natlačí do tříd a zařídí se, aby to bylo (za každou cenu) v dědické hierarchii a napíše se getInstance, protože to tak přece měli v tej brožuře "Pepek Vyskoč: Jak se naučit psát ten nejvíc dokonalej objektovej kód za 10 dnů", tak je to jeho věc.