Upload
isha
View
138
Download
7
Embed Size (px)
DESCRIPTION
Objektorienteeritud programmeerimine. 6. september 2013 Eno Tõnisson. Tänane plaan. Sissejuhatus organisatsiooniliselt Milleks? Kuidas? Millal? Kas? teemasse Java Esimene programm … …. Milleks OOP?. Silmaring, maailmavaade objektid, subjektid Õppimine - PowerPoint PPT Presentation
Citation preview
1
Objektorienteeritud programmeerimine
6. september 2013Eno Tõnisson
2
Tänane plaan
• Sissejuhatus– organisatsiooniliselt
• Milleks?• Kuidas?• Millal?• Kas?
– teemasse• Java• Esimene programm• …• …
3
Milleks OOP?
• Silmaring, maailmavaade– objektid, subjektid
• Õppimine– jätk esimese semestri programmeerimisele
• Programmeerimine• Programmeerimise alused, Programmeerimise alused II
– eeldus mitmetele järgmistele ainetele
4
Keel
• Java– populaarsus
• http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
– töökuulutused• http://www.cvkeskus.ee • http://www.cv.ee/too/infotehnoloogia/q-java
5
Inimesed on erinevad
• Siin võib-olla neid, kes– õpivad hoopis muud eriala– programmeerivad igapäevaselt suure innuga– said Programmeerimises hinde E– on edukalt osalenud (rahvusvahelisel)
informaatikaolümpiaadil– suhtlevad mingis programmeerimiskeeles palju
vabamalt kui mistahes inimkeeles– on selle aine püsikliendid– …
6
Mis teaduskonnast te olete?
A. Usu-B. Õigus-C. Arsti-D. Filosoofia-E. Kehakultuuri-F. Loodus- ja tehnoloogia-G. Majandus-H. Matemaatika-informaatika-I. Sotsiaal- ja haridus-J. Muu A. B. C. D. E. F. G. H. I. J.
1 1 1 1 111111
7
Programmeerimise (Progr. alused II) kursus oli
1. 2. 3. 4. 5.
0% 0% 0%0%0%
1. väga lihtne2. lihtne3. paras4. keeruline5. väga keeruline
8
Millise hinde saite Programmeerimise (Progr. alused II) kursusel?
0%0%0%0%0%
1. 2. 3. 4. 5.
1. A2. B3. C4. D5. E
9
Millele (veel) tähelepanu?• Looming
– programmeerimine• Keskendumine
– Loengusse-praktikumi selleks, et õppida (luua tingimused õppimiseks)
– piisavalt iseseisvat õppimist tunnivälisel ajal• Koostöö
– üliõpilased omavahel• paaristööd loengus, praktikumis• rühmatöö• foorum
– üliõpilane ja õppejõud• küsitakse-vastatakse• @ut.ee aadressid, ÕIS
• Eestikeelne terminoloogia– kui meie ei kasuta ja ei arenda, siis ei tee seda (varsti) keegi
10
Miks just siin?
• On olemas hulgaliselt – materjale– videoid – programminäiteid– …
• Miks just kursusel, miks just nii?
11
Kursus• Loengud
– reedel kell 14-16– eelmiste aastate video?
• Praktikumide tunnitööd, kodutööd– suhteliselt kindlas tempos, kindlad teemad
• Kontrolltööd– ajapiiriga
• Rühmatööd– ISE!– mängud?
• Eksam
12
Hindamine• Loengud
– 15 punkti• Praktikumid
– 12 punkti– 1. kontrolltöö, 17 punkti– 2. kontrolltöö, 13 punkti– 1. rühmatöö, 5 punkti– 2. rühmatöö, 5 punkti– 3. rühmatöö, 3 punkti– rühmatöö esitlus, 3 punkti
• Eksamitöö, 30 punkti– Eksamile pääsemiseks peab olema praktikumidest (sh. rühmatööd)
kogutud vähemalt 30 punkti, loengutest vähemalt 7 punkti.• Hindeskaala
"E" 51-60, "D" 61-70, "C" 71-80, "B" 81-90, "A" 91-
13
Loengud
• Milleks?• Üks räägib, teised
– kuulavad ja mõtlevad kaasa– teevad näo, et kuulavad ja mõtlevad kaasa– ei tee isegi nägu, et kuulavad ja mõtlevad kaasa
• 90 minutit järjest?– vaheaeg– klikkerid aitaksid
• aruteluga
14
Sülearvutid loengus?!
• Konspekteerida?• Kohe läbi proovida?• Otsida lisamaterjali?• …• Suhelda?• Teha tööd?• Jälgida uudiseid?• Vaadata filme?• …http://uudised.err.ee/index.php?06244893
15
Loengu eel• Selleks, et vajaliku tempoga edasi minna (ja
loengu eest punkte saada) tuleb enne iga reedet– läbi vaadata eelmise aasta loengu video– saata vastused antud küsimustele selle loengu
kohta– saata küsimused selle loengu kohta
• Selle eest on võimalik saada kuni 1 punkt (olenemata sellest, kas tulete loengusse või mitte)
16
Reedel• Reedel tuleb teha otsus, kas tulla loengusse.• Loengus eeldatakse, et osalejad on video läbi töötanud.
Rohkem keskendutakse saabunud vastuste analüüsile ja arutelule. Samuti saabunud küsimustele.
• Need, kes loengu läbivaatamise vastuseid/küsimusi ei saatnud, võivad siiski loengusse tulla, aga nende saagiks on ülimalt 1/2 punkti.
• Kuna tegemist on esmakordselt sellise skeemiga, siis analüüsime mõne aja pärast olukorda ja vajadusel muudame.
17
Kuivõrd on võimalik loengusse sülearvuti kaasa võtta?
1. 2. 3.
33% 33%33%1. nagunii tavaliselt
kaasas2. vajadusel võib
kaasa võtta3. ei taha/saa kaasa
võtta
18
Praktikumid
• E 16• T 8• T 10 tühjem praegu • K 16
19
Millise hindega oleksite selles aines rahul?
0%0%0%0%0%0%
1. 2. 3. 4. 5. 6.
1. A2. B3. C4. D5. E6. F
20
Tahaks juba programmeerimisest ka kuulda
• Objektorienteeritud programmeerimine– programmeerimiskeel Java
• Slaidide allikad – Helle Heina slaidid– Y. Daniel Liang Introduction to Java programming– http://docs.oracle.com/javase/tutorial/
21
Eesmärk• Kursuse eesmärgiks on anda alusteadmised objekt-orienteeritud
programmeerimise eripärast, oskused programmide koostamiseks ning esmased rühmatööoskused
• Kursuse läbinud üliõpilane:– on võimeline selgitama objekt-orienteeritud paradigma põhimõisteid
(kapseldus, abstraktsioon, pärimine, polümorfism, üledefineerimine, ülekate) ning analüüsima vastavaid programme
– on võimeline kirjeldama erinevaid andmestruktuure (massiiv, ahel, magasin, järjekord, paisktabel) ja nende kasutusviise
– oskab selgitada rakendusteekide väärtust ja olemust ning leida nendest vajalikku informatsiooni
– oskab selgitada sündmuspõhise programmeerimise eripära ja erindite käitlemist ning tuua näiteid nende kasutamisest
– oskab ühes objekt-orienteeritud programmeerimiskeeles kasutades integreeritud programmeerimiskeskkonda koostada, testida ja siluda programme, rakendades selleks eelmistes punktides loetletut
– oskab kirjeldada isikliku kogemuse põhjal rühmaprojekti keskseid elemente.
Täna
• Java ajaloost • Java omadused • Esimene programm • Muutujad ja tüübid • Põhikonstruktsioonid
22
Java• James Gosling, Sun Microsystems• Oak• 1995• Nimest
– Definition of JAVA• coffee
– Examples of JAVA• a hot cup of java
– Jaava saar, jaava keel• 85 miljonit, "köögikeel"
– http://www.javaworld.com/javaworld/jw-10-1996/jw-10-javaname.html • Ajaloost
– http://www.oracle.com/technetwork/java/javase/overview/javahistory-index-198355.html
23
Java• Lihtsus • Objektorienteeritus • Staatiliselt rangelt tüübitud • Interpreteeritav • Turvalisus • Arhitektuurist sõltumatu
– write once, run anywhere • Multilõimelisus • Dünaamilisus • Vt.
– http://www.cs.armstrong.edu/liang/intro6e/JavaCharacteristics.pdf
24
API, JDK, IDE• API – Application Programming Interface –
rakendusteek, eelnevalt programmeeritud objektid (Java) programmi koostamiseks– meil Java SE 7
• JDK – Java Development Toolkit – Java programmide koostamise tarkvara komplekt – meil JDK 7
• IDE – Integrated Development Environment – integreeritud programmeerimiskeskkond– meil Eclipse 4.2.1– uusim Eclipse 4.3
25
Tehnoloogiad• Java SE • Java Embedded • Java EE • Java ME • JavaFX • Java Card • Java TV • Java DB
• http://www.oracle.com/technetwork/java/index.html
26
27
Mis firmas Java loodi?
1. 2. 3. 4.
0% 0%0%0%
1. Dragon Ltd2. Sun Microsystems3. Smilers Computers4. Grape International
28
Java programmide koostamise tarkvara komplekt on
1. 2. 3. 4.
0% 0%0%0%
1. JFK2. JDK3. API4. ACTA
Esimene programmPython:
/*Mitmerealine kommentaar*/
//Üherealine kommentaar
public class TereMaailm { public static void main(String[] args) { System.out.println("Tere, maailm"); }}
Fail nimega: TereMaailm.javaKompileerimine: >javac TereMaailm.javaKäivitamine: >java TereMaailm
29
Klassimeetod, mitte isendimeetod
public class TereMaailm { public static void main(String[] args) { System.out.println("Tere, maailm"); }}
Kõik võivad programmi käivitada
Programmeerimine seisneb klasside
koostamises
Klassi nimi
Klassi alustav
sulg
Kõik võivad meetodit käivitada
Tühitüüp, väärtust ei tagastata Peameetod
Meetodit alustav
sulg
Parameetri tüüp
Parameetri nimi
Meetodit lõpetav
sulg
Klassi lõpetav
sulg
Meetodi nimi
ArgumentKäsku lõpetav semikoolon
30
Tekstist tööle
Programmitekst
Baitkood
Redigeeri programmiteksti
Kompileerijavac Tere.java
Käivitajava Tere
Tulemus
Pole see Pole
see
Pole see
31
32
Baitkood
• masinkeel JVM (Java Virtual Machine) jaoks
0: iconst_2 1: istore_1 2: iload_1 3: sipush 1000 6: if_icmpge 44 9: iconst_2 10: istore_2 11: iload_2 12: iload_1 13: if_icmpge 31 16: iload_1 17: iload_2
Millest programm koosneb?• Kommentaarid• Võtmesõnad
– public, class, static, void• Piiritlejad
– public, static• Laused
– lõppevad semikooloniga• Plokid
– { }• Klassid• Meetodid
– Peameetod main33
Võtmesõnadabstract assert boolean break byte case catch char class const* continue default double do else enum extends final finally float for goto* if implements import instanceof int interface long native new package private protected public return short static strictfp super switch synchronized this throw throws transient try void volatile while
• Tunduvad võtmesõnadena, aga on literaalid false null true
34
Muutujad ja tüübid
• Igal Java muutujal on – tüüp
• algtüüp või viittüüp– nimi– väärtus
• int x = 17;
35
Algtüüp• Täisarvud
– byte– short– int– long
• Ujukomaarvud– float– double
• Tõeväärtused– boolean
• Sümbolid– char 36
Täisarvud• Teine täiendväärtus (two's complement)
– 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
• int x; 37
Ujukomaarvud
• IEEE 754– float
• 32-bitiline– double
• 64-bitiline
• double raadius = 7.8;
38
Tõeväärtus
• boolean– true– false
• boolean tv = true;
39
Sümbolid
• char– 16-bitiline Unicode-sümbol– '\u0000' (0) kuni '\uffff' (65535)
• char ch1 = 'a';• char ch2 = 65;• System.out.print("ch1 ja ch2: ");• System.out.println(ch1 + " " + ch2);
40
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
41
Kirjeldamine, väärtustamine
• double raadius; • int x, y, z, k; • char a;• raadius = 3.4;• a = 'e';• x = y = z = 1;• int i = 1, j = 2;• k = 1 + 5;
42
Ühiksuurendamine, ühikvähendamine
43
++muutuja Muutujat suurendatakse ühe võrra ja seejärel arvutatakse avaldise väärtus kasutades muutuja uut väärtust
muutuja++ Avaldise väärtus arvutatakse kasutades muutuja vana väärtust ja seejärel suurendatakse muutujat ühe võrra
--muutuja Muutujat vähendatakse ühe võrra ja seejärel arvutatakse avaldise väärtus kasutades muutuja uut väärtust
muutuja-- Avaldise väärtus arvutatakse kasutades muutuja vana väärtust ja seejärel vähendatakse muutujat ühe võrra
44
Mille toob järgmine programmi lõik ekraanile?
1. 2. 3. 4. 5.
0% 0% 0%0%0%
int i = 5;int uus = 5 * i++;System.out.println(uus);
1. 252. 263. 304. veateate5. midagi muud
45
Mille toob järgmine programmi lõik ekraanile?
1. 2. 3. 4. 5.
0% 0% 0%0%0%
int i = 5;int uus = 5 * ++i;System.out.println(uus);
1. 252. 263. 304. veateate5. midagi muud
46
Mille toob järgmine programmi lõik ekraanile?
1. 2. 3. 4. 5.
0% 0% 0%0%0%
int i = 5;int uus = (5 * i)++;System.out.println(uus);
1. 252. 263. 304. veateate5. midagi muud
Suur tänu osalemast ja kohtumiseni!
47