47
Objektorienteeritud programmeerimine 6. september 2013 Eno Tõnisson 1

Objektorienteeritud programmeerimine

  • 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

Page 1: Objektorienteeritud programmeerimine

1

Objektorienteeritud programmeerimine

6. september 2013Eno Tõnisson

Page 2: Objektorienteeritud programmeerimine

2

Tänane plaan

• Sissejuhatus– organisatsiooniliselt

• Milleks?• Kuidas?• Millal?• Kas?

– teemasse• Java• Esimene programm• …• …

Page 3: Objektorienteeritud programmeerimine

3

Milleks OOP?

• Silmaring, maailmavaade– objektid, subjektid

• Õppimine– jätk esimese semestri programmeerimisele

• Programmeerimine• Programmeerimise alused, Programmeerimise alused II

– eeldus mitmetele järgmistele ainetele

Page 4: Objektorienteeritud programmeerimine

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

Page 5: Objektorienteeritud programmeerimine

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– …

Page 6: Objektorienteeritud programmeerimine

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

Page 7: Objektorienteeritud programmeerimine

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

Page 8: Objektorienteeritud programmeerimine

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

Page 9: Objektorienteeritud programmeerimine

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

Page 10: Objektorienteeritud programmeerimine

10

Miks just siin?

• On olemas hulgaliselt – materjale– videoid – programminäiteid– …

• Miks just kursusel, miks just nii?

Page 11: Objektorienteeritud programmeerimine

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

Page 12: Objektorienteeritud programmeerimine

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-

Page 13: Objektorienteeritud programmeerimine

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

Page 14: Objektorienteeritud programmeerimine

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

Page 15: Objektorienteeritud programmeerimine

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)

Page 16: Objektorienteeritud programmeerimine

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.

Page 17: Objektorienteeritud programmeerimine

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

Page 18: Objektorienteeritud programmeerimine

18

Praktikumid

• E 16• T 8• T 10 tühjem praegu • K 16

Page 19: Objektorienteeritud programmeerimine

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

Page 20: Objektorienteeritud programmeerimine

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/

Page 21: Objektorienteeritud programmeerimine

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.

Page 22: Objektorienteeritud programmeerimine

Täna

• Java ajaloost • Java omadused • Esimene programm • Muutujad ja tüübid • Põhikonstruktsioonid

22

Page 23: Objektorienteeritud programmeerimine

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

Page 24: Objektorienteeritud programmeerimine

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

Page 25: Objektorienteeritud programmeerimine

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

Page 26: Objektorienteeritud programmeerimine

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

Page 27: Objektorienteeritud programmeerimine

27

Mis firmas Java loodi?

1. 2. 3. 4.

0% 0%0%0%

1. Dragon Ltd2. Sun Microsystems3. Smilers Computers4. Grape International

Page 28: Objektorienteeritud programmeerimine

28

Java programmide koostamise tarkvara komplekt on

1. 2. 3. 4.

0% 0%0%0%

1. JFK2. JDK3. API4. ACTA

Page 29: Objektorienteeritud programmeerimine

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

Page 30: Objektorienteeritud programmeerimine

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

Page 31: Objektorienteeritud programmeerimine

Tekstist tööle

Programmitekst

Baitkood

Redigeeri programmiteksti

Kompileerijavac Tere.java

Käivitajava Tere

Tulemus

Pole see Pole

see

Pole see

31

Page 32: Objektorienteeritud programmeerimine

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

Page 33: Objektorienteeritud programmeerimine

Millest programm koosneb?• Kommentaarid• Võtmesõnad

– public, class, static, void• Piiritlejad

– public, static• Laused

– lõppevad semikooloniga• Plokid

– { }• Klassid• Meetodid

– Peameetod main33

Page 34: Objektorienteeritud programmeerimine

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

Page 35: Objektorienteeritud programmeerimine

Muutujad ja tüübid

• Igal Java muutujal on – tüüp

• algtüüp või viittüüp– nimi– väärtus

• int x = 17;

35

Page 36: Objektorienteeritud programmeerimine

Algtüüp• Täisarvud

– byte– short– int– long

• Ujukomaarvud– float– double

• Tõeväärtused– boolean

• Sümbolid– char 36

Page 37: Objektorienteeritud programmeerimine

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

Page 38: Objektorienteeritud programmeerimine

Ujukomaarvud

• IEEE 754– float

• 32-bitiline– double

• 64-bitiline

• double raadius = 7.8;

38

Page 39: Objektorienteeritud programmeerimine

Tõeväärtus

• boolean– true– false

• boolean tv = true;

39

Page 40: Objektorienteeritud programmeerimine

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

Page 41: Objektorienteeritud programmeerimine

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

Page 42: Objektorienteeritud programmeerimine

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

Page 43: Objektorienteeritud programmeerimine

Ü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

Page 44: Objektorienteeritud programmeerimine

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

Page 45: Objektorienteeritud programmeerimine

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

Page 46: Objektorienteeritud programmeerimine

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

Page 47: Objektorienteeritud programmeerimine

Suur tänu osalemast ja kohtumiseni!

47