Objektid
Miks on objektid head?
Lisaks sellele, et ma saan klassifitseerida erinevaid funktsioone ja muutujaid, siis on veel paar head asja, milleta programmeerijad enda elu ettegi ei kujuta.
Sellest järgnevast aru saamine pole küll kohustuslik ning ka ülesanded seda ei sisalda, aga huvi korral võid läbi lugeda. :-)
Esimene neist on polümorfism :-) Möh ...?
Kole mõiste, aga lihtne seletus. Ma saan kasutada täpselt sama funktsiooni nime erinevate klasside koosseisus. Oletame, et ma olen valmis teinud programmi erinevate geomeetriliste kujundite ruumalade arvutamiseks. Selles programmis on iga erineva kujundi jaoks defineeritud eraldi klass, mis on ju loogiline, igal kujundil on erinevad omadused, pindalade ja ruumalade arvutamise valemid. Kuid igas klassis saan ma kasutada ühte ja seda sama meetodi nime ruumala(), sest ta kuulub erinevatesse klassidesse. Segamini ei saa need meetodid kuidagi minna, sest neid meetodeid rakendatakse vaid oma klassi objektidele. Näiteks: silinder.ruumala(), püramiid.ruumala(), kuup.ruumala() jne., kujundi nimi enne punkti ütleb, millisest klassist ruumala() meetod tuleb välja kutsuda ja seetõttu arvutataksegi igale kujundile just temale sobilik ruumala.
Teine on aga päritavus
Objekt-orienteeritud programmeerimises saab defineerida nö alamklasse. Mis see annab? See annab selle, et kõige kõrgemas klassis on mul kirjas ainult need meetodid, mis kuuluvad kõikidele selle klassi objektidele, alamklassidesse aga saan ma juurde kirjutada spetsiifilisemaid meetodeid, mis kõikidel objektidel puuduvad. Näiteks:
Tihti lugu mängudes tuleb koguda igasuguseid esemeid: palle, linde, mune, münte jne. Kõik need esemed võivad kuuluda ühte suurde klassi MänguObjektid, millel on atribuut nimi (muna, münt) ja meetod korjaÜles(). Kuid sageli on osad esemed mängudes väärtuslikumad kui teised. Näiteks mündid, nendega saab edaspidi kindlasti mingi tehingu teha, seega müntide jaoks tuleks teha alamklass Münt, mis pärib kõik meetodid oma ülemuselt, kuid lisaks saame talle juurde kirjutada meetodi kuluta(), mis aitab rahaga tehinguid teha.
