Institute of Computer Science
  1. Main page
  2. Teeme ise arvutimänge
ET
Log in

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.

  • Institute of Computer Science
  • Faculty of Science and Technology
  • University of Tartu
In case of technical problems or questions write to:

Contact the course organizers with the organizational and course content questions.
The proprietary copyrights of educational materials belong to the University of Tartu. The use of educational materials is permitted for the purposes and under the conditions provided for in the copyright law for the free use of a work. When using educational materials, the user is obligated to give credit to the author of the educational materials.
The use of educational materials for other purposes is allowed only with the prior written consent of the University of Tartu.
Terms of use for the Courses environment