• nagylzs
    #18
    > OOP eleve ott kezdődik, hogy típusos a nyelv. Anélkül nemhogy több, hanem pontosan nulla OOP kritériumnak felelhet meg.

    A típusosság és az osztályok megléte két különböző dolog.

    Típusosság szempontjából vannak erősen típusos nyelvek, nem típusos nyelvek és gyengén típusos nyelvek (pl. objective c). Vannak keverékek és átmenetek is. Pl. object pascal nagyjából szigorúan típusos, de a szám típusú értékeket tudja keverni. Vagy van úgynevezett "duck-typing" ami azt mondja hogy "minden ami hápog az kacsa" (pl. Python).

    Az "objektum orientáltság" feltétele az osztályok megléte és az öröklődés. Más kritériumok: egységbe zárás, és (jobb esetben) polimorfizmus. Ezeknek eleget tevő nyelvek objektum orientáltak.

    Az már igaz, hogy több a típusos (és gyengén típusos) objektum orientált nyelv. De létezik nem típusos OOP nyelv is.

    A JavaScript az konkrétan egyik kategóriába sem tartozik. A JavaScript az egy úgynevezett "objektum alapú" nyelv. Azért nem objektum orientált, mert hiányoznak belőle az osztályok. (Vannak benne beépített prototípusok, de valójában azok sem osztályok hanem objektumok.) Nincs benne rendes ("nagy könyv szerinti") öröklődés sem. Csak objektumok vannak, viszont azok megvalósítják az egységbe zárást, és (kicsit nyögve nyelősen) a polimorfizmust is.

    Érdekes dolog például a smalltalk esete. A SmallTalk-ban vannak osztályok, de az osztályok is objektumok, és azoknak is van osztálya ami szintén objektum... Itt az a döntő, hogy létezik egy "o objektum A osztály példánya" reláció. Tehát mivel a nyelv definiálja az "osztály" fogalmát mint olyan, ezért objektum orientáltnak mondható.

    A JavaScript nem definiál osztályokat, csak prototype-okat, de azok is csak objektumok.

    További módokon is lehet oszályozni nyelveket. Például: tisztán objektum orientált: csak objektumok vannak benne. A SmallTalk ilyen. Vegyes/kevert nyelv: van benne más programozási eszköz is, nem csak objektum. Pl. Pascal vagy C++ ilyen (van benne eljárás és függvény is).

    Szóval mielőtt ilyen elhamarkodott kijelentésekkel összezavarsz másokat, legalább nézz utána.