HOJ Protokollista & XML

Koko: px
Aloita esitys sivulta:

Download "HOJ Protokollista & XML"

Transkriptio

1 HOJ Protokollista & XML Ville Leppänen HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/66

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

3 Luennon rakenne Protokollista Yleistä Protokolla asiakkaan ja palvelimen kannalta; tilat Kuvaaminen, Muodostaminen Protokollasta luokiksi Viime aikaisia suuntauksia XML sopii mm. protokollan viestien esittämiseen Mikä XML on? Käsitteitä: XML, XSL, DTD, skeema,... XML:n käyttötilanteita, XML-esimerkkejä DOM ja SAX: XML-dokumentit Java-ohjelmissa. Esittäminen, jäsentäminen ja antijäsentäminen. Esimerkkejä. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.3/66

4 Protokollista Rajoitutaan viestipohjaisiin yhteydellisiin protokolliin. Taustaa; protokolla asiakkaan ja palvelimen kannalta; tilat Muodostaminen Kuvaaminen Protokollasta luokiksi HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.4/66

5 Protokollista: taustaa 1/2 Protokollia määritelty pilvin pimein. RFC (Request For Comments) 1 Yli 3500 olemassa. Esim. RFC 821: Simple Mail Transfer Protocol. Tyypillisesti Internetin alkuaikoina kuvattiin useiden tekstipohjaisten protokollien kaikkien viestien tarkka muoto sekä keskustelun etenemistavat. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.5/66

6 Protokollista: taustaa 2/2 Hajautetun sovelluksen voidaan ajatella olevan jossain tilassa. Viesti(e)n lähettämisen seurauksena sovellus siirtyy tilasta toiseen. Vuoropohjaisissa protokollissa usein vähän vaihtoehtoja seuraavalle viestille (& tilasiirtymälle). Keskustelevien osapuolten pitää mieltää hajautetun sovelluksen olevan jossain tilassa ja hyväksyä vain tilan kannalta lailliset viestit. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.6/66

7 Protokollista: muodostaminen Pitää miettiä läpi kaikki asiakkaan ja palvelimen väliset keskustelut. Kirjataan keskustelun vaiheet viesteiksi; vältä turhia viestejä. Pitäisi pyrkiä minimoimaan erilaisten viestien määrää. Tärkeää huomioida erilaiset kuittaukset sekä virhetilanteista ilmoittaminen. Todellisuudessa keskustelu ei aina etene niin kuin toivotaan: virheistä toipuminen eräs keskustelun muoto (viestejä). HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.7/66

8 Protokollista: viestien koodaus Binäärisessä muodossa, esim. kirjoitetaan olioita TCP-sokettien tiedostovirran päällä. Tekstimuodossa (perinteinen vaihtoehto): suunnitellaan itse viestien muoto ja koodaus. Moderni variaatio: esitetään viestit XML:llä. Kaikkien edellisten vaihtoehtojen yhteydessä on hyvinkin järkevää esittää viestit ohjelmassa erilaisilla Java-olioilla. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.8/66

9 Protokollista: kuvaaminen Muodostetaan sovellukselle tiloja. Tilat ovat hajautetun järjestelmän kokonaistiloja, mutta usein liittyvät johonkin osapuoleen. Tilakaavio: Tilasta toiseen siirrytään vaihtamalla viestejä tekemällä keskustelu. Yksittäiset tilasiirtymät (keskustelu) voidaan kuvata UML:n sekvenssikaaviolla. Yleisemmin sekvenssikaaviolla voidaan kuvata tyypillisiä keskusteluja. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.9/66

10 Esimerkki: tilakaavio tee yhteys odot. yhteyd.otto yhteys tehty odotetaan autentikointia login ok kyselyjen palvelu logout lopetustila yhteys tehty login fail login login ok kyselyn tulos tee kysely logout logout ok close conn. close ok autentikointi kyselytila logout tehdään logout lopetustila HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.10/66

11 Tilakaavio asiakaan kannalta tee yhteys epäonnistunut login autentikointi epäonnistuva kysely onnistunut kysely onnistunut login kyselytila logout tehdään logout logout lopetustila yhteyden sulkeminen HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.11/66

12 Tilakaavio palvelimen kannalta odot. yhteyd.otto yhteys tehty odotetaan autentikointia login ok kyselyjen palvelu palvellaan kyselypyyntö logout lopetustila HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.12/66

13 Keskustelu sekvenssikaaviona : asiakas onnistunut : palvelin login autentikointi tila LOGIN viesti autentikointi tila kyselytila LOGINOK viesti kyselytila HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.13/66

14 Protokollista: luokiksi Perusajatus: Luetellaan kaikki järjestelmässä tarvittavat viestit ja tehdään jokaista vastaten yksi luokka. Tehdään yksi yliluokka, joka määrittää yleiset ominaisuudet. Niitä lähinnä decode/encode (tai read/write tai parse/unparse). Yksittäisiä viestejä vastaavat aliluokat toteuttavat lisäksi havainnointi- ja modifiointimetodeja. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.14/66

15 Protokollista: esimerkki Pohditaan esimerkkiä, jossa henkilöiden tietoja haetaan palvelimelta. Ensin pitää onnistuneesti autentikoida. Sitten voidaan tehdä useita kyselyjä. Lopuksi suljetaan yhteys palvelimeen. Tarkoitus linkittää IT-laitoksen henkilötietokantaan. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.15/66

16 ITinfo: tilakaavio asiakkaasta kytkeytyminen laiton toimenpide autentikointitila epäonnistunut autentikointi logout login laiton toimenpide kyselytila logout kyselyn tekeminen lopetustila lopettaminen HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.16/66

17 Esimerkki: joitakin viestejä A P: Tee autentikointiyritys P A: Autentikointi onnistui P A: Autentikointi epäonnistui P A: Autentikointi suoritettu jo A P: Anna ilmoitetun henkilön tiedot P A: Palautetaan halutut tiedot P A: Kyseistä henkilöä ei ole A P: Sulje yhteys P A: Yhteys sulkeutuu Kustakin luokka + yliluokka XXX_App_Message. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.17/66

18 Luokka ITinfo_Message import org.w3c.dom. ; public abstract class ITinfo_Message { public abstract ITinfo_Message parse(document doc); public abstract void unparse(document doc); } // class ITinfo_Message HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.18/66

19 ITinfo_Login_Message 1/2 import org.w3c.dom. ; public class ITinfo_Login_Message extends ITinfo_Message { private String user; // tunnus private String passwd; // salasana public ITinfo_Login_Message(String u, String p) { // tarkistuksia... (poissa) user = u; passwd = p; } // ITinfo_Login_Message public String getuser() { return user; } public String getpasswd() { return passwd; } public void setuser(string u) { user = u; } public void setpasswd(string p) { passwd = p; } HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.19/66

20 ITinfo_Login_Message 2/2 public ITinfo_Message parse(document doc) { // jäsennetään DOM:sta ITinfo_Login_Message String p = ; String u = ; //... luetaan arvot u:lle ja p:lle return new ITinfo_Login_Message(u,p); } // parse public void unparse(document doc) { // muodostetaan rakenne tyhjään dokumenttiin... } // unparse } // class ITinfo_Login_Message HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.20/66

21 ITinfo_Login_Message XML:nä <?xml version="1.0" standalone="yes"?> <itinfo_message> <itinfo_login_message> <user> villep </user> <passwd> salainen </passwd> </itinfo_login_message> </itinfo_message> Mahdollisesti uloin kuori pois + pitäisi tehdä DTD-määrittely. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.21/66

22 Viime aikaisia suuntauksia Protokollaa ja ylipäänsä järjestelmän toimintaa suunniteltaessa olennaista päättää missä tilatietoa ylläpidetään. Perinteinen ratkaisu: pidetään tilatietoa sekä asiakkaissa että palvelimissa. Thin client: pidetään kaikki tieto palvelimessa. Rest = representational state transfer: pidetään kaikki tilatieto yhteydestä asiakkaassa. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.22/66

23 Ohut asiakas -tekniikka Lähinnä käyttöliittymätekniikka, koska koko sovellus on oikeastaan palvelimessa. Ajax on yksi toteutuskeino. Toimii web-alustan yhteydessä. Useita toteutuksia saatavilla. Perustuu web-sivun sisällön dynaamiseen muuttamiseen ilman sivun uudelleenlataamista. Esim. Vaadin (IT Mill Oy). Ohut asiakas -tekniikkaa täydentää pilvilaskenta. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.23/66

24 REST-tekniikka Palvelimella hajautetun järjestelmän tilatietoa, mutta kaikki asiakasyhteyteen liittyvä tieto asiakkaalla (toimitetaan pyyntöjen mukana palvelimelle). Asiakas-palvelin-suhde on tilaton: palvelin on aina levossa ja palvelee yksittäisen pyynnön kerrallaan. Tuloksiin voidaan soveltaa välimuistiin taltiointia. Muita periaatteita: layered design, uniform interfaces ja code-on-demand. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.24/66

25 Mikä XML on? Kehitetty alunperin tuomaan rakennetta WWW:n sisältöön, rakennetta HTML-sivujen latteuden tilalle. XML = extensible Markup Language. Johdettu yleisestä SGML:stä. XML on rakenteisen tiedon kuvauskieli. XML-dokumentti kuvaa yhden rakenteisen tietoalkion. XML pyrkii myös antamaan merkityksen kuvatulle tiedolle. XML on joukkotekniikkoja tiedon kuvaamiseksi, käsittelemiseksi ja esittämiseksi. XML on suunniteltu WWW:stä lähtöisin, mutta soveltuu muuallekin. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.25/66

26 XML: Mitä? Kuka? Koska? W3C:n (World Wide Web Consortium) kehittämä kieli mutta samalla joukko tekniikkoja. n. 500 jäsenorganisaatiota; Tim Berners-Lee perusti (MIT, CERN, DARPA, EU, Nokia, HUT,... ) Kehitystyö alkoi 1990-luvun puolivälissä. XML 1.0 suositus, helmikuu (Sun, Microsoft, netscape, yliopistoihmisiä.) Nimiavaruudet, tyylitiedostot, ja 50+ muuta suositusta. W3C:llä useita työryhmiä XML:stä tälläkin hetkellä. XML 1.1 suositukseksi 4/ paljon muuta. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.26/66

27 W3C: XML in 10 points 1. Tiedon strukturointi. Nykyään kaikkialla: tietokannan tietue, OO-kielen olio, XML-kieli HTML-kielen tapainen. 3. Tekstipohjainen kuvaus, ei tarkoitettu luettavaksi. 4. Havainnollisuus: Kuvauksia voi tehdä käsin; tiivistäminen. 5. Joukko teknologioita kuvauskielen lisäksi. 6. XML on melko uusi, SGML on ISO-standardi, 1980 alkupuoli. 7. XML: HTML XHTML. 8. XML-dokumentilla voi olla tyyppi; tyypin voi koostaa modulaarisesti. 9. XML toimii semattisen webin perustana. 10. XML on lisenssivapaa, alustariippumaton ja hyvin tuettu. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.27/66

28 XML:n käyttötilanteet XML-dokumenttien esittäminen (selain) XML-dokumenttien välittäminen XML-dokumenttien jäsentäminen XML-dokumenttien tuottaminen XML ja verkkoviestintä HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.28/66

29 Esittäminen WWW-selaimessa XML konversio ohjelma HTML + muuta (CSS) www selain XSL XML XML pohj. verkkoselain XSL XML-pohjaisia selaimia on jo aika HOJ, hyvin. c Ville Leppänen, IT, Turun yliopisto, 2012 p.29/66

30 XML-dokumenttien välittäminen sovellus A XML dokumentti sovellus B DTD XML toimii tiedon esitysmuodon standardina. Osapuolten pitää sopia dokumenttien muodosta ja merkityksestä; DTD-tiedostoja. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.30/66

31 XML-dokumenttien jäsentäminen sovellus XML dokumentti XML jäsentäjä XML olioita Useita jäsentäjiä (Java); Xerces. DOM, SAX, StAX: tapoja käydä läpi oliomuotoinen XML-dokumentti. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.31/66

32 XML-dokumenttien tuottaminen Useita tapoja. Käsin (ei suuressa mittakaavassa). Nykyään saatavilla runsaasti erilaisia XML-editoreja! Generoidaan tietokannan tietojen perusteella. Itsenäinen ohjelma, joka käyttäjä tietojen perusteella tekee XML-dokumentin (DOM). Tuotetaan XML-dokumentteja eri WWW-tekniikoiden yhteydessä.... HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.32/66

33 XML ja verkkoviestintä Liittyy dynaamiseen sisällön tuottamiseen kuten servletit, JSP, ASP, jne. XML:n rooli on tiedon sisällön esittämisessä ei niinkään ulkoasun esittämisessä (vaikka siihen toki panostettu myös). XML:n alkuperäinen tarkoitus ei ole ilmaista, mistä tieto koostetaan. XML ei ole verkkolomake, vaan pikemminkin verkkolomakkeen täyttämisen tulos. XML:llä voidaan esittää verkko-ohjelmien protokollan viestit! HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.33/66

34 Mitä XML:llä kuvataan? Esimerkki: HTML-dokumentilla on tagi-rakenne: <title> Sivun otsikko </title> <body> <h1> Pääotsikko </h1> Tekijä on <b>l. Auri</b>... <p>... </body> Ongelma: <b>... </b> -osassa olevan tiedon merkitys ei selvä dokumentin käsittelyn kannalta. XML-dokumenteilla myös hierarkinen tagi-rakenne, mutta tageilla semanttinen merkitys (vai onko?). HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.34/66

35 Esimerkki XML-dokumentista <?xml version="1.0" standalone="yes"?> <sahkoposti> <lahettaja> < > </ > <nimi> Ville Leppänen </nimi> </lahettaja> <vastaanottajat> <vastaanottaja < > </ > </vastaaottaja> <vastaaottaja> < > </ > </vastaaottaja> </vastaanottajat> <otsikko> Koeviesti </otsikko> <runko> <kappale> Heips! </kappale> <kappale> Olin muuten... </kappale> </runko </sahkoposti> HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.35/66

36 Esimerkki puurakenteena dokumentti sähköposti lähettäjä vastaaottajat otsikko runko vastaanottaja kappale kappale nimi Heips! Olin... Ville.L... Ville HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.36/66

37 XML-dokumentin luonnehdintaa 1/3 XML-dokumentti oliokielen olio Pascalin tietue relaatiotietokannan tietue XML-dokumentti koostuu yhdestä (juuri)elementistä, jolla tyyppinimi". Elementit koostuvat hierarkisesti XML-elementeistä ja/tai tekstistä. Samannimisiä elementtejä voi yhden elementin sisällä olla useita. Elementti kenttä (mahdollisesti nimiongelmia). HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.37/66

38 XML-dokumentin luonnehdintaa 2/3 Elementeillä voi olla tekstiarvoisia nimettyjä attribuutteja. <kappale tasaus="both"> Tämä tasataan molempiin reunoihin... </kappale> Elementillä ei ole pakko olla sisältöä. <graphic source="kissa.gif"/> Jos tagit noudattavat hierarkista rakennetta ja vain yksi juurielementti, on dokumentti oikeanmuotoinen (well-formed) XML-dokumentti. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.38/66

39 XML-dokumentin luonnehdintaa 3/3 Määrittävätkö elementit sisällölle merkityksen? Elementtien nimet voi valita vapaasti joten mistä yhteys sisällön merkitykseen? DTD. XML:ssä voitaisiin tulla toimeen ilman attribuutteja niiden tieto voitaisiin esittää sisältyvillä elementeillä. XML suunniteltu hyvin? HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.39/66

40 DTD, yleistä 1/2 XML-dokumentin ei tarvitse olla minkään DTD:n mukainen! (Document Type Definition) Jos dokumentin rakenne vastaa DTD:tä, sanotaan dokumenttia validiksi. DTD eli dokumentin rakennemääritys; verrattavissa ohjelmointikielissä tyyppiin. DTD:n tekemiseksi oma kieli (osa XML:ää). Dokumentin alussa voi olla ulkoisen DTD:n määre <?xml version="1.0"> <!DOCTYPE sahkoposti <sahkoposti>... </sahkoposti> SYSTEM "sposti.dtd"> HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.40/66

41 DTD, yleistä 2/2 tai sisäisen DTD:n määre: <?xml version="1.0"> <!DOCTYPE sahkoposti [ <!ELEMENT sahkoposti (lahettaja, vastaanottajat, otsikko, runko)> <!ELEMENT lahettaja ( , nimi?)>... ]> <sahkoposti>... </sahkoposti> DTD:n ELEMENT-määrittelyiden apuna käytetään ENTITY-määreitä, jotka ovat vakioita / makroja / ulkoisia tiedostoja. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.41/66

42 DTD-esimerkki: sposti.dtd Esimerkki sposti.dtd: <!ELEMENT sahkoposti (lahettaja, vastaanottajat, otsikko, runko)> <!ELEMENT lahettaja ( , nimi?)> <!ELEMENT (#PCDATA)> <!ELEMENT nimi (#PCDATA)> <!ELEMENT vastaanottajat (vastaanottja)+> <!ELEMENT vastaanottaja ( nimi)> <!ELEMENT otsikko (#PCDATA)> <!ELEMENT runko (kappale)*> <!ELEMENT kappale (#PCDATA)> HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.42/66

43 DTD: kuvauksesta tarkemmin Määreet: (tai),? (0/1), + ( 1), * (> 0). Listassa (A, B, C) järjestys on sidottu. Kentän tyyppi: monikko, EMPTY, ANY, #PCDATA. <!ATTLIST...> määrittelee attribuutit. Jäsentämäton entiteetti (ulkoinen): <!ENTITY kustantajanlogo SYSTEM "../pics/logo.gif" NDATA gif> Yleisentiteetti (viite: &XML;): <!ENTITY XML "Extensible Markup Language"> HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.43/66

44 Attribuuteista Mahdollista laittaa elementtiin identiteetti <!ATTLIST book id ID #REQUIRED> #REQUIRED (vaaditaan), #IMPLIED (sovellus päättää), #FIXED (kiinteä, ilmoitetaan). Muut tyypit ID:n lisäksi: IDREF viittaa ID:hen (täytyy olla olemassa) ENTITY DTD:ssä määrätty entiteetti lisäksi muita HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.44/66

45 XML:n muita rakenneosia Skeemat (scheme) ovat DTD:n korvaajia, jotka ovat ilmaisuvoimaltaan parempia. Dokumentti olio; skeema luokka. Nimiavaruus (namespace) on tapa yhdistää dokumentissa eri DTD-määrityksistä otettuja elementtejä, vaikka niillä olisi sama nimi. XSL (Extensible Stylesheet Language) mahdollistaa XML-dokumentin kuvaamisen toisenlaiselle merkkauskielelle. Joukko kuvaussääntöjä; kohteena esim. HTML tai WML. XLink, XForms, XPointer, XHTML, XPath, XSLT, XInclude, XQuery, XML Signatures, HOJ, jnec Ville Leppänen, IT, Turun yliopisto, 2012 p.45/66

46 XML ja Java DOM = Document Object Model Luokista, erityisesti Node Jäsentäminen: Xerces Xerces-esimerkki HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.46/66

47 DOM = Document Object Model API: XML-dokumentti (Java-)olioina. JDK1.4: org.w3c.dom paketti. Ei ole jäsennin, vaan jäsennyksen tulos. Voidaan käyttää ohjelmalliseen XML-dokumenttien muodostamiseen & muokkaamiseen. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.47/66

48 DOM-rajapinnan luokkia Element XML-dokumentin elementti. Attr attribuutti. Comment <!-- Kommentti... --> Entity entiteetti (ei määr). Document koko XML-dokumentti. DocumentType DTD-määrittely. Text tekstitietoa. CDATASection tekstiä (CDATA). Node puurakenne edellisille (yliluokka). HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.48/66

49 Luokka Node Node getfirstchild() Node getnextsibling() Node getprevioussibling() Node getlastchild() Node getparentnode() NodeList getchildnodes() String getnodename() String getnodevalue() Document getownerdocument() NamedNodeMap getattributes() vain elementeille. boolean hasattributes() boolean haschildnodes() Muuttaminen: appendchild, removechild, replacechild, setnodevalue,... HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.49/66

50 Jäsentäminen: Xerces XML Apache-projektin tulos; 1.0:n mukainen jäsentäjä. Eräs jäsentäjä; xml.apache.org Idea: tekstitiedosto ajonaikaisia Java-olioita. Tuloksena org.w3c.dom.document. Tukee validointia. Antaa toteutuksen JDK1.4:n paketille org.w3c.dom (ja javax.xml.parsers). XML Apache:een liittyy myös Xalan, jolla voidaan käsitellä XSL-määrityksiä. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.50/66

51 Xerces esimerkki import org.apache.xerces.parsers.domparser; import org.w3c.dom.document; import org.xml.sax.saxexception; import java.io.ioexception;... String xmlfile = "file:///xerces-1_4_4/data/personal.xml"; DOMParser parser = new DOMParser(); try { parser.parse(xmlfile); } catch (SAXException se) { se.printstacktrace(); } catch (IOException ioe) { ioe.printstacktrace(); } Document document = parser.getdocument(); HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.51/66

52 ViestiPalvelin.java import java.io. ; import java.net. ; import java.util. ; public class ViestiPalvelin { public static final int VIESTIPORTTI = 8203; public static void main(string[] args) throws Exception { ServerSocket ss = new ServerSocket(VIESTIPORTTI); while (true) { Socket cs = ss.accept(); System.out.println("Connection from " + cs.getinetaddress() + "port " + cs.getport()); InputStream is = cs.getinputstream(); Sposti sp = XMLsposti.parse(iS); is.close(); cs.close(); System.out.println("Message from " + sp.lähettäjä. ); } // while } // main } // class ViestiPalvelin HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.52/66

53 Viestittaja.java import java.net. ; import java.io. ; public class Viestittaja { public static void main(string[] args) throws Exception { if (args.length 2) { System.out.println("Usage: java Viestittaja <host> <xml-message>"); System.exit(0); } InputStream in = new FileInputStream(args[1]); Sposti sp = XMLsposti.parse(in); System.out.println("Sending message from " + sp.lähettäjä. + "to mailserver at " + args[0]); Socket soc = new Socket(args[0], ViestiPalvelin.VIESTIPORTTI); OutputStream os = soc.getoutputstream(); XMLsposti.unparse(sp, os); os.flush(); os.close();soc.close(); } // main } // class Viestittaja HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.53/66

54 XMLsposti.java 1/12 import org.apache.xerces.parsers.domparser; import org.apache.xerces.dom.documentimpl; import org.apache.xml.serialize. ; import org.xml.sax.inputsource; import org.w3c.dom. ; import java.io. ; import java.util. ; public class XMLsposti { private static final String SPOSTI = "sposti"; private static final String LÄHETTÄJÄ = "lahettaja"; private static final String = " "; private static final String NIMI = "nimi"; private static final String VASTAANOTTAJAT = "vastaanottajat"; private static final String VASTAANOTTAJA = "vastaanottaja"; private static final String OTSIKKO = "otsikko"; private static final String RUNKO = "runko"; private static final String KAPPALE = "kappale"; HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.54/66

55 XMLsposti.java 2/12... public static Sposti parse(inputstream xmlin) throws Exception { DOMParser parser = new DOMParser(); parser.parse(new InputSource(new InputStreamReader(xmlIn))); Document doc = parser.getdocument(); // Navigoidaan dokumenttia. Element root = doc.getdocumentelement(); if (!root.getnodename().equals(sposti)) throw new Exception("Uloimman alkion tulee olla " + SPOSTI); Node ch = root.getfirstchild(); Lahettaja lähettäjä = null; String aihe = null; Vector vastaanottajat= new Vector(); Vector kappaleet = new Vector(); ch = seekfor(ch, Node.ELEMENT_NODE); while (ch null) { String n = ch.getnodename(); if (n.equals(lähettäjä)) lähettäjä = parselähettäjä(ch); else if (n.equals(vastaanottajat)) vastaanottajat = parsevastaanottajat(ch); HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.55/66

56 XMLsposti.java 3/12 else if (n.equals(otsikko)) aihe = parseotsikko(ch); else if (n.equals(runko)) kappaleet = parserunko(ch); // else throw new Exception("Outo elementti: " + n); ch = seekfor(ch.getnextsibling(), Node.ELEMENT_NODE); } // while // Tuloksen muodostus int vnum = vastaanottajat.size(); Vastaanottaja[] va = new Vastaanottaja[vnum]; for (int i=0; i<vnum; i++) va[i] = (Vastaanottaja)vastaanottajat.elementAt(i); int knum = kappaleet.size(); String[] ka = new String[knum]; for (int i=0; i<knum; i++) ka[i] = (String)kappaleet.elementAt(i); Sposti sp = new Sposti(); sp.lähettäjä = lähettäjä; sp.otsikko = aihe; sp.kappaleet = ka; sp.vastaanottajat= va; return sp; } // unparse HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.56/66

57 XMLsposti.java 4/12 private static Node seekfor(node n, short t) { while ((n null) && (n.getnodetype() t)) n = n.getnextsibling(); return n; } // seekfor private static String parseotsikko(node n) { return n.getfirstchild().getnodevalue(); } // parseosoite private static Lahettaja parselähettäjä(node n) throws Exception { Node child = seekfor(n.getfirstchild(), Node.ELEMENT_NODE); String , nimi; if (child == null) throw new Exception("Lähettäjällä ei osia."); if (!child.getnodename().equals( )) throw new Exception("Lähettäjän ensimmäinen osa tulee olla " + + "se oli " + child.getnodename()); HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.57/66

58 XMLsposti.java 5/12 = child.getfirstchild().getnodevalue(); child = seekfor(child.getnextsibling(),node.element_node); if (child == null) nimi = null; else { if (!child.getnodename().equals(nimi)) throw new Exception("Lähettäjän toinen elementti on " + NIMI); nimi = child.getfirstchild().getnodevalue(); child = seekfor(child.getnextsibling(), Node.ELEMENT_NODE); if (child null) throw new Exception("Lähettäjässä kolmas elementti."); } Lahettaja l = new Lahettaja(); l. = ; l. nimi = nimi; return l; } // parselähettäjä HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.58/66

59 XMLsposti.java 6/12 private static Vector parsevastaanottajat(node n) throws Exception { Node child = seekfor(n.getfirstchild(), Node.ELEMENT_NODE); if (child == null) throw new Exception("Ei vastaanottaja-elementtejä."); Vector vec = new Vector(); while (child null) { if (!child.getnodename().equals(vastaanottaja)) throw new Exception("Outo elem: " + child.getnodename()); vec.add(parsevastaanottaja(child)); child = seekfor(child.getnextsibling(), Node.ELEMENT_NODE); } // while return vec; } // parsevastaanottajat HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.59/66

60 XMLsposti.java 7/12 private static Vastaanottaja parsevastaanottaja(node n) throws Exception { Node child = seekfor(n.getfirstchild(), Node.ELEMENT_NODE); String = null, nimi = null; if (child == null) throw new Exception("Vastaanottaja: tai nimi."); String nn = child.getnodename(); if (nn.equals( )) = child.getfirstchild().getnodevalue(); else if (nn.equals(nimi)) nimi = child.getfirstchild().getnodevalue(); else throw new Exception("Vieras elementti: " + nn); Vastaanottaja v = new Vastaanottaja(); v. = ; v.nimi = nimi; return v; } // parsevastaanottaja HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.60/66

61 XMLsposti.java 8/12 private static Vector parserunko(node n) throws Exception { if (!n.getnodename().equals(runko)) throw new Exception(RUNKO + ":a odotettiin."); Node child = seekfor(n.getfirstchild(), Node.ELEMENT_NODE); Vector vec = new Vector(); while (child null) { if(!child.getnodename().equals(kappale)) throw new Exception("Odotettiin elementtiä: "+ KAPPALE); vec.add(child.getfirstchild().getnodevalue()); child = seekfor(child.getnextsibling(), Node.ELEMENT_NODE); } // while return vec; } // parserunko HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.61/66

62 XMLsposti.java 9/12 public static void unparse(sposti sp, OutputStream xmlout) throws Exception { // Tehdään juurisolmu + muut solmut. Document doc = new DocumentImpl(); Element rootelement = doc.createelement(sposti); doc.appendchild(rootelement); Element lähettäjä = doc.createelement(lähettäjä); rootelement.appendchild(lähettäjä); Element vastaanottajat = doc.createelement(vastaanottajat); rootelement.appendchild(vastaanottajat); Element otsikko = doc.createelement(otsikko); rootelement.appendchild(otsikko); Element runko = doc.createelement(runko); rootelement.appendchild(runko); // lähettäjä Element = doc.createelement( ); lähettäjä.appendchild( ); .appendchild(doc.createtextnode(sp.lähettäjä. )); HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.62/66

63 XMLsposti.java 10/12 Element nimi = doc.createelement(nimi); lähettäjä.appendchild(nimi); nimi.appendchild(doc.createtextnode(sp.lähettäjä.nimi)); // Vastaanottajat for (int i=0; i<sp.vastaanottajat.length; i++) { Vastaanottaja v = sp.vastaanottajat[i]; Element e; if (v. == null) { e = doc.createelement(nimi); e.appendchild(doc.createtextnode(v.nimi)); } else { e = doc.createelement( ); e.appendchild(doc.createtextnode(v. )); } Element e1 = doc.createelement(vastaanottaja); e1.appendchild(e); vastaanottajat.appendchild(e1); } // for HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.63/66

64 XMLsposti.java 11/12 // Otsikko otsikko.appendchild(doc.createtextnode(sp.otsikko)); // Runko for (int i=0; i<sp.kappaleet.length; i++) { Element e = doc.createelement(kappale); e.appendchild(doc.createtextnode(sp.kappaleet[i])); runko.appendchild(e); } // for // Puretaan tiedostoon. OutputFormat of = new OutputFormat(Method.XML, "utf-8", false); XMLSerializer unparser = new XMLSerializer(xmlOut, of); unparser.asdomserializer(); unparser.serialize(doc.getdocumentelement()); } // unparse } // XMLsposti HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.64/66

65 XMLsposti.java 12/12 class Sposti { public Lahettaja lähettäjä; public Vastaanottaja[] vastaanottajat; public String otsikko; public String[] kappaleet; } // Sposti class Lahettaja { public String ; public String nimi; } // Lahettaja class Vastaanottaja { // Toinen aina null. public String ; public String nimi; } // Vastaanottaja HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.65/66

66 Lopuksi XML on nykyään hyvin keskeinen osa tietotekniikkaa. Kehittyy tulevaisuudessa, mutta tuskin kuolee pois. Kannattaa opetella XML:n käyttö Javan kannalta. Protokollan suunnittelu ja dokumentointi tärkeää. Viestit kannattanee esittää Java-ohjelmissa luokkina. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.66/66

RPC. Luku Taustaa. 7.2 Sovelluksen rakentaminen. - TODO: write as text (not just list of items)

RPC. Luku Taustaa. 7.2 Sovelluksen rakentaminen. - TODO: write as text (not just list of items) Luku 7 RPC - TODO: write as text (not just list of items) Seuraavassa käsitellään RPC:tä (Remote Procedure Call), joka on ilmeisesti vanhin sokettien päälle rakennettu tapa tehdä hajautettuja sovelluksia.

Lisätiedot

Luento 7: XML-ohjelmointirajapinnat

Luento 7: XML-ohjelmointirajapinnat Luento 7: XML-ohjelmointirajapinnat AS-0.110 XML-kuvauskielten perusteet Janne Kalliola 1 XML-ohjelmointirajapinnat Document Object Model (DOM) käyttö rakenne ja versiot perusrajapinnat rajapinnat tarkemmin

Lisätiedot

WWW-ohjelmoinnin kokonaisuus. WWW-OHJELMOINTI 1 Merkkauskielet. Merkkauskielten idea. Merkkauskielet (markup languages) Merkkauskielten merkitys

WWW-ohjelmoinnin kokonaisuus. WWW-OHJELMOINTI 1 Merkkauskielet. Merkkauskielten idea. Merkkauskielet (markup languages) Merkkauskielten merkitys WWW-OHJELMOINTI 1 WWW-ohjelmoinnin kokonaisuus SGML, XML, HTML WWW-selaimen sovellusohjelmointi WWW-palvelimen sovellusohjelmointi Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto 26.10.2000

Lisätiedot

Sisältö. XML, XHTML ja CSS XML XML. XML:n ja HTML:n ero. XML kieliä XML XHTML CSS XSL. T Hypermediadokumentin laatiminen 2002

Sisältö. XML, XHTML ja CSS XML XML. XML:n ja HTML:n ero. XML kieliä XML XHTML CSS XSL. T Hypermediadokumentin laatiminen 2002 , XHTML ja CSS T-111.361 Hypermediadokumentin laatiminen 2002 XHTML CSS XSL Sisältö EXtensible Markup Language W3C Recommendation helmikuu 1998 SGML:n osajoukko Standard Generalized Markup Language Kevyempi

Lisätiedot

Tutkitaan sitten HTML-dokumenttien anatomiaa, jotta päästään käsiksi rakenteisten dokumenttien käsitteistöön esimerkkien kautta.

Tutkitaan sitten HTML-dokumenttien anatomiaa, jotta päästään käsiksi rakenteisten dokumenttien käsitteistöön esimerkkien kautta. 3 HTML ja XHTML Tutkitaan sitten HTML-dokumenttien anatomiaa, jotta päästään käsiksi rakenteisten dokumenttien käsitteistöön esimerkkien kautta.

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

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

XML prosessori. XML prosessointi. XML:n kirjoittaminen. Validoiva jäsennin. Tapahtumaohjattu käsittely. Tapahtumaohjattu käsittely.

XML prosessori. XML prosessointi. XML:n kirjoittaminen. Validoiva jäsennin. Tapahtumaohjattu käsittely. Tapahtumaohjattu käsittely. XML prosessointi Miten XML dokumentteja luetaan ja kirjoitetaan XML prosessori lukee ja välittää XML dokumentin sovellukselle. Se sisältää entieettikäsittelijän (mahdollisesti) XML jäsentimen Sovellus

Lisätiedot

DTEK1047: Hajautet ohjelmistojärjestelmät (HOJ)

DTEK1047: Hajautet ohjelmistojärjestelmät (HOJ) DTEK1047: Hajautet ohjelmistojärjestelmät (HOJ) Johdatus kurssiin Ville Leppänen HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/15 HOJ (Java-kielellä) Aineopintotasoinen kurssi, 5op. Luennot: Ville

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

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

Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Ta

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

Lisätiedot

HTML & CSS. HTML (HyperText Markup Language) Antti Koivisto. ! HTML on sivujen kuvauskieli.

HTML & CSS. HTML (HyperText Markup Language) Antti Koivisto. ! HTML on sivujen kuvauskieli. HTML & CSS Antti Koivisto HTML (HyperText Markup Language)! HTML on sivujen kuvauskieli.! Se ei ole ohjelmointikieli.! HTML on merkintäkieli, joka koostuu monista merkintä tägeistä ().! Voidaan

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

Vaasan yliopiston toimintaa tukevat informaatiopalvelut ovat käytettävissä WWW:n kautta.

Vaasan yliopiston toimintaa tukevat informaatiopalvelut ovat käytettävissä WWW:n kautta. 1. Julkaisutoiminnan peruskysymyksiä a) Mieti kohderyhmät b) Mieti palvelut c) Mieti palvelujen toteutus Vaasan yliopiston toimintaa tukevat informaatiopalvelut ovat käytettävissä WWW:n kautta. PALVELUKOKONAISUUDET:

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

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

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

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

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

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

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

Web-teknologiat. XML-datan kysely Topi Sarkkinen

Web-teknologiat. XML-datan kysely Topi Sarkkinen Web-teknologiat XML-datan kysely Topi Sarkkinen Sisältö XML (lyhyesti) XPath XQuery XSLT XML Extensible Markup Language Ihmisten ja koneiden luettava metakieli, jolla voidaan määritellä muitakin kieliä

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

Kehitysohje. ETL-työkalu. ExtraTerrestriaLs / Aureolis Oy

Kehitysohje. ETL-työkalu. ExtraTerrestriaLs / Aureolis Oy Kehitysohje ETL-työkalu Versio Pvm Tekijä Kuvaus 0.1 15.1.2005 Timo Sallinen Ensimmäinen versio 0.2 26.1.2005 Timo Sallinen Täydenetty pohjaa 0.3 06.02.2005 Mika Suvanto Pieniä täydennyksiä ja oikolukua

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

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

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

XML johdatus: DTD. Jaana Holvikivi

XML johdatus: DTD. Jaana Holvikivi XML johdatus: DTD Jaana Holvikivi Dokumenttityypin rakennemäärittely DTD = kielioppi esim. XML- esitykselle Elementit Attribuutit Entiteetit ja notaatiot Prosessointikomennot DTD:n suunnittelu 19.1.2013

Lisätiedot

XML, XHTML ja CSS. T-111.361 Hypermediadokumentin laatiminen. Mikko Pohja

XML, XHTML ja CSS. T-111.361 Hypermediadokumentin laatiminen. Mikko Pohja XML, XHTML ja CSS T-111.361 Hypermediadokumentin laatiminen Mikko Pohja Sisältö XML Yleensä Eri kieliä XHTML CSS XSL XML EXtensible Markup Language W3C Recommendation helmikuu 1998 SGML:n osajoukko Standard

Lisätiedot

6 XML-työkalut 1. 6 XML-työkalut

6 XML-työkalut 1. 6 XML-työkalut 6 XML-työkalut 1 6 XML-työkalut XML:n periaatteiden tutustumisen jälkeen on helpompi tutustua XML-dokumenttien käsittelyyn ja katseluun suunniteltuja työkaiuja. XML:n yleistymisen pahin pullonkaula on

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

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

XML / DTD / FOP -opas Internal

XML / DTD / FOP -opas Internal XML / DTD / FOP -opas Internal Reviewed: - Status: pending approval Approved by: - Author: Sakari Lampinen Revision: 1.0 Date: 15.10.2000 1 Termit DTD (data type definition) on määrittely kielelle, niinkuin

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

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

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

Tutkija Mikko Salmenperä. huone: sd109. TTY / Systeemitekniikan laitos. puh: 040-849 0061. email: mikko.salmenpera@tut.fi

Tutkija Mikko Salmenperä. huone: sd109. TTY / Systeemitekniikan laitos. puh: 040-849 0061. email: mikko.salmenpera@tut.fi Tutkija Mikko Salmenperä huone: sd109 TTY / Systeemitekniikan laitos puh: 040-849 0061 email: mikko.salmenpera@tut.fi Luennon sisällys Historiaa ja pohjatietoa Miksi XML tekniikkaa tarvitaan? XML dokumentin

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

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

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

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

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

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

T-111.361 Hypermediadokumentin laatiminen. Sisältö. Tavoitteet. Mitä on www-ohjelmointi? Arkkitehtuuri (yleisesti) Interaktiivisuuden keinot

T-111.361 Hypermediadokumentin laatiminen. Sisältö. Tavoitteet. Mitä on www-ohjelmointi? Arkkitehtuuri (yleisesti) Interaktiivisuuden keinot T-111.361 Hypermediadokumentin laatiminen -Ohjelmointi Peruskäsitys www-ohjelmoinnin kentästä Tekniikat interaktiivisuuden toteuttamiseen tekniikat tekniikat Tietokannat Juha Laitinen TKK/TML juha.laitinen@hut.fi

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

www.hohde.com Hohde Consulting 2004

www.hohde.com Hohde Consulting 2004 Luento 14: Kertaus AS-0.110 XML-kuvauskielten perusteet Janne Kalliola Kertaus XML nimiavaruus validointi XML:n käyttö tietorakenteiden kuvaus ohjelmointi XML-pohjaiset kielet peruskielet muut kurssilla

Lisätiedot

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

Sisältö Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 26.2 26. Tiedostot 26.1 Sisältö Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 26.2 Johdanto Tiedostoja on käsitelty uudelleenohjattujen standardisyöte- ja tulostusvirtojen avulla. Tiedostoja

Lisätiedot

Digitaalisen median tekniikat. JSP ja XML Harri Laine 1

Digitaalisen median tekniikat. JSP ja XML Harri Laine 1 Digitaalisen median tekniikat JSP ja XML 28.4.2004 Harri Laine 1 JSP hyvin lyhyesti JSP on Java-pohjainen skriptikieli JSP:llä laadittu sivu käännetään java-servletiksi (sivun toteutus vastaa servlettiluokan

Lisätiedot

W3C, Web-teknologiat ja XML

W3C, Web-teknologiat ja XML W3C, Web-teknologiat ja XML Ossi Nykänen Tampereen teknillinen yliopisto (TTY), Digitaalisen median instituutti (DMI), Hypermedialaboratorio W3C Suomen toimisto Esitelmä Hyvin lyhyt versio: XML on W3C:n

Lisätiedot

XML kielioppi. Elementtien ja attribuuttien määrittely. Ctl230: Luentokalvot Miro Lehtonen

XML kielioppi. Elementtien ja attribuuttien määrittely. Ctl230: Luentokalvot Miro Lehtonen XML kielioppi Elementtien ja attribuuttien määrittely Ctl230: Luentokalvot 11.10.2004 Miro Lehtonen Dokumenttien mallinnus Säännöt dokumenttityypeille 3Mahdollisten dokumenttirakenteiden määrittely Samassa

Lisätiedot

Tapahtumapohjainen ohjelmointi. Juha Järvensivu juha.jarvensivu@tut.fi 2007

Tapahtumapohjainen ohjelmointi. Juha Järvensivu juha.jarvensivu@tut.fi 2007 Tapahtumapohjainen ohjelmointi Juha Järvensivu juha.jarvensivu@tut.fi 2007 Sisältö Tapahtumapohjainen ohjelmointi Käyttöliittymän rakenne Pääikkuna (top-level window) Lapsi-ikkuna (child window) Dialogit

Lisätiedot

StanForD-XML. Juha-Antti Sorsa, Tapio Räsänen, Vesa Imponen

StanForD-XML. Juha-Antti Sorsa, Tapio Räsänen, Vesa Imponen Projektiryhmä StanForD-XML Juha-Antti Sorsa, Tapio Räsänen, Vesa Imponen Rahoittajat Koskitukki Oy, Metsähallitus, Metsäliitto Osuuskunta, Pölkky Oy, Stora Enso Oyj, UPM- Kymmene Oyj, Vapo Timber Oy, Yksityismetsätalouden

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

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

3 Verkkosaavutettavuuden tekniset perusteet

3 Verkkosaavutettavuuden tekniset perusteet 3 Verkkosaavutettavuuden tekniset perusteet Saavutettavuuden toteuttaminen edellyttää lähtökohtaisesti tietoa laitteista ja sovelluksista, käyttäjistä ja käyttötavoista, sekä tekniikasta. Tekniikasta on

Lisätiedot

8 XSLT-muunnoskieli XSLT-muunnoskieli

8 XSLT-muunnoskieli XSLT-muunnoskieli 8 XSLT-muunnoskieli 51 8 XSLT-muunnoskieli XML-dokumentti kuvaa siis vain tiedon sisältöä eikä määritä ulkoasua mitenkään. CSS on suunniteltu HTML-dokumenttien ulkoasun kuvaamiseen eli tiedon esittämiseen

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

Järjestelmäarkkitehtuuri (TK081702)

Järjestelmäarkkitehtuuri (TK081702) Järjestelmäarkkitehtuuri (TK081702) yleistyvät verkkopalveluissa Youtube Google... Avaavat pääsyn verkkopalvelun sisältöön. Rajapintojen tarjoamia tietolähteitä yhdistelemällä luodaan uusia palveluja,

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

AJAX-konsepti AJAX. Asynkronisuus. Nykyisten web-ohjelmien ongelmia. Asynchronous JavaScript And XML

AJAX-konsepti AJAX. Asynkronisuus. Nykyisten web-ohjelmien ongelmia. Asynchronous JavaScript And XML AJAX-konsepti AJAX Asynchronous JavaScript And XML Viimeisin muoti-ilmiö web-ohjelmoinissa, termi Ajax tuli käyttöön vuoden 2005 aikana Joukko teknologioita, joiden avulla voidaan toteuttaa uudenlaisen

Lisätiedot

Johdatus rakenteisiin dokumentteihin

Johdatus rakenteisiin dokumentteihin -RKGDWXVUDNHQWHLVLLQGRNXPHQWWHLKLQ 5DNHQWHLQHQGRNXPHQWWL= rakenteellinen dokumentti dokumentti, jossa erotetaan toisistaan dokumentin 1)VLVlOW, 2) UDNHQQHja 3) XONRDVX(tai esitystapa) jotakin systemaattista

Lisätiedot

XHTML - harjoitus. Tehtävä1: Tee xhtml tiedosto käyttäen notepad (muistio) ohjelmaa. Tiedoston tallennus notepad (muistio) ohjelmassa:

XHTML - harjoitus. Tehtävä1: Tee xhtml tiedosto käyttäen notepad (muistio) ohjelmaa. Tiedoston tallennus notepad (muistio) ohjelmassa: XHTML - harjoitus Tehtävä1: Tee xhtml tiedosto käyttäen notepad (muistio) ohjelmaa Tiedoston tallennus notepad (muistio) ohjelmassa: Jokaisen XHTML-dokumentin tulisi alkaa XML-määrittelyllä(engl.XML-prologue),

Lisätiedot

XML Lanso-projektissa

XML Lanso-projektissa XML Lanso-projektissa Maiju Virtanen maiju@cc.jyu.fi 20.08.2002 Tampere 2 Sisällys Johdanto...3 XML:n perusteita ja etuja...3 XML:n ongelmia...3 Metatieto...4 XML:n rakenteisuuden hyödyntäminen erilaisissa

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

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, literaalivakio, nimetty vakio Tiedon merkkipohjainen tulostaminen 1 Tunnus Java tunnus Java-kirjain Java-numero

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

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

Digitaalisen median tekniikat. JSP ja XML

Digitaalisen median tekniikat. JSP ja XML Digitaalisen median tekniikat JSP ja 28.4.2004 Harri Laine 1 JSP hyvin lyhyesti JSP on Java-pohjainen skriptikieli JSP:llä laadittu sivu käännetään java-servletiksi (sivun toteutus vastaa servlettiluokan

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

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

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

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

Johdatus XML teknologioihin

Johdatus XML teknologioihin Johdatus XML teknologioihin Metropolia J. Holvikivi XML metakieli Extensible Markup Language rakenteellinen esitystapa tiedon vaihtoon, talletukseen, yhdistämiseen ja julkaisemiseen yleinen rakenteenkuvauskieli,

Lisätiedot

String-vertailusta ja Scannerin käytöstä (1/2) String-vertailusta ja Scannerin käytöstä (2/2) Luentoesimerkki 4.1

String-vertailusta ja Scannerin käytöstä (1/2) String-vertailusta ja Scannerin käytöstä (2/2) Luentoesimerkki 4.1 String-vertailusta ja Scannerin käytöstä (1/2) Vertailuja tehdessä törmätään usein tilanteeseen, jossa merkkijonoa (esimerkiksi merkkijonomuuttujaa) pitää vertailla toiseen merkkijonoon. Tällöin tavanomainen

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

Hohde Consulting 2004

Hohde Consulting 2004 Luento 5: XQuery AS-0.110 XML-kuvauskielten perusteet Janne Kalliola XQuery XQuery uudet funktiot sekvenssit muuttujat Iterointi järjestys suodatus järjestäminen Ehtorakenteet Muita toimintoja www.hohde.com

Lisätiedot

Java ja tietokannan käsittely (JDBC)

Java ja tietokannan käsittely (JDBC) Java ja tietokannan käsittely (JDBC) Javan tietokannan käsittely luokat (java.sql.*) Yhteys tietokantaan Tietokannan yhteyden sulkeminen Tiedon haku tietokannasta Tiedon päivitys tietokantaan Transaktio

Lisätiedot

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys Tällä kurssilla on tutustuttu ohjelmistojen mallintamiseen oliomenetelmiä ja UML:ää käyttäen Samaan aikaan järjestetyllä kurssilla on käsitelty

Lisätiedot

Extensible Stylesheet Language (XSL)

Extensible Stylesheet Language (XSL) Extensible Stylesheet Language (XSL) Tyylitiedostojen määrittely Ctl230:Luentokalvot 25.10.2004 Miro Lehtonen Johdanto Dokumenttien muotoilu tyylitiedostoilla 3XML: yleistetty merkkaus Kuvaa sisällön muttei

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

Tehtävä 1. Tietojen lisääminen, poistaminen, päivittäminen ja tulostaminen

Tehtävä 1. Tietojen lisääminen, poistaminen, päivittäminen ja tulostaminen Esimerkki: Tehtävä 1. Tietojen lisääminen, poistaminen, päivittäminen ja tulostaminen Luo tietokanta Koulu. Tietokantaan lisätään 3 taulua. Kurssit-taulu: kurssiid not null primary key INTEGER aineid not

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

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

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

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

15. Ohjelmoinnin tekniikkaa 15.1

15. Ohjelmoinnin tekniikkaa 15.1 15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Lueteltu tyyppi enum. Override-annotaatio. Geneerinen ohjelmointi. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien

Lisätiedot

Helsingin yliopisto/tktl XML-metakieli XML:n-käsittely. XML:n käsittely ohjelmallisesti. XML:n käsittely ohjelmallisesti

Helsingin yliopisto/tktl XML-metakieli XML:n-käsittely. XML:n käsittely ohjelmallisesti. XML:n käsittely ohjelmallisesti XSLT+FO:n tarjoamat mahdollisuudet XMLdatan käsittelyyn eivät aina ole riittäviä: Tietojen käsittely on vuorovaikutteista Tietojen käsittely on kaksisuuntaista, ei vain datan esittämistä Esitysvälineiden

Lisätiedot

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2 4. Attribuutit 4.1 Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2 Yleistä Luokan lohkossa, mutta metodien ulkopuolella esiteltyjä

Lisätiedot

Android ohjelmointi Tunti 2. Käyttöliittymät ja resurssit

Android ohjelmointi Tunti 2. Käyttöliittymät ja resurssit Android ohjelmointi Tunti 2 Käyttöliittymät ja resurssit Debug Log luokka mahdollistaa debug tulostamisen ADB:n kautta konsoliin (esim. DDMS:ään) esim. Log.println(Log.INFO, TAG, Tämä on println ); Voidaan

Lisätiedot

HSMT Web-sovellustekniikoista

HSMT Web-sovellustekniikoista HSMT Web-sovellustekniikoista Ville Leppänen HSMT, c Ville Leppänen, IT, Turun yliopisto, 2011 p.1/29 Missä mennään... 1. Johdanto (1h) 2. Säikeet (2h) 3. Samanaikaisuudesta (2h) 4. Hajautetuista sovelluksista

Lisätiedot

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä

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

Lisätiedot

XML johdanto, uusimmat standardit ja kehitys

XML johdanto, uusimmat standardit ja kehitys johdanto, uusimmat standardit ja kehitys Ossi Nykänen Tampereen teknillinen yliopisto (TTY), Digitaalisen median instituutti (DMI), W3C Suomen toimisto Esitelmä Hyvin lyhyt versio: on W3C:n suosittama

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

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

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

private TreeMap<String, Opiskelija> nimella; private TreeMap<String, Opiskelija> numerolla;

private TreeMap<String, Opiskelija> nimella; private TreeMap<String, Opiskelija> numerolla; Tietorakenteet, laskuharjoitus 7, ratkaisuja 1. Opiskelijarekisteri-luokka saadaan toteutetuksi käyttämällä kahta tasapainotettua binäärihakupuuta. Toisen binäärihakupuun avaimina pidetään opiskelijoiden

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

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

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