Objektorienteeritud programmeerimine
15. loeng
20. mai
Eno Tõnisson
1
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
Eelmisel nädalal
• loeng
– i18n
• praktikum
– kontrolltöö, lõimed
3
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
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
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
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
Täna
• Võrguprogrammeerimine
• Eksamist
8
Edasi • http://kodu.ut.ee/~eno/oop13/OOP2013lopus
irge.html
9
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
Korduseksam
• Korduseksamieelne 1. KT järeltöö
• Korduseksamieelne 2. KT järeltöö
• Korduseksam 20. juuni
11
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
Võrguprogrammeerimine
13
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
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
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
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
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
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
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
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
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
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);}
}
}
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
Veebilehitseja näide
25
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);
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));
}
28
public static void main(String args[]) {
new Veebilehitseja();
}
}
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
Eksamist
• Teemad
– Loenguteemad
– Näiteprogrammid slaididel
• Vajadusel lisatakse ülesandele selgitavat materjali (API, lõike loengu- või praktikumimaterjalidest)
30
Ü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
Klassi- ja isendi…
• Jalgrattanäide paberil
32
Vood
• http://www.1001javatips.com/IOexplanation.htm
33
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
35
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
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.
Edelaraudtee
• edel.ee
38
Suur tänu osalemast! Kohtumiseni!
39