HOJ RMI = Remote Method Invocation

Koko: px
Aloita esitys sivulta:

Download "HOJ RMI = Remote Method Invocation"

Transkriptio

1 HOJ RMI = Remote Method Invocation Ville Leppänen HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/37

2 Missä mennään Johdanto (1h) 2. Säikeet (2h) 3. Samanaikaisuudesta (2h) 4. Hajautetuista sovelluksista (1h) 5. Soketit (3h) 6. RMI ja J2EE (2h) 7. RPC (1h) 8. WWW-sovellustekniikoista (2h) 9. Pilvialustat (4h) 10. Haja-aiheita (2h) 99. Kertausluento (2h) + 1h pelivaraa HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.2/37

3 Remote Method Invocation: Yleistä 1/2 Palvelinsovellus kuuntelee yhteydenottoja; yhteydenotto = metodin kutsu ja suorittaminen palvelimessa. Asiakas kutsuu palvelinsovellusta suorittamaan jokin etäolion jotain tiettyä metodia (parametrit). Parametrit: tietoa asiakkaalta palvelimelle. Tulos: tietoa palvelimelta asiakkaalle. Tietoa välitetään Javan olioina! Palvelin- & asiakassovellus: Java-ohjelmia. Yleisesti: useita palvelimia ja asiakkaita. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.3/37

4 RMI: Yleistä 2/2 Etäolio (server object): palvelimessa oleva olio. Paikallinen olio (client object): asiakassovelluksessa. Edustajaolio (stub): asiakkaalla on olio, joka edustaa palvelimessa olevaa etäoliota. Tukee turvallisuusominaisuuksia ja roskien keruuta (yms). Asiakkaan ja palvelimen roolit eivät kiinteitä: osapuoli voi olla molemmissa rooleissa. Paketit java.rmi (asiakas); java.rmi.server (palvelin); java.rmi.registry (rekisteri: nimiä palvelimen olioille);... HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.4/37

5 RMI:n kulisseissa tapahtuu (asiakas) (palvelin) rekisteri palvelinohj. asiakasohj. etäolio luonti etäoliota vastaava edustajaolio rekisteristä etäolion rekisteröinti metodin kutsu paikalliselle ohjelmalle edustajaolio kutsun + param. ohjaus eteenpäin tulosten välittäminen edustajaoliolle kutsun suoritus edustajaolion olion kutsuja odottava säie tulokset takaisin HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.5/37

6 RMI: mitä kutsussa tapahtuu? Asiakas tekee kutsun edustajaolion välityksellä. Edustajaolio muodostaa etäkutsun: Etäolion tunniste Etäolion kutsuttava metodi Parametrien koodaus (marshalling) jonka se lähettää palvelimelle. Palvelin vastaanottaa tiedot, purkaa ne ja kutsuu etäolion metodia. Tuloksen palvelin lähettää koodattuna takaisin asiakassovellukselle, joka ottaa vastaan ja purkaa koodauksen. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.6/37

7 Parametrien koodaus Paikalliset oliot: syväkopiona Serializable:n avulla. Transitiivinen sulkeuma. Primitiiviarvot: kopioimalla. Etäoliot: viittauksena. Olion sarjallistamisen yhteyteen koodataan myös tieto luokasta: nimi, sormenjälki, yms. Toisessa päässä määrittelyt ladataan suoritusympäristöön ja tarkistetaan, että sillä tuntettavilla vastaavilla luokilla on sama sormenjälki. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.7/37

8 Etäolioon liittyvät luokat 1/3 Asiakassovelluksessa etäolioihin ei viitata suoraan niihin viitataan rajapinnan avulla. interface Noppa extends Remote {... metodeja } Pitää aina periä Remote:sta. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.8/37

9 Etäolioon liittyvät luokat 2/3 Etäolio toteuttaa kyseisen rajapinnan ja perii luokasta UnicastRemoteObject (yleisemmin: RemoteServer). public class NoppaToteutus extends UnicastRemoteObject implements Noppa {... toteutus... } HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.9/37

10 Etäolioon liittyvät luokat 3/3 Palvelinsovellus: itsenäinen luokka, joka luo ja nimeää etäoliot. Asiakassovellus: itsenäinen luokka, joka etäolion verkkonimen perusteella luo edustaolion, jonka avulla se toteuttaa RMI-kutsut. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.10/37

11 Noppa.java import java.rmi. ; public interface Noppa extends Remote { public void setseed(long l) throws RemoteException; public void setmax(int m) throws RemoteException; public void setmin(int m) throws RemoteException; public int getnext() throws RemoteException; } // interface Noppa HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.11/37

12 NoppaToteutus.java import java.rmi. ; import java.util. ; import java.rmi.server. ; public class NoppaToteutus extends UnicastRemoteObject implements Noppa { private Random gen = new Random(); private int min, max, diff; public NoppaToteutus() throws RemoteException { min = 1; max = 6; diff = 6; } public NoppaToteutus(int mi, int ma) throws RemoteException { min = mi; max = ma; diff = ma-mi+1; } public void setseed(long l) throws RemoteException { gen.setseed(l); } public void setmax(int m) throws RemoteException { max = m; diff = max - min; } public void setmin(int m) throws RemoteException { min = m; diff = max - min; } public int getnext() throws RemoteException { return Math.abs(gen.nextInt()%diff) + min; } } // class NoppaToteutus HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.12/37

13 NoppaServer.java import java.rmi. ; import java.rmi.server. ; public class NoppaServer { public static void main(string[] q) { try { NoppaToteutus noppa = new NoppaToteutus(); Naming.rebind("noppa", noppa); } catch (Exception e) { System.out.println("Error: " + e); } } // main } // class NoppaServer HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.13/37

14 NoppaClient.java import java.rmi. ; import java.rmi.server. ; public class NoppaClient { public static void main(string[] q) { // q[0] = RMI-registerikoneen nimi if (q.length 1) { System.out.println("Usage: NoppaClient <serverhost>"); System.exit(0); } System.setSecurityManager(new RMISecurityManager()); String osoite = "rmi://" + q[0] + "/noppa"; try { Noppa n = (Noppa)Naming.lookup(osoite); for (int i=0; i<20; i++) System.out.print(" " + n.getnext()); System.out.println(" "); } catch (Exception e) { System.out.println("Error: " + e); } } // main HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.14/37

15 Käyttäminen javac Noppa*.java (käännetään kaikki) rmic -v1.2 NoppaToteutus (luodaan edustaolio NoppaToteutus_Stub) start rmiregistry (Windows) rmiregistry & (Unix) (käynnistetään rmi-rekisteripalvelin; portti 1099) start java NoppaServer (Windows) java NoppaServer & (Unix) (käynnistetään Noppa-palvelinsovellus taustalle; registeröityy edelliselle) java -Djava.security.policy=Noppa.policy NoppaClient (käynnistetään sovellus määrätyllä turv.määrittelyillä) HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.15/37

16 Oikeudet Noppa.policy: grant { permission java.net.socketpermission "*: ", "connect"; }; HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.16/37

17 Luokkia RMISecurityManager Turvallisuusmanageri, joka kontrolloi suoritettavan koodin (stub) lataamista. Vain konstruktori. Ei appleteille. Asiakassovellukseen. Remote Rajapinta; ei metodeja. UnicastRemoteObject Luokka; mahdollistaa TCP:n päällä tapahtuvan etäkäytön. Kaikkiin metodeihin throws RemoteException. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.17/37

18 Luokkia: Naming Naming: Sen avulla toteutetaan olioiden nimeäminen (rekiströinti) URL:n tapaan. "rmi://kone.portti/nimi". static void bind(string, Remote) sitoo nimen olioon (ei saa olla jo määr.) static void rebind(string, Remote) sitoo nimen olioon static void unbind(string) tekee nimestä määrittelemättömän static Remote lookup(string) palauttaa nimeä vastaavan edustaolion static String[] list(string) rekisterissä olevat tunnisteet HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.18/37

19 Luokka RemoteException 1/2 RMI-kutsu edustaolion välityksellä voi päättyä poikkeukseen. Poikkeus syntyy palvelimessa ja se välitetään RMI:n avulla asiakkaalle. Tällaisia poikkeuksia varten luokka RemoteException. Useita aliluokkia (n. 10). Jokaisessa rajapinnasta Remote laajennetussa rajapinnassa pitää kaikissa metodeissa olla throws RemoteException. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.19/37

20 Luokka RemoteException 2/2 Syy: verkko-operaatiot voivat aihettaa poikkeuksen, kun etäoliota käytetään edustaolion välityksellä. Poikkeus pitää olla myös rajanpinnan toteuttavissa konstruktoreissa ja toteutettavissa metodeissa mutta ei muissa metodeissa. Lisäksi voidaan vapaasti määritellä muitakin poikkeuksia, jotka kulkeutuvat RMI:n välityksellä. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.20/37

21 NumeroPeli.java import java.rmi. ; interface NumeroPeli extends Remote { public boolean lisääpelaaja(numeropelaaja p) throws RemoteException; public int montakopelaajaa() throws RemoteException; public NumeroPelaaja annapelaaja(int nro) throws RemoteException; public boolean sovellasiirtoa(numeropelaaja p, boolean alusta) throws RemoteException; public int annapisteet(numeropelaaja p) throws RemoteException; public String näytäluvut() throws RemoteException; public int[] annaluvut() throws RemoteException; public boolean peliohi() throws RemoteException; } // interface NumeroPeli HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.21/37

22 NumeroPelaaja.java import java.rmi. ; interface NumeroPelaaja extends Remote { public String annanimi() throws RemoteException; public void teesiirto() throws RemoteException; public boolean issimilar(numeropelaaja p) throws RemoteException; public void tiedoita(string s) throws RemoteException; public void saavuoron() throws RemoteException; public void lopeta() throws RemoteException; } // interface NumeroPelaaja HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.22/37

23 NumeroPeliToteutus.java 1/7 import java.rmi. ; import java.rmi.server. ; import java.util. ; public class NumeroPeliToteutus extends UnicastRemoteObject implements NumeroPeli { private NumeroPelaaja player1, player2; private int points1, points2; private Vector numbers; private int remaining; public NumeroPeliToteutus() throws RemoteException { player1 = null; player2 = null; } // NumeroPeliToteutus() private void alusta() { points1 = 0; points2 = 0; numbers = new Vector(); for (int i=0; i<10; i++) numbers.add(new Integer((int)(Math.random() 21) - 10)); remaining = 10; } // alusta HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.23/37

24 NumeroPeliToteutus.java 2/7 public boolean lisääpelaaja(numeropelaaja p) throws RemoteException { if (player1 == null) { player1 = p; return false; } else if (player2 == null) { player2 = p; alusta(); player1.tiedoita("game begins."); player2.tiedoita("game begins."); String tied = player1.annanimi() + "versus " + player2.annanimi(); player1.tiedoita(tied); player2.tiedoita(tied); player1.tiedoita("numbers " + näytäluvut()); player2.tiedoita("numbers " + näytäluvut()); player2.saavuoron(); return true; } else throw new RemoteException("Game full!"); } // lisääpelaaja HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.24/37

25 NumeroPeliToteutus.java 3/7 public int montakopelaajaa() throws RemoteException { if (player2 null) return 2; if (player1 null) return 1; return 0; } // montakopelaajaa public NumeroPelaaja annapelaaja(int nro) throws RemoteException { if ((nro > 2) (nro < 1)) return null; if (nro == 1) return player1; else return player2; } // annapelaaja HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.25/37

26 NumeroPeliToteutus.java 4/7 public boolean sovellasiirtoa(numeropelaaja p, boolean alusta) throws RemoteException { if ((!player1.issimilar(p)) && (!player2.issimilar(p))) throw new RemoteException("Illegal player!"); if (remaining == 0) throw new RemoteException("Illegal move!"); int n = 0; String tied = " "; if (alusta) { n = ((Integer)numbers.remove(0)).intValue(); tied = "first"; } else { n = ((Integer)numbers.remove(numbers.size()-1)).intValue(); tied = "last"; } tied = "took the " + tied + "number " + n + "."; if (player1.issimilar(p)) { points1 += n; tied = "Player 1 " + tied; } else { points2 += n; tied = "Player 2 " + tied;} player1.tiedoita(tied); player2.tiedoita(tied); remaining--; HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.26/37

27 NumeroPeliToteutus.java 5/7 if (remaining == 0) { pelinlopetus(p); player1 = player2 = null; return true; } else { if (player1.issimilar(p)) player2.saavuoron(); if (player2.issimilar(p)) player1.saavuoron(); return false; } } // sovellasiirtoa HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.27/37

28 NumeroPeliToteutus.java 6/7 private void pelinlopetus(numeropelaaja p)throws RemoteException { String tied = "Player 1 score = " + points1; player1.tiedoita(tied); player2.tiedoita(tied); tied = "Player 2 score = " + points2; player1.tiedoita(tied); player2.tiedoita(tied); if (points1 < points2) tied = "Player 2 has won!"; else if (points1 > points2) tied = "Player 1 has won!"; else tied = "Game ended up to a draw."; player1.tiedoita(tied); player2.tiedoita(tied); if (player2.issimilar(p)) player1.lopeta(); else player2.lopeta(); // Toista pelaajaa käsketään lopettaa toisella // tapaa, koska sillä on vielä kutsu auki. } // pelinlopetus public int annapisteet(numeropelaaja p) throws RemoteException { if (player1.issimilar(p)) return points1; if (player2.issimilar(p)) return points2; throw new RemoteException("Player not playing"); HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.28/37 } // annapisteet

29 NumeroPeliToteutus.java 7/7 public String näytäluvut() throws RemoteException { String t = " "; for (int i=0; i<remaining; i++) t += ((Integer)numbers.get(i)).intValue() + ; return t; } // näytäluvut public int[] annaluvut() throws RemoteException { int[] q = new int[remaining]; for (int i=0; i<remaining; i++) q[i] = ((Integer)numbers.get(i)).intValue(); return q; } // annaluvut public boolean peliohi() throws RemoteException { return (remaining == 0); } public static void main(string[] q) throws Exception { Naming.rebind("NumeroPeliPalvelin", new NumeroPeliToteutus()); } // main } // class NumeroPeli HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.29/37

30 NumeroPelaajaToteutus.java 1/3 import java.rmi. ; import java.rmi.server. ; public class NumeroPelaajaToteutus extends UnicastRemoteObject implements NumeroPelaaja, Runnable { private NumeroPeli game; private String name; private boolean ismyturn; private boolean stillplaying; public static void main(string[] args) throws Exception { if (args.length < 2) { System.out.println("Paramters: <server> <player name>"); System.exit(0); } String palvelin = args[0].trim(); String pelaajannimi = args[1].trim(); NumeroPeli peli = (NumeroPeli)Naming.lookup(palvelin); new NumeroPelaajaToteutus(peli, pelaajannimi); } // main HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.30/37

31 NumeroPelaajaToteutus.java 2/3 public NumeroPelaajaToteutus(NumeroPeli peli, String nimi) throws RemoteException { game = peli; name = nimi; stillplaying = true; ismyturn = false; game.lisääpelaaja(this); new Thread(this).start(); } // NumeroPelaajaToteutus public String annanimi() throws RemoteException { return name; } public void teesiirto() throws RemoteException { boolean alusta = (Math.random() < 0.5); stillplaying =!(game.sovellasiirtoa(this, alusta)); } // teesiirto public boolean issimilar(numeropelaaja p) throws RemoteException { // Jos edustaolioita vertaa suoraan == :lla, // niin tulos voi olla "väärä", koska viime // kädessä halutaan verrata vastaavia olioita. return (this.name.equals(p.annanimi())); } // issimilar HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.31/37

32 NumeroPelaajaToteutus.java 3/3 public void tiedoita(string s) throws RemoteException { { System.out.println("Server: " + s); } public void saavuoron() throws RemoteException { { ismyturn = true; } public void run() { while (stillplaying) { if (ismyturn) { ismyturn = false; try { teesiirto(); } catch (Exception e) { throw new Error(e.toString()); } } try { Thread.sleep(300); } catch (InterruptedException e) { } } // while System.out.println("Game over!"); System.exit(0); } // run public void lopeta() throws RemoteException { stillplaying = false; // kills the thread } // lopeta } // class NumeroPelaajaToteutus HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.32/37

33 Sovellusten keskustelusta Kaksi palvelinsovellusta voi keskustella keskenään. RMI: metodin kutsu = vaikuttamisen yhteydessä pitää huolehtia, ettei tule avoimien kutsujen sykliä. Tavallaan kutsut tarkoittavat vuoron siirtämistä toiselle. Molemmat osapuolet aktiivisia: ei syklejä, jos metodin kutsu tarkoittaa palvelupyynnön välittämistä. Riittää kun vain toiseen suuntaan palvelupyyntöjä! Ratkaisu: molemmilla itsenäinen säie & RMI-kutsut ainakin toiseen suuntaan palvelupyyntöjä. Paljon säikeitä: main, itsenäinen säie (+ ilm. Remote-oliota varten syntyy oma säie). HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.33/37

34 Pelipöytä-sovellukset Tieto pelin tilasta palvelinsovelluksella. Palvelinsovellus kontrolloi pelin etenemistä. Asiakkaat myös etäolioita. Palvelimella asiakkaista edustaolio. Palvelin voi olla passiivinen: peli etenee vain pelaajien toimenpiteiden seurauksena. Pitää välttää avointen kutsujen syklit: palvelin välittää palvelupyyntöjä (ei kutsu suoraan peliä ohjaavia asiakkaan metodeja). Lopettaminen hankalaa: yleensä asiakkaan kutsun seurauksena. Palvelin tekee lopettamisen. Avoin etäolio pitää käsitellä toisin. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.34/37

35 Turvallisuudesta Mahdollista kryptata RMI-liikenne (voidaan vaihtaa RMI:n käyttämät tavalliset soketit SSL-soketeiksi). Palvelimen puolella ei ole tukea sille, että rajoitettaisiin oikeutta tehdä kutsu edustaolion kautta (miten palvelin tietää kuka sitä kutsuu? edustaolio voidaan välittää eteenpäin...). Palvelimeen voidaan tehdä login-osuus, jonka jälkeen saa varsinaisen etäolion palveluiden käyttämiseksi. Kyseinen olio voi olla erilainen eli käyttäjille. Palvelimen pitää varautua siihen, että asiakas häiriköi. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.35/37

36 Jakamisesta ja lukoista RMI ei varsinaisesti tunne lukkoja, mutta... RMI:n yhteydessä on mahdollista soveltaa lukkoja palvelipäässä. RMI-palvelin on monisäikeinen (kutakin samanaikaista kutsua toteuttaa eri säie). Määritellään kriittiset etäolion operaatiot sychronized-suojatuiksi. Suojaa etäoliokutsujen kautta tapahtuvaa samanaikaista käyttöä (sekä muuta palvelimessa etäolioon tapahtuvaa käyttöä). Asiakas ei siis suoraan saa lukkoa etäolioon (vaan sen edustaja etäkutsua suorittava säie palvelimessa). wait()/notify() hankalia mutta mahdollisia lähinnä vain estetään samanaikainen jaetun datan käyttö. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.36/37

37 Yhteenveto RMI = Remote Method Invocation. Etäolio + edustaolio. Kutsulla saadaan aikaan tiedon siirto molempiin suuntiin voidaan välittää olioita kopioimatta. Edustaolioiden == eri kuin etäolioiden ==!! Kutsuja aktiivinen; kutsuttava passiivinen. Pitää varoa avoimien kutsuketjujen sykliä. Palvelin vs useita asiakkaita: helppo. Palvelin & palvelin: vaikeampi. Toteutettu säikeillä ja soketeilla. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.37/37

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti Rinnakkaisohjelmointi kurssi Opintopiiri työskentelyn raportti Opintopiiri: Heikki Karimo, Jesse Paakkari ja Keijo Karhu Päiväys: 15.12.2006 Ohjelmointitehtävä C i C i : Säikeet ja kriittisen vaiheen kontrollointi

Lisätiedot

JavaRMI 1 JAVA RMI. Rinnakkaisohjelmoinnin projekti 1 osa C Tekijät: Taru Itäpelto-Hu Jaakko Nissi Mikko Ikävalko

JavaRMI 1 JAVA RMI. Rinnakkaisohjelmoinnin projekti 1 osa C Tekijät: Taru Itäpelto-Hu Jaakko Nissi Mikko Ikävalko JavaRMI 1 JAVA RMI Rinnakkaisohjelmoinnin projekti 1 osa C Tekijät: Taru Itäpelto-Hu Jaakko Nissi Mikko Ikävalko JavaRMI 2 Table of Contents...1 JAVA RMI...1 Yleistä...4 Arkkitehtuuri...5 Java RMI kerrosarkkitehtuuri...5

Lisätiedot

Verkko-ohjemointia. TCP vs. UDP Socket, ServerSocket Datagrammit RMI

Verkko-ohjemointia. TCP vs. UDP Socket, ServerSocket Datagrammit RMI 15.3.2005 Verkko-ohjemointia TCP vs. UDP Socket, ServerSocket Datagrammit RMI 1 Javaa verkossa Sovelmat - appletit ajetaan www-selaimessa peritään jawa.awt.applet tai javax.swing.japlet (vrt. JFrame) http://java.sun.com/docs/books/tutorial/applet/

Lisätiedot

Projekti 1 Säikeet ja kriittisen vaiheen kontrollointi javalla

Projekti 1 Säikeet ja kriittisen vaiheen kontrollointi javalla Projekti 1 Säikeet ja kriittisen vaiheen kontrollointi javalla Lasse Leino ja Marko Kahilakoski Helsingin Yliopisto Tietojenkäsittelytieteen laitos Rinnakkaisohjelmointi 18. joulukuuta 2006 Sisältö 1 Säikeet

Lisätiedot

Rajapinta (interface)

Rajapinta (interface) 1 Rajapinta (interface) Mikä rajapinta on? Rajapinta ja siitä toteutettu luokka Monimuotoisuus ja dynaaminen sidonta Rajapinta vs periytyminen 1 Mikä rajapinta on? Rajapintoja käytetään, kun halutaan määritellä

Lisätiedot

Java-API, rajapinnat, poikkeukset, UML,...

Java-API, rajapinnat, poikkeukset, UML,... Java-API, rajapinnat, r poikkeukset, UML,... Janne Käki 12.10.2006 Keskeisimmät Java-API:n pakkaukset API = Application Programming Interface eli sovellusohjelmointirajapinta (!) pakkaus (engl. package)

Lisätiedot

HOJ Kertausluento. Ville Leppänen. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/58

HOJ Kertausluento. Ville Leppänen. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/58 HOJ Kertausluento Ville Leppänen HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/58 Missä mennään... 1. Johdanto (1h) 2. Säikeet (2h) 3. Samanaikaisuudesta (2h) 4. Hajautetuista sovelluksista (1h)

Lisätiedot

14. Poikkeukset 14.1

14. Poikkeukset 14.1 14. Poikkeukset 14.1 Sisällys Johdanto. Tarkistettavat ja tarkistamattomat poikkeukset. Poikkeusten tunnistaminen ja sieppaaminen try-catchlauseella. Mitä tehdä siepatulla poikkeuksella? Poikkeusten heittäminen.

Lisätiedot

Ohjelmointi 2 / 2010 Välikoe / 26.3

Ohjelmointi 2 / 2010 Välikoe / 26.3 Ohjelmointi 2 / 2010 Välikoe / 26.3 Välikoe / 26.3 Vastaa neljään (4) tehtävään ja halutessa bonustehtäviin B1 ja/tai B2, (tuovat lisäpisteitä). Bonustehtävät saa tehdä vaikkei olisi tehnyt siihen tehtävään

Lisätiedot

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Sisällys. 14. Poikkeukset. Johdanto. Johdanto Sisällys 14. Poikkeukset Johdanto. Tarkistettavat ja tarkistamattomat poikkeukset. Poikkeusten tunnistaminen ja sieppaaminen try-catchlauseella. Mitä tehdä siepatulla poikkeuksella? Poikkeusten heittäminen.

Lisätiedot

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Sisällys. 14. Poikkeukset. Johdanto. Johdanto Sisällys 14. Poikkeukset Johdanto. Tarkistettavat ja tarkistamattomat poikkeukset. Miten varautua poikkeukseen metodissa? Poikkeusten tunnistaminen ja sieppaaminen try-catchlauseella. Mitä tehdä siepatulla

Lisätiedot

Rinnakkaisohjelmointi, Syksy 2006

Rinnakkaisohjelmointi, Syksy 2006 Rinnakkaisohjelmointi, Syksy 2006 17.12.2006 Opintopiiri WTF Mika Holmström Paula Kemppi Janne Piippo Lasse Lukkari Javan semaforit 1. Menetelmän käyttötarkoitus ja sovellusalue Semaforin idea kehitettiin

Lisätiedot

14. Poikkeukset 14.1

14. Poikkeukset 14.1 14. Poikkeukset 14.1 Sisällys Johdanto. Tarkistettavat ja tarkistamattomat poikkeukset. Miten varautua poikkeukseen metodissa? Poikkeusten tunnistaminen ja sieppaaminen try-catchlauseella. Mitä tehdä siepatulla

Lisätiedot

Mikä yhteyssuhde on?

Mikä yhteyssuhde on? 1 Yhteyssuhde Mikä yhteyssuhde on? Yhteyssuhde Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma 1 Mikä yhteyssuhde on? Tili - : String - : double * 1 Asiakas - hetu: String - : String

Lisätiedot

HOJ J2EE & EJB & SOAP &...

HOJ J2EE & EJB & SOAP &... HOJ J2EE & EJB & SOAP &... Ville Leppänen HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/18 Missä mennään... 1. Johdanto (1h) 2. Säikeet (2h) 3. Samanaikaisuudesta (2h) 4. Hajautetuista sovelluksista

Lisätiedot

HSMT J2EE & EJB & SOAP &...

HSMT J2EE & EJB & SOAP &... HSMT J2EE & EJB & SOAP &... Ville Leppänen HSMT, c Ville Leppänen, IT, Turun yliopisto, 2011 p.1/15 Missä mennään... 1. Johdanto (1h) 2. Säikeet (2h) 3. Samanaikaisuudesta (2h) 4. Hajautetuista sovelluksista

Lisätiedot

HOJ Haja-aiheita. Ville Leppänen. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/10

HOJ Haja-aiheita. Ville Leppänen. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/10 HOJ Haja-aiheita Ville Leppänen HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/10 Missä mennään... 1. Johdanto (1h) 2. Säikeet (2h) 3. Samanaikaisuudesta (2h) 4. Hajautetuista sovelluksista (1h)

Lisätiedot

HSMT Tietokannoista. Ville Leppänen. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.1/32

HSMT Tietokannoista. Ville Leppänen. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.1/32 HSMT Tietokannoista Ville Leppänen HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.1/32 Missä mennään... 1. Johdanto (1h) 2. Säikeet (2h) 3. Samanaikaisuudesta (2h) 4. Hajautetuista sovelluksista (1h)

Lisätiedot

Olio-ohjelmointi Javalla

Olio-ohjelmointi Javalla 1 Olio-ohjelmointi Javalla Olio-ohjelmointi Luokka Attribuutit Konstruktori Olion luominen Metodit Olion kopiointi Staattinen attribuutti ja metodi Yksinkertainen ohjelmaluokka Ohjelmaluokka 1 Olio-ohjelmointi

Lisätiedot

Poikkeustenkäsittely

Poikkeustenkäsittely 1 Poikkeustenkäsittely Mitä poikkeustenkäsittely tarkoittaa? Poikkeuksen käsitteleminen Poikkeusluokkien hierarkia Poikkeuksen heittäminen 1 Mitä poikkeustenkäsittely tarkoittaa? Poikkeus (Exception) on

Lisätiedot

Metodien tekeminen Javalla

Metodien tekeminen Javalla 1 Metodien tekeminen Javalla Mikä metodi on? Metodin syntaksi Metodi ja sen kutsuminen Parametreista Merkkijonot ja metodi Taulukot ja metodi 1 Mikä metodi on? Metodilla toteutetaan luokkaan toiminnallisuutta.

Lisätiedot

Kompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma

Kompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma 1 Kompositio Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma 1 Mikä kompositio on? Tili - : String - : double 1 1 Kayttoraja

Lisätiedot

HOJ Säikeet (Java) Ville Leppänen. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/55

HOJ Säikeet (Java) Ville Leppänen. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/55 HOJ Säikeet (Java) Ville Leppänen HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/55 Missä mennään... 1. Johdanto (1h) 2. Säikeet (2h) 3. Samanaikaisuudesta (2h) 4. Hajautetuista sovelluksista (1h)

Lisätiedot

Tehtävä 1. Tehtävä 2. Arvosteluperusteet Koherentti selitys Koherentti esimerkki

Tehtävä 1. Tehtävä 2. Arvosteluperusteet Koherentti selitys Koherentti esimerkki Tehtävä 1 Koherentti selitys Koherentti esimerkki ½p ½p Tehtävä 2 Täysiin pisteisiin edellytetään pelaajien tulostamista esimerkin järjestyksessä. Jos ohjelmasi tulostaa pelaajat jossain muussa järjestyksessä,

Lisätiedot

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

812341A Olio-ohjelmointi Peruskäsitteet jatkoa 812341A Olio-ohjelmointi 2106 Peruskäsitteet jatkoa Luokkakohtaiset piirteet n Yhteisiä kaikille saman luokan olioille n Liittyvät luokkaan, eivät yksittäiseen olioon n Kaikki ko. luokan oliot voivat käyttää

Lisätiedot

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen Metodit Metodien määrittely Metodin parametrit ja paluuarvo Metodien suorittaminen eli kutsuminen Metodien kuormittaminen 1 Mikä on metodi? Metodi on luokan sisällä oleva yhteenkuuluvien toimintojen kokonaisuus

Lisätiedot

Listarakenne (ArrayList-luokka)

Listarakenne (ArrayList-luokka) Listarakenne (ArrayList-luokka) Mikä on lista? Listan määrittely ArrayList-luokan metodeita Listan läpikäynti Listan läpikäynti indeksin avulla Listan läpikäynti iteraattorin avulla Listaan lisääminen

Lisätiedot

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat Rajapinnat Java-kieli ei tue luokkien moniperintää. Jokaisella luokalla voi olla vain yksi välitön yliluokka. Toisinaan olisi

Lisätiedot

1 Tehtävän kuvaus ja analysointi

1 Tehtävän kuvaus ja analysointi Olio-ohjelmoinnin harjoitustyön dokumentti Jyri Lehtonen (72039) Taneli Tuovinen (67160) 1 Tehtävän kuvaus ja analysointi 1.1 Tehtävänanto Tee luokka, jolla mallinnetaan sarjaan kytkettyjä kondensaattoreita.

Lisätiedot

Luento 6. T Ohjelmoinnin jatkokurssi T1 & T Ohjelmoinnin jatkokurssi L1. Luennoitsija: Otto Seppälä

Luento 6. T Ohjelmoinnin jatkokurssi T1 & T Ohjelmoinnin jatkokurssi L1. Luennoitsija: Otto Seppälä Luento 6 T-106.1240 Ohjelmoinnin jatkokurssi T1 & T-106.1243 Ohjelmoinnin jatkokurssi L1 Luennoitsija: Otto Seppälä Kurssin WWW: http://www.cs.hut.fi/opinnot/t-106.1240/s2007 Oma Grafiikka Swing-käyttöliittymässä

Lisätiedot

T Henkilökohtainen harjoitus: FASTAXON

T Henkilökohtainen harjoitus: FASTAXON T-76.115 Henkilökohtainen harjoitus: FASTAXON Suunnittelumallit Group: Muuntaja Pentti Vänskä 52572W 2 1. Toteutus Tämä henkilökohtainen harjoitustyö käsitteli suunnittelumallien (Design Patterns) käyttöä

Lisätiedot

Hajautettujen sovellusten muodostamistekniikat, TKO_2014 Johdatus kurssiin

Hajautettujen sovellusten muodostamistekniikat, TKO_2014 Johdatus kurssiin Hajautettujen sovellusten muodostamistekniikat, TKO_2014 Johdatus kurssiin Ville Leppänen HSMT, c Ville Leppänen, IT, Turun yliopisto, 2009 p.1/15 HSMT (Java-kielellä) Aineopintotasoinen kurssi, 5op. Luennot:

Lisätiedot

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++? JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: http://java.sun.com/docs/books/tutorial/index.html Vesterholm, Kyppö: Java-ohjelmointi,

Lisätiedot

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Poikkeukset ja tietovirrat: Virhetilanteiden ja syötevirtojen käsittely

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Poikkeukset ja tietovirrat: Virhetilanteiden ja syötevirtojen käsittely Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Poikkeukset ja tietovirrat: Virhetilanteiden ja syötevirtojen käsittely Poikkeukset Poikkeuksella tarkoitetaan yllättävää ajonaikaista tilannetta, joka

Lisätiedot

public static void main (String [] args)

public static void main (String [] args) HAAGA-HELIA OHJELMOINTI 1(5) OHJELMALUOKKA Ohjelma-luokan käynnistää public static void main (String [] args) main-metodiin voi koodata 1. ohjelman logiikan tai 2. luoda ohjelma-olion ja kutsua metodia,

Lisätiedot

A) on käytännöllinen ohjelmointitekniikka. = laajennetaan aikaisemmin tehtyjä luokkia (uudelleenkäytettävyys)

A) on käytännöllinen ohjelmointitekniikka. = laajennetaan aikaisemmin tehtyjä luokkia (uudelleenkäytettävyys) 1(37) PERIYTYMINEN (inheritance) YLILUOKKA (superclass) ALILUOKKA (subclass) A) on käytännöllinen ohjelmointitekniikka = laajennetaan aikaisemmin tehtyjä luokkia (uudelleenkäytettävyys) B) on käsitteiden

Lisätiedot

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen Taulukot: Array Taulukko Javassa pitää aina perustaa (new) Yksinkertaisessa tilanteessa taulukon koko tiedetään etukäteen ja

Lisätiedot

10 Lock Lock-lause

10 Lock Lock-lause 10 Lock Avainsanan lock (Lock keyword) avulla voidaan toteuttaa prosessien ja säikeiden välisessä keskinäisessä kommunikoinnissa käytettäviä synkronointi- ja poissuljentarakenteita. Tämän niin sanotun

Lisätiedot

Ohjelmointi 2 / 2008 Välikoe / Pöytätestaa seuraava ohjelma.

Ohjelmointi 2 / 2008 Välikoe / Pöytätestaa seuraava ohjelma. Välikoe / 20.3 Vastaa neljään (4) tehtävään. Jos vastaat 5:een, 4 huonointa arvostellaan. Kunkin tehtävän vastaus eri konseptille. 1. Pöytätesti Pöytätestaa seuraava ohjelma. Tutki ohjelman toimintaa pöytätestillä

Lisätiedot

Periytyminen (inheritance)

Periytyminen (inheritance) 1 Periytyminen (inheritance) Mitä periytyminen on? Yli- ja aliluokka Konstruktorit Get- ja set-metodi Muut metodit tostring Yksinkertainen pääohjelma 1 Mitä periytyminen on? Periytymisen avulla olemassa

Lisätiedot

on ohjelmoijan itse tekemä tietotyyppi, joka kuvaa käsitettä

on ohjelmoijan itse tekemä tietotyyppi, joka kuvaa käsitettä LUOKAN MÄÄRITTELY Luokka, mitä se sisältää Luokan määrittely Olion ominaisuudet eli attribuutit Olion metodit Olion muodostimet ja luonti Olion tuhoutuminen Metodin kutsu luokan ulkopuolelta Olion kopioiminen

Lisätiedot

OHJ-5010 Hajautettujen järjestelmien perusteet

OHJ-5010 Hajautettujen järjestelmien perusteet OHJ-5010 Hajautettujen järjestelmien perusteet Arkkitehtuureista (1/2) Kari Systä Kari.systa@tut.fi 1 Yleistä Uusimman tiedon mukaan ensimmäinen tentti on 19.5.2012 kello 09-12. Kurssin kotisivuilla http://www.cs.tut.fi/~hajap/

Lisätiedot

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa(); Sisällys 7. Oliot ja viitteet Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen. Viitteiden käsittelyä: sijoitus, vertailu ja varautuminen null-arvoon. Viite metodin paluuarvona.. 7.1 7.2 Olio

Lisätiedot

Monitorit -projekti Rinnakkaisohjelmointi

Monitorit -projekti Rinnakkaisohjelmointi Monitorit -projekti Rinnakkaisohjelmointi 13.12.2006 Jaakko Louhio, Lari Sorvo Projektin tuloksia, kertaustehtäviä ja koodeja saa käyttää opetukseen yliopistolla vapaasti omalla vastuulla. 3. MONITORIT

Lisätiedot

Ohjelmointityö 3. Mikko Laamanen 185667

Ohjelmointityö 3. Mikko Laamanen 185667 Ohjelmointityö 3 Mikko Laamanen 185667 Sisällysluettelo Tehtävän määrittely ja ratkaisuperiaate... 1 Tehtävän määrittely... 1 Ratkaisuperiaate... 1 Ohjelman käyttöohje... 1 Syötteet ja tulosteet... 1 Ohjelman

Lisätiedot

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista.

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista. 1 Luokka Murtoluku uudelleen Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista. Sievennettäessä tarvitaan osoittajan ja nimittäjän suurin yhteinen tekijä (syt).

Lisätiedot

17. Javan omat luokat 17.1

17. Javan omat luokat 17.1 17. Javan omat luokat 17.1 Sisällys Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 17.2 Java API Java-kielen Application Programming Interface (API)

Lisätiedot

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma. 2. Taulukot 2.1 Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.2 Yleistä

Lisätiedot

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Kirjoita jokaiseen palauttamaasi konseptiin kurssin nimi, kokeen päivämäärä, oma nimi ja opiskelijanumero. Vastaa kaikkiin tehtäviin omille konsepteilleen.

Lisätiedot

Tietokannat II -kurssin harjoitustyö

Tietokannat II -kurssin harjoitustyö Tietokannat II -kurssin harjoitustyö Jyri Lehtonen (72039), jkoleh@utu.fi Azad Hajipour (72187), azhaji@utu.fi 10.6.2007 Sisältö 1. Tietokannan kuvaus... 1 1.1 Tietokannan rakenne... 1 1.2 Relaatiokaava

Lisätiedot

20. Javan omat luokat 20.1

20. Javan omat luokat 20.1 20. Javan omat luokat 20.1 Sisällys Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 20.2 Java API Java-kielen Application Programming Interface (API)

Lisätiedot

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang Sisällys 20. Javan omat luokat Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 20.1 20.2 Java API Java-kielen Application Programming Interface (API)

Lisätiedot

Liite 1. Projektin tulokset (Semaforit Javassa) Jukka Hyvärinen Aleksanteri Aaltonen

Liite 1. Projektin tulokset (Semaforit Javassa) Jukka Hyvärinen Aleksanteri Aaltonen Helsingin Yliopisto, tietojenkäsittelytieteen laitos Rinnakkaisohjelmointi (syksy 2006) Liite 1. Projektin tulokset (Semaforit Javassa) Jukka Hyvärinen Aleksanteri Aaltonen a. Käyttötarkoitus ja sovellusalue

Lisätiedot

Lista luokan sisällä

Lista luokan sisällä Lista luokan sisällä Luokan sisällä on lista Joukkue-luokka, joka sisältää listän joukkueen pelaajista Pelaaja Joukkueen metodit, jotka käyttävät listaa Ohjelmaluokka Luokan sisällä on lista Tarkoitta

Lisätiedot

Luokan sisällä on lista

Luokan sisällä on lista 1 Luokan sisällä on lista Luokan sisällä lista Listan sisältävä luokka Konstruktorit get-metodi Lista muissa metodeissa addxx-metodi Yksinkertainen pääohjelma Kertauksen List-luokan metodeja 1 Luokan sisällä

Lisätiedot

Javan perusteita. Janne Käki

Javan perusteita. Janne Käki Javan perusteita Janne Käki 20.9.2006 Muutama perusasia Tietokone tekee juuri (ja vain) sen, mitä käsketään. Tietokone ymmärtää vain syntaksia (sanojen kirjoitusasua), ei semantiikkaa (sanojen merkitystä).

Lisätiedot

Sisältö. 2. Taulukot. Yleistä. Yleistä

Sisältö. 2. Taulukot. Yleistä. Yleistä Sisältö 2. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.1 2.2 Yleistä

Lisätiedot

812341A Olio-ohjelmointi, IX Olioiden välisistä yhteyksistä

812341A Olio-ohjelmointi, IX Olioiden välisistä yhteyksistä 2016 IX Olioiden välisistä yhteyksistä Sisältö 1. Johdanto 2. Kytkentä 3. Koheesio 4. Näkyvyydestä 2 Johdanto n Ohjelmassa syntyy kytkentöjä olioiden välille Toivottuja ja epätoivottuja n Näkyvyys vaikuttaa

Lisätiedot

Sisältö. 22. Taulukot. Yleistä. Yleistä

Sisältö. 22. Taulukot. Yleistä. Yleistä Sisältö 22. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 22.1 22.2 Yleistä

Lisätiedot

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004 Vertailulauseet Ehtolausekkeet Ehdot, valintalausekkeet Boolean-algebra == yhtäsuuruus!= erisuuruus < pienempi suurempi >= suurempi tai yhtäsuuri Esimerkkejä: int i=7; int j=10;

Lisätiedot

16. Javan omat luokat 16.1

16. Javan omat luokat 16.1 16. Javan omat luokat 16.1 Sisällys Johdanto. Object-luokka: tostring-, equals-, clone- ja getclass-metodit. Comparable-rajapinta: compareto-metodi. Vector- ja ArrayList-luokat. 16.2 Javan omat luokat

Lisätiedot

Toisessa viikkoharjoituksessa on tavoitteena tutustua JUnit:lla testaukseen Eclipse-ympäristössä.

Toisessa viikkoharjoituksessa on tavoitteena tutustua JUnit:lla testaukseen Eclipse-ympäristössä. Toisessa viikkoharjoituksessa on tavoitteena tutustua JUnit:lla testaukseen Eclipse-ympäristössä. JUnit-ympäristö 1. Luo tests -pakkaukseen uusi luokka. Nimeä VHTestit. 2. Laita VHTestit periytymään TestCase:sta

Lisätiedot

Javan semaforit. Joel Rybicki, Aleksi Nur mi, Jara Uitto. Helsingin yliopisto

Javan semaforit. Joel Rybicki, Aleksi Nur mi, Jara Uitto. Helsingin yliopisto Javan semaforit Joel Rybicki, Aleksi Nur mi, Jara Uitto 16.12.2007 Helsingin yliopisto Tietojenkäsittelytieteen laitos Tätä ohjetta saa käyttää ja jatkokehittää opetustarkoituksiin. Javan semaforitoteutus

Lisätiedot

Javan GUI Scratchaajalle

Javan GUI Scratchaajalle Javan GUI Scratchaajalle Kertausta Javan perusteista Java-luokan muotoilu public class Kissa { private String nimi; public Kissa(String annettunimi) { this.nimi = annettunimi; yksi class = yksi hahmo =

Lisätiedot

Metodit Arvotyyppi. Metodit Arvotyyppi. Metodit Parametrit. Metodit Parametrit. Metodit Kuormittaminen. Metodit Kuormittaminen. Javan perusteet

Metodit Arvotyyppi. Metodit Arvotyyppi. Metodit Parametrit. Metodit Parametrit. Metodit Kuormittaminen. Metodit Kuormittaminen. Javan perusteet Metodit Arvotyyppi Ellei metodi palauta arvoa, sen arvotyyppi on void Tällöin return; -lauseke ei ole metodissa pakollinen, vaikka sen käyttö on sallittua Metodi voi palauttaa alkeistyypin tai olion Tällöin

Lisätiedot

Java ja grafiikka. Ville Sundberg 12.12.2007

Java ja grafiikka. Ville Sundberg 12.12.2007 Java ja grafiikka Ville Sundberg 12.12.2007 What happen Viritetty JPanel Graphics ja Graphics2D ImageIO ja BufferedImage Animaatio ja ajastus Optimoinnista Kehykset import javax.swing.jframe; public class

Lisätiedot

JAVA-OHJELMOINTI 3 op A274615

JAVA-OHJELMOINTI 3 op A274615 JAVA-OHJELMOINTI 3 op A274615 JFC & Swing, Look & Feel, Events Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: http://java.sun.com/docs/books/tutorial/index.html Vesterholm, Kyppö: Java-ohjelmointi,

Lisätiedot

KOHDELUOKAN MÄÄRITTELY

KOHDELUOKAN MÄÄRITTELY KOHDELUOKAN MÄÄRITTELY Kohdeluokka, mitä se sisältää Luokan määrittely Olion ominaisuudet eli attribuutit Olion metodit Olion luonti Olion tuhoutuminen Metodin kutsu luokan ulkopuolelta Taulukon alkiona

Lisätiedot

Olio-ohjelmointi Virhetilanteiden käsittely

Olio-ohjelmointi Virhetilanteiden käsittely Olio-ohjelmointi 2016 Virhetilanteiden käsittely Poikkeustilanteet n Java-järjestelmässä voidaan ottaa kiinni ohjelman suoritusaikana tapahtuvia virhetilanteita, joita ei saada kiinni tavanomaisilla ohjausrakenteilla

Lisätiedot

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo 15.2.2006

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo 15.2.2006 TURUN YLIOPISTO DEMO III Informaatioteknologian laitos tehtävät Olio-ohjelmoinnin perusteet / Salo 15.2.2006 1. Tässä tehtävässä tarkastellaan erääntyviä laskuja. Lasku muodostaa oman luokkansa. Laskussa

Lisätiedot

Pino S on abstrakti tietotyyppi, jolla on ainakin perusmetodit:

Pino S on abstrakti tietotyyppi, jolla on ainakin perusmetodit: Pino (stack) Pino: viimeisenä sisään, ensimmäisenä ulos (LIFO, Last In, First Out) -tietorakenne kaksi perusoperaatiota: alkion lisäys pinon päälle (push), ja päällimmäisen alkion poisto (pop) Push(alkio)

Lisätiedot

9. Periytyminen Javassa 9.1

9. Periytyminen Javassa 9.1 9. Periytyminen Javassa 9.1 Sisällys Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Metodien korvaaminen ja super-attribuutti. Attribuutin peittäminen periytymisen kautta. Rakentajat

Lisätiedot

Luokat ja oliot. Ville Sundberg

Luokat ja oliot. Ville Sundberg Luokat ja oliot Ville Sundberg 12.9.2007 Maailma on täynnä olioita Myös tietokoneohjelmat koostuvat olioista Σ Ο ω Μ ς υ φ Ϊ Φ Θ ψ Љ Є Ύ χ Й Mikä on olio? Tietokoneohjelman rakennuspalikka Oliolla on kaksi

Lisätiedot

8. Näppäimistöltä lukeminen 8.1

8. Näppäimistöltä lukeminen 8.1 8. Näppäimistöltä lukeminen 8.1 Sisällys Arvojen lukeminen näppäimistöltä Java-kielessä. In-luokka. In-luokka, käännös ja tulkinta Scanner-luokka. 8.2 Yleistä Näppäimistöltä annettujen arvojen (syötteiden)

Lisätiedot

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti: 1 (7) Tiedon lukeminen näppäimistöltä Scanner-luokan avulla Miten ohjelma saa käyttöönsä käyttäjän kirjoittamaa tekstiä? Järjestelmässä on olemassa ns. syöttöpuskuri näppäimistöä varten. Syöttöpuskuri

Lisätiedot

Java kahdessa tunnissa. Jyry Suvilehto

Java kahdessa tunnissa. Jyry Suvilehto Java kahdessa tunnissa Jyry Suvilehto Ohjelma Ohjelmointiasioita alkeista nippelitietoon n. 45 min Tauko 10 min Oliot, luokat ja muut kummajaiset n. 45 min Kysykää Sisältöä ei oikeasti ole 2x45 min täytteeksi,

Lisätiedot

JAVA on ohjelmointikieli, mikä on kieliopiltaan hyvin samankaltainen, jopa identtinen mm. C++

JAVA on ohjelmointikieli, mikä on kieliopiltaan hyvin samankaltainen, jopa identtinen mm. C++ JAVA alkeet JAVA on ohjelmointikieli, mikä on kieliopiltaan hyvin samankaltainen, jopa identtinen mm. C++ ja Javascriptin kanssa. Huom! JAVA ja JavaScript eivät silti ole sama asia, eivätkä edes sukulaiskieliä.

Lisätiedot

7. Oliot ja viitteet 7.1

7. Oliot ja viitteet 7.1 7. Oliot ja viitteet 7.1 Sisällys Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen. Viitteiden sijoitus. Viitteiden vertailu. Varautuminen null-arvoon. Viite metodin paluuarvona. Viite metodin

Lisätiedot

1. Omat operaatiot 1.1

1. Omat operaatiot 1.1 1. Omat operaatiot 1.1 Sisällys Yleistä operaatioista. Mihin operaatioita tarvitaan? Oman operaation määrittely. Yleisesti, nimeäminen ja hyvä ohjelmointitapa, määreet, parametrit ja näkyvyys. HelloWorld-ohjelma

Lisätiedot

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4 Sisällys 12. Näppäimistöltä lukeminen Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä.. Luetun arvon tarkistaminen. Tietovirrat ja ohjausmerkit. Scanner-luokka.

Lisätiedot

Sisältö. Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 6.2

Sisältö. Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 6.2 6. Tiedostot 6.1 Sisältö Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 6.2 Johdanto Tiedostoja on käsitelty uudelleenohjattujen standardisyöteja tulostusvirtojen avulla. Tiedostoja voidaan

Lisätiedot

9. Periytyminen Javassa 9.1

9. Periytyminen Javassa 9.1 9. Periytyminen Javassa 9.1 Sisällys Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Ilmentymämetodien korvaaminen. Luokkametodien peittäminen. Super-attribuutti. Override-annotaatio.

Lisätiedot

YHTEYSSUHDE (assosiation)

YHTEYSSUHDE (assosiation) YHTEYSSUHDE (assosiation) -Mikä on yhteyssuhde? -Miten toteutan yhteyssuhteen? 1 Mikä on yhteyssuhde? Yhteyssuhde kuvaa kahden olion välistä suhdetta: Esim. Auto Henkilö, omistussuhde Tili Asiakas, omistussuhde

Lisätiedot

7. Näytölle tulostaminen 7.1

7. Näytölle tulostaminen 7.1 7. Näytölle tulostaminen 7.1 Sisällys System.out.println- ja System.out.print-operaatiot. Tulostus erikoismerkeillä. Edistyneempää tulosteiden muotoilua. 7.2 Tulostusoperaatiot System.out.println-operaatio

Lisätiedot

Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: Harjoitus 7 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: class Lintu //Kentät private int _siivenpituus; protected double _aivojenkoko; private bool _osaakolentaa; //Ominaisuudet public int

Lisätiedot

SATAKUNNAN AMMATTIKORKEAKOULU. Minna Seppi TIEDOSTOPALVELU RMI-TEKNIIKALLA

SATAKUNNAN AMMATTIKORKEAKOULU. Minna Seppi TIEDOSTOPALVELU RMI-TEKNIIKALLA SATAKUNNAN AMMATTIKORKEAKOULU Minna Seppi TIEDOSTOPALVELU RMI-TEKNIIKALLA TIETOJENKÄSITTELYN KOULUTUSOHJELMA 2006 TIEDOSTOPALVELU RMI-TEKNIIKALLA Minna Seppi Satakunnan Ammattikorkeakoulu Tietojenkäsittelyn

Lisätiedot

Tietorakenteet. JAVA-OHJELMOINTI Osa 5: Tietorakenteita. Sisällys. Merkkijonot (String) Luokka String. Metodeja (public)

Tietorakenteet. JAVA-OHJELMOINTI Osa 5: Tietorakenteita. Sisällys. Merkkijonot (String) Luokka String. Metodeja (public) Tietorakenteet JAVA-OHJELMOINTI Osa 5: Tietorakenteita Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto Olioita ja tietoja voidaan organisoida määrämuotoisiksi tietorakenteiksi Hyödyllisiä

Lisätiedot

RINNAKKAINEN OHJELMOINTI A,

RINNAKKAINEN OHJELMOINTI A, RINNAKKAINEN OHJELMOINTI 815301A, 18.6.2005 1. Vastaa lyhyesti (2p kustakin): a) Mitkä ovat rinnakkaisen ohjelman oikeellisuuskriteerit? b) Mitä tarkoittaa laiska säikeen luominen? c) Mitä ovat kohtaaminen

Lisätiedot

Java-kielen perusteita

Java-kielen perusteita Java-kielen perusteita valintalauseet 1 Johdantoa kontrollirakenteisiin Tähän saakka ohjelmissa on ollut vain peräkkäisyyttä eli lauseet on suoritettu peräkkäin yksi kerrallaan Tarvitsemme myös valintaa

Lisätiedot

Ohjelmointitaito (ict1td002, 12 op) Kevät 2008. 1. Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen raine.kauppinen@haaga-helia.

Ohjelmointitaito (ict1td002, 12 op) Kevät 2008. 1. Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen raine.kauppinen@haaga-helia. Ohjelmointitaito (ict1td002, 12 op) Kevät 2008 Raine Kauppinen raine.kauppinen@haaga-helia.fi 1. Java-ohjelmoinnin alkeita Tietokoneohjelma Java-kieli ja Eclipse-ympäristö Java-ohjelma ja ohjelmaluokka

Lisätiedot

TIETORAKENTEET JA ALGORITMIT

TIETORAKENTEET JA ALGORITMIT TIETORAKENTEET JA ALGORITMIT Timo Harju 1999-2004 1 typedef link List; /* Vaihtoehtoisia nimiä */ typedef link Stack; /* nodepointterille */ typedef link Queue typedef struct node Node; /* itse nodelle

Lisätiedot

RMI TOIMIVAA ETÄPROSEDUURIOHJELMINTIA

RMI TOIMIVAA ETÄPROSEDUURIOHJELMINTIA RMI TOIMIVAA ETÄPROSEDUURIOHJELMINTIA 17.12.2007 1 Liite 1. analyysi ryhmän toiminnasta Liite 2. XML:t kysymyksistä 2 RMI 4 Johdanto...4 RMI:n edut...4 Objektikeskeisyys...4 Helppo luoda ja käyttää...5

Lisätiedot

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä Ohjelmoinnin peruskurssien laaja oppimäärä Luento 19: Rinnakkaisuus Riku Saikkonen (merkityt ei-laajan kurssin kalvot: Otto Seppälä) 24. 3. 2011 Sisältö 1 Säikeet 2 Lukot 3 Monitorit 4 Muuta säikeisiin

Lisätiedot

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Tietorakenneluokkia 2: HashMap, TreeMap

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Tietorakenneluokkia 2: HashMap, TreeMap Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Tietorakenneluokkia 2: HashMap, TreeMap Tietorakenneluokkia ja -rajapintoja Java tarjoaa laajan kokoelman tietorakennerajapintoja ja - luokkia. Aiemmin

Lisätiedot

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista Sisällys 1. Omat operaatiot Yleistä operaatioista. Mihin operaatioita tarvitaan? Oman operaation määrittely. Yleisesti, nimeäminen ja hyvä ohjelmointitapa, määreet, parametrit ja näkyvyys. HelloWorld-ohjelma

Lisätiedot

11. Javan valintarakenteet 11.1

11. Javan valintarakenteet 11.1 11. Javan valintarakenteet 11.1 Sisällys If- ja if-else-lauseet. Orpo else. Valintaa toisin: switch-lause. 11.2 If-lause Merkitään varatulla sanalla if. Kuvaa yksisuuntaisen päätöksen: rakenteen lauseet

Lisätiedot

12. Näppäimistöltä lukeminen 12.1

12. Näppäimistöltä lukeminen 12.1 12. Näppäimistöltä lukeminen 12.1 Sisällys Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä. In-luokka. Luetun arvon tarkistaminen. Tietovirrat ja ohjausmerkit.

Lisätiedot

Sisällys. Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2

Sisällys. Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2 6. Metodit 6.1 Sisällys Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2 Oliot viestivät metodeja kutsuen Olio-ohjelmoinnissa ohjelma

Lisätiedot

Sisältö. Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 6.2

Sisältö. Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 6.2 6. Tiedostot 6.1 Sisältö Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 6.2 Johdanto Tiedostoja on käsitelty uudelleenohjattujen standardisyöte- ja tulostusvirtojen avulla. Tiedostoja voidaan

Lisätiedot

8. Näppäimistöltä lukeminen 8.1

8. Näppäimistöltä lukeminen 8.1 8. Näppäimistöltä lukeminen 8.1 Sisällys Arvojen lukeminen näppäimistöltä Java-kielessä. In-luokka. In-luokka, käännös ja tulkinta Scanner-luokka. 8.2 Yleistä Näppäimistöltä annettujen arvojen (syötteiden)

Lisätiedot