Arvutiteaduse instituut
  1. Esileht
  2. Teeme ise arvutimänge
EN
Logi sisse

Teeme ise arvutimänge

  • Esileht
  • I RAAMAT
  • II RAAMAT
  • III RAAMAT
  • IV RAAMAT
    • Funktsioonid
      • Funktsiooni välja kutsumine
      • Funktsiooni argumendid
      • Funktsiooni töö tulemuse tagastamine
      • Lokaalsed ja globaalsed muutujad
    • Objektid
      • Objekti loomine
      • Objekti algväärtustamine
      • self
      • Miks on objektid head?
      • Näide
    • Mida õppisid?
  • V RAAMAT
  • VI RAAMAT

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.

  • Arvutiteaduse instituut
  • Loodus- ja täppisteaduste valdkond
  • Tartu Ülikool
Tehniliste probleemide või küsimuste korral kirjuta:

Kursuse sisu ja korralduslike küsimustega pöörduge kursuse korraldajate poole.
Õppematerjalide varalised autoriõigused kuuluvad Tartu Ülikoolile. Õppematerjalide kasutamine on lubatud autoriõiguse seaduses ettenähtud teose vaba kasutamise eesmärkidel ja tingimustel. Õppematerjalide kasutamisel on kasutaja kohustatud viitama õppematerjalide autorile.
Õppematerjalide kasutamine muudel eesmärkidel on lubatud ainult Tartu Ülikooli eelneval kirjalikul nõusolekul.
Courses’i keskkonna kasutustingimused