Riistvarapõhine programmeerimine Loeng 7 Protseduurid Katkestused Tsüklid.
Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf ·...
Transcript of Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf ·...
![Page 1: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/1.jpg)
Objektorienteeritud programmeerimine
4. loeng 4. märts
Eno Tõnisson
kasutatud ka Helle Heina loengumaterjale ja Jüri Kiho Väikest Java leksikoni
1
![Page 2: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/2.jpg)
Eelmisel nädalal
• loeng
– klassid, isendid
– sõned
• praktikum
– klassid, isendid
• Eesti laul
2
![Page 3: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/3.jpg)
Meetodite üledefineerimine
3
• Klassis Math
• Kastidega
void tervitus() {
System.out.println("Tere");
}
void tervitus(Kast teine) {
System.out.println("Tere, " + teineKast.nimi);
}
VIGA
![Page 4: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/4.jpg)
Umbes mitu tundi tegelesite eelmisel nädalal selle ainega (loeng+praktikum+iseseisvalt)?
1. paariline
4
1. 2. 3. 4. 5. 6. 7. 8.
0% 0% 0% 0%0%0%0%0%
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
![Page 5: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/5.jpg)
Kuivõrd olete selle ainega graafikus? 1. paariline
5
1. 2. 3. 4. 5.
0% 0% 0%0%0%
1. Isegi ees
2. Täiesti graafikus
3. Veidi maas, aga saan ise hakkama
4. Kõvasti maas, vajan abi
5. Ei oska öelda
![Page 6: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/6.jpg)
Umbes mitu tundi tegelesite eelmisel nädalal selle ainega (loeng+praktikum+iseseisvalt)?
2. paariline
6
1. 2. 3. 4. 5. 6. 7. 8.
0% 0% 0% 0%0%0%0%0%
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
![Page 7: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/7.jpg)
Kuivõrd olete selle ainega graafikus? 2. paariline
7
1. 2. 3. 4. 5.
0% 0% 0%0%0%
1. Isegi ees
2. Täiesti graafikus
3. Veidi maas, aga saan ise hakkama
4. Kõvasti maas, vajan abi
5. Ei oska öelda
![Page 8: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/8.jpg)
Täna
• Sõned
– String, StringBuilder
• Mähisklassid
– char, Character
• Pärilus
– ülemklassid, alamklassid
– ülekate
8
![Page 9: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/9.jpg)
Sõned
• Sõne pole algtüüpi
– Iga sõne on isend
• Javas põhineb sõnetöötlus sisseehitatud klasside kasutamisel – java.lang.String
– java.lang.Character
– java.lang.StringBuffer
– java.lang.StringBuilder
9
![Page 10: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/10.jpg)
Loomine, võrdlemine • new
• hulk konstruktoreid
• on eriline
• võrdlemine
10
char[] tähed = {'a','b','c'};
String sõne1 = new String(tähed);
String sõne2 = "abc";
System.out.println(sõne1 == sõne2);
System.out.println(sõne1.equals(sõne2));
false
true
Objekti viida võrdlemine
Puhvri sisu võrdlemine
Sõneliteraal
![Page 11: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/11.jpg)
Literaal
• konkreetse väärtuse üleskirjutus programmis; • literaale ei tohi poolitada; • literaalina esitatud väärtuse tüüp on määratud kirjakujuga
– näiteks • 0, -15, 2000 int-tüüpi kümnendsüsteemis • 0b0, -0b1111, 0b0_011_111_010_000 int-tüüpi
kahendsüsteemis (alates Java 1.7) • 00, -017, 03720 int-tüüpi kaheksandsüsteemis • 0x0, -0Xf, 0xF int-tüüpi kuueteistkümnendsüsteemis • 0L, -017l, -0Xf1, 0x3E8l long-tüüpi (soovitavalt L, mitte l) • 0., -15., 60.301, 20000e-1 double-tüüpi • 0.D, -15.d, 20e2d double-tüüpi • 0.f, 15.F, 60.9f, 20000e-1F float-tüüpi • ’a’, ’%’, ’\n’ , ’\\’, ’\u03a8’, ’\177’ char-tüüpi • "", "abc", "1. \n 2." String-tüüpi • true, false boolean-tüüpi (ainsad) • null suvalist viit-tüüpi (tühiviit)
11
![Page 12: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/12.jpg)
Sõneliteraal
12
char[] tähed = {'a','b','c'}; char[] tähed2 = {'a','b','c'}; String sõne1 = new String(tähed); String sõne2 = new String(tähed2); String sõne3 = "abc"; String sõne4 = "abc"; System.out.println(sõne1 == sõne2); System.out.println(sõne1 == sõne3); System.out.println(sõne3 == sõne4);
false
true
false
![Page 13: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/13.jpg)
Mida väljastab järgmine programmilõik?
13 1. 2. 3. 4. 5.
0% 0% 0%0%0%
String s1 = "siil";
String s2 = "Siil";
boolean k = s1.equals(s2);
System.out.println(k);
1. true
2. false
3. midagi muud
4. mitte midagi
5. veateate
![Page 14: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/14.jpg)
Mida väljastab järgmine programmilõik?
14 1. 2. 3. 4. 5.
0% 0% 0%0%0%
String s1 = "siil";
String s2 = "Siil";
if (s1 == s2)
System.out.println("võrdsed");
else
System.out.println("ebavõrdsed");
1. võrdsed
2. ebavõrdsed
3. midagi muud
4. mitte midagi
5. veateate
![Page 15: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/15.jpg)
Vaatame APIt
• charAt
• compareTo
• equals
• equalsIgnoreCase
• indexOf
• length
• replace
• toLowerCase
• toUppercase
• toString
15
![Page 16: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/16.jpg)
Mida väljastab järgmine programmilõik?
16 1. 2. 3. 4. 5. 6.
0% 0% 0%0%0%0%
String str1 = "Piilupart";
String str2 = "piilupart";
String str3 = "Donald";
if (str1.equalsIgnoreCase(str2))
System.out.println(str1);
else
System.out.println(str3);
1. Piilupart
2. piilupart
3. Donald
4. midagi muud
5. mitte midagi
6. veateate
![Page 17: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/17.jpg)
Mida väljastab järgmine programmilõik?
17 1. 2. 3. 4. 5. 6.
0% 0% 0%0%0%0%
String s1 = "jogurt";
char char1 = s1.replace("g","k").charAt(3);
System.out.println(char1);
1. k
2. g
3. u
4. midagi muud
5. mitte midagi
6. veateate
![Page 18: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/18.jpg)
Mida väljastab järgmine programmilõik?
18 1. 2. 3. 4. 5. 6.
0% 0% 0%0%0%0%
String s1 = "jogurt";
char char1 = s1.replace("g","k").charAt(2);
System.out.println(char1);
1. k
2. g
3. u
4. midagi muud
5. mitte midagi
6. veateate
![Page 19: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/19.jpg)
Mida väljastab järgmine programmilõik?
19 1. 2. 3. 4.
0% 0%0%0%
String s1 = "Siilionu";
String s2 = s1.toUpperCase();
if (s2.charAt(2) == s1.charAt(2))
System.out.println("A");
else if (s2.charAt(1) == "i")
System.out.println("B");
1. A
2. B
3. mitte midagi
4. veateate
![Page 20: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/20.jpg)
+ sõnede korral, sõneksteisendus
• +
• konkatenatsioon "Tere" + " " + "hommikust"
• Sageli esitatakse erinevaid suurusi sõnedena automaatselt System.out.println("1 + 2 = " + 1 + 2);
Isik a = new Isik("Juhan Juurikas", 1.99);
System.out.println(a);
20
![Page 21: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/21.jpg)
Sõneksteisendus System.out.println("1 + 2 = " + 1 + 2);
Isik a = new Isik("Juhan Juurikas", 1.99);
System.out.println(a);
• sõneksteisendus – algtüübi korral klassimeetodid valueOf (klassist String) • String.valueOf(89)
– viittüübi korral isendimeetod toString() • klassis, mille isend ta ise on
• ülemklassis
• klassis Object – paiskkood 16-süsteemis
• a.toString() 21
![Page 22: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/22.jpg)
Kas on palindroom?
• Elu nimel lunite, Moene minimaal-aam. Inimene, ometi nulle minule.
• Ilmar Laaban
22
![Page 23: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/23.jpg)
Meetod, mis tuvastab palindroomi
23
static boolean onPalindroom(String s) {
int algusest = 0; //esimene märk
int lõpust = s.length() - 1; //viimane märk
while (algusest < lõpust) {
if (s.charAt(algusest) != s.charAt(lõpust)){
return false; // ei ole palindroom
}
algusest++;
lõpust--;
}
return true; // on palindroom
}
![Page 24: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/24.jpg)
Leksikograafiline võrdlemine
• compareTo
24
String s1 = "Tartu"; String s2 = "Tallinn"; int j = s1.compareTo(s2); System.out.println(j);
6
String s1 = "Tartu"; String s2 = "Tallinn"; int j = s2.compareTo(s1); System.out.println(j);
-6
![Page 25: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/25.jpg)
Teksti analüüs
• indexOf
• replace
• trim • String s5 = " \t \n mis teha \r\n \t ";
25
![Page 26: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/26.jpg)
Klassi String isendit ei saa muuta
• Aga
String a = "abcd";
a = "defg";
• Tegelikult luuakse uus isend.
26
![Page 27: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/27.jpg)
StringBuilder
• StringBuilder on paindlikum – append
– charAt
– substring
– replace
– delete
– indexOf
– insert
– capacity
– length
• ainult isendimeetodid
27
![Page 28: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/28.jpg)
char
28
char c0 = '177';
char c1 = '\177';
char c2 = 177;
char c3 = '\u0177';
Veateade
±
ŷ
Unicode
Extended ASCII
ASCII kaheksandarv \000 kuni \377
Eclipse’is RunRun Configurations Common Other UTF-8
![Page 29: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/29.jpg)
char
• char c2 = 177;
• 177 on ju int-tüüpi
• \n uus rida
• \t tabuleerimiseks
• \\
• \”
• \’
29
![Page 30: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/30.jpg)
Mähisklassid
• ingl. k. wrapper class
• klass, mille põhiülesandeks on seostada mingi objekti või väärtusega täiendavaid meetodeid
• on olemas algtüüpide jaoks
– Character, Boolean, Byte, Short, Integer, Long, Float, Double
30
![Page 31: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/31.jpg)
Klass Character • Java APIst • Klassimeetodeid
– isDigit
– isLetter
– isLetterOrDigit
– isLowerCase
– isUpperCase
– toLowerCase
– toUpperCase
• Isendimeetodeid – charValue
– compareTo
– equals
– toString
31
![Page 32: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/32.jpg)
Klass Character
32
char c = 'a';
System.out.println(Character.isLetter(c));
System.out.println(Character.isDigit(c));
System.out.println
(Character.isLetterOrDigit(c));
Character ch = new Character(c);
System.out.println(ch.charValue());
true
true
false
a
![Page 33: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/33.jpg)
Mida väljastab järgmine programmilõik?
33 1. 2. 3. 4. 5.
0% 0% 0%0%0%
char c1 = 'a';
char c2 = 'a';
System.out.println(c1.equals(c2));
1. true
2. false
3. mitte midagi
4. midagi muud
5. veateate
![Page 34: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/34.jpg)
Mida väljastab järgmine programmilõik?
34 1. 2. 3. 4. 5.
0% 0% 0%0%0%
char c1 = 'a';
char c2 = 'a';
System.out.println(c1 == c2);
1. true
2. false
3. mitte midagi
4. midagi muud
5. veateate
![Page 35: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/35.jpg)
Igal algtüübil on vastav mähisklass. Algtüüpile char vastab klass Character. Veel ühel algtüübil erineb mähisklassi nimi algtüübi nimest rohkem kui esitähe suuruse poolest.
35 1. 2. 3. 4. 5. 6. 7.
0% 0% 0% 0%0%0%0%
1.boolean
2.byte
3.short
4.int
5.long
6.float
7.double
![Page 36: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/36.jpg)
36 1. 2. 3. 4. 5. 6.
0% 0% 0%0%0%0%
String str1 = "mahl";
String str2 = "limonaad";
int result = str1.compareTo(str2);
if (result < 0)
System.out.println(str1 + " on halvem kui " + str2);
else if (result == 0)
System.out.println(str1 +" sama hea kui " + str2);
else
System.out.println(str1 +" on parem kui " + str2);
Mida väljastab järgmine programmilõik?
1. mahl on halvem kui limonaad
2. mahl on sama hea kui limonaad
3. mahl on parem kui limonaad
4. mitte midagi
5. midagi muud
6. veateate
![Page 37: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/37.jpg)
37 1. 2. 3. 4. 5. 6. 7.
0% 0% 0% 0%0%0%0%
String str1= "kask";
int index = str1.indexOf('k');
System.out.println(index);
Mida väljastab järgmine programmilõik?
1. -1
2. 0
3. 1
4. 3
5. 4
6. midagi muud
7. veateate
![Page 38: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/38.jpg)
38 1. 2. 3. 4. 5. 6. 7.
0% 0% 0% 0%0%0%0%
String str1= "kask";
int index = str1.lastIndexOf('k');
System.out.println(index);
Mida väljastab järgmine programmilõik?
1. -1
2. 0
3. 1
4. 3
5. 4
6. midagi muud
7. veateate
![Page 39: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/39.jpg)
39 1. 2. 3. 4. 5. 6. 7.
0% 0% 0% 0%0%0%0%
String str1= "kask";
int index = str1.indexOf('g');
System.out.println(index);
Mida väljastab järgmine programmilõik?
1. -1
2. 0
3. 1
4. 3
5. 4
6. midagi muud
7. veateate
![Page 40: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/40.jpg)
40 1. 2. 3. 4.
0% 0%0%0%
StringBuilder sb = new StringBuilder("On sõnu");
sb.append(" häid");
sb.insert(2, " ju");
System.out.println(sb);
Mida väljastab järgmine programmilõik?
1. On ju sõnu häid
2. On sõnu häid ju ju
3. midagi muud
4. veateate
![Page 41: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/41.jpg)
41 1. 2. 3. 4.
0% 0%0%0%
StringBuilder sb = new StringBuilder("On sõnu");
StringBuilder sb1 = sb.append(" häid");
StringBuilder sb2 = sb1.insert(2, " ju");
System.out.println(sb2);
Mida väljastab järgmine programmilõik?
1. On ju sõnu häid
2. On sõnu häid ju ju
3. midagi muud
4. veateate
![Page 42: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/42.jpg)
42 1. 2. 3. 4.
0% 0%0%0%
Mida väljastab järgmine programmilõik?
1. On ju sõnu häid
2. On sõnu häid ju ju
3. midagi muud
4. veateate
StringBuilder sb = new StringBuilder("On sõnu");
StringBuilder sb1 = sb.append(" häid");
StringBuilder sb2 = sb1.insert(2, " ju");
System.out.println(sb);
![Page 43: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/43.jpg)
Pärilus
• ingl. k. inheritance • Mehhanism, mis lisab igale klassikirjeldusele vahetu
ülemklassi liikmekirjeldused • Moodustub alamklasside ja ülemklasside hierarhiline
struktuur • Javas saab igal klassil olla üks vahetu ülemklass • Põhiline eelis selles, et kui ülemklass on juba koostatud,
siis saab seda kasutada uute spetsialiseeritud klasside loomiseks.
• Kuna alamklassi võimalused laienevad, siis kasutatakse sõna extends.
43
![Page 44: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/44.jpg)
Päriselus ka
• Loomad
• Taimed
• Sõidukid
• …
• …
• …
• Ülemklassid üldisemad, alamklassid spetsiifilisemad
44
![Page 45: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/45.jpg)
final Object
• Paljud meile tuttavad klassid (nt. String, Math) on varustatud piiritlejaga final, mis tähendab, et neile ei saa alamklasse koostada.
• Kui ülemklassi pole märgitud, siis on selleks klass Object.
– equals(Object obj)
– getClass()
– toString()
45
![Page 46: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/46.jpg)
46
public class A {
int a;
A(int a){
this.a = a;
}
void meetoda(){
System.out.println("Olen A isend, a = " + a);
}
}
public class TestABC {
public static void main(String[] args) {
A a1 = new A(17);
a1.meetoda();
}
}
Olen A isend, a = 17
![Page 47: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/47.jpg)
47
public class B extends A {
int b;
B(int a, int b){
super(a);
this.b = b;
}
}
public class TestABC {
public static void main(String[] args) {
B b1 = new B(12,45);
b1.meetoda();
}
} Olen A isend, a = 12
![Page 48: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/48.jpg)
48
public class B extends A {
int b;
B(int a, int b){
super(a);
this.b = b;
}
}
public class TestABC {
public static void main(String[] args) {
B b1 = new B(12,45);
System.out.println(b1 instanceof A);
}
} true
instanceof
![Page 49: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/49.jpg)
49
public class B extends A {
int b;
B(int a, int b){
super(a);
this.b = b;
}
void meetodb(){
System.out.println("Olen B isend, b = " + b);
}
}
public class TestABC {
public static void main(String[] args) {
B b1= new B(12,45);
b1.meetodb();
}
}
Olen B isend, b = 45
![Page 50: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/50.jpg)
50 1. 2. 3. 4. 5.
0% 0% 0%0%0%
Mida väljastab järgmine programmilõik?
B b1 = new B(12,45);
System.out.println(b1.a);
1. 12
2. 45
3. mitte midagi
4. midagi muud
5. veateate
![Page 51: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/51.jpg)
51 1. 2. 3. 4. 5.
0% 0% 0%0%0%
Mida väljastab järgmine programmilõik?
A a1 = new A(17);
System.out.println(a1.meetodb());
1. 0
2. 17
3. mitte midagi
4. midagi muud
5. veateate
![Page 52: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/52.jpg)
52 1. 2.
0%0%
Kas klassi B võib lisada oma meetodi meetoda?
void meetoda(){
System.out.println("Olen B isend,
a = " + a);
}
1. jah
2. ei
![Page 53: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/53.jpg)
Ülekate
• ingl. k. overriding
• olukord, kus klassis kirjeldatud ja päriluse teel saadud meetodil on üks ja sama signatuur;
• väljakutse puhul rakendatakse klassis kirjeldatud meetodit
53
![Page 54: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/54.jpg)
54
public class B extends A {
int b;
B(int a, int b){
super(a);
this.b = b;
}
void meetodb(){
System.out.println("Olen B isend, b = " + b);
}
void meetoda(){
System.out.println("Olen B isend, a = " + a);
}
}
public class TestABC {
public static void main(String[] args) {
B b1= new B(12,45);
b1.meetoda();
}
} Olen B isend, a = 12
![Page 55: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/55.jpg)
Loengu tempo oli 1. paariline
55 1. 2. 3.
0% 0%0%
1. liiga kiire
2. paras
3. liiga aeglane
![Page 56: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/56.jpg)
Materjal tundus 1. paariline
56 1. 2. 3.
0% 0%0%
1. liiga lihtne
2. parajalt jõukohane
3. liiga keeruline
![Page 57: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/57.jpg)
Loengu tempo oli 2. paariline
57 1. 2. 3.
0% 0%0%
1. liiga kiire
2. paras
3. liiga aeglane
![Page 58: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/58.jpg)
Materjal tundus 2. paariline
58 1. 2. 3.
0% 0%0%
1. liiga lihtne
2. parajalt jõukohane
3. liiga keeruline
![Page 59: Objektorienteeritud programmeerimine - utkodu.ut.ee/~eno/oop13/oop13loeng4b.pdf · Objektorienteeritud programmeerimine 4. loeng 4. märts Eno Tõnisson kasutatud ka Helle Heina loengumaterjale](https://reader034.fdocument.pub/reader034/viewer/2022051809/6012a17adfadb22a432302f0/html5/thumbnails/59.jpg)
Suur tänu osalemast! Kohtumiseni!
59