Arvutiteaduse instituut
  1. Kursused
  2. 2019/20 kevad
  3. Objektorienteeritud programmeerimine (LTAT.03.003)
EN
Logi sisse

Objektorienteeritud programmeerimine 2019/20 kevad

  • Kodutööd ja praktikumid
  • Loengud
  • Kursuse korraldus
  • IDE juhendid
  • Silumisest
  • Edasijõudnute rühm

Praktikum 1

Teemad

Esmatutvus Javaga. Käivitamine käsurealt. Andmete sisestamine klaviatuurilt.

Pärast selle praktikumi läbimist üliõpilane

  • ei karda Javat;
  • ei karda kaaslastelt ja õppejõult nõu küsida;
  • oskab koostada ja käivitada väga elementaarseid Java programme;
  • oskab nimetada mõned olulised erinevused Java ja Pythoni vahel, eriti need, mis teda võivad edaspidi häirida;
  • lahendab oma kodused ülesanded iseseisvalt ja on nõus selle nimel ka vaeva nägema;
  • tunneb vastupandamatut tahet endale koduarvutisse või sülearvutisse Java installeerida, kui ta seda juba varem teinud pole.

Kompileerimine ja käivitamine käsurealt

Java programm ei ole esialgu tegelikult midagi muud kui lihtsalt üks tavaline tekst, mille võime koostada mõne tekstiredaktoriga (näiteks Notepad, Gedit jne). Erinevalt Pythonist tuleb Java programmi algtekst lisaks salvestamisele ja käivitamisele vahepeal ka kompileerida. Esimeses praktikumis piirdume sihilikult tavalise tekstiredaktori ja käsurearežiimiga. Järgmistes praktikumides kasutame juba mugavamaid töövahendeid, mis aitavad Java programmidega lihtsamalt ümber käia.

Kirjutame Java programmi

Alustuseks loome tekstifaili ja kopeerime sinna alloleva Java koodi.

public class Tere {
  public static void main(String[] args) {
    System.out.println("Tere, maailm!");
  }
}

Windowsis

Teeme oma kodukataloogi (arvutiklassis võib olla kodukataloog nimega Z, H, jne.) alamkataloogi oop. Teeme näiteks Notepadiga tekstifaili, mille salvestame alamkataloogi oop nime all Tere.java. Teksti ei pea ise sisse toksima, vaid võib kopeerida praktikumimaterjalist.

Linuxis

Linuxi klassis on võimalik tekstiredaktorina kasutada programmi gedit või kate. Otsi start menüüst Applications --> Utilities --> TextEditor (gedit). Kopeeri üleval toodud koodinäide faili. Valmis faili võib salvestada oma kodukataloogi, või veelgi parem, luua kodukataloogi kaust oop ja fail sinna salvestada.

Pangem tähele, et Linuxis ei ole nimega kettaid (nt C:). Selle asemel on kõik kaustad ühtses failipuus, mille algust tähistab kaldkriips /. Ka kõik kaustanimed on eraldatud kaldkriipsudega (erinevalt Windowsist, mis kasutab langkriipse \). Eristatakse suuri ja väikseid tähti. Faili salvestamise dialoogis peaks olema eraldi nupp kodukataloogi liikumiseks. Hiljem saab faile vaadata valides start menüüst Applications --> Personal Files.

Kompileerimine

Järgmiseks tuleb Tere.java fail kompileerida. Kompileerimise käigus kontrollitakse koodi süntaksit ning tekitatakse uus fail Tere.class, mis on masina poolt käivitatav.

Windowsis

Käsurearežiimi saab kirjutades cmd.exe kaustas (kus paikneb Tere.java) järgneval joonisel näidatud reale ja vajutades klahvi enter:

Alternatiiv:

Start-nupu ja käsu cmd abil saab käsurearežiimi. (Windows8-s käsurearežiimi saab järgmiselt: Ava kuva -> hiire parema nupu klikk -> Kõik rakendused -> Käsuviip või Ekraani alumine vasak nurk -> hiire parema nupu klikk -> Käsuviip; Windows10-s piisab käsurea avamiseks vastavas kaustas kirjutades failisirvija aadressiribale cmd ning vajutades ENTER.) Kaustades liikumiseks kasuta käsku cd kausta_nimi. Näiteks cd oop (kui on vaja muuta ketast, siis seda saab teha kirjutades ketta nime ja kooloni, nt. Z:).

Kompileerimiseks tuleks kasutada käsku javac.

Näide õigesse kausta liikumisest ja kompileerimisest:

C:\Windows>Z:
Z:\>cd oop
Z:\oop>dir
// näidatakse kausta sisu (peaks olema olemas Tere.java)
Z:\oop> javac Tere.java

Kui Windowsis ilmub veateade The name specified is not recognized as an internal or external command ... või Bad command or file name, siis ei õnnestunud arvutil kompilaatorit javac käivitada. Sel juhul tuleks käsurealt paika panna otsimistee, andes näiteks käsu

path "C:\Program Files\Java\jdk-11.0.2\bin"
või
path "C:\Program Files (x86)\Java\jdk1.8.0_144\bin"

(sõltub konkreetsest arvutist) ja proovida uuesti. Käsurearežiimis on abiks käsk dir, samuti üles-alla nooleklahvid ja tabulaator. Proovige!

Linuxis

Linuxi-s käsurearežiimi saab Terminaliga (Konsole). Selle leiab start menüüst Applications --> System --> Terminal (Konsole). Terminalis saab liikuda kaustade vahel ja nendes programme käivitada.

Kausta sisu vaatamiseks tuleb kirjutada käsk ls ja vajutada enter. Teise kausta liikumiseks tuleb kirjutada cd kausta_nimi ja vajutada enter. Kausta nime asemel võib ka anda absoluutse asukoha (nt /home/1234/oop) või .. (kaks punkti, tähtistab eelnevat kausta) või ~ (tähistab kodukausta). Tühikut sisaldava nime kasutamiseks tuleb panna nimi jutumärkidesse. Eelnevalt käivitatud käsu kordamiseks saab kasutada üles ja alla nooli ja vajutada enter. Loe lähemalt.

Koodi kompileerimiseks tuleb liikuda kausta, kus Tere.java fail asub ja kasutada käsku javac. Eduka kompileerimise tulemusena luuakse uus fail Tere.class, mida hakkame hiljem kasutama.

~ $ cd oop
~/oop $ ls
Tere.java
~/oop $ javac Tere.java
~/oop $ ls
Tere.class Tere.java

Kui kompileerimine õnnestub, siis kompilaator mingeid teateid ei anna ja pärast töö lõppu ilmub uuesti käsuviip >. Kataloogi tekib fail Tere.class. See class-fail tekibki kompileerimise tulemusena. Edaspidiseks arvutiga kasutamiseks ongi just seda faili vaja. Samas on see fail aga inimesele suhteliselt loetamatu. Kui kompilaator leiab programmi tekstis vigu, siis kuvab ta ekraanile vastavad teated.

Tere.class failist saab natukene arusaadavama kuju käsuga javap -c Tere.class. JVM keeltest saab ülevaate siit, aga see väljub meie kursuse teemadest.

Java programmi käivitamine

Programmi käivitamiseks tuleb samas kataloogis, kus asub Tere.class anda käsurealt käsk (sama nii Windowsis kui ka Linuxis):

> java Tere

Tulemusena väljastatakse "Tere, maailm!"

Kui tekkis veateade Exception in thread "main" java.lang.NoClassDefFoundError: Tere , siis interpretaator ei leidnud vajalikku class-faili. Kontrolli, et javac käsk sai ilma vigadeta täidetud ja Tere.class fail on kettal olemas. Järgmiseks kontrolli, et sa oled käsureal õiges kohas - seal kus mainitud Tere.class fail asub. Kui veateade ikka tekib, siis sisestage käsurealt

set classpath=

ja proovige uuesti.

Esimene Java programm

Analüüsime veidi seda programmi, mis on Pythoni analoogilisest programmist mõnevõrra erinev. Toome mõned punktid, mida tuleb silmas pidada. (Mõned alltoodud punktid on natuke lihtsustatult toodud, aga esialgu ei ole ehk kogu nüansirikkust vajagi.)

public class Tere {
  public static void main(String[] args) {
    System.out.println("Tere, maailm!");
  }
}

Klass

Javas peab kogu programmitekst olema esitatud klassidena. Üks programm võib koosneda (ja väga sageli koosnebki) mitmest klassist. Täna ajame küll üheklassiliste programmidega läbi. Klassi nimi pannakse paika võtmesõna class järel. Siit saab ka class-fail oma nime. (Kui näiteks eeltoodud faili korral oleks failinimi olnud nt. Ilves.java, siis oleks ikkagi kompileerimisel tekkinud Tere.class.)

Looksulud { }

Javas on programmi liigendamiseks looksulud (loogelised sulud). Taanete kasutamine ei ole otseselt kohustuslik, aga on väga-väga soovitatav. Looksulud esinevad alati paarikaupa ja nende vahel olev programmi osa moodustab ühe terviku — ploki. Programmi osad asuvad sageli üksteise sees, nii võibki konkreetses kohas olla "avatud" hulk looksulgusid. Jälgida tuleb, et kõik algavad looksulud ka õiges kohas "lõpetataks". Meie näites on kõige suurem tervik klass ise, mida alustav looksulg on esimese real ja lõpetav looksulg viimasel real. Teine looksulgudega piiritletud osa on meetod main.

Semikoolon ;

Javas on direktiivi lõpus (tavaliselt) semikoolon. Meie näites reas

System.out.println("Tere, maailm!");

Peameetod

Klassis võib sisalduda erinevat laadi asju. Antud juhul on siin vaid üks meetod (Pythoni analoog oleks funktsioon). Tegemist on peameetodiga, mille nimi on main. Peameetodit sisaldavat klassi nimetatakse peaklassiks ja seda on võimalik käivitada, kusjuures programmi täitmine algab alati just peameetodist.

public static void main(String[] args) {
  System.out.println("Tere, maailm!");
}

Võtmesõnad public ja static ning tagastustüübi määraja void on peameetodi korral kohustuslikud. Piiritlejat public on vaja, et peameetod oleks käituskeskkonnale kättesaadav, piiritleja static määrab, et tegemist on klassimeetodiga. (Ilma selle piiritlejata oleks tegemist isendimeetodiga, millest räägime nädala-paari pärast.) Kõikide meetodite puhul on vajalik määrata tagastustüüp. Peameetodi puhul on selleks void — tühitüüp, mida kasutatakse niisuguste meetodite puhul, mis tegelikult väärtust ei tagasta.

Muutujat args saab kasutada käsurealt argumentide etteandmiseks (põhimõtteliselt võib sellele muutujale ka teise nime anda). Tüüp String[] näitab, et neid argumente käsitletakse kui sõnede massiivi. (Massiividest räägime järgmises praktikumis.)

Kommentaarid

Programmile saab lisada ka kommentaare — tekstiosa, mida kompileerimisel eiratakse. Pikemad kommentaarid saab piiritleda sümbolipaaridega /* ja */. Üherealise kommentaari algust märgib sümbolipaar //. Nii saab alustada kommentaari ka programmitekstiga realt, nt.

System.out.println("Tere, maailm!"); // väljastatakse ekraanile 

Kommentaarid kujul /** ... */ on kasutatavad automaatse dokumentaatori sisendina.

Ülesanne A1

Lisage programmile teist korda direktiiv System.out.println("Tere, maailm!"); Muutke väljastatavat teksti! Kompileerige! Käivitage! Kustutage esimese System.out.println lõpust ln ära. Mis muutub?

Tüübid ja muutujad

Javas (erinevalt Pythonist) peab muutuja ja ka meetodi tagastustüüp olema ilmutatult määratud. Kui tahame näiteks kasutada täisarvutüüpi muutujat a, saame kirjeldamisel kasutada tüüpi int:

int a;

Muutujale omistatakse väärtus = abil.

a = 7;

Kirjeldamise ja väärtuse omistamise saab ka ühendada:

int inimesi = 28;

Javas on mõned algtüübid (algavad väikese tähega):

  • täisarvud: byte, short, int ja long (vastavalt 8-, 16-, 32- ja 64-bitilised);
  • ujukomaarvud: float ja double (vastavalt 32- ja 64-bitilised);
  • Unicode-sümbolid: char (16-bitilised);
  • tõeväärtused: boolean (true või false).

Sõned ei ole Javas algtüüp, vaid on süsteemse klassi String isendid. (Nendest pikemalt nädala-paari pärast.) Põhimõtteliselt ongi uute tüüpide (klasside) loomine Javas programmeerimise aluseks.

Tüübid ja meetodid

Lisaks muutujatele peavad olema tüübid määratud ka meetodite korral. Kui meetod ei tagasta väärtust, siis on tagastustüübiks void (tühitüüp). Kõigil teistel juhtudel aga peab tagastustüüp olema kooskõlas sellega, mis tüüpi väärtuse meetod tagastab. Tagastatakse aga selle avaldise väärtus, mis asub naasmisdirektiivis võtmesõna return järel. Lisaks peab meetodi päises olema määratud ka parameetrite tüübid. Vaatleme näitena meetodit, mis arvutab kahe reaalarvu aritmeetilise keskmise.

static double aritkeskmine(double arv1, double arv2) {
  double summa = arv1 + arv2;
  return summa / 2;
}

Selle meetodi sisu saaks teha veel lühemaks - vaid üherealiseks:

return (arv1 + arv2) / 2;

Aga las seal praegu olla ka olemas muutuja summa.

Ülesanne A2

Püüame nüüd selle meetodi programmi sisse panna. Meetodite järjekord tekstis pole oluline, täitmine algab nagunii peameetodist. Küll aga on oluline, et ühe kirjeldus lõppeks enne, kui järgmine algab.

class Keskmised {

  static double aritkeskmine(double arv1, double arv2) {
    double summa = arv1 + arv2;
    return summa / 2;
  }

  public static void main(String[] args) {
    double a = 1.5;
    double b = 2.25;
    double c = aritkeskmine(a, b);
    System.out.println("Arvude " + a + " ja " + b + " aritmeetiline keskmine on " + c);
    System.out.println("Arvude 3.4 ja -3.4 aritmeetiline keskmine on " + aritkeskmine(-3.4, 3.4));
  }
}

Ülesanne P1

Palun nüüd pöörduge esimese paberiloleva ülesande juurde ja lahendage see koos paarilisega paberil. Lisage peameetodis double c = aritkeskmine(a, b); rea järele uus rida

System.out.println("Arvude" + a +" ja " + b + " summa on " + summa);

Tingimusdirektiivid

Tingimusdirektiivi üldine kuju Javas on

if (loogiline avaldis) direktiiv1 else direktiiv2

Tingimusdirektiiv algab sõnaga if, millele järgneb ümarsulgudes loogiline avaldis (avaldis, mille väärtus saab olla kas tõene või väär) ja sellele omakorda direktiiv, mis täidetakse siis, kui avaldis on tõene. Sõnale else aga järgneb direktiiv, mis täidetakse siis, kui loogiline avaldis on väär. Tingimusdirektiivi else-osa võib ka üldse puududa. Ühe direktiivi rollis võib olla ka plokk (programmilõik looksulgude {} vahel).

if (loogiline avaldis) {
    direktiivid1
}
else {
    direktiivid2
}

Ülesanne A3

Proovige teha mingi lihtne näide, kus on kasutatud if-lauset.

Lülitidirektiiv

Suurema hulga harude puhul saab kasutada lülitidirektiivi, mille üldkuju on järgmine

switch (avaldis) {
   case võimalikväärtus1:
        direktiivid1;
        break;
   case võimalikväärtus2:
        direktiivid2;
        break;
   …
   default:
        direktiivid juhuks, kui ühtegi ülaltoodud varianti ei kasutata;
}

(Kui võtmesõna break ära jätta mingis harus, siis pärast selle haru täitmist ei hüpata lülitidirektiivist välja, vaid minnakse järgmist vastet leidma.)

Näiteks järgmine programmilõik

int nädalapäev = 4;
switch (nädalapäev) {
    case 1: System.out.println("Esmaspäev"); break;
    case 2: System.out.println("Teisipäev"); break;
    case 3: System.out.println("Kolmapäev"); break;
    case 4: System.out.println("Neljapäev"); break;
    case 5: System.out.println("Reede"); break;
    case 6: System.out.println("Laupäev"); break;
    case 7: System.out.println("Pühapäev"); break;
    default: System.out.println("Vigane päev");
}

Tsüklidirektiivid Javas

Tsüklite programmeerimiseks on keeles Java mitu erinevat konstruktsiooni: kolmikpäisega tsükkel (for), eelkontrolliga tsükkel (while) ja järelkontrolliga tsükkel (do-while). For-tsüklil on olemas ka lühem versioon järjest nt. massiivi kõigi elementide poole pöördumiseks, aga seda käsitleme edaspidi.

Ülesanne P2

Palun lugege läbi alltoodud 3 tsüklitüübi kirjeldused ja visandage paberile vastavad plokkskeemid.

Üldtsüklidirektiiv ehk kolmikpäisega tsükkel ehk for-tsükkel:

for (eeltegevused; jätkamistingimus; sammu järeltegevused) {
    // käsud, mida tuleb täita niikaua,
    // kui jätkamistingimus kehtib
}

Tüüpiliselt on eeltegevusteks mingitele muutujatele algväärtuste omistamised. Võimalikud eeltegevused on näiteks järgmised.

int i = 0;

Eeltegevused: kirjeldatakse täisarvutüüpi muutuja i, mis on selle tsükli lokaalne muutuja (st. muutuja i väärtus ei ole väljaspool tsüklit kasutatav) ja omistatakse sellele algväärtus 0.

kordaja = 0.5;

Eeltegevused: omistatakse reaalarvutüüpi muutujale kordaja algväärtus 0.5. Siin ei ole kordaja tsükli lokaalne muutuja, vaid eeldatakse, et see muutuja on kirjeldatud juba enne tsükli täitmist (tüüp on double või float).

int i = 0, summa = 0;

Eeltegevused: kirjeldatakse täisarvutüüpi tsükli lokaalmuutujad i ja summa ning omistatakse neile algväärtused 0.

Jätkamistingimus tuleb seada nii, et tsüklit täidetaks täpselt vajalik arv kordi. Näiteks kui soovime, et tsüklit täidetaks kolm korda, võib tsükli eeltegevusena omistada mingile lokaalmuutujale (tsükliloendajale) algväärtuseks nulli ja igal sammul liita tsükliloendajale ühe. Pärast tsükli esimest sammu on tsükliloendaja väärtus siis 1, pärast teist sammu 2 ja pärast kolmandat sammu 3. Neljandat sammu me enam lubada ei tohi, seega peaks tsükli lõpetama niipea, kui tsükliloendaja saab võrdseks 3-ga või 3-st suuremaks. Jätkamistingimus on lõpetamistingimuse vastandtingimus, ehk antud juhul võib tsüklit jätkata nii kaua, kui tsükliloendaja on veel väiksem kolmest. Olukorda kirjeldava for-tsükli päis on järgmine:

for (int i = 0; i < 3; i = i + 1)

Tsükli sammu järeltegevuseks on sageli mingi muutuja väärtuse suurendamine või vähendamine teatud arvu võrra. Näiteks

i = i + 1;
j = j + 2;
k = k - 1;

Kõiki neid omistamisi saab Java-keeles ka lühemalt kirja panna:

i++;
j+=2;
k--;

Kirjutame näiteks for-tsükli, mis väljastab ekraanile viis korda teksti Tere!.

for (int i = 0; i < 5; i++) {
    System.out.println("Tere!");
}

Kui tsükli sisu koosneb ühest käsust, siis võib loogelised sulud ka ära jätta.

Eelkontrolliga tsükkel ehk while-tsükkel:

while (jätkamistingimus) {
    // Siia kirjutame käsud, mida tuleb täita niikaua,
    // kui tsükli päises olev jätkamistingimus kehtib.
}

See while-tsükkel on samaväärne for-tsükliga, millel puudub nii eeltegevus kui ka sammu järeltegevus, s.o

for ( ; jätkamistingimus; ) {
    // käsud
} 

Järelkontrolliga tsükkel ehk do-while-tsükkel:

do {
    // Siia kirjutame käsud, mida tuleb täita niikaua,
    // kui jätkamistingimus kehtib.
}
while (jätkamistingimus);

Pange tähele, et erinevalt eelkontrolliga tsüklist täidetakse järelkontrolliga tsüklit alati vähemalt üks kord, sest jätkamistingimuse kontroll toimub alles pärast tsükli sisu täitmist.

Ülesanne A4

Kirjutage programm, mis arvutab ning väljastab ekraanile arvude summa arvust 1 kuni arvuni 5, kaasaarvatud. Lahendage kasutades erinevaid tsükleid (tulemuseks peab olema 3 programmi (programmi osa)).

Ülesanne A5

Valige iga ülesande jaoks sobiv tsükkel ja kirjutage vastav programm.

  1. Väljastage arvud 1st 5ni.
  2. Looge 2 muutujat: summa ja piir ning liida summale juurde arv 2 seni kuni summa saab suuremaks kui piir.
  3. Väljastage tsükli abil tekst "Tuletan meelde, et varsti algab loeng!" nii, et olenemata konkreetsest tsükli tingimusest see tekst vähemalt ühe korra väljastatakse.

Ülesanne P3

Pange iga ülesande A5 jaoks paberile kirja, miks valisite just seda tüüpi tsükli.

Ülesanne P4

Palun arutage ja kirjutage paberile, millised on teie esmamuljed Javast. Millised on suurimad erinevused võrreldes Pythoniga? Mida oleks vaja veel üle seletada?

Andmete sisestamine klaviatuurilt

Üsna sageli on vaja, et programm saaks andmeid klaviatuurilt. See on Javas veidi töömahukam kui Pythonis. Vaatleme järgmist näidet:

import java.util.Scanner;

class Klaviatuurilt {

  public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    System.out.println("Sisesta täisarv");
    int taisarv = scan.nextInt();
    System.out.println("Sisesta reaalarv");
    double ujukomaArv = scan.nextDouble();
    System.out.println("Sisestasid täisarvu: " + taisarv);
    System.out.println(" ja reaalarvu: " + ujukomaArv);
  }

}

Märgime siin, et esimesel real imporditakse valmisklass, mille abil klaviatuurilt sisselugemist teostada. Importimise käsk peab olema enne klassi definitsiooni. Käsuga

Scanner scan = new Scanner(System.in);

luuakse objekt, mille abil on võimalik klaviatuurilt sisestatud arve lugeda. Täisarvu ja reaalarvu (ujukomaarvu) sisselugemine klaviatuurilt toimub vastavalt meetoditega nextInt() ja nextDouble(). Kümnendkoha eraldaja (, või .) sõltub konkreetse arvuti seadetest.

Ülesanne A6

Koostada programm, mis kontrollib, kas klaviatuurilt sisestatud kolm reaalarvu saavad olla kolmnurga külgedeks.

Ülesanne A7

Koostada programm, mis küsib kasutajalt korduvalt täisarvu ja teeb kindlaks, kas on tegemist paarisarvuga. Programmi töö lõpeb, kui kasutaja sisestab arvu null.

Ülesanne A8

Koostada programm, mis toob ekraanile kilogrammi ja naela vastavustabeli (võtame 1 kg = 2.2 naela, kuigi täpsem oleks 2.20462262185 naela):

 Kg        Nael
 1         2.2 
 3         6.6
 ...
 197       433.4
 199       437.8

Selleks, et saada ilusat tabelit, tuleb väljundit vormindada. Veerud saab tekitada tabeldusmärgi abil, mis Javas on "\t". Näiteks System.out.println("abc"+"\t"+"def"); viib sõne def uude veergu. Ujukomaarvude vormindamiseks ja väljastamiseks saab kasutada meetodit System.out.printf. Näiteks System.out.printf("%.1f",1234.45); määrab väljastatava kuju murdosa pikkuseks 1. Täiustage programmi nii, et kasutaja käest küsitakse info kilogrammide vahemiku kohta (algus, samm, lõpp).

Ülesanne A9

Koostada programm, mis leiab järgmise summa:

Täiustage programmi nii, et kasutaja käest küsitakse, mitme esimese liikme summa on vaja arvutada.

Raudvara

// raudvara - ... miski põhiline, keskne, jääv. Eesti õigekeelsussõnaraamat ÕS 2018

Selleks, et uutest teadmistest tähtsaim kergemini meelde jääks, koguge endale raudvara (kas siis dokument oma arvutisse, Google Docs, käsitsi kirjutatud leht vms).

Kirjutage oma raudvaralehele kõik see, mis tänases praktikumis kõige olulisem oli! Raudvaralehte hakkame täiendama terve kursuse jooksul! Praktikumi juhendaja kontrollib aeg-ajalt selle sisu.

Arenduskeskkond (IDE)

Alates järgmisest praktikumist hakkame kirjutama koodi mitte Notepadis, vaid spetsiaalselt selleks mõeldud arenduskeskkonnas, mis paljud ülesanded mugavamaks teeb. Siin kursusel soovitame kasutada IntelliJ IDEA keskkonda. Soovi korral on võimalik kasutada ka keskkonda Eclipse.

Lugege kohe praegu IDE juhendite lehelt IntelliJ või Eclipse sissejuhatust. Seejärel proovi ühega neist koostada lihtne "Tere maailm" programm ja see käivitada. Kursuse materjalides on mõlema keskkonna jaoks olemas juhendid koos piltidega. Funktsionaalsuselt on nad võrdväärsed.

Kodune ülesanne!

  • Kontrollige, kas teie kodu- või sülearvutis on olemas Java. Vajadusel paigaldage või uuendage.
    • Java saate nt. veebilehelt http://www.oracle.com/technetwork/java/javase/downloads/index.html.
    • Sobiv variant võiks olla JDK 11.
    • Konkreetses (nt. arvutiklassi) arvutis oleva Java versiooni saab teada, kui käsureale kirjutada java -version, kompilaatori versiooni saab teada javac -version abil.
  • Proovige, kas toimib.
  • Kui toimib, siis võiks proovida ka paigaldada keskkonna IntelliJ või Eclipse (kui seda ei ole arvutis olemas).
    • IntelliJ saate lehelt https://www.jetbrains.com/idea/download/. Sobib Community Edition, aga ut.ee meiliaadressiga saate tasuta ka Ultimate Edition kasutada.
    • Eclipse'i saate lehelt https://www.eclipse.org/downloads/packages/. Sobiv variant võiks olla Eclipse IDE for Java Developers.
  • Kontrollige, kas Teil on moodle.ut.ee-s juurdepääs Objektorienteeritud programmeerimise kursusele.
  • Lõpetage poolelijäänud ülesanded.
  • Tehke kodus enne järgmist praktikumi läbi 2. praktikumi materjal.

Mõningaid materjale

Teaduskooli programmeerimise kursus

Soome MOOC Object-Oriented programming with Java

Java Tutorial for Complete Beginners

Java for Python Programmers

Objektorienteeritud programmeerimine Java baasil

The Java™ Tutorials

Java glossary

Thinking in Java

Think Java: How to Think Like a Computer Scientist

What is code?

  • 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