Harjoitus 1: Vaatimukset

Koko: px
Aloita esitys sivulta:

Download "Harjoitus 1: Vaatimukset"

Transkriptio

1 XML Ohjelmistokehityksessä /12 1 Yleistä 1.1 Tavoiteet Harjoitus 1: Vaatimukset Harjoitustöiden tarkoituksena on tutustuttaa harjoitustyön tekijä XML:n käsittelyn perustekniikoihin ja rajapintoihin. Harjoitustyön sovellusalueena on äänilevyjen lainauspalvelu (yksinkertainen). Harjoitustyö jakaantuu kolmeen vaiheeseen: tiedon tallennus, palvelun rakentaminen ja asiakasliittymän rakentaminen. Ensimmäisen vaiheen tavoitteena on tutustuttaa XML:n käsittelyn perusteisiin: DOM- ja SAXrajapintoihin, lyhyesti XPath:iin sekä XML-Scheman kirjoittamiseen ja käyttöön. Perustekniikoita hyödynnetään yksinkertaisen XML-pohjaisen tietovaraston luomiseen. Harjoituksen ensimmäisessä vaiheessa ei saa hyödyntää JAXB tms. työkaluja, mutta muissa harjoituksen vaiheissa saa käyttää JDK:n ja JWSDP:n tarjoamia kirjastoja haluamallaan tavalla sekä ympäristön ulkopuolisia kirjastoja. Jos opiskelija käyttää ulkopuolisia kirjastoja, ne tulee toimittaa palautusten mukana. 1.2 Versiointi Versio Tila Päiväys Tekijä Selite (muutkset, korjaukset yms.) Draft MM Alustava versio 2 Vaatimuserittely 2.1 Yleistä Tässä vaiheessa toteutettavalle tietovarastolla voidaan hallinnoida (mm. lisätä ja poistaa) tuotenimikkeitä, jotka on rajoitettu äänilevyihin, sekä hallinnoida tuotenimikkeiden lainausta.opiskelijalta vaaditaan, että harjoitustyön palautus sisältää toteutuksen em. toiminnoille. Täämän lisäksi tarkastuksen automatisointia varten opiskelijan tulee toteuttaa vaaditut lisärajapinnat. Tarkastuksen automatisointiympäristö (xmlohj.inspector) annetaan, mutta opiskelijan saa/tulee itse toteuttaa tarpeelliset tarkastukset. Tarkastajat lisäävät omat tarkastuksensa palautuksen jälkeen Vaatimukset 0000 Yleisasiat 0001 Harjoituksessa tulee hyödyntää DOM-, SAX- ja Xpath-rajapintoja 0002 Toteutus nimikepalvelulle (ItemManager) 0003 Toteutus lainauspalvelulle (LoanManager)

2 XML Ohjelmistokehityksessä / Tehtävä oma toteutus xmlohj.excerciseengine-luokasta (kuvaus myöh.) 0005 Tarvittavat tiedot tallennetaan XML-tiedostoon 0006 Tarvittavat tiedot luetaan XML-tiedostoon 0007 Ohjelman luo tiedoston tarvittaessa, jos sellainen ei ole olemassa 0008 Oletustiedoston nimi olkoon warehouse.xml 0009 Ohjelman tulee varautua siihen, että oletustiedosto vaihtuu ajon aikana (katso ExcerciseEngine) 0010 Palveluiden operaatiot ovat luonteeltaan atomisia eli niitä ei keskeytetä kesken suorituksen (tarkastus on sarjallistettua eli vain yksi operaatio tapahtuu tietyllä ajanhetkellä) 0011 Palveluiden operaatiot kuvaavat yhden transaktion eli operaatioiden aiheuttamat muutokset tiedoissa tallentuvat operaation lopuksi tiedostoon Toteutettava tarkastuksen apurajapinta Inspectors Ympäristömalli Ympäristömalli kuvaa toteutettavan alijärjestelmän suhteita valmiiksi annettuihin komponentteihin. cd Harjoitus1 externals xmlohj::excerciseengine + getitemmanager() : ItemManager + getloanmanager() : LoanManager + getinspectorsview() : InspectorsView «call» «instantiate» inspector::inspector LoanManager «call» LoanManager Harjoitus1 «call» ItemManager ItemManager InspectorsView InspectorsView «call» Kuva 2.1Harjoituksen ulkoiset riippuvuudet Kuvassa 2.1 on esitetty harjoituksen peruselementit. Harjoitustyöympäristö tarjoaa Inspector-luokan sekä ExerciseEngine-luokan, joka on käytännössä vain rajapintakuvaus. Samoin rajapintakuvaukset ItemManager-, LoanManager- sekä InspectorsView-rajapinnoille annetaan. cd Package DataService xmlohj::exerciseengine + getitemmanager() : ItemManager + getloanmanager() : LoanManager + getinspectorsview() : InspectorsView ExerciseEngine1 + getitemmanager() : ItemManager + getloanmanager() : LoanManager + getinspectorsview() : InspectorsView (from xmlohj) Kuva 2.2ExersiceEngine-luokan toteuts harjoituksessa Opiskelijan tulee luoda oma ExerciseEngine1-luokka (kuva 2.2), joka osaa instantioida harjoituksen rajapinnat toteuttavan luokan (tai luokat). Harjoistus1-komponetin sisäinen toteutus on täysin kiinni opiskelijan mielikuvituksesta ja harjoituksen vaatimusten rajoitteista. 2.2 Nimikepalvelu

3 XML Ohjelmistokehityksessä / Yleistä Nimikepalvelu (ItemManager) tarjoaa mekanismin hallinnoida nimikejoukkoa. Oheisessa kuvassa (kuva 2.3) esittää rajapinnan operaatiot. cd Harj1 required externals «interface» ItemManager + add(item :Item) : void + find(identifier :String, label :String) : Collection + remove(identifier :String, label :String) : void + show() : Collection + change(identifier :String, label :String, newitem :Item) : void Kuva 2.3ItemManager-rajapinta ItemManager:in toteutukselta odotetaan tietynlaista toiminnallisuutta ja vastetta, kun rajapinnan operaatioita harjoitetaan. Seuraava kuva esittää tilanteen (ja myös järjestelmän oletetun vasteen), kun järjestelmällä ei ole yhtään tietoa tallennettuna (kuva 2.4). Muiden toimintojen virheenkäsittely on yksinkertaista ja suoraviivaista, mutta 'Adding to Empty Failed' tilassa reagointi on tilan säästämiseksi kuvattu huomaute-laatikkoon kirjoitetulla pseudokoodilla. Tila itse päättelee virheen syyn ja raportoi siitä päättelyn mukaisesti. sm ItemManager Behaviour when Empty Initial Change Empty read XML [items.count == 0] /create XML IF item.id == BAD, throw InvalidIdentifierException IF item.quantity < 0, throw InvalidCountException IF item.borrowed!= 0, throw InvalidCountException IF item == INVALID, throw InvalidItemException OTHERWISE throw FunctionAddException Change( id, label, item ) /throw ItemUnknownException Adding to Empty Failed Show Empty Show [Add == FAIL] coll := {} Idle Empty Add( item ) Add Empty /throw ItemUnknownException Remove Empty Remove( id, label ) Find( item ) coll := {} Find Empty [Add == OK] Idle Items [Remove == OK AND items.count == 0] Removing Kuva 2.4Tyhjän varaston käyttäytyminen Kun oletustiedostoa ei ole olemassa, tulee järjestelmän luoda automaattisesti tyhjä tietorakenne, jota pystytään hyödyntämään (aluksi vain lisäys on järkevä toimenpide). Kun ensimmäinen alkio on onnistuneesti lisätty siirtyy järjestelmä, siirtyy järjestelmä normaaliin tila-avaruuteen (kuva 2.5). Huomaa, että kuvan 2.5 tila-avaruuteen päästään sekä kuvan 2.4 tila-avaruudesta että käynnistyksen

4 XML Ohjelmistokehityksessä /12 sm ItemManager Behaviour IF foundcollection.count > 1, throw ItemsTooManyException IF foundcollection.count == 0, throw ItemUnknownException IF item.borrowed > 0, throw ItemBorrowedException OTHERWISE throw FunctionRemoveException Showing Error [Show == FAIL] Removing Error /throw FunctionShowException Showing [Remove == FAIL] Initial [Show == OK] /coll := Show Removing read XML [items.count > 0] Show Remove( id, label ) [Remove == OK AND items.count > 0] Add Empty [Add == OK] Idle Items [Find == FAIL] /throw FunctionFindException Find( id, label ) Finding Add( item ) [Add == OK] [Find == OK] /coll := Find Adding Error Adding [Add == FAIL] Change( id, label, newitem ) [Change == OK] Changing IF item.id == RESERVED, throw ReservedIdentifierException IF item.id == BAD, throw InvalidIdentifierException IF item.quantity < 0, throw InvalidCountException IF item.borrowed!= 0, throw InvalidCountException IF item == INVALID, throw InvalidItemException OTHERWISE throw FunctionAddException [Change == FAIL] Changing Error IF foundcollection.count > 1, throw ItemsTooManyException IF foundcollection.count == 0, throw ItemUnknownException IF olditem.borrowed > newitem.quantity, throw ItemBorrowedException OTHERWISE throw FunctionChangeException Kuva 2.5Normaalin varaston käyttäytyminen kautta. Huomattavaa on myös se, että tilakaaviot kuvaavat vain ulkoisesti havaittua toimintaa eivätkä ne ota sinällään kantaa sisäiseen toteutukseen. Ainoastaan jokaisen onnistuneen muutosoperaation (add, remove, change) jälkeen xml-tieto tulee tallentaa tiedostoon Vaatimukset 1000 Nimikepalvelu (ItemManager) Nimikepalvelu hallinnoi varastossa olevia tuotteita Lisää operaatio (add) lisää yhden nimikkeen varastoon Poista operaatio (remove) poistaa yhden nimikkeen varastosta Muuta operaatio (change) muuttaa annetun nimikkeen tietoja Etsi operaatio (find) etsii yhden tai useamman nimikkeen Näytä nimikkeet operaatio (show) laistaa kaikki nimikkeet 1100 Lisää operaatio (add) Operaatiolla lisätään yksi nimike varastoon item: Varastoon lisättävän uudent tuotteen tiedot. Item item Varastoon ei voida lisätä nimikettä, jolla on sama tunniste kuin jo varastossa olevalla nimikkeellä (ReservedIdentifierException). Varastoon ei voida lisätä tyhjää tai muuten viallista nimikettä (InvalidItemException). Tunnisteen pitää olla oikean muotoinen (InvalidIdentifierException). Nimikkeen lukumäärä voi olla 0 tai positiivinen lukumäärä (lkm < 0; InvalidCountException). Lisättäessä nimikkeen lainausmäärä nollataan (eli ei yhtään lainassa). Muutoin huomaustus (InvalidCountException). Jos lisää-toiminto jostain muusta syystä toimii virheellisesti, asiasta huomautetaan (FunctionAddException). Onnistuneen lisäyksen jälkeen tulee muuttunut tietovarasto tallentaa Toteutusehdotus: DOM ratkaisu 1100 Poista operaatio (remove)

5 XML Ohjelmistokehityksessä /12 Operaatio poistaa annetun nimikkeen varastosta. String identifier String label identifier: Poistettavan tuotteen tunniste label: Poistettavan tuotteen nimi Poistettavasta nimikkeestä annetaan tunnistukseen nimi (label) ja/tai tunniste (identifier). Nimi ja tunniste voidaan kuvata myös villimerkkejä.* (mikä tahansa merkkijono) tai. (mikä tahansa yksi merkki) (java.util.regex) Poisto ei onnistu, jos nimikettä ei löydy (ItemUnknowException) Poisto ei onnistu, jos nimikkeitä löytyy useampi kuin yksi (ItemsTooManyException) Poisto ei onnistu, jos nimike on lainassa (ItemLoanedException) Jos poista-toiminto jostain syystä toimii virheellisesti, asiasta huomautetaan (FunctionRemoveException) Onnistuneen poiston jälkeen tulee muuttunut tietovarasto tallentaa Toteutusehdotus: DOM ratkaisu 1200 Muuta operaatio (change) Operaatio korvaa vanhan tuotteen tiedot uuden tuotteen tiedoilla. String identifier String label Item newitem identifier: Muutettavan tuotteen tunniste label: Muutettavan tuotteen nimi newitem: Tuotteen uudet tiedot. Tyhjä kenttä tarkoittaa, että tieto on kopioitava vanhasta. Vanha tuote tunnistetaan samoilla säännöillä kuin poistossakin. Muutettaessa kaikki vanhan (löydetyn) nimikkeen tiedot, paitsi tunniste, korvautuvat uuden nimikkeen annetuilla tiedoilla. Vain ne tiedot, jotka on uudessa nimikkeessä annettu korvaantuvat. Tieto, jota ei muuteta jätetään tyhjäksi (merkkijono) tai negatiiviseksi (numero). Lainaustietoa (borrowed) ei saa muuttaa. Lukumäärää saa muuttaa, mutta lukumäärän pitää olla vähintään lainattujen nimikkeiden määrä. (InvalidCountException). Jos vanhan nimikkeen tiedoilla löytyy useampi kuin yksi vanha nimike, ei muokkausta toteuteta (ItemsTooManyException). Jos vanhaa nimikettä ei löydy ollenkaan, ei muokkausta voida suorittaa (ItemUnknownException). Tunnisteen pitää olla oikean muotoinen (InvalidIdentifierException). Jos muokkaa-toiminto jostain syystä toimii virheellisesti, asiasta huomautetaan (FunctionChangeException). Toteutusehdotus: DOM ratkaisu 1300 Etsi operaatio (find) Etsi-toiminnossa haetaan annettua nimikettä. String identifier String label identifier: Etsittävän tuotteen tunniste label: Etsittävän tuotteen nimi Nimikettä haetaan samojen sääntöjen pohjalta kuin poista-toiminnossa. Paluutietona palautetaan nimikkejoukko (Collection), jossa on nolla tai useampi nimike. Jos jostain muusta syystä etsi-toiminto toimii virheellisesti, huomautetaan asiasta (FunctionFindException).

6 XML Ohjelmistokehityksessä /12 Toteutusehdotus: XPath ratkaisu on se mitä tavoitellaan, mutta paremman puutteessa java.util.regex:n käyttö sallitaan. XPath vaatii vähemmän koodaamista, mutta hakulauseen kirjoitus on hankalampi, RegEx-luokan käyttö vaatii huomattavasti enemmän koodaamista eikä hakulause ole paljoa sen helpompi kuin XPath-lausekkaan Näytä operaatio (show) Näytä-toiminto palauttaa nimikejoukon kaikista varastossa olevista nimikkeistä. Paluutietona palautetaan nimikkejoukko (Collection), jossa on nolla tai useampi nimike. Jos toiminto jostain syystä epäonnistuu, niin asiasta huomautetaan (FunctionShowException). Toteutusehdotus: SAX ratkaisu 2.3 Lainauspalvelu Yleistä Lainauspalvelu (LoanManager) tarjotaa mekanismin nimikkeiden lainaamisen hallintaan. Oheinen kuva (kuva 2.6) esittää LoanManager-rajapinnan operaatioden kuvaukset. cd Harj1 required externals «interface» LoanManager + borrowitem(borrower :String, itemid :String) : void + returnitem(borrower :String, itemid :String) : void + findloan(borrower :String, itemid :String) : Collection + showloans() : Collection Kuva 2.6 LoanManager-rajapinta LoanManager-rajapinnan toteutuksen tulee kyetä luomaan nimikkeen lainaus sekä suorittamaan nimikkeen palautus. Tämän lisäksi lainauksen hallinnalla voidaan etsiä lainoja ja näyttää kaikki lainat. Oheinen kuva (kuva 2.7) esittää käyttäytymistä, kun lainoja ei ole vielä yhtään tehty. Oheinen kaavio olettaa, että lainoja ei ole alussa yhtään. Kaaviossa ei oteta suoranaisesti kantaa siihen, onko yhtään nimikettä lainattavaksi. Tällöin vain ilmoitetaan, ettei lainattavaa nimikettä löytynyt. Kun nimikkeitä ilmestyy lainattavaksi voidaan kaaviosta siirtyä normaaliin tilakaavioon. Normaalista tilakaaviosta voidaan palata tyhjien lainojen kaavioon silloin, kun viimeinen laina on poistettu järjestelmästä.

7 XML Ohjelmistokehityksessä /12 sm LoanManager Behaviour when no loans Initial read XML [loans.count == 0] /create XML No Loans Borrow( name, id ) Borrowing the first [Borrow == OK] Idle Loans [Borrow == FAIL] Borrow Error IF items.find( id ) == NO_FOUND, throw ItemUnknownException OTHERWISE throw FunctionBorrowException [ReturnLoan == OK AND loans.count == 0] Returning Loan Kuva 2.7 Käyttäytyminen, kun ei ole vielä yhtään lainaa tehty sm LoanManager Behaviour Initial [FindLoan == FAIL] /throw FunctionFindLoanException Finding loans read XML [loans.count > 0] FindLoan( name, id ) Borrowing the first Borrowing Error [Borrow == OK] Borrow( name, id ) Idle Loans [FindLoan == OK] /coll := FindLoan Show [Show == OK] /coll := Show Showing Loans [ShowLoan == FAIL] /throw FunctionShowLoanException ReturnLoan( name, id ) [Borrow == FAIL] [Borrow == OK] Borrowing [ReturnLoan == OK AND loans.count > 0] IF find( id ) == NO_FOUND, throw ItemUnknownException IF founditem.quantity == founditem.borrowed, throw TooManyLoansException IF loans.find( name AND id ) > 0, throw DublicateLoanException OTHERWISE throw FunctionBorrowException Returning Error Returning Loan IF find( id ) == NO_FOUND, throw ItemUnknownException IF founditem.quantity == founditem.borrowed, throw TooManyLoansException IF founditem.borrowed == 0, throw LoanUnknownException IF loans.find( name AND id ) == 0, throw LoanUnknownException OTHERWISE throw FunctionReturnLoanException Kuva 2.8Käyttäytyminen, kun lainoja on tehty Oheinen kuva (kuva 2.8) esittää lainojen hallinnan käyttäytymisen, kun vähintään yksi lainaus on tehty Vaatimukset 2000 Lainauspalvelu-rajapinta (LoanManager) Lainauspalvelu ylläpitää lainaustietoja Lainaa nimike (borrowitem) Palauta laina (returnloan) Etsi laina (findloan) Näytä lainat (showloans)

8 XML Ohjelmistokehityksessä / Lainaa nimike (borrowitem) Lainaa-toiminnolla lainataan nimike (Item) jollekin henkilölle. String borrower String label borrower: Lainaajan nimi label: Lainattavan tuotteen tunniste Lainauksesta kirjataan vapaamuotoinen lainaajan nimi ja nimikkeen tunniste (identifier). Lainauksen voi suorittaa tuotteelle, joka on olemassa (ItemUnknownException, jos ei olemassa). Lainauksen voi suorittaa tuotteelle, jota ei ole lainattu varastossa olevaa määrää (TooManyLoansException, jos liian monta lainaa). Yksi lainaaja ei voi lainata samaa nimikettä useaan kertaan (DublicateLoanException, jos lainaaja on lainannut nimikkeen). Lainatessa nimikkeestä tulee antaa kokonaiset tiedot (ei villimerkkejä) Jos tulee joku muu virhe, niin siitä tulee ilmoittaa (FunctionBorrowException) Palauta laina (returnloan) Palauta-toiminnolla voidaan palauttaa laina. String borrower String label borrower: Lainaajan nimi label: Lainattavan tuotteen tunniste Annetulla lainaajan nimellä ja tuotetunnisteella löytyvä lainaus voidaan palauttaa, jos vain yksi lainaus annetuilla tiedoilla löytyy (ItemsTooManyException, jos liian monta lainausta löytyy). Villimerkkien käyttö samanlainen nimikehallinnnan poista-toiminnossa Palautusta ei voida suorittaa, jos nimike ei ole olemassa (ItemUnknownException) Palautusta ei voida suorittaa, jos nimike ei ole lainattu (LoanUnknownException). Jos tulee joku muu virhe, niin siitä tulee ilmoittaa (FunctionReturnException) Etsi laina (findloan) Etsi-toiminnolla haetaan tietyn nimikkeen tunnisteen tai nimikkeen lainaajan perusteella. String identifier String label identifier: Etsittävän tuotteen tunniste label: Etsittävän tuotteen nimi Palauttaa joukon, jossa on nolla tai useampi lainatieto. Villimerkkien käyttö samanlainen nimikehallinnnan poista-toiminnossa Jos tulee joku virhe, niin siitä tulee ilmoittaa (FunctionFindLoanException) Näytä lainat (showloans) Näytä-toiminnolla haetaan kaikki lainat. Palauttaa joukon, jossa on nolla tai useampi lainatieto. Jos tulee joku virhe, niin siitä tulee ilmoittaa (FunctionFindLoanException).

9 XML Ohjelmistokehityksessä / Tarkastus 3000 Tarkastuksen apuvälineet (InspectorsView ja ExcerciseEngine) cd Harj1 required externals «interface» InspectorsView + getdocument() : Document + setdocument(document :Document) : void + setfile(filename :String) : void + getfile() : String InspectorsView-rajapinta tarjoaa tarkastukselle näkymän sisäisestä maailmasta Aksessorit sisäiselle DOM-puulle (getdocument, setdocument) getdocument palauttaa nykyisen DOM-dokumentin setdocument asettaa uuden DOM-dokumentin Aksessorit xml-tiedostolle (getfilename, setfilename) getfilename palautta merkkijonona (String) voimassa olevan xml-tiedoston, johon tietoja tallennetaan setfilename asettaa merkkijonona (String) xml-tiedoston, johon tietoja tullaan jatkossa tallentamaan Asetettaessa tiedoston nimeä, sen sisältö tulee lukea saman tien saataville (eli sekvenssi iv.setfilename( file.xml ); doc = iv.getdocument(); tulee palauttaa file.xml:ää vastaava DOM-dokumentti ExcerciseEngine-luokka tarjoaa tehtaan erilaisiin palvelurajapintoihin tarkastusta varten cd Inspection tools xmlohj::exerciseengine + getitemmanager() : ItemManager + getloanmanager() : LoanManager + getinspectorsview() : InspectorsView ExerciseEngine1 + getitemmanager() : ItemManager + getloanmanager() : LoanManager + getinspectorsview() : InspectorsView Opiskelija laajentaa ExcerciseEngine-luokasta luokan ExcerciseEngine1, joka palauttaa vaaditut rajapinnat opiskelijan haluamasta luokasta (luokista) getitemmanager-operaatio palauttaa ItemManager-rajapinnan toteutuksen getloanmanager -operaatio palauttaa LoanManager-rajapinnan toteutuksen getinspectorsview-operaatio palauttaa InspectorsView-rajapinnan toteutuksen 2.5 Tietorakenteet 3500 Tietotyypit (Item, ItemType ja Loan) Tietotyypit kuvaavat ongelma-alueen tietorakenteita

10 XML Ohjelmistokehityksessä /12 cd Data Types xmlohj Item - myidentifier: String - mylabel: String - mytype: ItemType = ItemType.NONE - mylocation: String - myquantity: int = 0 - myborrowedcount: int = 0 + «create» Item() + «create» Item(identifier :String, label :String, type :ItemType, location :String) + getitem() : Item + setitem(item :Item) : void + isequal(item :Item) : boolean + isequalid(item :Item) : boolean Accessor methods for attributes are not shown i.e. getsomething and setsomething methods «enumeration» ItemType + NONE: int = 0 + MC: int = 1 + LP: int = 2 + CD: int = 3 + DVD: int = 4 - myborrower: String - myitemid: String Loan + «property get» getborrower() : String + «property get» getitemid() : String + «property set» setborrower(newval :String) : void + «property set» setitemid(newval :String) : void (from Harjoitukset) Opiskelija voi laajentaa ongelma-alueen tietorakenteita perinnän avulla, mutta perustoiminnallisuuteen ei sovi kajota Item kuvaa nimikkeen tietoja ItenType on lueteltutyyppi (enumeraatio) erilaisista nimikkeistä Loan kuvaa lainan 2.6 Tietovaatimukset 4000 Tietovaatimukset 4001 Nimiketiedot ja lainatiedot tallennetaan yhteen XML-tiedostoon XML-tiedoston esimerkki <?xml version= 1.0?> <warehouse> <storage> <item id= 123-ABZ-3 > <label>jukka Kukka</label> <type>cd</type> <location>tarja s room</location> <quantity>50</quantity> <borrowed>1</borrowed> </item> <item id= 042-QQQ-3 > <label>eino Vihree</label> <type>lp</type> <location>mika s room</location> <quantity>50</quantity> <borrowed>0</borrowed> </item> </storage> <loans> <loan> <borrower>john Doe</borrower> <itemid>123-abz-3</itemid> <loan> </loans> </warehouse> XML-tiedon muodon kuvaus XML Schema-tiedostolla (warehouse.xsd) XML-tiedon muodon oikeellisuuden tarkistaminen (validointi) XML-Schema tiedoston avulla Tuotteen (Item) tunnisteen (identifier) muoto:

11 XML Ohjelmistokehityksessä /12 identifier := manufacturer itemtype index manufacturer := 3 {number} 3 // numeroita tasan kolme itemtype := 1 {alpha} 3 // kirjaimia yhdestä kolmeen index := alpha number // yksi kirjain tai numero number := [0-9] alpha := [A-Z] Lainaajan nimi on merkkijono, joka on muodoltaan vapaamuotoinen Lainaajan nimi on ainakin yksi merkki. Ylärajaa ei sinällään ole, mutta vähintään 32 merkkiä pitkä nimi tulee mahtua siihen. Lainaaja ei tarvitse tunnistusta Tyhjä kenttä Item-luokassa tarkoittaa sitä, että merkkijono on tyhjä, kokonaisluku on -1 ja tyyppi on NONE. 2.7 Muita asioita 5000 Toteutus 5001 Toteutuksessa pitää käyttää Java JDK:n ja JWSDP:n tarjoamia kirjastoja Toteutuksessa saa käyttää ulkopuolisia kirjastoja Operaatiot kommentoitava: operaation tarkoitus, parametrien tarkoitus, mahdolliset poikkeukset yms Tuotteenhallinta 8001 Harjoitus tulee rakentaa hakemistoihin seuraavalla tavalla: / opiskelijanumero build.xml päätason käännösohjaustiedosto Harjoitus1/ ensimmäisen harjoituksen hakemisto build.xml harjoituksen käännösrakentaja proj.properties configure.html/.txt projektikohtaiset ominaisuudet dokumentti, joka kertoo mitä ominaisuuksia pitää määritellä, jotta käännös ja ajo onnistuisivat src/ xmlohj/ build/ Inspector/ src/ common/ junit.jar munomajokukirjasto.jar Ulkopuoliset kirjastot pitää toimittaa palautuspaketin mukana Päätason käännösohjaustiedoston (build.xml) pitää sisältää tehtävät: 1) HARJ1 käännä ja aseta ohjelma ajokuntoon 2) AJA1 suorita harjoituksen 1 Inspector-ohjelma 3) PALAUTUS tuottaa palautuspaketin Harjoitustason käännösohjaustiedosto tulee sisältää vähintään seuraavat tehtävät: 1) build oletustehtävä, joka kääntää ja valmistelee ohjelman ajoa varten 2) run_text ajaa Inspector:in tekstitilassa 3) run_graf ajaa Inspector:in graafisena 4) clean poistetaan käännöksen aikaiset tiedostot

12 XML Ohjelmistokehityksessä /12 Konfiguraatiodokumentti, jossa kerrotaan mitä ominaisuuksia pitäisi löytyä xmlohj.properties tiedostosta sekä mitä oletetaan CLASSPATH:in ja PATH:in sisällöstä. 2.8 Palautus 9000 Palautus 9001 Palautuspaketti sisältää koko harjoitustyöhakemistopuun Palautuspaketti on jar-paketti Palautuspaketin nimi on muotoa: xmlohj_opikelijanumero_etunimisukunimi.jar

XML Ohjelmistokehityksessä

XML Ohjelmistokehityksessä XML Ohjelmistokehityksessä 8105200 1/7 1 Yleistä XML Ohjelmistokehityksessä 1.1 Tavoitteet Harjoitustöiden tarkoituksena on tutustuttaa harjoitustyön tekijä XML:n käsittelyn perustekniikoihin ja rajapintoihin.

Lisätiedot

Harjoitus 2: Vaatimukset

Harjoitus 2: Vaatimukset XML Ohjelmistokehityksessä 8105200 1/9 1 Yleistä 1.1 Tavoitteet Harjoitus 2: Vaatimukset Harjoitustyön toisen vaiheen tarkoituksena on toteuttaa ensimmäisen vaiheen tietovaraston päälle verkkopalvelu,

Lisätiedot

Harjoitus 3: Vaatimukset

Harjoitus 3: Vaatimukset XML Ohjelmistokehityksessä 8105200 1/5 1 Yleistä 1.1 Tavoitteet Harjoitus 3: Vaatimukset Tämän harjoituksen tavoitteena on luoda liityntä asiakkassovelluksesta palvelimeen. Tämän lisäksi on tarkoitus tutustua

Lisätiedot

Formaalit menetelmät: Kirjaston formalisointi Z-kuvauskielellä

Formaalit menetelmät: Kirjaston formalisointi Z-kuvauskielellä Formaalit menetelmät: Kirjaston formalisointi Z-kuvauskielellä 7.5.2002 Annemari Auvinen Anu Niemi Sisällysluettelo 1 Perustana olevat käyttötapaukset... 1 1.1 Käyttäjäryhmät... 1 1.2 Järjestelmään sisäänkirjautuminen...

Lisätiedot

Harjoitus 1: Vaatimukset

Harjoitus 1: Vaatimukset Web-palveluiden toteutustekniikat OHJ-5201 1/9 1 Yleistä 1.1 Tavoitteet Harjoitus 1: Vaatimukset Ensimmäisen harjoitustyön tarkoituksena on toteuttaa tietopalvelu web-sovellukselle käyttäen XML:n käsittelyn

Lisätiedot

18. Abstraktit tietotyypit 18.1

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

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

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 15.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.3.2010 1 / 56 Tiedostoista: tietojen tallentaminen ohjelman suorituskertojen välillä Monissa sovelluksissa ohjelman

Lisätiedot

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes)

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes) Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes) Kääreluokista Javan alkeistietotyypit ja vastaavat kääreluokat Autoboxing Integer-luokka Double-luokka Kääreluokista Alkeistietotyyppiset muuttujat (esimerkiksi

Lisätiedot

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4) 2. Lisää Java-ohjelmoinnin alkeita Muuttuja ja viittausmuuttuja Vakio ja literaalivakio Sijoituslause Syötteen lukeminen ja Scanner-luokka 1 Muuttuja ja viittausmuuttuja (1/4) Edellä mainittiin, että String-tietotyyppi

Lisätiedot

A274101 TIETORAKENTEET JA ALGORITMIT

A274101 TIETORAKENTEET JA ALGORITMIT A274101 TIETORAKENTEET JA ALGORITMIT PERUSTIETORAKENTEET LISTA, PINO, JONO, PAKKA ABSTRAKTI TIETOTYYPPI Tietotyyppi on abstrakti, kun se on määritelty (esim. matemaattisesti) ottamatta kantaa varsinaiseen

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

Harjoitus 6 (viikko 42)

Harjoitus 6 (viikko 42) Nämä ovat kurssin viimeiset harjoitukset. Hyväksytyistä ratkaisuista ja läsnäoloista kerättyjen pisteiden summan tulee olla vähintään 40 % ( pistettä) tehtävien ja läsnäolopisteiden kokonaislukumäärien

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

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

Harjoitus 6. Käytä String-luokasta vain charat- ja length-operaatioita.

Harjoitus 6. Käytä String-luokasta vain charat- ja length-operaatioita. Nämä ovat kurssin viimeiset harjoitukset. Hyväksytyistä ratkaisuista ja läsnäoloista kerättyjen pisteiden summan tulee olla vähintään 40 % ( pistettä) tehtävien ja läsnäolopisteiden kokonaislukumäärien

Lisätiedot

Pino S on abstrakti tietotyyppi, jolla on ainakin perusmetodit:

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

Lisätiedot

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

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

Harjoitus 2 (viikko 45)

Harjoitus 2 (viikko 45) Mikäli tehtävissä on jotain epäselvää, laita sähköpostia vastuuopettajalle (jorma.laurikkala@uta.fi). Muista lisätä static-määre operaatioidesi otsikoihin, jotta ohjelmasi kääntyvät. Muista noudattaa hyvän

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

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

Adobe Digital Editions -ohjeet

Adobe Digital Editions -ohjeet Adobe Digital Editions -ohjeet Adobe Digital Editions on Adoben e-kirjojen lukemiseen tarkoitettu kevyt erillinen lukuohjelma, joka on ollut käytössä Adobe Reader -ohjelman 8-versiosta alkaen. Ohjelman

Lisätiedot

Kieliversiointityökalu Java-ohjelmistoon. Ohje

Kieliversiointityökalu Java-ohjelmistoon. Ohje Kieliversiointityökalu Java-ohjelmistoon Ohje 2/6 SISÄLLYSLUETTELO 1 YLEISTÄ OHJELMASTA... 3 2 PÄÄ-IKKUNA...4 3 YLÄVALIKKO... 4 3.1 TIEDOSTO... 4 3.2 TOIMINTO... 4 3.3 ASETUKSET... 5 3.4 OHJE... 5 4 VÄLILEHDET...5

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

TIETORAKENTEET JA ALGORITMIT

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

Lisätiedot

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

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

Webforum. Version 14.4 uudet ominaisuudet. Viimeisin päivitys: 2014-12-6

Webforum. Version 14.4 uudet ominaisuudet. Viimeisin päivitys: 2014-12-6 Webforum Version 14.4 uudet ominaisuudet Viimeisin päivitys: 2014-12-6 Sisältö Tietoja tästä dokumentista... 3 Yleistä... 4 Yleistä & hallinnointi... 5 Dokumentit... 5 Perättäinen tarkistus- ja hyväksymisprosessi...

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

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

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

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

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

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

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

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

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

System.out.printf(%d / %d = %.2f%n, ekaluku, tokaluku, osamaara); 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. Ohjelmointitehtävien osalta palautetaan

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

Eclipse ja JUnit-ohjelmoijatestit

Eclipse ja JUnit-ohjelmoijatestit Eclipse ja JUnit-ohjelmoijatestit Tarkoitus on tutustua Eclipsen käyttöön vähän lähemmin ja varsinkin JUnit-ohjelmoijatesteihin (ohjelmoijatesti on vanhalta nimeltä yksikkötesti). Ohjelmoijatestit ovat

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

Harjoitus 3 (viikko 39)

Harjoitus 3 (viikko 39) 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ä. Ohjelmointitehtävien

Lisätiedot

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset Harjoituksen aiheena ovat aliohjelmat ja abstraktit tietotyypit sekä olio-ohjelmointi. Tehtävät tehdään C-, C++- ja Java-kielillä.

Lisätiedot

BlueJ ohjelman pitäisi löytyä Development valikon alta mikroluokkien koneista. Muissa koneissa BlueJ voi löytyä esim. omana ikonina työpöydältä

BlueJ ohjelman pitäisi löytyä Development valikon alta mikroluokkien koneista. Muissa koneissa BlueJ voi löytyä esim. omana ikonina työpöydältä Pekka Ryhänen & Erkki Pesonen 2002 BlueJ:n käyttö Nämä ohjeet on tarkoitettu tkt-laitoksen mikroluokan koneilla tapahtuvaa käyttöä varten. Samat asiat pätevät myös muissa luokissa ja kotikäytössä, joskin

Lisätiedot

VH5, JOTU, MagicDraw:n käyttö

VH5, JOTU, MagicDraw:n käyttö VH5, JOTU, MagicDraw:n käyttö 1. Käynnistä MagicDraw (versio 18.2) 2. Valitse Manage Projects-kohdasta Create New Project toiminto. Oletusarvona on UML Project, saa olla. Täytä nimi (Name) ja tallennuspaikka

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

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

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

System.out.printf(%d / %d = %.2f%n, ekaluku, tokaluku, osamaara); Kysy Karilta tai Kimmolta, jos tehtävissä on jotain epäselvää. Kerro WETOon liittyvät ongelmat suoraan Jormalle sähköpostitse (jorma.laurikkala@uta.fi). Muista nimetä muuttujat hyvin sekä kommentoida ja

Lisätiedot

Ohjelmointi 1 Taulukot ja merkkijonot

Ohjelmointi 1 Taulukot ja merkkijonot Ohjelmointi 1 Taulukot ja merkkijonot Jussi Pohjolainen TAMK Tieto- ja viestintäteknologia Johdanto taulukkoon Jos ohjelmassa käytössä ainoastaan perinteisiä (yksinkertaisia) muuttujia, ohjelmien teko

Lisätiedot

Toinen harjoitustyö. ASCII-grafiikkaa 2017

Toinen harjoitustyö. ASCII-grafiikkaa 2017 Toinen harjoitustyö ASCII-grafiikkaa 2017 Yleistä Tehtävä: tee Javalla ASCII-merkkeinä esitettyä grafiikkaa käsittelevä ASCIIArt17-ohjelma omia operaatioita ja taulukoita käyttäen. Työ tehdään pääosin

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

Kirjasto Relaatiotietokannat Kevät 2001. Auvinen Annemari Niemi Anu Passoja Jonna Pulli Jari Tersa Tiina

Kirjasto Relaatiotietokannat Kevät 2001. Auvinen Annemari Niemi Anu Passoja Jonna Pulli Jari Tersa Tiina Kirjasto Kevät 2001 Auvinen Annemari Niemi Anu Harjoitustyö 7.4.2001 Sisällysluettelo 1. Yleiskuvaus... 3 2. Vaatimukset... 3 2.1. Toiminnalliset... 3 2.1.1. Sisäänkirjautuminen... 3 2.1.2. Nimikkeiden

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

20. Javan omat luokat 20.1

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

Lisätiedot

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

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

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 11.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 11.2.2009 1 / 33 Kertausta: listat Tyhjä uusi lista luodaan kirjoittamalla esimerkiksi lampotilat = [] (jolloin

Lisätiedot

TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 4: Cache, osa 2

TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 4: Cache, osa 2 TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos TKT-3200 Tietokonetekniikka I Harjoitustyö 4: Cache, osa 2.. 2010 Ryhmä Nimi Op.num. 1 Valmistautuminen Cache-työn toisessa osassa

Lisätiedot

Algebralliset tietotyypit ym. TIEA341 Funktio ohjelmointi 1 Syksy 2005

Algebralliset tietotyypit ym. TIEA341 Funktio ohjelmointi 1 Syksy 2005 Algebralliset tietotyypit ym. TIEA341 Funktio ohjelmointi 1 Syksy 2005 Tällä luennolla Algebralliset tietotyypit Hahmonsovitus (pattern matching) Primitiivirekursio Esimerkkinä binäärinen hakupuu Muistattehan...

Lisätiedot

MagicDraw-pikaohje (VH5)

MagicDraw-pikaohje (VH5) MagicDraw-pikaohje (VH5) Tällä harjoituskerralla on tarkoituksena harjoitella käyttötapaus-, luokka- ja tapahtumasekvenssikaavioiden luontia. Alkuvalmistelut Linux-työasemaluokka: käynnistä MagicDraw jollakin

Lisätiedot

Tietorakenteet, laskuharjoitus 3, ratkaisuja

Tietorakenteet, laskuharjoitus 3, ratkaisuja Tietorakenteet, laskuharjoitus 3, ratkaisuja 1. (a) Toistolauseen runko-osassa tehdään yksi laskuoperaatio, runko on siis vakioaikainen. Jos syöte on n, suoritetaan runko n kertaa, eli aikavaativuus kokonaisuudessaan

Lisätiedot

INTINU13A6 Java sovellukset

INTINU13A6 Java sovellukset Johdanto Kurssin tavoitteena oli luoda tietokantaa käyttävä websovellus Java EE ohjelmointikielellä, sekä hyödyntää muun muassa servlettejä sekä JSP sivuja ja muita tekniikoita monipuolisesti. Webserverinä

Lisätiedot

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset Tekninen määrittely: Editori Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset Sisällysluettelo 1. Johdanto...4 1.1. Tarkoitus ja kattavuus...4 1.2. Tuote ja ympäristö...4 1.3. Määritelmät,

Lisätiedot

Settings-sivun kautta on mahdollista muokata Kirjastokarttapalveluun liittyviä kirjastokohtaisia asetuksia.

Settings-sivun kautta on mahdollista muokata Kirjastokarttapalveluun liittyviä kirjastokohtaisia asetuksia. Settings - Asetukset Settings - Asetukset 1. 2. 3. 4. 5. Karttojen piirtoväri ja piirtovärin läpinäkyvyys Filtterit a. Filtterin lisääminen b. Filtterin poistaminen Uudelleenohjaukset Filtteri vai uudelleenohjaus?

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

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

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 7. huhtikuuta 2017 Vastaa kaikkiin tehtäviin. Tee jokainen tehtävä erilliselle konseptiarkille. Kirjoittamasi luokat, funktiot ja aliohjelmat

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

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

Maksuturva-palvelun rajapintakuvaus verkkokaupalle / MAKSUN PERUUTUS

Maksuturva-palvelun rajapintakuvaus verkkokaupalle / MAKSUN PERUUTUS Maksuturva-palvelun rajapintakuvaus verkkokaupalle / MAKSUN PERUUTUS Versio 4.0 2(5) Sisältö 1. Muutokset... 3 2. Maksun peruutuksen tiedot... 3 2.1 Kenttien selitteet Maksun peruutuksen tiedot... 4 3.

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

Esimerkkiprojekti. Mallivastauksen löydät Wroxin www-sivuilta. Kenttä Tyyppi Max.pituus Rajoitukset/Kommentit

Esimerkkiprojekti. Mallivastauksen löydät Wroxin www-sivuilta. Kenttä Tyyppi Max.pituus Rajoitukset/Kommentit Liite E - Esimerkkiprojekti E Esimerkkiprojekti Olet lukenut koko kirjan. Olet sulattanut kaiken tekstin, Nyt on aika soveltaa oppimiasi uusia asioita pienen, mutta täydellisesti muotoiltuun, projektiin.

Lisätiedot

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A.

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A. Tehtävä. Tämä tehtävä on aineistotehtävä, jossa esitetään ensin tehtävän teoria. Sen jälkeen esitetään neljä kysymystä, joissa tätä teoriaa pitää soveltaa. Mitään aikaisempaa tehtävän aihepiirin tuntemusta

Lisätiedot

Pedanet oppilaan ohje Aleksanteri Kenan koulu Eija Arvola

Pedanet oppilaan ohje Aleksanteri Kenan koulu Eija Arvola Pedanet oppilaan ohje Aleksanteri Kenan koulu Eija Arvola 26.8.2016 SISÄLLYSLUETTELO 1. Omat asetukset kuntoon (kaikkien tehtävä aluksi) sivut 3-5 2. Tärkeiden sivujen tilaaminen omiin linkkeihin sivut

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

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 10.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 10.2.2010 1 / 43 Kertausta: listat Tyhjä uusi lista luodaan kirjoittamalla esimerkiksi lampotilat = [] (jolloin

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

Ohjelmoinnin perusteet, syksy 2006

Ohjelmoinnin perusteet, syksy 2006 Ohjelmoinnin perusteet, syksy 2006 Esimerkkivastaukset 1. harjoituksiin. Alkuperäiset esimerkkivastaukset laati Jari Suominen. Vastauksia muokkasi Jukka Stenlund. 1. Esitä seuraavan algoritmin tila jokaisen

Lisätiedot

Java kahdessa tunnissa. Jyry Suvilehto

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

Lisätiedot

Varmennepalvelu Rajapintakuvaus Kansallisen tulorekisterin perustamishanke

Varmennepalvelu Rajapintakuvaus Kansallisen tulorekisterin perustamishanke Versio 1.0 Varmennepalvelu Rajapintakuvaus Kansallisen tulorekisterin perustamishanke Varmennepalvelu Rajapintakuvaus 2 (13) Versiohistoria Versio Päivämäärä Kuvaus 1.0 Dokumentti julkaistu. Varmennepalvelu

Lisätiedot

SOLIDPDM 6 Plus uudet ominaisuudet osa 2

SOLIDPDM 6 Plus uudet ominaisuudet osa 2 SolidPDM 6 Plus 1 (8) SOLIDPDM 6 Plus uudet ominaisuudet osa 2 SolidPDM 6 Plus -versioon on lisätty uusia ominaisuuksia. Tämä dokumentti on jatkoa aiemmin ilmestyneelle SolidPDM uudet ominaisuudet julkaisulle,

Lisätiedot

Ohje kehitysympäristöstä. Dokumentti: Ohje kehitysympäristöstä.doc Päiväys: 15.03.2005 Projekti : AgileElephant

Ohje kehitysympäristöstä. Dokumentti: Ohje kehitysympäristöstä.doc Päiväys: 15.03.2005 Projekti : AgileElephant AgilElephant Tekijä: Petri Kalsi Omistaja: ElectricSeven Dokumentti:.doc Päiväys: 15.03.2005 Aihe: Sivu 1 of 6 Dokumenttihistoria Muutoshistoria Revision Revision Yhteenveto muutoksista Revision tekijä

Lisätiedot

XML tehtävien työnkulku

XML tehtävien työnkulku XML tehtävien työnkulku -- TMC työskentelyohjeet LYHYT VERSIO XML harjoitusten toimintaohjeet (lyhyt versio) (XMLStarlet ohjeet löytyvät pitkästä versiosta) ELEC-C1220 - Automaatio 2 Sisältö LYHYT VERSIO

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 17.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 17.2.2010 1 / 41 Sanakirja Monissa sovelluksissa on tallennettava rakenteeseen avain arvo-pareja. Myöhemmin rakenteesta

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

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

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

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

AVL-puut. eräs tapa tasapainottaa binäärihakupuu siten, että korkeus on O(log n) kun puussa on n avainta

AVL-puut. eräs tapa tasapainottaa binäärihakupuu siten, että korkeus on O(log n) kun puussa on n avainta AVL-puut eräs tapa tasapainottaa binäärihakupuu siten, että korkeus on O(log n) kun puussa on n avainta pohjana jo esitetyt binäärihakupuiden operaatiot tasapainotus vie pahimmillaan lisäajan lisäys- ja

Lisätiedot

Luento 2: Tiedostot ja tiedon varastointi

Luento 2: Tiedostot ja tiedon varastointi HELIA 1 (19) Luento 2: Tiedostot ja tiedon varastointi Muistit... 2 Päämuisti (Primary storage)... 2 Apumuisti (Secondary storage)... 2 Tiedon tallennuksen yksiköitä... 3 Looginen taso... 3 Fyysinen taso...

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

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

Viestit-palvelun viranomaisliittymän ohjelmointiohje. Java-esimerkki

Viestit-palvelun viranomaisliittymän ohjelmointiohje. Java-esimerkki Viestit-palvelun viranomaisliittymän ohjelmointiohje Java-esimerkki V.01 OHJELMOINTIOHJE V 0.1 2 (8) DOKUMENTINHALLINTA Omistaja Laatinut Lasse Pynnönen, VRK Valtori/VIA Tarkastanut Hyväksynyt VERSION

Lisätiedot

Harjoitus 2: Vaatimukset

Harjoitus 2: Vaatimukset Harjoitus 2: Vaatimukset 1 Yleistä 1.1 Tavoitteet Toisen harjoitustyön tarkoituksena on toteuttaa yksinkertainen ajettava BPEL-prosessi. Prosessi mallinnetaan käyttäen BPMN-notaatiota, josta generoidaan

Lisätiedot

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Merkintöjen tulkintoja *++Pstack->top = item *Pstack->top++ = item (*Pstack->top)++ *(Pstack++)->top = item *(++Pstack)->top = item Lisää pinon toteutuksia Dynaaminen taulukko

Lisätiedot

Harjoitus 6 (viikko 42)

Harjoitus 6 (viikko 42) Nämä ovat kurssin viimeiset harjoitukset. Hyväksytyistä ratkaisuista ja läsnäoloista kerättyjen pisteiden summan tulee olla vähintään 4 % (2 pistettä) tehtävien ja läsnäolopisteiden kokonaislukumäärien

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 9.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 9.2.2009 1 / 35 Listat Esimerkki: halutaan kirjoittaa ohjelma, joka lukee käyttäjältä 30 lämpötilaa. Kun lämpötilat

Lisätiedot

PALAUTUKSEN PERUSTOIMINNALLISUUDEN KUVAUS

PALAUTUKSEN PERUSTOIMINNALLISUUDEN KUVAUS PALAUTUKSEN PERUSTOIMINNALLISUUDEN KUVAUS Palautuksen tekemiseen liittyvät seuraavat vaiheet: Sovi asiakkaan kanssa tuotteen palautuksesta haluamallasi tavalla Varmista, että asiakkaan sähköpostiosoite

Lisätiedot