Precti si tento klasicky clanek: http://www.paulgraham.com/reesoo.html
dikyJS, pěkné shrnutí. Jinak se omlouvám za nevhodně položený dotaz, původní otázka měla směrovat na základ toho co dělá OOP tak odlišným že má, podle některých, vyžadovat úplně jiné myšlení.
Víceméně souhlasím s Kolemjdoucím, ale přeci jen, zde je můj popis jak OOP vnímám:
Já OOP zatím vnímám jako vývoj dopředu. Podobně jako se z podprogramů staly funkce, tak se z "modulů" vynořili objekty.
Něco jako souhrn "best practices" modulů, navíc podpořeno novým velmi zjednodušeným zápisem. Díky tomu lze přenést část zodpovědností a pravidel z programátora na překladač. Navíc nový zjednodušený zápis umožňuje používat "kouzla" jako polyformizmus v rozsahu která by dříve byla neudržitelně složitá(což neznamená že se musí používat aby byl program dle OOP). Také, stále díky zjednodušení, OOP přístup zjemňuje granularitu, takže se jako o objektech uvažuje snadněji v daleko širším měřítku, a ve více úrovních.
Za základ OOP pak považuji to že se návrh (nebo fáze návrhu?)
cíleně zaměřuje na hledání toho co lze oddělit a jak to bude spolupracovat. Plus sada kritérií (s proměnou váhou dle situace/programu/..) dle kterých se určování objektů/tříd provádí. Nicméně jako u všech metodik si myslím že je třeba používat je se zdravým rozum a neaplikovat je slepě až do absurdních rozměrů.
Čili není to až tak úplně odlišné, spíš jen vylepšení a kodifikování starších ověřených postupů, vedoucí k novým možnostem.