Toteutusdokumentti. Ohjelmistotuotantoprojekti XPerf. Helsingin yliopisto. Tietojenkäsittelytieteen laitos

Koko: px
Aloita esitys sivulta:

Download "Toteutusdokumentti. Ohjelmistotuotantoprojekti XPerf. Helsingin yliopisto. Tietojenkäsittelytieteen laitos"

Transkriptio

1 Helsingin yliopisto Tietojenkäsittelytieteen laitos Ohjelmistotuotantoprojekti XPerf Toteutusdokumentti Tommi Koivula Antti Levomäki Juha Mondolin Timo Suomela Versio toukokuuta 2003

2 Versiohistoria Versio Päivämäärä Kommentti / muutokset Tekijä Tommi Koivula Timo Suomela Juha Mondolin

3 Sisällys 1. Johdanto Vaatimusten toteutuminen Toiminnallisten vaatimusten toteutuminen Ei-toiminnallisten vaatimusten toteutuminen Käytettävyysvaatimusten toteutuminen Tarkennukset suunniteltuun arkkitehtuuriin Osajärjestelmien toteutuksen kuvaus Lukumoduulin valintajärjestelmä Prolog-lukumoduuli XMI-lukumoduuli Tiedostonluvun käyttöliittymä...13 Liite A JavaDoc-kuvaukset toteutetuista luokista...1

4 1 1. Johdanto Tässä dokumenttissa on kuvaus XPerf-ohjelmistotuotantoprojektin toteutusvaiheen kulusta ja sen tuloksena syntyneesta tuotteesta. XPerf-projektin tehtävänä oli toteuttaa MAISAtyökaluun [1] laajennus, jonka avulla MAISA-työkaluun voidaan lukea UML-kaavioita [2] XMI-dokumenteista [3]. Tarkempi kuvaus MAISA-työkaluun tehdyistä uusista ominaisuuksista löytyy määrittelydokumentista [4] ja yksityiskohtainen kuvaus toteutetusta arkkitehtuurista löytyy suunnitteludokumentista [5]. Luvussa 2 esitellään toteutettujen lisäominaisuuksien suhdetta niille asetettuihin vaatimuksiin. Luvussa 3 on esitelty ne vähäiset tarkennukset arkkitehtuuriin, joita toteutusvaiheessa on tehty. Luvussa 4 esitellään lyhyesti kunkin toteutetun osajärjestelmän toteutusperiaatteet, jotka eivät selviä pelkästään JavaDoc-dokumentaatiosta [liite A]. 2. Vaatimusten toteutuminen 2.1. Toiminnallisten vaatimusten toteutuminen XMI.01 Pystyy lukemaan ArgoUML:llä tuotettuja XMI-dokumentteja. Dokumenteista luetaan vain tiedot, joita MAISA-työkalu tarvitsee. Jos XMI-dokumentissa on viite kielioppiin, tulee viitatun DTD:n olla saatavilla ja dokumentin oikeellisuus tarkastetaan. Jos viitettä kielioppiin ei ole, oikeellisuutta ei myöskään tarkasteta.

5 2 Mai.01 MAISA-järjestelmä osaa tiedostotyypin perusteella valita oikean mekanismin tiedostonlukua varten. Jokainen lukumoduuli vastaa itse tietoisuudesta, osaako se lukea annettua tekstivirtaa vai ei. XMI- ja prolog-lukumoduulin kohdalla tunnistaminen tapahtuu tiedostotyypin sisällön perusteella, ei tiedostonnimestä. Mai.02 MAISA-työkaluun ladataan ajonaikaisesti käytettävissä olevat lukumoduulit, jolloin kaikki tiedostotyypit, joita ladutut lukumoduulit tukevat, voidaan lukea. Mai.06 Jos XMI-dokumenttia jäsennettäessä kohdataan virheitä, lopetetaan jäsentäminen välittömästi ja kaikki MAISA-työkalun jo täytetyt tietorakenteet tyhjennetään Ei-toiminnallisten vaatimusten toteutuminen Dok.01 Dokumenteista käyttöohje ja ylläpitodokumentti on kirjoitettu englanniksi. Muut dokumentit on kirjoitettu suomeksi. Yll.01 MAISA-työkalun eri tiedostotyyppien luku on muutettu modulaariseksi. Ts. jokaista tiedostotyyppiä vastaa oma moduulinsa. Moduulit ladataan MAISA-työkaluun ajonaikaisesti ja kaikki niiden tukemat tiedostotyypit ovat avattavissa MAISA-työkaluun. XMI- ja prolog-tiedostotyyppejä vastaavien uusien tiedostotyyppien lisääminen jatkossa ei vaadi muutoksia MAISA-järjestelmään.

6 3 Koe.01 Kokeellinen osuus korvataan asiakkaan pyynnöstä tutkimuksella XMI-tuen laajentamisesta tukemaan myös XMI-versiota 1.2. Laajentamista tutkitaan sen teknisen toteuttamisen kannalta. Myös laajennuksen työmäärästä tehdään arvio Käytettävyysvaatimusten toteutuminen Mai.03 Maisa tunnistaa luettavan tiedoston formaatin automaattisesti ilman käyttäjän toimenpiteitä. Tämä toteutuu vaatimuksen Mai.01 yhteydessä kuvatulla tavalla. Mai.04 Tiedostonlukuoperaation toiminta ilmaistaan käyttäjälle Javan valmiilla käyttöliittymäkomponentilla. Käyttäjä saa vain tiedon, että lukuoperaatio on käynnissä, mutta ei operaation jäljellöolevasta kestosta tai prosentuaalisesta osuudesta. Tämä siksi, ettei monien tiedostotyyppien (esim. XMI-dokumentit) yhteydessä tämä tieto ole saatavilla. Mai.05 Jos XMI-dokumentin jäsennyksessä törmätään virheisiin, ilmoitetaan tästä välittömästi käyttäjälle. Virheen sattuessa jäsennys keskeytetään. Virhetilanteiden raportointia käyttäjälle ei muutettu.

7 4 3. Tarkennukset suunniteltuun arkkitehtuuriin Suunnitteluvaiheessa suunniteltuun arkkitehtuuriin ei tehty toteutusvaiheessa enää merkittäviä muutoksia. Yksityiskohtia, jotka tarkoituksella jätettiin suunnitteludokumentista kirjaamatta, esitellään lyhyesti luvussa Osajärjestelmien toteutuksen kuvaus Tässä luvussa esitellään lyhyesti kunkin toteutetun osajärjestelmän toteutusperiaatteet, jotka eivät selviä pelkästään JavaDoc-dokumentaatiosta [liite A]. Tällaisia toteutusperiaatteita ovat esimerkiksi yksityiset metodit ja attribuutit, joiden tarkoitus ei ole itsestäänselvä. perustelut valitulle luokan sisäiselle rakenteelle 4.1. Lukumoduulin valintajärjestelmä Lukumodulin valintajärjestelmä (ja itse tiedoston luku) on vaatinut muutoksia MAISA_tool ja MAISA_system -luokkiin. MAISA_tool luokan metodissa update(observable, Object) passivoidaan käyttöliittymä ja ajetaan sopiva MAISA_tool.ResourceLoader luokasta perityn luokan ilmentymä, projektikansion kohdalla MAISA_tool.ProjectLoader, kaaviotiedoston kohdalla MAISA_tool.DiagramLoader -luokan ilmentymä. Resurssit ladataan erillisessä säikeessä, jotta käyttöliittymä ei pysähdy latauksen ajaksi ja update( ) metodi palaa heti käynnistettyään säikeen. Valittu lataaja ensimmäisenä käynnistää ajastinsäikeen, joka odotettuaan kolme sekunttia avaa animaation sisältävän

8 5 indikaattoridialogin (IndeterminateProgressMonitor). Jos lataaminen on valmis ennen ajastimen laukeamista, dialogia ei näytetä. Kun lataus on suoritetty loppuun tai se on käyttäjän (tai virheen) toimesta keskeytetty, aktivoidaan käyttöliittymä. Jos lataus on viety onnistuneesti loppuun asti, lisätään luettu projekti tai kaavio(t) käyttöliittymän projektinäkymään. ResourceLoader luokka toteuttaa Template Method -suunnittelumallin vaikkakin abstraktoitu algoritmi on hyvin yksinkertainen ja ainoa abstrakti askel on metodi loadresource(bitset). Luokan run() metodi käynnistää ensimmäisenä indikaattorin ajastimen jonka jälkeen se kutsuu loadresource(bitset) metodia. Metodin parametrin tarkoitus on toimia viestikanavana lataajalle käyttäjän aiheuttaman keskeytyksen tapahtuessa. Keskeytyksen tapahtuessa asetaan välitetyn BitSet-ilmentymän bitti MAISA_system.LOAD_CANCELLED_BIT pystyyn. Metodi palauttaa onnistuessa DefaultMutableTreeNode -olion joka sisältää luetut kohteet. Odotetut poikeukkset MaisaParseException ja IOException siepataan ja virheilmoitukset otetaan talteen. Viimeisenä run() metodissa kutsuttaan evaluateresult() metodia, josssa ensimmäisenä pysäytetään indikaattorin laukaisuajastin. Jos lukijassa ei ole tapahtunut virhettä eikä käyttäjä ole keskeyttänyt sitä, liitetään loadresource(bitset) metodin palauttama solmu projektinäkymän puuhun, jonka jälkeen aktivoidaan käyttöliittymä. Jos lukijassa on tapahtunut virhe niin siihen liittyvä virheilmoitus näytetään pääikkunan yläpalkissa. DiagramLoader luokka lataa yksittäisen kaaviotiedoston ja saa konstruktorissa luettavan tiedoston nimen ja projektinäkymän puun solmun, jonka alle tiedostosta luetut kaaviot lisätään. Solmuviite voi olla null, misää tapauksessa kaaviot luetaan uuden projektin alaisuuteen. Luokan loadresource(bitset) -toteutus kutsuu MAISA_system luokan opendiagram(string, BitSet) tai opendiagram(string, DefaultMutablTreeNode, BitSet) metodia riippuen siitä, onko konstruktorissa annettu solmuviite null vai ei ja välittää sen paluuarvon eteenpäin.

9 6 ProjectLoader luokka lataa kokonaisen hakemiston kaikki tuetut kaaviotiedostot ja saa konstruktorissa luettavan hakemiston nimen. Luokan loadresource(bitset) -toteutus kutsuu MAISA_system-luokan openproject(string, BitSet) metodia ja valittää sen paluuarvon eteenpäin. Projektihakemisto luetaan MAISA_system-luokan openproject(string, BitSet) metodissa. Metodi käy silmukassa läpi kaikki annetun hakemiston tiedostot jotka eivät ole itse hakemistoja ja kutsuu kunkin kohdalla parsediagramfile(file, DefaultMutableTreeNode, String)-metodia, joka tulkitsee tiedoston sisällön. Silmukan alussa tarkistetaan ensin onko lukuoperaatio keskeytetty, eli onko parametrina annetun BitSet-ilmentymän bitti MAISA_system.LOAD_CANCELLED_BIT pystyssä. Jos näin on niin metodi palautta heti null arvon. Kun kaikki tiedostot on näin käyty läpi, käydään tiedostot uudestaan läpi ja luetaan kaikki kaavioihin ja projektiin liittyvät resurssitiedostot. Resurssien lukemiseen käytettyyn logiikkaan ei ole tehty muita muutoksia kuin suunnitteludokumentissa mainittu kuvatiedostojen assosiaatio luettuun kaavioon ja kaaviotiedostojen lukusilmukassa käytetty keskeytyksen tarkistus. Jos lukua ei ole keskeytetty niin viimeisenä kutsutaan luodun Cproject-luokan ilmentymän updategui() metodia, johon on siiretty logiikka joka näyttää tarvittaessa luetun sekvenssikaavion viestien aikavaatimusten rajojen määrittelyyn tarkoitetun ikkunan. Yksittäinen kaaviotiedosto luetaan MAISA_system luokan opendiagram(string, BitSet) metodilla, jos sitä ei lueta jo ennestään luetun projektin alaisuuteen. Metodissa luodaan uusi CProject-luokan ilmentymä käyttäen luettavan tiedoston hakemiston nimeä projektin nimenä ja kutsutaan metodia opendiagram(string, DefaultMutableTreeNode, BitSet). Yksittäinen kaaviotiedosto luetaan opendiagram(string, DefaultMutableTreeNode, BitSet) -metodilla. Metodi kutsuu parsediagramfile(file, DefaultMutableTreeNode, String) - metodia jonka jälkeen liitetään luettuihin kaavioihin mahdolliset kuvatiedostot samasta

10 7 hakemistosta. Logiikka tässä on sama kuin projektihakemistoa lukiessa openproject(string, BitSet) -metodissa. Jokainen kaaviotiedosto luetaan parsediagramfile(file, DefaultMutableTreeNode, String) -metodissa. Metodissa pyydetään ensin DocumentReaderFactory-luokalta sopivaa lukijaa parametrina saadulle tiedostolle. Jos DocumentReaderFactory-luokan getdocumentreader(file) -metodi palauttaa jonkin DocumentReader-luokan ilmentymän, kutsutaan sen read(bufferedreader, PrintWriter, CProject) -metodia. Seuraavaksi käydään läpi kaikki CProject-olion kaaviot tekemällä kaaviolistasta kopio ja poistamalla kopiosta kaikki ne kaaviot, joita jo vastaa yksi projektia vastaavan puusolmun lapsista. Jäljellejääneille kaavioille asetetaan projekti omistajaksi ja lisätään projektia vastaavaan puusolmuun yksi lapsi kutakin kaaviota kohden. DocumentReaderFactory-luokka toteuttaa Singleton ja Factory Method -sunnittelumallit. Luokalta pyydetään sopivaa lukijaa getdocumentreader(file) -metodilla. Metodi iteroi lukijalistan ylitse ja tarjoaa tiedostoa luettavaksi jokaiselle lukijalle vuorollaan kutsumalla tämän canread(bufferedreader) -metodia kunnes jokin näistä palauttaa arvon true. DocumentReaderFactory-luokan konstruktorissa kutsutaan loadreaderlist() -metodia, joka lataa käytettävissä olevat lukijaluokat. Lukijaluokat luetaan javan Propertiesformaatissa olevast konfiguraatiotiedostosta jonka kullakin rivillä määritellään yksi lukijaluokka siten, että attribuutin nimi on symboolinen nimi lukijalle ja attribuutin arvo on lukijaluokan täydellinen nimi. Konfiguraatiotiedoston sijainti selvitetään seuraavalla tavalla: Jos ympäristömuuttuja maisareaders.configuration on määritelty, sen arvo yritään tulkita konfiguraatiotiedoston URL-viitteenä.

11 8 Jos yllä mainittua ympäristömuuttujaa ei ole asetettu tai sen arvoa ei voida tulkita URL- viitteenä, yritetään ladata maisareaders.properties niminen tiedosto luokkapolun varrelta käyttäen Class.getResourceAsStream(String) -metodia. Jos yllä mainitut yritykset epäonnistuvat, yritetään avata maisareaders.properties niminen tiedosto nykyisestä työhakemistosta Prolog-lukumoduuli Tähän luokkaan on suunnitellusti siirretty prolog-muotoisten kaavioiden lukuoperaatiot, jotka aiemmin sijaitsivat CDiagram-luokan laajennoksissa sekä CProject-luokan read()- metodi että DocumentReader-rajapintaan kuuluvat operaatiot. Jokaista kaaviota vastaava lukuoperaatio on tehty omaksi julkiseksi metodikseen. Alkuperäisissä lukumetodeissa olleet viittaukset kaavioluokan sisäisiin tietorakenteisiin on muutettu tarvittaessa set- ja get-metodien kutsuiksi. Osa näistä metodeista oli implementoitu luokkiin jo aiemmin, osa lisättiin tarpeen mukaan. Prolog-lukumoduuliin siirrettyä entistä CProject-luokan read()-metodia on muutettu siten, että kuvatiedostojen lukeminen ym. toiminnallisuus on siirretty MAISA_system-luokkaan XMI-lukumoduuli XMIDocumentReader XMIDocumentReader-luokan canread()-metodi lukee SAX-jäsennintä hyväksi käyttäen annettua virtaa, kunnes se löytää XMI-elementin tai virheellisen kohdan dokumentissa (kohdan, joka ei ole XML:n mukainen). Jos XMI-version on 1.0, palauttaa metodi true, muuten false. Koska SAX-jäsennin keskeyttää dokumentin jäsentämisen heti kun se huomaa virheitä dokumentissa, ei virtaa lueta pitkään binääri- ja ei-xml-dokumenttien

12 9 kohdalla. XML-dokumenttien, jotka eivät ole XMI:tä, kohdalla lukeminen jatkuu koko dokumentin läpi. Tämä tietysti, varsinkin isojen tiedostojen kohdalla, voi hidastaa projektien avaamista Maisa-järjestelmään. Näin saavutetaan kuitenkin toimivuus kaikilla mahdollisilla XMI-dokumenteilla. canread-metodin toiminta epäonnistuu, jos SAX-jäsennintä ei saada alustettua. Tämä voi tapahtua, koska SAX-jäsennin ladataan ajonaikaisesti. Jos alustus ei onnistu, heittää metodi IOException-poikkeuksen, jonka viesti on "Cannot initialize XML-parser. XMIDocumentReader-luokan read-metodi alustaa DOM-jäsentimen ja jäsentää annetusta virrasta dokumentin Document-olioksi, jonka avulla dokumentti käsitellään hierarkisesti. Metodi luo myös TreeWalker-olion ilmentymän, joka laitetaan osoittamaan Foundation.Core.Model-elementtiin ja ko. elementin kiinostavasta sisällöstä tehdään malli käyttäen hyväksi ModelNode luokkaa. Näiden avulla alustetaan XMIParser, jolla kunkin löydetyn hierarkian ylimmän tason elementti välitetään sitä vastaavalle lukijaluokalle, Oikea lukijaluokka, XMIDiagramReader-rajapinnan ilmentymä, valitaan käyttäen XMIDiagramReaderFactory-luokkaa. Multiplicity-elementtien luku lisättiin read-metodiin johtuen argouml:n oudosta tavasta tallentaa niitä XMI-dokumenttiin. Koko dokumenttin käydään läpi SAX-jäsennintä käyttäen ja Multiplicity-elementit luetaan staattiseen taulukkoon, josta kaavioiden lukijat voivat tarvittaessa lukea niitä. SAX-jäsennyksessä käytetään hyväksi DefaultHandlerluokan ilmentymää MAISA.reader.xmi.MultiplicityHandler. Jotta yllä mainittu Multiplicity-elementtien lukeminen pystyttiin käytännössä lisäämään, jouduttiin read-metodin parametrina saatu tiedostovirta tallentamaan ensin levylle väliaikaistiedostoon, josta se voidaan lukea useammassa otteessa. Tämä tapahtuu XMIDiagramReader-luokan metodien savestreamtodisk, gettempstreamfromdisk ja deletestreamtempfile avulla.

13 10 XMIParser ja ModelNode XMIParserin luomiseksi tarvitaan org.w3c.dom.traversal.treewalker olio, joka osoittaa dokumentin johonkin elementtiin. XMIParser tarvitsee myös mallin. Malli annetaan XMIParserille antamalla mallin juurisolmu (ModelElement). Mallin juurisolmun elementin on oltava sama kuin annetun TreeWalker-olion osoittama dokumentin elementti. Jos näin ei ole XMIParser-olion parse()-metodin kutsumisen hetkellä, heittää XMIParser XMIParseException poikkeuksen. Jäsentämisen mallia tehtäessä ModelNode-olioilla, on huomioitava, että jokaiselle mallin solmuista on syytä antaa yksilöllinen nimi, jotta solmut voidaan käsittelijöissä tunnistaa toisistaan nimien perusteella. Mallia ei voida enää muuttaa, kun XMI-jäsentimen parse()-metodia on kutsuttu. Tämä siksi, että jäsentimen toimintaa muuttuu ennustamattomaksi, jos mallin tehdään sen toiminnan aikana muutoksia. Jos parse()-metodin kutsumisen jälkeen yritetään käyttää ModelNode-olion metodeita jotka muuttavat sen tilaa, heitetään ajonaikainen poikkeus UnmodifiableException. Tätä ajonaikaista poikkeusta ei tarvitse ottaa kiinni. Jos mallia halutaan käyttää useampien dokumenttien jäsentämiseen, on malli luotava aina uudelleen jäsentämisen jälkeen. Malli voi sisältää myös tiettyjä rekursiivisia solmuja, ts. solmuja, joiden lapsina on solmu itse. Tällöin dokumentista voidaan lukea rajoittamaton määrä sisäkkäisiä samoja elementtejä. Sisäkkäisten elementtien määrää ei tällöin kuitenkaan voi eri tasoilla määritellä, vaan rajat elementtien lukumäärille ovat samat jokaisella tasolla. Esimerkki sallitusta rekursiivisesta mallista: ModelNode root = new ModelNode( root, rootelem ); ModelNode child = new ModelNode( child, childelem );

14 11 root.addchild( child, Limit.ONE ); child.addchild( child, Limit.ZERO_TO_FINITE ); Rekursiiviset solmut, jossa solmu ei ole itsensä välitön lapsi, eivät ole sallittuja. Esimerkiksi seuraava rakenne ei ole sallittu: ModelNode root = new ModelNode( root, rootelem ); ModelNode child = new ModelNode( child, childelem ); root.addchild( child, Limit.ZERO_TO_ONE ); child.addchild( root, Limit.ZERO_TO_FINITE ); Jos yo. mukaisia ei-sallittuja malleja tehdään, XMIParser ei huomaa rekursiota vaan solmun lapsissa vierailevat ModelNode-luokan metodit jäävät ikuisen silmukkaan. XMIParser-luokalla on myös gettaggedvaluexxx metodit toteutettuna kuten suunnitteludokumentissa mainitaan, mutta niitä laajennettiin palauttamaan kaikki haettua avainta vastaavat arvot taulukkona, koska elementillä voi olla samaa taggedvalue-avainta useita. Toisin kuin suunnitteludokumentissa mainitaan [5 s.10], XMIParser ei käytä NodeFilterrajapintaa elementtien poisrajaukseen, koska XMIParserin rajapinta DOM-jäsentimeen tapahtuu jo olemassaolevan TreeWalker-olion kautta ja NodeFilter on rekisteröitävä jo TreeWalker-olion konstruktorissa. Käytännössä NodeFilterin alustaminen tapahtuu siis XMIDocumentReader-luokasta, jossa TreeWalker-olio luodaan. Toiminnallisuus on kuitenkin tässä täsmälleen sama kuin suunnitteludokumentissa esitetyssä. NodeActionListener ja XMINode NodeActionListener-rajapinta on toteutettu kuten suunnitteludokumentissa mainitaan [5 s.10], eikä siihen ole tarkennettavaa.

15 12 XMICollaborationReader Ei muutoksia suunniteltuun toteutukseen nähden. XMIClassDiagramReader Luokkakaavion actionevent()-metodi käyttää hyväkseen XML-jäsentimen TreeWalkeroliota dokumentissa liikkumiseen, vaikka se ei olekaan suotavaa. Tämä on kuitenkin välttämätöntä muutamissa kohdinä XML:n rakenteellinen monimutkaisuuden takia. TreeWalker-oliota käytetään suoraan seuraavissa kohdissa: Sisäkkäiset pakkaukset Luokan liittäminen omistavaan pakkaukseen Pakkauksen sisällä olevat muut kaaviot (esim. tilakaavio tai aktiviteettikaavio) ArgoUML tallentaa omituisesti XMI-dokumenttiin Multiplicity-elementit. Niiden tallentaminen tapahtuu siten, että ensimmäinen esiintymiskerta jotakin tiettyä monikertaa tallennetaan sellaisenaan ja lopuissa käytetään vain viitettä ensimmäiseen. Näin ollen assosiaatioiden monikerrat voivat viitata ihan mihin tahansa dokumentissa, jolloin niitä ei välttämättä pystytä lukemaan. Esimerkiksi Rational Rosessa tätä ongelmaa ei ole. Ongelma korjattiin siten, että koko dokumentin kaikki Multiplicity-elementit luetaan jo XMIDiagramReader-luokan read-metodissa staattiseen hajautustauluun. Luokkakaavion assosiaatioiden lukemisessa viitatut monikerrat luetaan tästä hajautustaulusta. Näin kaikki dokumentit pystytään varmasti lukemaan.

16 13 XMIActivityDiagramReader XMIActivityDiagramReader-luokka on toteutettu kuten suunnitteludokumentissa mainitaan. Koska tuettavalla CASE-väline ArgoUMLla ei voida tuottaa kaikkia laajennetun UML:n ominaisuuksia, kuten esimerkiksi sisäkkäisiä aktiviteettikaavioita, on näiden tuki jätetty pois. Nämä osiot ovat kuitenkin helposti lisättävissä mikäli se on tarpeen. XMIStateMachineReader XMIStateMachineReader-luokan actionevent(xminode) -metodin toteutus perustuu tilakoneeseen, jolla on neljä mahdollista tilaa, perustila (STATE_DEFAULT), ja yksi tila jokaista luettavaa elementtiä kohden: STATE_IN_MACHINE (itse tilakaavio), STATE_IN_VERTEX (yksittäinen kaavion tila) ja STATE_IN_TRANSITION (kaavion tilojen välinen siirtymä). Jokaisella kutsulla actionevent(xminode) lukee työstettävän XMINode-arvon talteen aiemmin buildmodel() -metodin avulla rakennettua mallia tulkiten. Lopuksi metodissa kutsutaan shiftstate(int) -metodia joka tulkitsee annetun parametrin avulla onko luku siirtynyt kahden elementin välisen rajan yli. Jos näin on, yritetään luoda viimeisen tilan mukainen elementti ja siirrytään uuteen tilaan. XMIDiagramReaderFactory Ei muutoksia suunniteltuun toteutukseen nähden Tiedostonluvun käyttöliittymä Käyttäjälle näkyvä tiedostonlukuindikaattori on toteutettu luokassa IndeterminateProgressMonitor. Suunnitteludokumentissa mainitusta Java 1.4 ympäristön mukana tulevasta ProgressMonitor-luokan käytöstä luovuttiin, sillä se ei tukenut indikaattoria tehtäville, joiden kokoa ei tiedetä. IndeterminateProgressMonitor-luokkalla ei ole mitään omia metodeja. Konstruktorissa luokka (joka perii JDialog- luokasta) lisää

17 14 itseensä JProgressBar olion ja sen alle keskeytysnapin. Nappiin liitetään konstruktorissa annettava kuuntelia.

18 15 Lähteet [1] MAISA, Metrics for Analysis and Improvement of Software Architectures [2] Unified Modelling Language (UML) version 1.3 spesifikaatio, Copyright (C) Object Management Group, Inc., [ [3] XML Metadata Interchange (XMI) version 1.0, Copyright Object Management Group, Inc., [ [4] Xperf, Xperf ohjelmistotuotantoprojektin määrittelydokumentti, 2003 [ [5] Xperf, Xperf ohjelmistotuotantoprojektin suunnitteludokumentti, 2003 [

19 Liite A JavaDoc-kuvaukset toteutetuista luokista 1

Testaussuunnitelma. Ohjelmistotuotantoprojekti XPerf. Helsingin yliopisto. Tietojenkäsittelytieteen laitos

Testaussuunnitelma. Ohjelmistotuotantoprojekti XPerf. Helsingin yliopisto. Tietojenkäsittelytieteen laitos Helsingin yliopisto Tietojenkäsittelytieteen laitos Ohjelmistotuotantoprojekti XPerf Testaussuunnitelma Tommi Koivula Antti Levomäki Juha Mondolin Timo Suomela Versio 1.0 28. maaliskuuta 2003 Versiohistoria

Lisätiedot

Suunnitteludokumentti

Suunnitteludokumentti Helsingin yliopisto Tietojenkäsittelytieteen laitos Ohjelmistotuotantoprojekti XPerf Suunnitteludokumentti Tommi Koivula Antti Levomäki Juha Mondolin Timo Suomela Versio 1.0.4 24. maaliskuuta 2003 Versiohistoria

Lisätiedot

Kaavioista luettavat UML-laajennukset

Kaavioista luettavat UML-laajennukset Helsingin yliopisto Tietojenkäsittelytieteen laitos Ohjelmistotuotantoprojekti XPerf Kaavioista luettavat UML-laajennukset Tommi Koivula Antti Levomäki Juha Mondolin Timo Suomela Versio 1.1 13. huhtikuuta

Lisätiedot

Luonnosversio Tommi Koivula hyväksytty versio Tommi Koivula

Luonnosversio Tommi Koivula hyväksytty versio Tommi Koivula Helsingin yliopisto Tietojenkäsittelytieteen laitos Ohjelmistotuotantoprojekti XPerf Projektisuunnitelma Tommi Koivula Juha Mondolin Versio 1.5.1 29. huhtikuuta 2003 Versiohistoria Versio Päivämäärä Kommentti

Lisätiedot

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2 4. Attribuutit 4.1 Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2 Yleistä Luokan lohkossa, mutta metodien ulkopuolella esiteltyjä muuttujia ja vakioita. Esittely

Lisätiedot

UML-kielen formalisointi Object-Z:lla

UML-kielen formalisointi Object-Z:lla UML-kielen formalisointi Object-Z:lla Kalvot ja seminaarityö WWW:ssä: http://users.jyu.fi/~minurmin/opiskelu/form/ UML UML == Unified Modelling Language. OMG:n standardoima kieli ohjelmistojärjestelmien,

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2011 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2011 1 / 39 Kertausta: tiedoston avaaminen Kun ohjelma haluaa lukea tai kirjoittaa tekstitiedostoon, on ohjelmalle

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2009 1 / 28 Puhelinluettelo, koodi def lue_puhelinnumerot(): print "Anna lisattavat nimet ja numerot." print

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

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

Tietojen syöttäminen ohjelmalle. Tietojen syöttäminen ohjelmalle Scanner-luokan avulla

Tietojen syöttäminen ohjelmalle. Tietojen syöttäminen ohjelmalle Scanner-luokan avulla Tietojen syöttäminen ohjelmalle Tähän mennessä on käsitelty Javan tulostuslauseet System.out.print ja System.out.println sekä ohjelman perusrakenneosat (muuttujat, vakiot, lauseet). Jotta päästään tekemää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ä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

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

Ylläpitodokumentti. Boa Open Access. Helsinki 2.5.2006 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Ylläpitodokumentti. Boa Open Access. Helsinki 2.5.2006 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Ylläpitodokumentti Boa Open Access Helsinki 2.5.2006 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Ilmari

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

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

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

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

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton 2015 syksy 2. vsk IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton Sisältö 1. Johdanto luontimalleihin 2. Proxy 3. Factory Method 4. Prototype 5. Singleton Suunnittelumallit Proxy et.

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 3.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 3.3.2010 1 / 44 Kertausta: tiedoston avaaminen Kun ohjelma haluaa lukea tai kirjoittaa tekstitiedostoon, on ohjelmalle

Lisätiedot

5. HelloWorld-ohjelma 5.1

5. HelloWorld-ohjelma 5.1 5. HelloWorld-ohjelma 5.1 Sisällys Lähdekoodi. Lähdekoodin (osittainen) analyysi. Lähdekoodi tekstitiedostoon. Lähdekoodin kääntäminen tavukoodiksi. Tavukoodin suorittaminen. Virheiden korjaaminen 5.2

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ä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

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

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

Subversion-ohje. Linux Traffic Control-käyttöliittymä Ryhmä paketti2

Subversion-ohje. Linux Traffic Control-käyttöliittymä Ryhmä paketti2 Subversion-ohje Linux Traffic Control-käyttöliittymä Ryhmä paketti2 Helsinki 1.11.2004 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti

Lisätiedot

Taulukot. Jukka Harju, Jukka Juslin 2006 1

Taulukot. Jukka Harju, Jukka Juslin 2006 1 Taulukot Jukka Harju, Jukka Juslin 2006 1 Taulukot Taulukot ovat olioita, jotka auttavat organisoimaan suuria määriä tietoa. Käsittelylistalla on: Taulukon tekeminen ja käyttö Rajojen tarkastus ja kapasiteetti

Lisätiedot

Lohtu-projekti. Testaussuunnitelma

Lohtu-projekti. Testaussuunnitelma Lohtu-projekti Testaussuunnitelma Versiohistoria: 1.0 19.2.2003 1. versio Mari 1.1 20.2.2003 Muutoksia Mari 1.2 25.2.2003 Katselmoinnissa esiin tulleet Mari muutokset 1.3 17.3.2003 2. syklissä tehtävät

Lisätiedot

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä Matti Luukkainen 10.12.2009 Tässä esitetty esimerkki on mukaelma ja lyhennelmä Robert Martinin kirjasta Agile and Iterative Development löytyvästä

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

Hakemistojen sisällöt säilötään linkitetyille listalle.

Hakemistojen sisällöt säilötään linkitetyille listalle. Harjoitustyö 1 Harjoitustyö Tehtävä: ohjelmoi Java-kielellä komentoikkunaa (komentotulkkia, komentoriviä) simuloiva olioperustainen ohjelma. Hakemistojen sisällöt säilötään linkitetyille listalle. Työ

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 28.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 28.2.2011 1 / 46 Ohjelmointiprojektin vaiheet 1. Määrittely 2. Ohjelman suunnittelu (ohjelman rakenne ja ohjelman

Lisätiedot

Harjoitustyö: virtuaalikone

Harjoitustyö: virtuaalikone Harjoitustyö: virtuaalikone Toteuta alla kuvattu virtuaalikone yksinkertaiselle olio-orientoituneelle skriptauskielelle. Paketissa on testaamista varten mukana kaksi lyhyttä ohjelmaa. Ohjeita Noudata ohjelman

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

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

2. Olio-ohjelmoinista lyhyesti 2.1

2. Olio-ohjelmoinista lyhyesti 2.1 2. Olio-ohjelmoinista lyhyesti 2.1 Sisällys Yleistä. Oliot ja luokat. Attribuutit. Olioiden esittely ja alustus. Rakentajat. Olion operaation kutsuminen. 2.2 Yleistä Olio-ohjelmointia käsitellään hyvin

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

4. Luokan testaus ja käyttö olion kautta 4.1

4. Luokan testaus ja käyttö olion kautta 4.1 4. Luokan testaus ja käyttö olion kautta 4.1 Olion luominen luokasta Java-kielessä olio määritellään joko luokan edustajaksi tai taulukoksi. Olio on joukko keskusmuistissa olevia tietoja. Oliota käsitellään

Lisätiedot

MPCC-työkalua voidaan käyttää yhden laitteen valvontaan ja yhden tai useamman laitteen konfigurointiin (Modbus broadcast, osoite 0).

MPCC-työkalua voidaan käyttää yhden laitteen valvontaan ja yhden tai useamman laitteen konfigurointiin (Modbus broadcast, osoite 0). V1.0.0 (14.10.2015) 1 (7) KYTKENTÄ HUOM: toimii Modbus-masterina. Tämän vuoksi toinen mahdollinen Modbus-master on irrotettava verkosta, kun kytketään valmiiseen Modbus-verkkoon. Produalin Modbus-laitteiden

Lisätiedot

Linkitetystä listasta perittyä omaa listaa käytetään muun muassa viestiin liittyvien vastausten säilömiseen.

Linkitetystä listasta perittyä omaa listaa käytetään muun muassa viestiin liittyvien vastausten säilömiseen. Harjoitustyö 1 Harjoitustyö Tehtävä: ohjelmoi Java-kielellä keskustelualuetta simuloiva olioperustainen ohjelma (Simple Oope Board, S.O.B). Linkitetystä listasta perittyä omaa listaa käytetään muun muassa

Lisätiedot

Ohjelmisto on selainpohjaisen käyttöliittymän tarjoava tietokantajärjestelmä merikotkien seurantaan WWF:n Merikotka-työryhmän tarpeisiin.

Ohjelmisto on selainpohjaisen käyttöliittymän tarjoava tietokantajärjestelmä merikotkien seurantaan WWF:n Merikotka-työryhmän tarpeisiin. TIETOKANTA MERIKOTKIEN SEURANTAAN Käyttöohje Versiohistoria: Versio Päivämäärä Kuvaus Tekijä 1.0 11.12.2007 Ensimmäinen luonnos Janne Piippo 2.0 13.12.2007 Virallinen verio Janne Piippo HELSINGIN YLIOPISTO

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 1.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 1.3.2010 1 / 36 Monikko Monikko (engl. tuple) muistuttaa listaa, mutta monikon sisältöä ei voi muuttaa sen jälkeen,

Lisätiedot

4. Olio-ohjelmoinista lyhyesti 4.1

4. Olio-ohjelmoinista lyhyesti 4.1 4. Olio-ohjelmoinista lyhyesti 4.1 Sisällys Yleistä. Oliot ja luokat. Attribuutit. Olioiden esittely ja alustus. Rakentajat. Olion operaation kutsuminen. 4.2 Yleistä Olio-ohjelmointia käsitellään hyvin

Lisätiedot

UML -mallinnus TILAKAAVIO

UML -mallinnus TILAKAAVIO UML -mallinnus TILAKAAVIO SISÄLLYS 3. Tilakaavio 3.1 Tilakaavion alku- ja lopputilat 3.2 Tilan nimi, muuttujat ja toiminnot 3.3 Tilasiirtymä 3.4 Tilasiirtymän vai tilan toiminnot 3.5 Tilasiirtymän tapahtumat

Lisätiedot

CODEONLINE. Monni Oo- ja Java-harjoituksia. Version 1.0

CODEONLINE. Monni Oo- ja Java-harjoituksia. Version 1.0 CODEONLINE Monni Oo- ja Java-harjoituksia Version 1.0 Revision History Date Version Description Author 25.10.2000 1.0 Initial version Juha Johansson Inspection History Date Version Inspectors Approved

Lisätiedot

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Opintojakso TT00AA11 Ohjelmoinnin jatko (Java) Tavoite Opiskelija ymmärtää olio-ohjelmoinnin problematiikan. Opiskelija osaa määritellä ja käyttää itse

Lisätiedot

Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen

Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen Sisällys 6. Metodit Oliot viestivät metodeja kutsuen. Kuormittaminen. Luokkametodit (ja -attribuutit).. Metodien ja muun luokan sisällön järjestäminen. 6.1 6.2 Oliot viestivät metodeja kutsuen Oliot viestivät

Lisätiedot

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio Analyysi Tarkentaa ja jäsentää vaatimusmäärittelyä, vastaa kysymykseen MITÄ järjestelmän tulisi tehdä. Suoritetaan seuraavia

Lisätiedot

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit IDL - proseduurit 25. huhtikuuta 2017 Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,

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

Käyttöohje. Boa Open Access. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Käyttöohje. Boa Open Access. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Käyttöohje Boa Open Access Helsinki 5.5.2006 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Ilmari Heikkinen

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

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014 18. syyskuuta 2014 IDL - proseduurit Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,

Lisätiedot

UML- mallinnus: Tilakaavio

UML- mallinnus: Tilakaavio UML- mallinnus: Tilakaavio Karkea kuvaus UML- kaavioiden käytöstä ohjelmistonkehityksen eri vaiheissa ja tehtävissä. Mallinnus tilakaavioilla Tilakaaviolla kuvataan yhden luokan olioiden tilan muuttumista

Lisätiedot

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio Analyysi Tarkentaa ja jäsentää vaatimusmäärittelyä, vastaa kysymykseen MITÄ järjestelmän tulisi tehdä. Suoritetaan seuraavia

Lisätiedot

Uutisjärjestelmä. Vaatimusmäärittely. Web-palvelujen kehittäminen. Versio 1.3

Uutisjärjestelmä. Vaatimusmäärittely. Web-palvelujen kehittäminen. Versio 1.3 Uutisjärjestelmä Vaatimusmäärittely Versio 1.3 Sisällys 1 Muutoshistoria... 4 2 Viitteet... 4 3 Sanasto... 4 3.1 Lyhenteet... 4 3.2 Määritelmät... 4 4 Johdanto...5 4.1 Järjestelmän yleiskuvaus... 5 4.2

Lisätiedot

Sisällys. 7. Oliot ja viitteet. Olion luominen. Olio Java-kielessä

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

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

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

ELM GROUP 04. Teemu Laakso Henrik Talarmo

ELM GROUP 04. Teemu Laakso Henrik Talarmo ELM GROUP 04 Teemu Laakso Henrik Talarmo 23. marraskuuta 2017 Sisältö 1 Johdanto 1 2 Ominaisuuksia 2 2.1 Muuttujat ja tietorakenteet...................... 2 2.2 Funktiot................................

Lisätiedot

Tietokanta.java Luokka tarjoaa välineet tietokannan lukemiseen. Haetuista tiedoista muodostetaan kurssi- ja opetus-olioita.

Tietokanta.java Luokka tarjoaa välineet tietokannan lukemiseen. Haetuista tiedoista muodostetaan kurssi- ja opetus-olioita. Arkkitehtuurikuvaus Käytössä olevat java-luokat: Kansio: /WEB_INF/classes/ - käännetyt luokat Kansio: /WEB_INF/src/ - lähdekoodi custom_pojos: Kurssi.java Java-luokka, jonka sisältö vastaa tietokannassa

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

List-luokan soveltamista. Listaan lisääminen Listan läpikäynti Listasta etsiminen Listan sisällön muuttaminen Listasta poistaminen Listan kopioiminen

List-luokan soveltamista. Listaan lisääminen Listan läpikäynti Listasta etsiminen Listan sisällön muuttaminen Listasta poistaminen Listan kopioiminen 1 List-luokan soveltamista List-luokan metodeja Listaan lisääminen Listan läpikäynti Listasta etsiminen Listan sisällön muuttaminen Listasta poistaminen Listan kopioiminen 1 List-luokan metodeja List-luokan

Lisätiedot

JAKELUPISTE KÄYTTÖOHJE 2/6

JAKELUPISTE KÄYTTÖOHJE 2/6 käyttöohjeet JAKELUPISTE KÄYTTÖOHJE 2/6 1. Esittely JakeluPiste on helppo ja yksinkertainen ratkaisu tiedostojen lähettämiseen ja vastaanottamiseen. Olipa kyseessä tärkeä word dokumentti tai kokonainen

Lisätiedot

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 30. marraskuuta 2015

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 30. marraskuuta 2015 TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 30. marraskuuta 2015 Sisällys t Väitöstilaisuus 4.12.2015 kello 12 vanhassa juhlasalissa S212 saa tulla 2 demoruksia

Lisätiedot

Harjoitus 5 (viikko 48)

Harjoitus 5 (viikko 48) Moni tämän harjoituksen tehtävistä liittyy joko suoraan tai epäsuorasti kurssin toiseen harjoitustyöhön. Harjoitustyö edistyy sitä paremmin, mitä enemmän tehtäviä ratkaiset. Mikäli tehtävissä on jotain

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

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

Testausraportti. Orava. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Testausraportti. Orava. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Testausraportti Orava Helsinki 5.5.2005 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Juhani Bergström Peter

Lisätiedot

Ohjelmistotekniikan menetelmät, suunnittelumalleja

Ohjelmistotekniikan menetelmät, suunnittelumalleja 582101 - Ohjelmistotekniikan menetelmät, suunnittelumalleja 1 Suunnittelumallit (design patterns) Kuvaus sellaisesta luokkarakenteesta & olioiden vuorovaikutuksesta, joka ratkaisee tietyn yleisen ongelman

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 20. huhtikuuta 2018 Vastaa kaikkiin tehtäviin. Tee kukin tehtävä omalle konseptiarkille. Noudata ohjelmointitehtävissä kurssin koodauskäytänteitä.

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

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

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

Eye Pal Solo. Käyttöohje

Eye Pal Solo. Käyttöohje Eye Pal Solo Käyttöohje 1 Eye Pal Solon käyttöönotto Eye Pal Solon pakkauksessa tulee kolme osaa: 1. Peruslaite, joka toimii varsinaisena lukijana ja jonka etureunassa on laitteen ohjainpainikkeet. 2.

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 2 vastaukset Harjoituksen aiheena on BNF-merkinnän käyttö ja yhteys rekursiivisesti etenevään jäsentäjään. Tehtävä 1. Mitkä ilmaukset seuraava

Lisätiedot

Harjoitus 5. Esimerkki ohjelman toiminnasta: Lausekielinen ohjelmointi I Kesä 2018 Avoin yliopisto 1 / 5

Harjoitus 5. Esimerkki ohjelman toiminnasta: Lausekielinen ohjelmointi I Kesä 2018 Avoin yliopisto 1 / 5 Kysy Karilta tai Kimmolta, jos tehtävissä on jotain epäselvää. Kerro WETOon liittyvät tekniset ongelmat suoraan Jormalle sähköpostitse (jorma.laurikkala@uta.fi). Muista nimetä muuttujat hyvin sekä kommentoida

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

Ohjelmistojen suunnittelu

Ohjelmistojen suunnittelu Ohjelmistojen suunnittelu 581259 Ohjelmistotuotanto 154 Ohjelmistojen suunnittelu Software design is a creative activity in which you identify software components and their relationships, based on a customer

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

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

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta C++ - perusteet Java-osaajille luento 5/7: operaattoreiden ylikuormitus, oliotaulukko, parametrien oletusarvot, komentoriviparametrit, constant, inline, Operaattoreiden ylikuormitus Operaattoreiden kuormitus

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

Harjoitus 5 (viikko 41)

Harjoitus 5 (viikko 41) Mikäli tehtävissä on jotain epäselvää, laita sähköpostia vastuuopettajalle (jorma.laurikkala@uta.fi). Muista nimetä muuttujat hyvin sekä kommentoida ja sisentää koodisi. Vältä liian pitkiä rivejä, käytä

Lisätiedot

Kooste. Esim. Ympyrän keskipiste voidaan ajatella ympyrän osaksi.

Kooste. Esim. Ympyrän keskipiste voidaan ajatella ympyrän osaksi. 17. Kooste 17.1 Kooste Kooste (aggregation) on luokkien A ja B välinen suhde, joka tarkoittaa A on B:n osa tai A kuuluu B:hen. Koostesuhteessa olevat luokat eivät yleensä ole periytymissuhteessa. Kooste

Lisätiedot

11. Javan toistorakenteet 11.1

11. Javan toistorakenteet 11.1 11. Javan toistorakenteet 11.1 Sisällys Laskuri- ja lippumuuttujat. Sisäkkäiset silmukat. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 16.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 16.3.2009 1 / 40 Kertausta: tiedostosta lukeminen Aluksi käsiteltävä tiedosto pitää avata: tiedostomuuttuja = open("teksti.txt","r")

Lisätiedot

TIE-20200 Samuel Lahtinen. Lyhyt UML-opas. UML -pikaesittely

TIE-20200 Samuel Lahtinen. Lyhyt UML-opas. UML -pikaesittely Lyhyt UML-opas UML -pikaesittely UML, Unified Modeling Language Standardoitu, yleiskäyttöinen mallinnuskieli, jota ylläpitää/hallitsee (Object Management Group) OMG Historiaa: 90-luvulla oli paljon kilpailevia

Lisätiedot

5. HelloWorld-ohjelma 5.1

5. HelloWorld-ohjelma 5.1 5. HelloWorld-ohjelma 5.1 Sisällys Lähdekoodi. Lähdekoodin (osittainen) analyysi. Lähdekoodi tekstitiedostoon. Lähdekoodin kääntäminen tavukoodiksi. Tavukoodin suorittaminen. Virheiden korjaaminen 5.2

Lisätiedot

Suunnitteluvaihe prosessissa

Suunnitteluvaihe prosessissa Suunnittelu Suunnitteluvaihe prosessissa Silta analyysin ja toteutuksen välillä (raja usein hämärä kumpaankin suuntaan) Asteittain tarkentuva Analyysi -Korkea abstraktiotaso -Sovellusläheiset käsitteet

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 20.1.2010 T-106.1208 Ohjelmoinnin perusteet Y 20.1.2010 1 / 40 Arvon pyytäminen käyttäjältä Käyttäjän antaman arvon voi lukea raw_input-käskyllä. Käskyn sulkujen

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

Määrittelydokumentti. Ohjelmistotuotantoprojekti XPerf. Helsingin yliopisto. Tietojenkäsittelytieteen laitos. Tommi Koivula.

Määrittelydokumentti. Ohjelmistotuotantoprojekti XPerf. Helsingin yliopisto. Tietojenkäsittelytieteen laitos. Tommi Koivula. Helsingin yliopisto Tietojenkäsittelytieteen laitos Ohjelmistotuotantoprojekti XPerf Määrittelydokumentti Tommi Koivula Antti Levomäki Juha Mondolin Timo Suomela Versio 1.1.6 9. maaliskuuta 2003 Versiohistoria

Lisätiedot

Sisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto

Sisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto Sisällys 18. bstraktit tietotyypit Johdanto abstrakteihin tietotyyppeihin. Pino ja jono. Linkitetty lista. Pino linkitetyllä listalla toteutettuna. 18.1 18.2 Johdanto Javan omat tietotyypit ovat jo tuttuja:

Lisätiedot

CSV - XML ohjelman käyttöohje

CSV - XML ohjelman käyttöohje CSV - XML ohjelman käyttöohje Käynnistä ohjelma CSC_Virta_Julkaisut_ToXMLConverter.exe CSV-XML muunnos tapahtuu etenemällä ohjelmassa järjestyksessä 1. -> 6. ylhäältä oikealle: Perustoimintoja voi suorittaa

Lisätiedot

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki Sisällys JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta Abstrakti luokka ja metodi Rajapintamäärittely (interface) Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto 13.10.2000 E.

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

15. Ohjelmoinnin tekniikkaa 15.1

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

Lisätiedot