Java – Ülem- ja alamklassid (Ülesanne 10)

Pärimine (inheritance)

Kui Javas muutub klasside loomise struktuur keerulisemaks, siis esimesena tutvutakse kontseptsiooniga pärilus (inheritance). See tähendab, et olemasolevast klassist saame luua alamklasse, ilma põhiklassi muutmata. Tegemist on klasside hierarhiaga, kus ülemklassis (superclass, parent class) lood põhiväljad ja meetodid, mis kanduvad üle alamklassile (subclass, child class). Kuid alamklassis saad luua uusi väljasid ja meetodeid vastavalt eripärale. Kogu seda mehhanismi, kus alamklass sõltub ülemklassist, nimetataksegi päriluseks või ka laiendamiseks.

Kõige lihtsam on seda kirjeldada näiteks loomadega. Ülemklassiks ongi Loom. Alamklassideks on aga näiteks imetajad, roomajad, linnud, kahepaiksed ja kalad.

Ülemklassiga määrame kõigile klassidele ühised omadused nagu näiteks sugu, toitumine ja kas on püsi- või kõigusoojased. Alamklassid saavad kasutada ülemklassist pärit muutujaid ja meetodeid. See tähendab, et neid ei pea neid iga kord iga alamklassiga uuesti looma. Ülemklasse võib olla ainult üks (va Object-tüüpi alamklass).

Alamklasse ja selle hargnemisi võib olla mitu. Alamklassiga saab lisaks ainult talle omaseid muutujaid ja meetodeid. Alloleval skeemil on näha, kes haugub, kes krooksub jne.

Paneme selle ka siis koodi. Kõige pealt ülemklass Loom.java. Lisame selle kõik paketti zoo.

Pane tähele, et kasutame muutuja puhul protected võtmesõna, mis lubab ligipääsu ainult samal ja alamklassidel. Alamklassist toon ainult ühe näite Imetaja.java. Et määrata, mis on selle klassi ülemklass, kasutame võtmesõna extends

Loome testimiseks siis App.java ning uue Imetaja. Esimese kommentaari alla lisasin meetodid, mis tulevad otse põhiklassist. Kasuta meetodeid, nagu oleks need selle omad. Ja kuna alamklassil on oma meetodid, siis saame kasutada ka neid. Läbi alamklasside saame kasutada sama meetodit, kuigi nende väljund võib olla erinev (polümorfism).

Meetodite ülekirjutamine (@Override)

Java võimaldab alamklassis samanimelist meetodit, mis on ülemklassis, üle kirjutada. Sellisel juhul kasutatakse @Override viidet. Võtame näiteks temp() meetodi.

Ja nüüd ülemklassis loodud temp() meetod väljastab midagi muud.

JAR faili loomine

JAR (Java Archive) on platvormist sõltumatu Java kompileeritud failide kokkupakkimisformaat. See põhineb populaarsel ZIP algoritmil, seega võid pärast neid avada mõne kokkupakkimisprogrammiga.

Eclipse IDE:

  1. parem klikk projektile ja vali Export>Java>JAR file
  2. täpsusta, mida soovid kokku pakkida, vali koht ja Finish. Need vaikimisi seaded sobivad esialgu küll.

Kui see fail nüüd näiteks WinRar’iga avada, siis oleks seal sees nii:

JAR faili käivitamiseks ava cmd ja liigu kataloogi, kuhu faili paigutasid. Minu puhul näiteks töölaud.

Järgmisena trüki sisse järgmine käsk

Viimane osa käsureast tuleb paketinimest ja klassist, kus asub põhimeetod main().

JAR faili loomine käsurealt

Kui kasutad muid programme nagu VS Code vms, siis need ei sisalda otsest funktsionaalsust JAR-failide loomiseks nagu mõned integreeritud arenduskeskkonnad (IDEs) nagu Eclipse või IntelliJ IDEA. JAR-faili loomiseks peate kasutama käsurida

  1. Kompileeri Java Klassid – Eeldusel, et teil on JDK paigaldatud ja javac on teie süsteemi PATH muutujas, saate kompileerida oma Java faile, kasutades terminali:

See tekitab .class faile teie Java koodi jaoks.

  • Loo manifesti fail – JAR-faili loomiseks, mis sisaldab käivitatavat klassi, peate looma manifesti faili. Looge tekstifail nimega Manifest.txt ja sisestage järgmine:

(Veenduge, et teil oleks pärast Main-Class: MyMainClass uus rida)

  • Loo JAR fail – Kasutage jar käsku, et pakkida .class faile ja manifesti faili JAR-failiks:

Selles näites:

  • c loob uue arhiivi
  • v tekitab väljundit (valikuline)
  • f määrab faili nime
  • m lisab manifesti faili

Peale selle käsu käivitamist peaks teil olema fail nimega MyProgram.jar teie kataloogis.

  • Käivita JAR fail – Kui soovite oma JAR-faili käivitada, saate seda teha järgmise käsu abil:

Ülesanne 10

Päriluse rakendamine loomapargis

Sinu ülesandeks on laiendada antud loomapargi koodi, lisades veel mitu loomaklassi ja nende omadusi.

  1. Uute klasside loomine
    Loo vähemalt kolm uut alamklassi klassi Loom jaoks. Võid valida näiteks järgmiste seast: Roomaja, Lind, Kala. Igal loomaklassil peab olema vähemalt üks eripärane omadus või meetod.
  2. Meetodite ülekirjutamine
    Ülekirjuta ühe alamklassi jaoks meetod toit(), et see näitaks spetsiifilisemat toitumisviisi.
  3. Testimine
    Loo App klassis vähemalt üks objekt igast loomaklassist ja kutsu välja nende meetodeid, sealhulgas ülekirjutatud meetodeid. Kontrolli, kas kõik väljastab oodatud tulemuse.
  4. Täiendav väljakutse
    Loo veel üks alamklass, mis pärineks juba olemasolevast alamklassist (nt. Koer pärineks Imetajast). Lisa sellesse klassi omakorda mõned eripärased omadused või meetodid.
  5. JAR fail
    Ekspordi oma projekt JAR failina, nagu konspektis kirjeldatud. Testi oma programm töötab JAR failist käivitades.

Nõuded:

  • Kood peab olema korrektselt formateeritud.
  • Kasuta kõikides klassides õigeid nähtavuse modifikaatoreid (private, protected jne.).
  • Alamklassides peab olema kasutatud extends võtmesõna.
  • Ülekirjutatud meetodites peab olema kasutatud @Override annotatsiooni.
  • Kogu loomade hierarhia peab olema loogiline ja mõistlik.

Attachments1

Viimased postitused

Meist

metshein.com on pakkunud juba üle kümne aasta tasuta eestikeelseid infotehnoloogiaga seotud kursusi. Sama kurssi püütakse järgida ka edaspidi. Eesmärk muuta arvutiõpe võimalikult lihtsaks!

metshein.com: parim eestikeelne koolitusportaal

Autorist ja kontakt: kliki siia

Kontrolli tunnistust

Tööribale