39
Objektorienteeritud programmeerimine 15. loeng 20. mai Eno Tõnisson 1

Objektorienteeritud programmeeriminekodu.ut.ee/~eno/oop13/oop13loeng15v.pdf•Eksami eel kõik punktid kogutud. –Väljaarvatud 27. mai eksami puhul kolmapäevaste praktikumirühmade

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Objektorienteeritud programmeeriminekodu.ut.ee/~eno/oop13/oop13loeng15v.pdf•Eksami eel kõik punktid kogutud. –Väljaarvatud 27. mai eksami puhul kolmapäevaste praktikumirühmade

Objektorienteeritud programmeerimine

15. loeng

20. mai

Eno Tõnisson

1

Page 2: Objektorienteeritud programmeeriminekodu.ut.ee/~eno/oop13/oop13loeng15v.pdf•Eksami eel kõik punktid kogutud. –Väljaarvatud 27. mai eksami puhul kolmapäevaste praktikumirühmade

Kasutatud

• H. Heina loengumaterjalid

• J. Kiho Väike Java leksikon

• J. Kiho Java Programmeerimise aabits

• Y. D. Liang Introduction to Java Programming

• Java tutorial. Java kodulehel

• http://www.1001javatips.com/

• http://www.java-tips.org

2

Page 3: Objektorienteeritud programmeeriminekodu.ut.ee/~eno/oop13/oop13loeng15v.pdf•Eksami eel kõik punktid kogutud. –Väljaarvatud 27. mai eksami puhul kolmapäevaste praktikumirühmade

Eelmisel nädalal

• loeng

– i18n

• praktikum

– kontrolltöö, lõimed

3

Page 4: Objektorienteeritud programmeeriminekodu.ut.ee/~eno/oop13/oop13loeng15v.pdf•Eksami eel kõik punktid kogutud. –Väljaarvatud 27. mai eksami puhul kolmapäevaste praktikumirühmade

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 programmeeriminekodu.ut.ee/~eno/oop13/oop13loeng15v.pdf•Eksami eel kõik punktid kogutud. –Väljaarvatud 27. mai eksami puhul kolmapäevaste praktikumirühmade

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 programmeeriminekodu.ut.ee/~eno/oop13/oop13loeng15v.pdf•Eksami eel kõik punktid kogutud. –Väljaarvatud 27. mai eksami puhul kolmapäevaste praktikumirühmade

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 programmeeriminekodu.ut.ee/~eno/oop13/oop13loeng15v.pdf•Eksami eel kõik punktid kogutud. –Väljaarvatud 27. mai eksami puhul kolmapäevaste praktikumirühmade

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 programmeeriminekodu.ut.ee/~eno/oop13/oop13loeng15v.pdf•Eksami eel kõik punktid kogutud. –Väljaarvatud 27. mai eksami puhul kolmapäevaste praktikumirühmade

Täna

• Võrguprogrammeerimine

• Eksamist

8

Page 9: Objektorienteeritud programmeeriminekodu.ut.ee/~eno/oop13/oop13loeng15v.pdf•Eksami eel kõik punktid kogutud. –Väljaarvatud 27. mai eksami puhul kolmapäevaste praktikumirühmade

Edasi • http://kodu.ut.ee/~eno/oop13/OOP2013lopus

irge.html

9

Page 10: Objektorienteeritud programmeeriminekodu.ut.ee/~eno/oop13/oop13loeng15v.pdf•Eksami eel kõik punktid kogutud. –Väljaarvatud 27. mai eksami puhul kolmapäevaste praktikumirühmade

Järelvastamine

• Loengute järelvastamine, kui punkte vähem kui 5 – kuni 31. mai

– punktid lähevad kirja ainult eksamile pääsu arvestamiseks, hinnet määravasse üldsummasse ei lähe

• Praktikumide järelvastamine, kui punkte vähem kui 32 – kuni 16. nädala praktikumini

– punktid lähevad kirja ainult eksamile pääsu arvestamiseks, hinnet määravasse üldsummasse ei lähe

10

Page 11: Objektorienteeritud programmeeriminekodu.ut.ee/~eno/oop13/oop13loeng15v.pdf•Eksami eel kõik punktid kogutud. –Väljaarvatud 27. mai eksami puhul kolmapäevaste praktikumirühmade

Korduseksam

• Korduseksamieelne 1. KT järeltöö

• Korduseksamieelne 2. KT järeltöö

• Korduseksam 20. juuni

11

Page 12: Objektorienteeritud programmeeriminekodu.ut.ee/~eno/oop13/oop13loeng15v.pdf•Eksami eel kõik punktid kogutud. –Väljaarvatud 27. mai eksami puhul kolmapäevaste praktikumirühmade

Punktid

• Eksamile pääsemiseks peab olema

– praktikumidest (sh. rühmatööd) kogutud vähemalt 32 punkti,

– loengutest vähemalt 5 punkti.

• Eksamitöö 35 punkti.

• Eksami eel kõik punktid kogutud.

– Väljaarvatud 27. mai eksami puhul kolmapäevaste praktikumirühmade rühmatööde lõpuesitlus.

12

Page 13: Objektorienteeritud programmeeriminekodu.ut.ee/~eno/oop13/oop13loeng15v.pdf•Eksami eel kõik punktid kogutud. –Väljaarvatud 27. mai eksami puhul kolmapäevaste praktikumirühmade

Võrguprogrammeerimine

13

Page 14: Objektorienteeritud programmeeriminekodu.ut.ee/~eno/oop13/oop13loeng15v.pdf•Eksami eel kõik punktid kogutud. –Väljaarvatud 27. mai eksami puhul kolmapäevaste praktikumirühmade

Host

• Internetti ühendatud seade: enamasti arvuti, kuid võib olla ka ruuter, printer, faks jne.

• IP (Internet Protocol) aadress

– Kasutatakse punktidega eraldatud neli märgita täisarvu 0 kuni 255

• nt 199.1.32.90

• Domeeninimi IP aadressiks

– www.ut.ee 193.40.5.73

14

Page 15: Objektorienteeritud programmeeriminekodu.ut.ee/~eno/oop13/oop13loeng15v.pdf•Eksami eel kõik punktid kogutud. –Väljaarvatud 27. mai eksami puhul kolmapäevaste praktikumirühmade

Klass java.net.InetAddress

• Isendi loomiseks

public static InetAddress getByName(String host) throws

UnknownHostException

public static InetAddress[] getAllByName(String host)

throws UnknownHostException

public static InetAddress getLocalHost() throws

UnknownHostException

15

Page 16: Objektorienteeritud programmeeriminekodu.ut.ee/~eno/oop13/oop13loeng15v.pdf•Eksami eel kõik punktid kogutud. –Väljaarvatud 27. mai eksami puhul kolmapäevaste praktikumirühmade

16

import java.net.InetAddress;

import java.net.UnknownHostException;

public class Võrk {

public static void main (String[] args) throws

UnknownHostException {

InetAddress me = InetAddress.getLocalHost();

System.out.println("Minu nimi on: " + me.getHostName());

System.out.println("Minu aadress on: " + me.getHostAddress());

InetAddress address = InetAddress.getByName("www.ut.ee");

System.out.println("Hosti nimi: " + address.getHostName());

System.out.println("IP aadress: "+ address.getHostAddress());

}

}

Minu nimi on: aurelius

Minu aadress on: 192.168.1.69

Hosti nimi: www.ut.ee

IP aadress: 193.40.5.73

Page 17: Objektorienteeritud programmeeriminekodu.ut.ee/~eno/oop13/oop13loeng15v.pdf•Eksami eel kõik punktid kogutud. –Väljaarvatud 27. mai eksami puhul kolmapäevaste praktikumirühmade

Pordid

• Tavaliselt on hostil ainult üks Interneti aadress.

• See aadress jagatakse 65 536 pordi vahel.

• Pordid on loogilised abstraktsioonid, mis lubavad ühel hostil suhelda samaaegselt paljude teiste hostidega.

• Osa teenuseid on seotud kindlate pordinumbritega (0…1023), nt .

• HTTP – 80, telnet – 23, finger – 79, SMTP – 25, …

17

Page 18: Objektorienteeritud programmeeriminekodu.ut.ee/~eno/oop13/oop13loeng15v.pdf•Eksami eel kõik punktid kogutud. –Väljaarvatud 27. mai eksami puhul kolmapäevaste praktikumirühmade

Protokollid • Protokoll defineerib, kuidas kaks hosti omavahel suhtlevad. • Protokoll määrab:

– andmetihendusmeetodid; – kuidas saatev seade annab teada, et sõnumi edastamine on lõpetatud; – kuidas vastuvõtja teavitab saatjat; – …

• IP – Internet Protocol – internetiaadresside tasemel

• UDP – User Datagram Protocol – reeglid sõnumite vahetamiseks teiste internetipunktidega

andmepakettide tasemel

• TCP – Transmission Control Protocol

18

Page 19: Objektorienteeritud programmeeriminekodu.ut.ee/~eno/oop13/oop13loeng15v.pdf•Eksami eel kõik punktid kogutud. –Väljaarvatud 27. mai eksami puhul kolmapäevaste praktikumirühmade

Protokollid rakenduse tasemel • http

– hüperteksti edastamise protokoll HyperText Transfer Protocol;

• telnet – kaugterminaliga suhtlemise protokoll;

• ftp, ftp-data – failide ülekande protokollid (file transfer protocol);

• smtp – kirjavahetuse protokoll (simple mail transfer protocol);

• nntp – võrguuudiste edastamise protokoll (network news transfer protocol);

• finger – protokoll lühiinformatsiooni edastamiseks kasutaja või süsteemi kohta;

• rpc – hajussüsteemide tööks vajalik kaugprotseduuri väljakutse protokoll (remote procedure call);

• snmp – võrgu teeninduseks vajalik protokoll (simple network management protocol);

• ntp – ajateenistusprotokoll (network time protocol);

• nfs – protokoll hajusa välismäluga töötamiseks (network file system);

• …

19

Page 20: Objektorienteeritud programmeeriminekodu.ut.ee/~eno/oop13/oop13loeng15v.pdf•Eksami eel kõik punktid kogutud. –Väljaarvatud 27. mai eksami puhul kolmapäevaste praktikumirühmade

URL • Uniform Resource Locator

• URL on ressursi identifitseerimiseks Internetis e. Internetiaadress. Igale dokumendile või muule ressursile Internetis vastab oma unikaalne internetiaadress.

• Internetiaadressi esimene osa näitab ära kasutatava protokolli (näit. HTTP), sellele järgneb domeeninimi, alamkataloogi nimi ja failinimi. – http://www.oracle.com/technetwork/java/index.html

– ftp://ftp.info.apple.com/pub/

– mailto:[email protected]

– telnet://utoopia.pol.edu

– ftp://mp3:[email protected]:21000/c3a/stuff/mp4/ 20

Page 21: Objektorienteeritud programmeeriminekodu.ut.ee/~eno/oop13/oop13loeng15v.pdf•Eksami eel kõik punktid kogutud. –Väljaarvatud 27. mai eksami puhul kolmapäevaste praktikumirühmade

Klass java.net.URL

• Klass java.net.URL sisaldab meetodeid:

– uue URL loomiseks;

– URL-ist osade eraldamiseks;

– sisendvoo saamiseks URL-ist (andmete lugemine serverist)

• Serverist sisu saamiseks Java objektina.

• Toetab protokolle:

– http, https, ftp, file, …

21

Page 22: Objektorienteeritud programmeeriminekodu.ut.ee/~eno/oop13/oop13loeng15v.pdf•Eksami eel kõik punktid kogutud. –Väljaarvatud 27. mai eksami puhul kolmapäevaste praktikumirühmade

Klass java.net.URL

• Konstruktoreid: – URL(String spec)

– URL(String protocol, String host, int port, String file)

– URL(String protocol, String host, String file)

• Meetodeid: – public String getProtocol()

– public String getHost()

– public int getPort()

– public String getFile()

22

Page 23: Objektorienteeritud programmeeriminekodu.ut.ee/~eno/oop13/oop13loeng15v.pdf•Eksami eel kõik punktid kogutud. –Väljaarvatud 27. mai eksami puhul kolmapäevaste praktikumirühmade

23

import java.net.*;

import java.io.*;

public class Veebilugeja {

public static void main(String[] args) {

String url;

if (args.length > 0)

url = args[0];

else

url = "http://www.cs.ut.ee";

try {

URL u = new URL(url);

InputStream in = u.openStream();

InputStreamReader isr = new InputStreamReader(in);

BufferedReader br = new BufferedReader(isr);

String rida;

while ((rida = br.readLine()) != null) {

System.out.println(rida);

}

} catch (IOException e) {System.err.println(e);}

}

}

Page 24: Objektorienteeritud programmeeriminekodu.ut.ee/~eno/oop13/oop13loeng15v.pdf•Eksami eel kõik punktid kogutud. –Väljaarvatud 27. mai eksami puhul kolmapäevaste praktikumirühmade

Veebilehe näitamine

• JEditorPane võimaldab näidata struktureeritud teksti

• Pakub tuge tekstile, RTF ja HTML • JEditorPane sisu täitmine meetodiga setPage(), milles URL sõne kujul argumendina

• JEditorPane toetab hüperlingi klikkimise sündmusi – hyperlinkUpdate() {...}

• Sündmuste töötlemine – HyperlinkEvent

– actionPerformed() {...}

24

Page 25: Objektorienteeritud programmeeriminekodu.ut.ee/~eno/oop13/oop13loeng15v.pdf•Eksami eel kõik punktid kogutud. –Väljaarvatud 27. mai eksami puhul kolmapäevaste praktikumirühmade

Veebilehitseja näide

25

Page 26: Objektorienteeritud programmeeriminekodu.ut.ee/~eno/oop13/oop13loeng15v.pdf•Eksami eel kõik punktid kogutud. –Väljaarvatud 27. mai eksami puhul kolmapäevaste praktikumirühmade

26

import java.awt.*;

import java.awt.event.*;

import java.net.*;

import java.io.*;

import javax.swing.*;

import javax.swing.event.*;

public class Veebilehitseja extends JFrame {

private JTextField enter;

private JEditorPane contents;

public Veebilehitseja() {

super("Lihtne veebilehitseja");

enter = new JTextField("Sisesta URL siia");

enter.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e ){

getPage(e.getActionCommand());

}});

add(enter, BorderLayout.NORTH);

contents = new JEditorPane();

contents.setEditable(false);

Page 27: Objektorienteeritud programmeeriminekodu.ut.ee/~eno/oop13/oop13loeng15v.pdf•Eksami eel kõik punktid kogutud. –Väljaarvatud 27. mai eksami puhul kolmapäevaste praktikumirühmade

27

contents.addHyperlinkListener(new HyperlinkListener() {

public void hyperlinkUpdate(HyperlinkEvent e){

if(e.getEventType() ==

HyperlinkEvent.EventType.ACTIVATED)

getPage(e.getURL().toString());

}});

add(new JScrollPane(contents), BorderLayout.CENTER);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setSize(400, 300);

setVisible(true);

}//siiani konstruktor

private void getPage(String location){

try {

contents.setPage(location);

enter.setText(location);

} catch (IOException io) {

JOptionPane.showMessageDialog(this, "Viga URL

lugemisel","Bad URL", JOptionPane.ERROR_MESSAGE);

}

setCursor(Cursor.getPredefinedCursor(

Cursor.DEFAULT_CURSOR));

}

Page 28: Objektorienteeritud programmeeriminekodu.ut.ee/~eno/oop13/oop13loeng15v.pdf•Eksami eel kõik punktid kogutud. –Väljaarvatud 27. mai eksami puhul kolmapäevaste praktikumirühmade

28

public static void main(String args[]) {

new Veebilehitseja();

}

}

Page 29: Objektorienteeritud programmeeriminekodu.ut.ee/~eno/oop13/oop13loeng15v.pdf•Eksami eel kõik punktid kogutud. –Väljaarvatud 27. mai eksami puhul kolmapäevaste praktikumirühmade

Eksamitöö aines Objektorienteeritud programmeerimine

• Eksamitööks on aega 90 minutit.

• Arvutit, materjale jms. kasutada ei ole lubatud.

• Maksimaalselt on võimalik saada 35 punkti.

• Lahendustes tuleb lisaks lõppvastusele anda ka selgitusi. – Kõrgelt hinnatakse õigeid vastuseid ja selgitusi.

– Samas omavad väärtust ka selgitused, mis näitavad mõistlikku mitmevahelolekut ning kus õige vastuse juurde viiks näiteks mõne detaili vaatamine (mida aga käesoleva eksamiformaadiga teha ei saa).

29

Page 30: Objektorienteeritud programmeeriminekodu.ut.ee/~eno/oop13/oop13loeng15v.pdf•Eksami eel kõik punktid kogutud. –Väljaarvatud 27. mai eksami puhul kolmapäevaste praktikumirühmade

Eksamist

• Teemad

– Loenguteemad

– Näiteprogrammid slaididel

• Vajadusel lisatakse ülesandele selgitavat materjali (API, lõike loengu- või praktikumimaterjalidest)

30

Page 31: Objektorienteeritud programmeeriminekodu.ut.ee/~eno/oop13/oop13loeng15v.pdf•Eksami eel kõik punktid kogutud. –Väljaarvatud 27. mai eksami puhul kolmapäevaste praktikumirühmade

Ülesannetest • Mis ilmub ekraanile?

– ilma etteantud vastusteta – valikvastustega – selgitada

• Mida teeb järgmine meetod? • Leida viga (aga siis tõesti viga on) • Klikkeriküsimustel põhinevaid • Milline järgnevatest vastustest kirjeldab kõige

paremini … • Mis on ja milleks on kasulik …? • …

31

Page 32: Objektorienteeritud programmeeriminekodu.ut.ee/~eno/oop13/oop13loeng15v.pdf•Eksami eel kõik punktid kogutud. –Väljaarvatud 27. mai eksami puhul kolmapäevaste praktikumirühmade

Klassi- ja isendi…

• Jalgrattanäide paberil

32

Page 33: Objektorienteeritud programmeeriminekodu.ut.ee/~eno/oop13/oop13loeng15v.pdf•Eksami eel kõik punktid kogutud. –Väljaarvatud 27. mai eksami puhul kolmapäevaste praktikumirühmade

Vood

• http://www.1001javatips.com/IOexplanation.htm

33

Page 34: Objektorienteeritud programmeeriminekodu.ut.ee/~eno/oop13/oop13loeng15v.pdf•Eksami eel kõik punktid kogutud. –Väljaarvatud 27. mai eksami puhul kolmapäevaste praktikumirühmade

Lõime seisundid

• NEW A thread that has not yet started is in this state.

• RUNNABLE A thread executing in the Java virtual machine is in this state.

• BLOCKED A thread that is blocked waiting for a monitor lock is in this state.

• WAITING A thread that is waiting indefinitely for another thread to perform a particular action is in this state.

• TIMED_WAITING A thread that is waiting for another thread to perform an action for up to a specified waiting time is in this state.

• TERMINATED A thread that has exited is in this state.

34

Page 35: Objektorienteeritud programmeeriminekodu.ut.ee/~eno/oop13/oop13loeng15v.pdf•Eksami eel kõik punktid kogutud. –Väljaarvatud 27. mai eksami puhul kolmapäevaste praktikumirühmade

35

Page 36: Objektorienteeritud programmeeriminekodu.ut.ee/~eno/oop13/oop13loeng15v.pdf•Eksami eel kõik punktid kogutud. –Väljaarvatud 27. mai eksami puhul kolmapäevaste praktikumirühmade

Millise hindega oleksite rahul?

36 1. 2. 3. 4. 5. 6.

0% 0% 0%0%0%0%

1. A

2. B

3. C

4. D

5. E

6. F

Page 37: Objektorienteeritud programmeeriminekodu.ut.ee/~eno/oop13/oop13loeng15v.pdf•Eksami eel kõik punktid kogutud. –Väljaarvatud 27. mai eksami puhul kolmapäevaste praktikumirühmade

Kertu-Kertu Ceki Dening Trim Sutija

kertu-kertu ceki iki

aja dirampas maneh saka tanganku

amarga ya mung kari kuwi woding uripku

dalanku tekan sabrang

marang donyaku sing wis ilang ing kasunyatan

marang donyaku, donya khayali

Ceki kaardid Olge peidus mu paremas käes nagu pimestav helk kaob minevikku.

Istuge vaikselt, õlad põlvedel, suruge ennast mu südamesse.

Tundke, kuidas te nurgad kaevuvad sügavalt mu peopessa.

“Tõuse jalgadele, koer!” “Ta hoiab midagi käes” “Raske on kätte saada” “Käes!” “Mis need on?” “Ainult kaardid” “Võta need ära! Hasartmäng on kriminaalne tegevus.”

Tühjade kätega, jälle vaikselt.

Page 38: Objektorienteeritud programmeeriminekodu.ut.ee/~eno/oop13/oop13loeng15v.pdf•Eksami eel kõik punktid kogutud. –Väljaarvatud 27. mai eksami puhul kolmapäevaste praktikumirühmade

Edelaraudtee

• edel.ee

38

Page 39: Objektorienteeritud programmeeriminekodu.ut.ee/~eno/oop13/oop13loeng15v.pdf•Eksami eel kõik punktid kogutud. –Väljaarvatud 27. mai eksami puhul kolmapäevaste praktikumirühmade

Suur tänu osalemast! Kohtumiseni!

39