Objektorienteeritud programmeerimine

Seotud dokumendid
PowerPointi esitlus

Excel Valemite koostamine (HARJUTUS 3) Selles peatükis vaatame millistest osadest koosnevad valemid ning kuidas panna need Excelis kirja nii, et

Infix Operaatorid I Infix operaatorid (näiteks +) ja tüübid (näiteks ->) kirjutatakse argumentide vahele, mitte argumentide ette. Näiteks: 5 + 2, 2*pi

I Generaatori mõiste (Java) 1. Variantide läbivaatamine Generaator (ehk generaator-klass) on klass, milles leidub (vähemalt) isendimeetod next(). Kons

PHP

Scala ülevaade 1 Meetodid, muutujad ja väärtused. Süntaks 2 Lihtsad tüübid ja väärtused. 3 OOP, case-klassid ja mustrisobitus. 4 Puhta Scala väärtusta

loeng2

Failiotsing: find paljude võimalustega otsingukäsk find kataloog tingimused kataloog - otsitakse sellest kataloogist ja tema alamkataloogidest tingimu

(loeng3-ohtlikud_koodiloigud)

TARTU ÜLIKOOL MATEMAATIKA-INFORMAATIKATEADUSKOND Arvutiteaduse instituut Infotehnoloogia eriala Roman Jagomägis Programmeerimiskeel privaatsust säilit

Word Pro - diskmatTUND.lwp

AWK Aho Weinberger Kernighan struktuurse teksti töötlemise keel rikkalikult tekstitöötlusvahendeid omal alal suhteliselt lihtne ja kiiresti realiseeri

Algoritmid ja andmestruktuurid

untitled

Pealkiri

1. AKE Ajalise keerukuse empiiriline hindamine

Andmeturve

Microsoft Word - essee_CVE ___KASVANDIK_MARKKO.docx

SQL

IFI6083_Algoritmid_ja_andmestruktuurid_IF_3

Programmeerimiskeel APL Raivo Laanemets 17. mai a.

1 / loeng Tekstitöötlus Sisend/väljund Teksti lugemine Sõnad

SQL

Mida räägivad logid programmeerimisülesande lahendamise kohta? Heidi Meier

Word Pro - digiTUNDkaug.lwp

MOOCi „Programmeerimise alused“ ülesannete lahenduste analüüs

Peafail3_2.dvi

Microsoft Word - ref - Romet Piho - Tutorial D.doc

raamat5_2013.pdf

DIGITAALTEHNIKA DIGITAALTEHNIKA Arvusüsteemid Kümnendsüsteem Kahendsüsteem Kaheksandsüsteem Kuueteistkü

Pangalingi spetsifikatsioon Pocopay pangalingilt makse algatamiseks tuleb kasutada teenust Kaupmees teeb päringu Pocopayle aadressile

Pealkiri

PowerPointi esitlus

Funktsionaalne Programmeerimine

TARTU ÜLIKOOL Arvutiteaduse instituut Informaatika õppekava Mirjam Iher Nõrgima eeltingimuse staatiline analüüs pinukeeltele Bakalaureusetöö (9 EAP) J

Tõstuksed Aiaväravad Tõkkepuud Automaatika KÄIGUUKSED Käiguuksed on paigaldatavad kõikidele sektsioonuste tüüpidele. Käiguukse saab varustada kas tava

PÄRNU TÄISKASVANUTE GÜMNAASIUM ESITLUSE KOOSTAMISE JUHEND Pärnu 2019

HAJUSSÜSTEEMID HAJUSSÜSTEEMID Kaugprotseduurid IDL kompileerimine ONCIDLnäide CORBAIDLnäide MIDLnäide DCERPCmuidomadusi XML-RPC JSON-RPC REST document

Matemaatiline analüüs IV 1 3. Mitme muutuja funktsioonide diferentseerimine 1. Mitme muutuja funktsiooni osatuletised Üleminekul ühe muutuja funktsioo

Andmed arvuti mälus Bitid ja baidid

lvk04lah.dvi

Skriptimiskeeli, mida ei käsitletud Perl Python Visual Basic Script Edition (VBScript) MS DOS/cmd skriptid Windows PowerShell midagi eksootilisemat: G

Microsoft Word - EHR.docx

G aiasoft Programmi VERP ja Omniva Arvekeskuse liidese häälestamine ja arvete saatmine-lugemine VERP 6.3 ja VERP 6.3E Versioon ja hilisemad K

E-arvete juhend

Andmebaasid, MTAT Andmebaasikeeled 11.loeng

ITI Loogika arvutiteaduses

B120_10 estonian.cdr

loeng7.key

Statistikatarkvara

Eesti keele võõrkeelena olümpiaadi lõppvoor 2013 Kõik ülesanded on siin lühendatult. Valikus on küsimusi mõlema vanuserühma töödest. Ülesanne 1. Kirju

ArcGIS Online Konto loomine Veebikaardi loomine Rakenduste tegemine - esitlus

MTAT Operatsioonisüsteemid - Turvalisus

Neurovõrgud. Praktikum aprill a. 1 Stohhastilised võrgud Selles praktikumis vaatleme põhilisi stohhastilisi võrke ning nende rakendust k

Süsteemide modelleerimine: praktikum Klassiskeemid Oleg Mürk

Microsoft Word - requirements.doc

prakt8.dvi

PowerPointi esitlus

Funktsionaalne Programmeerimine

Microsoft Word - Toetuste veebikaardi juhend

Diskreetne matemaatika I Kevad 2019 Loengukonspekt Lektor: Valdis Laan 20. juuni a.

Pythoni Turtle moodul ja Scratchi värvilisem pool Plaan Isikukoodi kontrollnumbri leidmine vaatame üle lahenduse kontrollnumbri leimiseks. Pythoni joo

Microsoft Word - Referaat.docx

Rakenduste loomise ja programmeerimise alused

E-õppe ajalugu

Peugeot Boxer eriversioonid Hinnad ja varustused Diisel Mootor ja kere Käigukast Võimsus (kw/hj) Keskmine kütusekulu (l/100km) VARUSTUSTASE Varustusta

X Window System tuntud kui: X11 X X-Windows akendussüsteem/akendesüsteem rastergraafikat toetavatele ekraanidele UNIX-maailmas väga levinud mitmesugus

ДЕЛОВОЕ ОБЩЕНИЕ

Image segmentation

Matemaatika ainekava 8.klass 4 tundi nädalas, kokku 140 tundi Kuu Õpitulemus Õppesisu Algebra (65 t.) Geomeetria (60 t.) Ajavaru kordamiseks (15 õppet

MTAT Operatsioonisüsteemid - Turvalisus

Mida me teame? Margus Niitsoo

Rahulolu_uuring_2010.pdf

MS Word Sisukord Uue dokumendi loomine... 2 Dokumendi salvestamine... 3 Faili nimi... 4 Teksti sisestamine... 6 Klaviatuuril mitteleiduvat sümbolite l

Operatsioonisüsteemide ehitus

Relatsiooniline andmebaaside teooria II. 6. Loeng

Mascus - Jatiina esitlus 2017

Matemaatilised meetodid loodusteadustes. I Kontrolltöö I järeltöö I variant 1. On antud neli vektorit: a = (2; 1; 0), b = ( 2; 1; 2), c = (1; 0; 2), d

6 tsooniga keskus WFHC MASTER RF 868MHz & 4 või 6 tsooniga alaseade SLAVE RF KASUTUSJUHEND 6 tsooniga WFHC RF keskus & 4 või 6 tsooniga alaseade SLAVE

Sügis 2018 Kõrgema matemaatika 2. kontrolltöö tagasiside Üle 20 punkti kogus tervelt viis üliõpilast: Robert Johannes Sarap, Enely Ernits, August Luur

Praks 1

Loeng05

EBSCO täistekstiandmebaaside kasutamine Otsingu sooritamiseks: 1. Logi sisse 2. Vali EBSCOhost Web 3. Seejärel vali andmebaas, milles soovid otsingut

DE_loeng5

EE-macbook-retina-12-early2015-qs.indd

PRESENTATION HEADER IN GREY CAPITALS Subheader in orange Presented by Date Columbus is a part of the registered trademark Columbus IT

Versioon Autor Kuupäev Märkused 1.0 Riivo Talviste Algdokument 1.1 Riivo Talviste Arhitektuurimuutused, terminoloogia 1.2 Riivo

Automaatjuhtimise alused Automaatjuhtimissüsteemi kirjeldamine Loeng 2

Microsoft Word - P6_metsamasinate juhtimine ja seadistamine FOP kutsekeskharidus statsionaarne

Juhend nutiterminali seadistamiseks ja kaardimaksete vastuvõtmiseks Ingenico Link/2500 ja icmp

Itella Estonia OÜ Uuendatud EXPRESS BUSINESS DAY BALTICS PAKKIDE JA ALUSTE TRANSPORT Express Business Day Baltics paki lubatud maksimaalsed

Ülesanne #5: Käik objektile Kooli ümberkujundamist vajava koha analüüs. Ülesanne #5 juhatab sisse teise poole ülesandeid, mille käigus loovad õpilased

6. KLASSI MATEMAATIKA E-TASEMETÖÖ ERISTUSKIRI Alus: haridus- ja teadusministri määrus nr 54, vastu võetud 15. detsembril E-TASEMETÖÖ EESMÄRK Tas

NR-2.CDR

SAF 7 demo paigaldus. 1.Eeldused SAF 7 demo vajab 32- või 64-bitist Windows 7, Window 8, Windows 10, Windows Server 2008 R2, Windows Server 2012, Wind

DVD_8_Klasteranalüüs

Õppevideote rakendamine programmeerimise kursustel

Pealkiri on selline

Väljavõte:

Objektorienteeritud programmeerimine 2. loeng 18. veebruar 2020 Marina Lepp 1

Kuidas teile nüüd meeldib Delta maja? 1. Väga meeldib 2. Pigem meeldib 3. Ei oska öelda 4. Pigem ei meeldi 5. Üldse ei meeldi 2

Möödunud nädalal Loeng Sissejuhatus Praktikum Paaristöö, algus Sõbrapäev Eesti laulu poolfinaalid (Tartu Ülikooli Spordihoone) Suusamaraton -> jalgsimatk 3

Umbes mitu tundi tegelesite eelmisel nädalal selle ainega (loeng+praktikum+iseseisvalt)? 1. 0-2 tundi 2. 2-4 tundi 3. 4-6 tundi 4. 6-8 tundi 5. 8-10 tundi 6. 10-12 tundi 7. 12-14 tundi 8. üle 14 tunni 4

Kuivõrd olete selle ainega graafikus? 1. Isegi ees 2. Täiesti graafikus 3. Veidi maas, aga saan ise hakkama 4. Kõvasti maas, vajan abi 5. Ei oska öelda 5

Organisatoorset Enne OOPi Kava tehted, tingimuslause, tsükkel, massiiv, meetod OOP klassid, isendid 6

Organisatoorset Loengupunktid (max 12 punkti) kuni 1 punkt loengust loengus aktiivne osalemine video + ülesanne Praktikumipunktid (max 12 punkti) kuni 1 punkt praktikumist kodutöö enne praktikumi praktikumis aktiivne osalemine Praktikumide toetusrühm kolmapäeviti kell 18.15 kui tunnete, et hakkate maha jääma 7

Organisatoorset Loenguslaidid pdf formaadis courses is https://courses.cs.ut.ee/2020/oop/spring/main/lectures pptx formaadis Moodle is mittestatsionaarse rühma jaoks 8

Kas hindamissüsteem on arusaadav? Ei, sain kokku 102 punkti mitte 100 "E" [51-60], "D" (60-70], "C" (70-80], "B" (80-90], "A" (90-9

Organisatoorset Eksamite ajad: 26.05 kell 16 04.06 kell 14 12.06 kell 12 10

Nimi on tõstutundlik võib sisaldada tähti, numbreid, _, $ ei tohi alata numbriga ei tohi olla Java võtmesõna ei tohi olla true, false, null, _ 11

Ühiksuurendamine, ühikvähendamine ++muutuja Muutujat suurendatakse ühe võrra ja seejärel arvutatakse avaldise väärtus kasutades muutuja uut väärtust muutuja++ --muutuja muutuja-- Avaldise väärtus arvutatakse kasutades muutuja vana väärtust ja seejärel suurendatakse muutujat ühe võrra Muutujat vähendatakse ühe võrra ja seejärel arvutatakse avaldise väärtus kasutades muutuja uut väärtust Avaldise väärtus arvutatakse kasutades muutuja vana väärtust ja seejärel vähendatakse muutujat ühe võrra 12

Kas on lubatud int Public = 50000; 1. Jah 2. Ei 3. Ei oska öelda 13

Kas on lubatud int x = 5_000_000; 1. Jah 2. Ei 3. Ei oska öelda 14

Arvud, tüübid Täisarvud byte 8-bitiline -128 kuni 127 short 16-bitiline -32 768 kuni 32 767 int 32-bitiline -2 147 483 648 kuni 2 147 483 647 long 64-bitiline -9 223 372 036 854 775 808 kuni 9 223 372 036 854 775 807 Ujukomaarvud float 32-bitiline double 64-bitiline 15

Tüübiteisendus Avaldise arvutamisel Kui ühe operandi tüüp on double, siis teine teisendatakse ka double-tüüpi vastasel juhul, kui ühe operandi tüüp on float, siis teine teisendatakse ka float-tüüpi vastasel juhul, kui ühe operandi tüüp on long, siis teine teisendatakse ka long-tüüpi vastasel juhul teisendatakse mõlemad int-tüüpi 1.0/2 1/2 16

Tüübiteisendus Laienemise järjekord byte, short, int, long, float, double laiemaks automaatselt kitsamaks tuleb ilmutatult näidata double f = 4; double d = 6.4; int i = (int) d; // d ise ei muutu, i on 6 double u = i; // u on 6.0 17

Sõne Ei ole Javas algtüüp, hiljem käsitleme põhjalikumalt String s1 = "On"; String s2 = "veebruar"; String s3 = s1 + " " + s2; 18

Mida väljastab ekraanile? int i = 1, j = 2; System.out.println("i + j = " + i + j); 1. i + j = 1 2. i + j = 2 3. i + j = 3 4. i + j = 12 5. midagi muud 19

Mida väljastab ekraanile? int i = 1, j = 2; System.out.println("i + j = " + (i + j)); 1. i + j = 1 2. i + j = 2 3. i + j = 3 4. i + j = 12 5. midagi muud 20

Loogilised operaatorid Java Python! not Loogiline eitus (unaarne) && and Loogiline JA (binaarne) or Loogiline VÕI (binaarne) 21

Operatsioonide prioriteedid Operatsioonid Täitmise järjekord a++ a-- ++a --a +a -a ~! * / % + - << >> >>> < > <= >= instanceof ==!= & ^ &&? : Täidetakse varem Päris kõik ei ole kohustuslikult kasutuses siin aines = += -= *= /= %= &= ^= = <<= >>= >>>= Täidetakse hiljem 22

Kui on sama tasemega? Omistamised paremalt vasakule (paremassotsiatiivsed) x = y += z = 1; ülejäänud binaarsed operatsioonid vasakult paremale (vasakassotsiatiivsed) 5 % 2 * 3 / 6 23

Mis väljastatakse ekraanile? int x,y,z; x = y += z = 1; System.out.println(x); 1. 0 2. 1 3. 2 4. midagi muud 5. veateade 24

Mis väljastatakse ekraanile? int x,y,z; y = 0; x = y += z = 1; System.out.println(x); 1. 0 2. 1 3. 2 4. midagi muud 5. veateade 25

Mis väljastatakse ekraanile? System.out.println(5 % 2 * 3 / 6); 1. 0 2. 0.5 3. 1 4. midagi muud 5. veateade 26

Tingimusdirektiivid if (loogilineavaldis) { lause(d)-true-korral; } if (loogilineavaldis) { lause(d)-true-korral; } else { lause(d)-false-korral; } 27

Direktiiv otseselt algoritmilisi tegevusi kirjeldav lause; erijuhul omakorda blokk või tühidirektiiv (ainult semikoolon); ülejäänud direktiivideks on avaldisdirektiiv, lülitidirektiiv, tingimusdirektiiv, eelkontrolliga tsüklidirektiiv, järelkontrolliga tsüklidirektiiv, üldtsüklidirektiiv, katkestusdirektiiv, jätkamisdirektiiv, naasmisdirektiiv, erindiseade direktiiv, sünkroonidirektiiv, katsendidirektiiv. J. Kiho Väike Java leksikon 28

Hinne if (summa >= 91) hinne = 'A'; else if (summa >= 81) hinne = 'B'; else if (summa >= 71) hinne = 'C'; else if (summa >= 61) hinne = 'D'; else if (summa >= 51) hinne = 'E'; else hinne = 'F'; if (summa >= 91) hinne = 'A'; else if (summa >= 81) hinne = 'B'; else if (summa >= 71) hinne = 'C'; else if (summa >= 61) hinne = 'D'; else if (summa >= 51) hinne = 'E'; else hinne = 'F'; Ühelauseline plokk võib olla ilma looksulgudeta! 29

Mis väljastatakse ekraanile? int i = 1, j = 2, k = 3; if (i > j) if (i > k) System.out.println("A"); else System.out.println("B"); 1. A 2. B 3. mitte kumbki 30

Taane ei loe, aga on väga soovitatav class Tere { public static void main(string[] args) {System.out.println("Tere");}} 31

Tingimusavaldis loogilineavaldis? avaldis1 : avaldis2; Kui loogilineavaldis on tõene, on tingimusavaldise väärtuseks avaldis1 väärtus Vastasel korral on kogu tingimusavaldise väärtuseks avaldis2 väärtus x = y > 0? 'P' : 'N'; if (y > 0) x = 'P'; else x = 'N'; 32

Mis saab olema k väärtus? int i, k; i = -10; k = i < 0? -i : i; 1. -10 2. 10 3. mitte kumbki 33

Lülitidirektiiv switch (lülitiavaldis) { case väärtus1: lause(d)1; break; case väärtus2: lause(d)2; break; case väärtusn: lause(d)n; break; default: vaikelause(d); } lülitiavaldis char, byte, short, int, String (alates 1.7), mõned veel väärtus1, - konstandid, ei tohi sisaldada muutujaid break; - katkestab valikuoperaatori töö, võib ka puududa 34

Tsüklid Üldtsüklidirektiiv ehk kolmikpäisega tsükkel ehk for-tsükkel Eelkontrolliga tsükkel ehk while-tsükkel Järelkontrolliga tsükkel ehk do-while-tsükkel 35

Tsüklid for (eeltegevused; jätkamistingimus; järeltegevused){ // käsud, mida tuleb täita niikaua, // kui jätkamistingimus kehtib } while (jätkamistingimus) { // käsud, mida tuleb täita niikaua, // kui jätkamistingimus kehtib } do { // käsud, mida tuleb täita niikaua, // kui jätkamistingimus kehtib } while (jätkamistingimus);

Plokkskeemid for-tsükkel while-tsükkel do-while-tsükkel Eeltegevused Ei Jätkamis tingimus Käsud Ei Jätkamis tingimus Jah Jah Käsud Ei Jätkamis tingimus Jah Käsud Järeltegevused

Muutuja skoop Plokis defineeritud muutuja on lokaalne Lokaalse muutuja skoop (ulatus) algab kirjeldamisest ja lõpeb teda sisaldava ploki lõpus Eri plokkides võib muutujat uuesti kirjeldada Väljaspool plokki ei saa plokis kirjeldatud muutujat kasutada 38

Mis väljastatakse ekraanile? int sum = 0; for(int i = 0; i < 5; i++){ sum += i; } System.out.println(i); 1. 0 2. 4 3. 5 4. midagi muud 5. veateade 39

Mis väljastatakse ekraanile? int sum = 0; int i; for(i = 0; i < 5; i++){ sum += i; } System.out.println(i); 1. 0 2. 4 3. 5 4. midagi muud 5. veateade 40

Mis väljastatakse ekraanile? int sum = 0; int i = 0; for(; i < 5; i++){ sum += i; } System.out.println(i); 1. 0 2. 4 3. 5 4. midagi muud 5. veateade 41

1. 0 2. 5 3. 10 4. 15 Mis väljastatakse ekraanile? int sum = 0; int i = 0; for(; i < 5; i++);{ sum += i; } System.out.println(sum); 5. midagi muud 6. veateade 42

{ laused } klass meetod tsükkel if-lause osad Plokk { int j; j = 7; } System.out.println(j); või lihtsalt mingi laused {} rühmitatud!? 43

For-tsüklist veel Eeltegevusi võib olla 0 for(; i < 5; i++) 1 for(i = 0; i < 5; i++) rohkem for(i = 0, j = 0; i < 5; i++) Jätkamistingimus kui kirjas pole, siis täidetud for(i = 0; ; i++) Sammu järeltegevusi võib olla 0 for(i = 0; i < 5;) 1 for(i = 0; i < 5; i++) rohkem for(i = 0, j = 0; i < 5; i++, j++) 44

Lõpmatud tsüklid for( ; ; ) { } while (true) { } do { } while (true); 45

break ja continue break lõpetab koheselt tsükli täitmise ning programm jätkab tsüklile järgneva lause täitmisega continue lõpetab tsüklikeha täitmise ning täitmist jätkatakse tsüklitingimuse kontrollimisega; kui see on täidetud, siis jätkatakse tsükli täitmist edasi 46

Massiiv vs. list Massiiv (järjend) Staatiline andmestruktuur (suurus on fikseeritud) List Dünaamiline andmestruktuur (muutuva suurusega, elemente saab lisada ja eemaldada)

Massiiv Suurust muuta ei saa, ei saa elemente lisada ja eemaldada int[] b = new int[3]; b[0] = 10; b[1] = 5; for (int elem : b){ System.out.println(elem); // 10 5 0 } String[] a = {"esimene", "teine", "kolmas"}; //mitte algtüüpidega (nt int[]-iga ei tööta) System.out.println(Arrays.asList(a)); //System.out.println(Arrays.asList(b));//[[I@2a139a55]

Meetodid Klassimeetod Tagastustüüp Meetodi nimi Parameetrid static void tervita(){ System.out.println("Tere!"); } static double summa(double a, double b) { return a + b; } Naasmisdirektiiv Meetodi signatuur: tervita() summa(double, double)

Mõisteid Üledefineerimine (ingl. overloading) olukord, kus klassi kuulub mitu sama nimega, kuid erineva signatuuriga meetodit; väljakutse puhul rakendatakse neist väljakutses antud argumentide poolest sobivat Signatuur (ingl. signature) meetodi iseloomustus, mis koosneb meetodi nimest ning formaalsete parameetrite tüüpide loetelust J. Kiho Väike Java leksikon 50

Algtüüp Täisarvud byte short int long Ujukomaarvud float double Tõeväärtused boolean Sümbolid char Tüübid Viittüüp Klass kui uus andmetüüp! 51

Paradigmad Mitut moodi saab jaotada, nt Protsessile orienteeritud mudel Andmetele orienteeritud mudel Sissemakse, väljamakse, ülekanne Klient, raha, konto 52

Objektorienteeritud keeled Esmane tähelepanu andmetele ja alles seejärel küsimus, mida nende andmetega teha saab Olgu meil olemas objekt KALENDER Mida KALENDER teha OSKAB? leiame selle objektiga seotud tegevused soovitud kalendrilehe näitamine lehekeeramine Mitte kalendri VAATAMINE, vaid NÄITAMINE kalender ise ei vaata Ja lehekeeramise laseme tal endal teha Objektorienteeritud keeli Java, C++, Smalltalk, Ruby aga ka Python 53

Objektorienteerituse põhimõisted Objektorienteeritud keeltes on kesksel kohal objektid Programm kui omavahel suhtlevate objektide kogum Mitte niivõrd täidetavate käskude nimekiri Igal objektil on identiteet, olek ja käitumine Identiteet eristab objekti teistest objektidest Olek individuaalsed andmed (erinevad terminid: atribuut (ingl. attribute), omadus (ingl. property), (isendi)väli (ingl. (instance) field)), (isendi)muutuja (ingl. (instance) variable))) mis võivad muutuda Objekti käitumise määravad meetodid (protseduurid, mida objekt võib teostada, näiteks oleku muutmiseks, aga mitte ainult) 54

Klass, isend Iga objekt kuulub mingisse klassi; so. on mingi klassi isendiks (ingl. instance) Klass on sisuliselt objekti tüüp, mis määrab, millist liiki olekut ja käitumist objekt omab Kõik samasse klassi kuuluvad objektid omavad samu meetodeid ja isendivälju, kuid nende konkreetsed väärtused võivad olla erinevad Klass Isend Klass Kast nimi pikkus laius kõrgus 55

Hoiatus! Järgnevates näidetes kasutatakse õppeotstarbel vahel võtteid, mis pole päris kooskõlas heade OOP tavadega Nii saame asju tutvustada järk-järgult ja loodetavasti paremini selgeks 56

Identiteet class KastId { } KastId kast1 = new KastId(); KastId kast2 = new KastId(); 57

class Kast { double pikkus; double laius; double kõrgus; } Olek Isendiväljad (Isendimuutujad) Kast kast1 = new Kast(); kast1.laius = 3.6; Nii ei tehta!!! System.out.println(kast1.laius); 58

Käitumine class Kast { double pikkus; double laius; double kõrgus; Meetodid } double ruumala() { return pikkus * laius * kõrgus; } void tervitus() { System.out.println("Tere"); } 59

Konstruktor ingl. constructor klassi kehas kirjeldatud eriline protseduur, mida rakendatakse isendiloome käigus (nt. vastloodud isendi väljade algväärtustamiseks) J. Kiho Väike Java leksikon Nimi langeb kokku klassi nimega Sarnane meetodiga, kuid ei oma tagastustüüpi Võimalik üledefineerimine Kui klassis ei ole konstruktorit defineeritud, siis lisatakse vaikekonstruktor (parameetriteta) See, millist konstruktori versiooni kasutama hakatakse, sõltub argumentide arvust ja/või tüübist 60

Konstruktor class Kast { String nimi; double pikkus; double laius; double kõrgus; Isendiväljad (Isendimuutujad) public Kast(String nimi, double pikkus, double laius, double kõrgus) { this.nimi = nimi; this.pikkus = pikkus; this.laius = laius; this.kõrgus = kõrgus; } Meetodid Konstruktor 61

Võtmesõna this Viitamine objektile endale isendiväljadele viitamisel, kui parameetrite nimed langevad kokku isendiväljade nimedega ühe konstruktori sees teise konstruktori väljakutsumisel 62

Mitu konstruktorit public Kast(String nimi, double pikkus, double laius, double kõrgus) { this.nimi = nimi; this.pikkus = pikkus; this.laius = laius; this.kõrgus = kõrgus; } public Kast(String nimi) { this.nimi = nimi; this.pikkus = 1; this.laius = 1; this.kõrgus = 1; } public Kast(){ this("",0.0,0.0,0.0); } 63

Mitu konstruktorit public Kast(String nimi, double pikkus, double laius, double kõrgus) { this.nimi = nimi; this.pikkus = pikkus; this.laius = laius; this.kõrgus = kõrgus; } Kast kast2 = new Kast("Paul",4.8, 2, 3); Kast kast3 = new Kast("Ülo"); public Kast(String kast5 nimi) = { new Kast(); this.nimi = nimi; this.pikkus = 1; this.laius = 1; this.kõrgus = 1; } public Kast(){ this("",0.0,0.0,0.0); } 64

Konstruktoris võib teha ka rohkem public Kast(double serv, int tegur) { nimi = ""; double uus = serv*tegur; pikkus = uus; laius = uus; kõrgus = uus; System.out.println("Uue kasti loomine!"); } this??? 65

Millega peab kokku langema konstruktori nimi? 1. ühe isendivälja nimega 2. selle klassi nimega, kus konstruktor on 3. ei pea millegagi kokku langema 4. meetodi nimega selles klassis, kus konstruktor on 66

Üledefineerimise jaoks on vaja, et meetoditel erineks 1. nimi 2. pikkus 3. tagastustüüp 4. signatuur 5. mitte midagi 67

Mõisteid Üledefineerimine (ingl. overloading) olukord, kus klassi kuulub mitu sama nimega, kuid erineva signatuuriga meetodit (ka päriluse teel saadut) või mitu konstruktorit; väljakutse puhul rakendatakse neist väljakutses antud argumentide poolest sobivat. Signatuur (ingl. signature) meetodi või konstruktori iseloomustus, mis koosneb (meetodi või konstruktori) nimest ning formaalsete parameetrite tüüpide loetelust. J. Kiho Väike Java leksikon 68

Viittüüpi Kast kast1; kast1 null 69

Viittüüpi Kast kast1; kast1 = new Kast(); kast1 pikkus laius kõrgus Klassi Kast isend 70

Viittüüpi Kast kast1; kast1 = new Kast(); Kast kast2 = new Kast(); kast1 kast2 pikkus laius kõrgus Klassi Kast isend pikkus laius kõrgus Klassi Kast isend 71

Viittüüpi Kast kast1; kast1 = new Kast(); Kast kast2 = new Kast(); kast2 = kast1; kast1 kast2 pikkus laius kõrgus Klassi Kast isend pikkus laius kõrgus Klassi Kast isend 72

Viittüüpi Kast kast1; kast1 = new Kast(); Kast kast2 = new Kast(); kast2 = kast1; kast1 kast2 pikkus laius kõrgus Klassi Kast isend pikkus laius kõrgus Klassi Kast isend Garbage Collection prahikoristus 73

Klasse on juba olemas! Java API https://docs.oracle.com/en/java/javase/11/docs/api/ 74

Juurdepääsetavus Enamik objektorienteeritud keeli toetab informatsiooni varjamist Väljad ja meetodid on jagatud avalikeks ja privaatseteks Privaatsed väljad ja meetodid on nähtavad ainult klassi sees; väljastpoolt on nähtavad ainult avalikud väljad ja meetodid Tavaline jaotus: väljad privaatsed ja meetodid avalikud Soodustab suurte programmide hallatavust, kuna objekti "kasutaja" ei pea teadma midagi selle sisemistest realisatsioonidetailidest 75

Loengu tempo oli 1. liiga kiire 2. paras 3. liiga aeglane 76

Materjal tundus 1. liiga lihtne 2. parajalt jõukohane 3. liiga keeruline 77

Suur tänu osalemast ja kohtumiseni! 78