Arvutiteaduse instituut
  1. Kursused
  2. 2024/25 sügis
  3. Objektorienteeritud programmeerimine (IT mitteinformaatikutele) (LTAT.SO.003)
EN
Logi sisse

Objektorienteeritud programmeerimine (IT mitteinformaatikutele) 2024/25 sügis

  • Kodutööd ja praktikumid
  • Loengud
  • Kursuse korraldus
  • IDE juhendid
  • Silumisest

3. praktikum. Harjutused.

NB! Praktikumiülesandeid antakse alati varuga, et ka kõige kiirematel/kogenumatel lahendajatel jätkuks tegevust. Seega pole mõtet kurvastada, kui te ei jõua kõiki lahendada. Vaadake ülesanded rahulikult üle ja lahendage ära just need, mis tunduvad teile huvitavad ja/või parajalt jõukohased/väljakutsuvad (kui just teie praktikumijuhendaja pole teile soovitanud mingit konkreetset ülesannet).

1. Seade

Klass Seade sisaldab privaatseid isendivälju koodi (int), nimetuse (String) ja ilma käibemaksuta hinna (double) jaoks. Lisaks on klassis staatiline muutuja (double), mis määrab käibemaksuprotsendi, olgu selle väärtuseks 20. Klassis on konstruktor. Klassis on vähemalt järgmised meetodid.

  • Kõigi isendiväljade jaoks on vastavad get- ja set-meetodid.
  • Meetod kmhind (double-tüüpi), mis tagastab hinna arvestades käibemaksuga. (Kui käibemaks on nt. 20%, siis 100 eurose käibemaksuta hinna korral on käibemaksuga hind 120 eurot.)
  • On ka meetod toString, mis võimaldab seadme andmeid mõistlikult ekraanil kujutada, näidates ka hinda käibemaksuga. (Kasutada vastavat meetodit.)

Peaklassis (testklassis) luuakse erinevad seadmed. Seadmete andmed väljastatakse ekraanile.

2. Staatiline segadus

Proovige käivitada järgnevat koodi. Miks kompileerimine ebaõnnestub? Muutke koodi nii, et programm töötaks ootuspäraselt. (Vihje: static võtmesõnade lisamine on vale lahendus!)

public class Isik {
  private String nimi;
  private double pikkus;

  public Isik(String isikuNimi, double isikuPikkus) {
    nimi = isikuNimi;
    pikkus = isikuPikkus;
  }

  public int suusakepiPikkus() {
    return (int) Math.round(0.85 * pikkus * 100);
  }

  public static void main(String[] args) {
    System.out.println("suusakepi pikkus on " + suusakepiPikkus());
  }
}

3. Reisid

1. Klassis Lennuk on privaatsed isendiväljad nime (String), keskmise kiiruse (double) ja maksimaalse reisijate arvu (int) jaoks. Klassis on konstruktor. Klassis on vähemalt järgmised meetodid.

  • Kõigi isendiväljade jaoks on vastavad get- ja set-meetodid.
  • On ka meetod toString, mis võimaldab lennukit mõistlikult ekraanil kujutada.

2. Klassis Reis on privaatsed isendiväljad reisi sihtpunkti (String), sihtpunkti kauguse (int) ja lennuki (Lennuk) jaoks ning müüdud piletite arvu (int) jaoks. Klassis on konstruktor. Klassis on vähemalt järgmised isendimeetodid.

  • Kõigi isendiväljade jaoks on vastavad get-meetodid.
  • Meetod (int-tüüpi), mis tagastab antud reisi kestvuse minutites. (Arvutustes kasutada lennuki keskmist kiirust.)
  • Meetod (int-tüüpi), mis tagastab antud reisi vabade kohtade arvu (arvestades lennukis olevate kohtade arvu ja müüdud piletite arvu).
  • On ka meetod toString, mis võimaldab reisi mõistlikult ekraanil kujutada.

3. Peaklassis luuakse vähemalt kaks lennukit (nt lennuk Fokker F50, mille keskmine kiirus on 530 km/h ning maksimaalne reisijate arv on 46, ja BN-2, mille keskmine kiirus on 170 km/h ning maksimaalne reisijate arv on 9) ja vähemalt kolm reisi. Peaklassis testitakse ka erinevate isendimeetodite tööd (vastavate isendimeetodite abil leida reiside kestvusi ja vabade kohtade arve).

4. Hekk

1. Klassis Põõsas on privaatsed isendiväljad põõsa kõrguse (double) ja laiuse (double) jaoks. Klassis on konstruktor ja vähemalt järgmised meetodid.

  • Kõigi isendiväljade jaoks on vastavad get- ja set-meetodid.
  • Meetod (double-tüüpi), millel pole argumente ja mis tagastab kõrguse prognoositava aastajuurdekasvu, mis on juhuslik arv vahemikust 0 kuni 0,1*kõrgus. (Ümardada pole vaja.)
  • On ka meetod toString, mis võimaldab põõsa andmeid mõistlikult ekraanil kujutada. Eelmise meetodi abil näidatakse ka prognoositav aastajuurdekasv.

2. Klassis Hekk on isendiväljad heki nime (String) ja selles hekis olevate põõsaste massiivi jaoks (Põõsas[]). Klassis on konstruktor ja vähemalt järgmised meetodid.

  • Meetod, mille tagastustüübiks on double ja mis tagastab hekis oleva kõige kõrgema põõsa kõrguse.
  • Meetod, mille tagastustüübiks on double ja mis tagastab heki pikkuse ehk hekis olevate põõsaste laiuste summa.
  • On ka meetod toString, mis võimaldab heki andmeid mõistlikult ekraanil kujutada, tuues välja heki nime, kõige kõrgema põõsa kõrguse ja heki pikkuse. (Kasutada vastavaid meetodeid.)

3. Peaklassis tehakse järgmised tegevused.

  • Luuakse viis põõsast (Põõsas-tüüpi isendit).
  • Kõikidest Põõsas-tüüpi isenditest tehakse Põõsas[]-tüüpi massiiv. (Massiivi võib ka enne põõsaid luua ja järjest täita.)
  • Luuakse üks Hekk-tüüpi isend kasutades argumendina eelmainitud massiivi.
  • Heki andmed väljastatakse ekraanile.
  • Tsükli abil kuvatakse massiivist põõsad ekraanile.
  • 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