Sisällön automaattinen moniluokittelu Toteutusdokumentti v0.6

Koko: px
Aloita esitys sivulta:

Download "Sisällön automaattinen moniluokittelu Toteutusdokumentti v0.6"

Transkriptio

1 Sisällön automaattinen moniluokittelu Toteutusdokumentti v0.6 Helsinki 29. marraskuuta 2002 HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Ohjelmistotuotantoprojekti Samo Marko Konttinen Tarmo Pellikka Pia Rantalahti Kari Silén Markku Vahter Pirkko Wahlström

2 i VERSIOHISTORIA Versio Pvm Kommentti Tekijä(t) Ensimmäinen raakaversio Marko Konttinen, Kari Silén Supistettu ja lisätty osioita Marko Konttinen, Kari Silén Lisätty liite configsystem.dtd Marko Konttinen Korjattiin samo.utils paketin ja Marko Konttinen indekserin osalta Korjattiin samo.utils paketin ja Marko Konttinen indekserin osalta Lisätty viittaukset suunnitteludokumenttiin ym. Kari Silén

3 ii SISÄLTÖ Versiohistoria...i Sisältö... ii 1 Johdanto Ohjelmiston kuvaus Tärkeimmät vaatimukset Muutokset Osajärjestelmien toteutuspoikkeamat samo.utils paketti (uusi) Config ( ) DOMHelper (uusi) StreamStringTokenizer (uusi) Indekseri ( 3 ) Tietokanta ( 3.2 ) Indexer ( ) IndexDataImpl implements IndexData ( uusi ) DocumentRef ( ) Index ( ) IndexMain ( ) RDFIndexer ( ) Fdg ( 4 ) Sentence ( ) Interface SentenceParser ( ) SocketFdg ( ) Hakukone ( 5 ) Node ( ) NodeAnd ( ) NodeNot ( ) NodeOr ( ) NodeTerm ( ) Ontology ( ) Parser ( ) Processer ( ) SearchEngine ( ) SearchException extends Exception (uusi) Term ( ) Käyttöliittymä ( 6 ) HTML-sivut ( 6.3 ) SearchServlet ( 6.4.2) SearchGui ( 6.4.2)...18 Liite: configsystem.dtd...19

4 _ Järjestelmä 1 1 JOHDANTO Tässä dokumentissa kuvataan Helsingin yliopiston tietojenkäsittelytieteen laitoksen (TKTL) ohjelmistotuotantoprojektissa Samo-ryhmän tekemän ohjelmiston toteutus niiltä osin, kun on poikettu suunnitteludokumentista. Samo-ryhmän jäsenet ovat Tarmo Pellikka, Marko Konttinen, Pia Rantalahti, Kari Silén, Markku Vahter ja Pirkko Wahlström. Ryhmän ohjaajana toimii Jenni Valorinta. Ryhmän asiakas on Eero Hyvönen. 1.1 Ohjelmiston kuvaus Samo-järjestelmä muodostuu kahdesta kokonaisuudesta: Indexer ja Hakukone. Indexer muodostaa museotietokannasta Fdg-morfologia-analysaattorin avulla hakemiston. Hakukone (SearchEngine) tekee hakemistosta hakuja laventaen niitä Ontologian avulla. Käyttöliittymässä käyttäjä antaa hakusanan tai hakusanojen yhdistelmän ja haun syvyyden ja Hakukone palauttaa löydettyjen viitteiden painoarvon mukaan järjestetyn listan. Järjestelmä on tarkoitettu Finnish Museum Online (FMO) projektin käyttöön. Järjestelmä on toteutettu Java-kielellä (1.3.0) ja se käyttää apuna Connexor Oy:n morfologista analysaattoria Fdg3 sekä HP Labs:n Jena-API:a RDF-mallien käsittelyyn. Toteutuksessa on käytetty CVS-versionhallintatyökalua. Ohjelmisto sisältää paketit samo.indexer, samo.fdg, samo.searchengine, samo.searchgui, samo.utils (jar) ja erikseen SearchServletin (class) ja HTML-sivut. 1.2 Tärkeimmät vaatimukset Järjestelmän tärkeimmät vaatimukset ovat seuraavat: pystyy tuottamaan indeksin annetuista RDF-muotoisista museokorteista. Järjestelmä pystyy suorittamaan käyttäjän antaman hakulauseen muotoisen haun indeksistä samalla hyödyntäen ontologian tarjoamaa tietoa käsitteiden välisistä suhteista. 1.3 Muutokset Muutoksiin on merkitty viittaus suunnitteludokumentin vastaaviin kohtiin tai jos on tehty kokonaan uusi paketti, luokka tai metodi, viittauksessa on merkintä uusi.

5 2 2 OSAJÄRJESTELMIEN TOTEUTUSPOIKKEAMAT Järjestelmä on organisoitu neljäksi osajärjestelmäksi: indekseri, fdg, hakukone ja käyttöliittymä. Paketti samo.utils lisättiin osaksi järjestelmää suunnittelun jälkeen. Tähän pakettiin on koottu luokkia, jotka ovat luonteeltaan aputyökaluja. Pakettiin kuuluvat luokat eivät muodosta varsinaisesti omaa osajärjestelmäänsä Synonyymien käsittelyä ei toteutettu tässä projektissa. Asiasta sovittiin asiakkaan kanssa projektiryhmän kokouksessa samo.utils paketti (uusi) Luokka Config siirrettiin Indekseri osajärjestelmästä osaksi samo.utils pakettia, koska sekä hakukone, että indekseri käyttävät sitä ja kummankin toiminta riippuu oleellisesti siitä Config ( ) Luokan Config tehtävä on edelleen oleellisesti sama, joksi se suunnitteludokumentissa kuvattiin. Pieniä muutoksia tosin tehtiin. Konfiguraatiotiedoston configsystem, josta Config lukee systeemin asetukset, dtd-määrittelyä muutettiin hiukan vapaammaksi laskemalla jotkin sen elementit valinnaisiksi johtuen hakukoneen ja indekseri hieman toisistaan eroavista käyttötavoista. public java.lang.string getfdglocation() Kertoo käytettävän morfologisen analysaattorin Fdg3:n osoitteen Stringinä. getfdglocation Metodin getfdghostname nimi muutettiin getfdglocation:ksi yhdenmukaisuuden vuoksi. Metodia muutettiin myös niin, että se palauttaa URL:n sijasta Stringin, sillä fdg ei edellytä osoitteen osana protokollaa. public java.lang.string getindexlocation() Palauttaa käytettävän tietokannan osoitteen Stringinä. Metodia muutettiin siten, että se palauttaa URL:n sijasta Stringin, sillä tietokanta käyttää protokollaa, jota URL ei hyväksy.

6 3 public StreamStringTokenizer getstopwordlist() Metodia muutettiin s.e. se palauttaa hukkasanalistan StreamStringTokenizeroliona ei List:ana. configsystem.dtd (Liite 2) Konfiguraatiotiedoston dtd-määrittelyyn (liite) tehtiin seuraavat muutokset: OntologyLocation Ontologian sijainti - ei ole pakollinen, koska indekseri ei käytä ontologiaa. Hakukone sen sijaan edellyttää ontologiaa, joten hakukoneen konfiguraatiotiedostossa tulee ontologia luonnollisesti antaa. Indekserin ja hakukoneen ei siis tarvitse käyttää samaa konfiguraatiotiedostoa vaikka se onkin kätevää. user Lisättiin elementti, jossa annetaan indeksin käyttämän tietokannan asetukset ja jolla on attribuutit name ja password. stoplistlocation Lisättiin elementti, jossa annetaan käytettävän hukkasanalistan sijainti URLmuodossa. properties Elementin suhteen määrittelyä muutettiin niin, ettei se ole pakollinen. Tällöin indekseri indeksoi materiaalista kaikki ominaisuudet DOMHelper (uusi) DOMHelper on apuluokka DOM-muotoisen xml-dokumentin käsittelyyn. Konstruktorit: public DOMHelper() Luo uuden DOMHelper olion. public static java.lang.string gettextcontent(org.w3c.dom.node parent)

7 4 Palauttaa annetun solmun tai sen välittömien lapsien tekstisisällön. Jos solmulla on useampia TEXT_NODE lapsia, niiden sisältö katenoidaan palautettavaan tulokseen siinä järjestyksessä, kuin ne lapset esiintyvvät dokumentissa. Lapsenlapsia ei käsitellä. public org.w3c.dom.document getdocument(java.io.reader data) Luo tietovirrasta xml-dokumentin (DOM), jos tietovirta sisältää hyvin muodostunutta xml:ää StreamStringTokenizer (uusi) Paloittelee tietovirran paloihin joita erottavat 'white space' merkit: välilyönti, rivinvaihto, tabulaattori jne... Konstruktorit: public StreamStringTokenizer(java.io.Reader reader) Paloitellaan parametrina annettu tietovirta. public static void main(java.lang.string[] args) Käyttää sisääntulovirtana oletussyötettä Tulostaa oletus-tulostus kanavaan Esim. tiedoston käsittely komentoriviltä: java.samo.utils.streamstringtokenizer < teksti.txt public boolean hasmoretokens() Palauttaa true niin kauan kuin tietovirrasta löytyy kamaa. public java.lang.string nexttoken() Antaa tietovirrasta aina palasen kerrallaan. 1. kerralla antaa ensimmäisen palasen ja tämän jälkeen aina seuraavan niin kauan kuin tietovirtaa riittää. 2.2 Indekseri ( 3 ) Suunitteludokumentissa normalisoidun TF*IDF painon laskemiseen käytettävässä kaavassa oli virhe: nimittäjästä puuttui neliöjuuri.

8 5 Oikea kaava on: tfidf t k, d j / s= 1toT tfidf t s, d j 2 (teknisistä syistä laatikko neliöjuuren alla nimittäjässä edustaa summamerkkiä - iso sigma. ) Eli normalisoitu tf*idf arvo saadaan siis kun jaetaan tf*idf-arvo ko. dokumenttivektorin euklidisella pituudella, jolloin normalisoitu paino saa reaalilukuarvon väliltä [0,1] Tietokanta ( 3.2 ) Tietokantaan on määritelyt kaksi eri käyttäjää, samo_indexer ja samo_searcher - toinen hakukonetta ja toinen indekseriä varten. Hakukoneen käyttäjä tarvitsee tietokantaan vain lukuoikeuden ( SELECT ). Indekserin käyttäjä tarvitsee lukuoikeuden lisäksi muokkaus- ( UPDATE, INSERT ) ja poisto-oikeudet (DELETE). Taulujen luoja saa nämä oikeudet oletusarvoisesti, joten oli luontevaa luoda nämä taulut samo_indexer:n nimissä. Hakukonetta varten samo_searcherille myönnettin lukuoikeudet: GRANT SELECT ON TABLE term TO samo_searcher; GRANT SELECT ON TABLE about TO samo_searcher; GRANT SELECT ON TABLE docref TO samo_searcher; GRANT SELECT ON TABLE property TO samo_searcher; Taulun docref tietueiden pääavain (primary key) on juokseva numero, jota varten määriteltiin sekvenssi: CREATE SEQUENCE docref_id_sequence START 0; Indexer ( ) public void index(string text, Map result) throws IndexException Pseudokoodiin tehtiin pieni lisäys. Metodin päätyttyä täytyy tyhjentää virkkeet, jotta niitä ei indeksoida uudestaan.

9 6 public void addtostoplist(string token) Pieni täsmennys suunnitteludokumenttiin: Estolistalle lisättävä sana(t) on oltava perusmuodossa. private void findterms(sentence s,map result) Tehtiin lisäys pseudokoodiin. Useat eri termihahmot voivat löytää täsmälleen saman termin, siksi jo löydetyt termit lisätään joukkoon set, jotta samaa termiä ei lisättäisi useaan kertaan tulokseen IndexDataImpl implements IndexData ( uusi ) add() Lisättiin metodi, joka kasvattaa löytyneiden termien määrää yhdellä DocumentRef ( ) Attribuutit: keyterm DocumentRef:lle lisättiin attribuutti ja tälle aksessori keyterm, joka palauttaa attribuutin keyterm arvon. Attribuutti annetaan konstruktorin parametrina, joten myös konstruktoria muutettiin tältä osin. Konstruktorit: Konstruktori: DocumentRef(String about, String keyterm) Lisättiin parametri keyterm, joka asettaa samannimisen attribuutin arvon. public boolean equals(object object)

10 7 Kertoo onko parametrina annettu objekti yhdenmukainen tämän kanssa. Parametrina annettu objekti on yhdenmukainen, jos se on tyyppiä DocumentRef, viittaa samaan resurssiin ja sillä on sama hakutermi. public boolean targetequals(object object) Palauttaa true, jos parametrina annettu objekti on tyyppiä DocumentRef ja viittaa samaan kohteeseen kuin tämä. public java.lang.string keyterm() Kertoo viitteen hakusanan Index ( ) Attribuutit: String username String userpasswor Indeksin konstruktoriin lisättiin kaksi uutta attribuuttia, jotka se saa konstruktorin attribuutteina: Konstruktorit: public Index( java.lang.string dbhostname, int dbport, java.lang.string username, java.lang.string userpassword) IndexMain ( ) IndexMain Toimintaa muutettiin hieman suunnitteludokumentissa spesifioidusta joustavamman käytettävyyden saavuttamiseksi: Tietokantaa ei automaattisesti tyhjennetä ennen annetun materiaalin indeksoimista, vaan tyhjentäminen (alustus) täytyy määrätä antamalla komentoriviparametrin reset arvoksi 'YES'. Tämä mahdollistaa materiaalin indeksoimisen useammassa erässä.

11 8 Indeksointi edellyttää käyttäjältä oikeuksia indeksinä käytettävän tietokannan taulujen päivittämiseen ja poistamiseen. Käyttäjän tunnus ja salasana voidaan antaa konfiguraatiotiedostossa tai komentoriviparametreina. IndexMain voidaan käynnistää indeksoinnin lisäksi myös erikseen tietokannan alustusta tai painojen laskemista varten. Mikäli toinen tai molemmat näistä toiminnoista halutaan suorittaa eri ajokerralla kuin indeksointi, tulee sourceconfig komentoriviparametri jättää pois ja määrittää suoritettava toiminto parametrilla reset tai updateweights. Nämä parametrit saavat arvokseen joko YES tai NO. Indekserin käyttö on tarkemmin selitetty käyttöohjeessa. Indekseri voi siis saada seuraavat komentoriviparametrit, joista systemconfig on pakollinen. NIMI SystemConfig SourceConfig UserName UserPassword Reset UpdateWeights ARVO url osoite systeemikonfiguraatiotiedostoon. url osoite lähdekonfiguraatiotiedostoon. Anna tämä parametri, jos haluat indeksoida jotain. Anna käyttäjänimi, jos tietokanta edellyttää sitä, eikä sitä ole annettu systemconfig -tiedostossa. Anna salasana, jos tietokanta edellyttää sitä, eikä sitä ole annettu systemconfig -tiedostossa. YES tai NO. Oletusarvo on NO. Suoritetaan ennen indeksointia. YES tai NO. Oletusarvo on YES. Suoritetaan inedksoinnin jälkeen RDFIndexer ( ) Indeksoinnin toimintaa muutettiin siten, että jos ominaisuuksien nimiä ei anneta, haetaan kaikki ominaisuudet, jotka löytyvät RDQL-tripletillä (?about,?predicate,?object). Metodia index muutettiin siten, että se saa URL:n sijasta parametrikseen Reader:n, joka sisältää käsiteltävän tiedoston sisällön: public void index(reader rdfdata) Parametri muutettu URL:sta Reader:ksi

12 9 2.3 Fdg ( 4 ) Fdg osajärjestelmän tehtävänä on tarjota rajapinta Connexorin ( luonnollisen kielen analysaattoriin Fdg3. Analysaattori pätkii sille tuotetun tekstin virkkeiksi. Se tuottaa virkkeen sanoille sekä morfologista informaatiota, että informaatiota sanojen suhteesta toisiinsa Sentence ( ) tostring() Lisättiin metodi, joka palauttaa virkkeen samaan tapaan kuin Fdg3:n tekstimuotoinen output Interface SentenceParser ( ) Sentence analyse(string onesentence) throws SentenceParseException Rajapintaan lisättiin yksi metodi testaamisen helpottamiseksi. Metodi ottaa parametrinaan yhden virkkeen ja palauttaa sen analysoituna SocketFdg ( ) SocketFdg tarjoaa pistokeyhteyden Connexorin Fdg3 palvelimeen. Atribuutit: host Lisättiin atribuutti palvelimen nimi. port Lisättiin atribuutti palvelimen portti

13 10 Konstruktorit: Token(int position) Luo uuden sanan. Paramertinaan konstruktori saa position virkkeessä. Sentence analyse(string onesentence) throws SentenceParseException Lisättiin metodi, koska se lisättiin SentenceParser rajapintaan. tostring() Lisättiin metodi testauksen helpottamiseksi. Metodi palauttaa sanan samassa muodossa kuin Fdg3:n tekstimuotoinen tulostus. 2.4 Hakukone ( 5 ) SearchException Hakukoneseen lisättiin toteutusvaiheessa oma poikkeusluokka. Hakukoneeseen kuuluvat luokat muodostavat paketin samo.searchengine Node ( ) Attribuutit: Poistettiin turha Set-tyyppinen muuttuja references. public Set processnode (Processer p) throws SearchException Laitettiin metodi heittämään SearchException-poikkeus. public void preprocess (Processer p, int ontologylevel) throws SearchException Laitettiin metodi heittämään SearchException-poikkeus.

14 NodeAnd ( ) private Set cut(set leftchild, Set rightchild) Cut-metodi suorittaa matemaattisen leikkausoperaation kahdelle joukolle. Metodin toimintaa tarkennettu eli etsitään palautettavaan joukkoon ne viitteet, jotka löytyvät sekä solmuun liittyvästä vasemmasta että oikeasta lapsesta ja näistä kahdesta viitteestä palautettavaan joukkoon otetaan se, jonka paino on suurempi NodeNot ( ) public void preprocess (Processer p, int ontologylevel) throws SearchException NodeNot-luokan preprocess metodi toimii niin, että oikeanpuoleisten lapsisolmujen termejä ei laajenneta eli oikean lapsen preprocess-metodin kutsussa määritetään laajennustasoksi 0. NodeAnd- ja NodeOr luokka käyttää Node-yläluokassa toteutettua preprocess-metodia NodeOr ( ) private Set union(set leftchild, Set rightchild) Union-metodi suorittaa matemaattisen yhdisteoperaation kahdelle joukolle. Metodi ottaa mukaan palautettavaan joukkoon viitteet, jotka löytyvät solmun vasemmasta tai oikeasta lapsesta. Tarkennettu painojen käsittelyä eli jos viite löytyy molemmista joukoista, otetaan paluujoukkoon mukaan se viite, jonka paino on suurempi NodeTerm ( ) Attribuutit: term Lisättiin attribuutti kuvaamaan alkuperäistä termiä.

15 12 public void preprocess(processer p, int level) throws SearchException Laitettiin metodi heittämään SearchException-poikkeus. Muutos pseudokoodiin siten, että metodi ei enää selvitä termin synonyymejä ja termien lisäämiseen käytetään addterms-metodia. public Set processnode(processer p) throws SearchException Laitettiin metodi heittämään SearchException-poikkeus. Lisäksi Processerluokan findreferences-metodin kutsu laitettiin try..catch-rakenteen sisään. private void addterms(processer p, List newterms, int type, int depth) throws SearchException Lisättiin kokonaan uusi metodi addterms, joka suorittaa termien lisäämisen terms-listaan. Metodi lisättiin sen vuoksi ettei samoja asioita olisi tarvinnut laittaa useampaan kertaan preprocess-metodiin Ontology ( ) Attribuutit: malli Luokaan on lisätty attribuutti (private Model model), johon Jenan kyselyt kohdistetaan. Konstruktorit: Luodaan konstruktori, jota ei kuormiteta (public Ontology()) eli konstruktorille ei anneta osoitetta käytettävään ontologiaan. ontologytobeused (Reader reader) Muutettiin metodin public Model parsefromrdfs(string uri) nimi. Alustaessaan hakukoneen SearchGui-luokka kutsuu metodia ontologytobeused, jolla asetetaan käytettävä ontologia. change2basic.

16 13 Toinen muutos alkuperäiseen on se, että käyttöön otetaan ontologia, jossa termit on muutettu perusmuotoon utils-luokan metodilla public List getsynonyms(string hakusana) Metodia ei toteutettu, koska haut tehdään ontologiaan, joka on rdfsmuotoinen. rdfs-tiedosto ei sisällä propertyä synonyymi. Synonyymi-haun voi toteuttaa rdf-muotoiseen tiedostoon, kun tiedetään, miten synonyymi-property on rdf:ään merkitty. public List getsubclasses (String hakusana) Metodi kutsuu kyselyn suoritukseen metodia executequery. public List gethomonyms(string hakusana) Metodi kutsuu kyselyn suoritukseen metodia executequery. private Vector executequery(string querystring) Lisätty edellä mainittu metodi, joka suorittaa parametrinä saamansa Jenakyselyn malliin. Metodi palauttaa kyselyn tuloksen sitä kutsuneelle metodille, jotka tässä tapauksessa ovat getsubclasses ja gethomonymes Parser ( ) Kaikki Parser-luokan metodit heittävät nyt Exceptionin sijaan SearchExceptionin. Rajoitukset ja parannusehdotukset Parseri ei käsittele järkevästi hakulauseita, joissa ei käytetä sulkeita ryhmittelyyn. Tällaiset hakulauseet parsitaan mielivaltaisesti, eikä lopputulos välttämättä ole se, mitä käyttäjä on alunperin tarkoittanut. Parseri ei myöskään ymmärrä operaattorilla alkavia hakulauseita eli esimerkiksi hakulause EI kissa ei ole sen mielestä oikeanmuotoinen hakulause. Parseri luo uuden searchstring-olion kulloinkin käsittelyssä olevasta hakulauseen osasta. Parserin tehokkuutta voisi parantaa niin, että pidettäisiin kirjaa hakulauseen käsittelyn vaiheesta index-muuttujan avulla.

17 14 Attribuutit: boolean debug Parser-luokkaan on lisätty testausta varten uusi muuttuja. Sen arvo on oletusarvoisesti false, mutta jos arvoksi asettaa true, voi tulostaa tietoa hakulauseesta muodostuneesta binääripuusta. public Node parsetree(string searchstring) throws SearchException Laitettiin metodi heittämään SearchException-poikkeus. private Node parseoperator(node left) throws SearchException Laitettiin metodi heittämään SearchException-poikkeus. private Node parsesentence() throws SearchException Laitettiin metodi heittämään SearchException-poikkeus. private Node getoperator(string word) throws SearchException Laitettiin metodi heittämään SearchException-poikkeus. private void nexttoken() Metodia muutettiin niin, että se tulkitsee oikein myös sellaiset hakulauseet, joissa ei ole välilyöntiä sulkumerkkien ympärillä eli esimerkiksi hakulause koira(hevonen tai heppa) tulkitaan virheelliseksi hakulauseeksi eikä kahdeksi TAI-operaattorilla erotetuksi hakusanaksi. Samoin metodia korjattiin niin, että se löytää ylimääräisen sulkumerkin myös hakulauseen lopusta Processer ( ) public float countweight(float weight, Set predicates, int level) throws SearchException

18 15 Laitettiin metodi heittämään SearchException-poikkeus. public boolean findhomonyms(string term) throws SearchException Laitettiin metodi heittämään SearchException-poikkeus. Lisäksi Ontologialuokan metodi olikin nimeltään gethomonymes, ei gethomonyms. public String term2basic(string term) Parser-luokan getlemma-metodin kutsu laitetttiin try..catch-rakenteen sisään. public List findhyponyms(string term) throws SearchException. Laitettiin metodi heittämään SearchException-poikkeus. Ontology-olion metodi jota kutsutaan olikin nimeltään getsubclasses, ei gethyponyms. public Set findreferences(list terms) throws SearchException Metodi muutettiin palauttamaan joukko void:n sijaan. Tämäkin metodi laitettiin heittämään SearchException-poikkeus. Palautettavan joukon nimeksi muutettiin ret, sillä sana final olikin ns. varattu sana. Index-olion getreferences-metodin kutsu laitettiin try..catch-rakenteen sisään. public List sortreferences(set references) Muutettiin asiat toisin päin eli ensin muunnetaan joukko listaksi joka seuraavaksi järjestetään. Lisäksi generoidaan lista, johon tallennetaan DocumentRef-olioista ainoastaan URI string-tyyppisenä ja tämä lista palautetaan SearchEngine ( ) Attribuutit: Tässä ei ole muuta muutosta kuin, että private-muuttujista tehtiin protected. Protected-muuttujat ovat muiden saman paketin luokkien käytettävissä. Ajatus oli, että Processer-luokka olisi voinut käyttää näitä muuttujia SearchEngineluokasta, mutta ne annetaankin Processerille jo kutsussa (mikä oli ihan alkuperäisen suunnitelman mukaista). public void setweight (String field, float weight) throws SearchException

19 16 Laitettiin metodi heittämään SearchException-poikkeus. public abstract List search (String searchstring, int level) throws Exception Laitettiin metodi heittämään SearchException-poikkeus. public void setontology (Ontology ontology) Hashtable weights luodaan nyt tässä metodissa. Alunperin se tehtiin luokan konstruktorissa, mutta se ei onnistu, koska SearchEngine on abstrakti luokka, josta ei luoda oliota SearchException extends Exception (uusi) Lisättiin kokonaan uusi luokka kuvaamaan haussa tapahtuvia poikkeuksia. Parser-luokan heittämät poikkekset on kuvattu taulukossa xxx.. Taulukko xxx Parser-luokan heittämät poikkeukset ja niiden merkitys. VIRHEILMOITUS "Virheellinen hakulause" "Sulku hukassa" "Boolen operaattoria ei löydy" "Parse error" SELITYS Virhe hakulauseessa. Hakulauseessa ei ole esimerkiksi hakutermiä operaattorin oikealla puolella. Hakulauseessa ei ole toisiaan vastaavaa määrää vasemman ja oikeanpuoleisia sulkumerkkejä. Hakulauseesta puuttuu Boolen operaattori tai se on väärässä paikassa. Jotain muuta kuin muiden poikkeusten kohdalla mainittua vikaa hakulauseessa Term ( ) Attribuutit: Poistettiin turhana references-attribuutti, jonka oli tarkoitus sisältää termiin liittyviä DocumentRef-olioita. Konstruktorit: public Term(String term, int type) Lisättiin toinen konstruktori ilman level-parametria.

20 Käyttöliittymä ( 6 ) Käyttöliittymä on vaatimusten mukaan tehty hyvin yksinkertaiseksi, mutta poikkeaa suunnitteludokumentin määrittelystä HTML-sivut ( 6.3 ) Aloitussivun syvyys-valinta muutettiin numeeriseksi. Hakulauseen pituutta ei ole rajattu mitenkään SearchServlet ( 6.4.2) public void dopost(httpservletrequest req, HttpServletResponse res) Lisättiin metodi, jotta servlettiä voidaan ajaa myös post-metodilla

21 SearchGui ( 6.4.2) config Ei toteutettu config-metodia, koska SearchGui-luokka käyttää Config-luokkaa konfigurointitiedoston lukemiseen. public static void main (String[] args) Lisättiin metodi, koska haluttiin ajaa myös komentoriviltä. public List callengine (String hakulause, int syvyys) Metodin search nimi muutettiin, koska SearchEngine-luokassa on metodi search. public void readparameters () Lisättiin metodi, koodin selventämiseksi

22 19 Liite: configsystem.dtd <!ELEMENT config (system, (properties)?)> <!-- systeemin asetukset --> <!ELEMENT system (db, fdg, (ontologylocation)?, (stoplistlocation)?)> <!ELEMENT db (user?, location)> <!ELEMENT fdg (location)> <!ELEMENT ontologylocation #PCDATA)> <!-- ei ole pakollinen --> <!ELEMENT stoplistlocation #PCDATA)> <!-- ei ole pakollinen --> <!ELEMENT location (#PCDATA)> <!ATTLIST location port CDATA #REQUIRED> <!-- indeksin käyttäjän tiedot - ei pakolliset --> <!ELEMENT user EMPTY> <!ATTLIST user name CDATA #REQUIRED password CDATA #IMPLIED> <!-- suodatin - ei pakollinen --> <!-- käsiteltävät ominaisuudet --> <!ELEMENT properties (namespace+)> <!ELEMENT namespace (property+)> <!ELEMENT property (#PCDATA)> <!ATTLIST namespace name CDATA #REQUIRED> <!ATTLIST property weight CDATA #REQUIRED>

Sisällön automaattinen moniluokittelu

Sisällön automaattinen moniluokittelu Sisällön automaattinen moniluokittelu Käyttöohje v0.2 Helsinki 3. joulukuuta 2002 HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Ohjelmistotuotantoprojekti samo Marko Konttinen Tarmo Pellikka Pia

Lisätiedot

Sisällön automaattinen moniluokittelu. Testausdokumentti versio

Sisällön automaattinen moniluokittelu. Testausdokumentti versio Sisällön automaattinen moniluokittelu Testausdokumentti versio Helsingin yliopisto Tietojenkäsittelytieteen laitos Ohjelmistotuotantoprojektiryhmä 5. Sisällön automaattinen moniluokittelu (Samo) Marko

Lisätiedot

Sisällön automaattinen moniluokittelu Suunnitteludokumentti v1.01

Sisällön automaattinen moniluokittelu Suunnitteludokumentti v1.01 Sisällön automaattinen moniluokittelu Suunnitteludokumentti v1.01 Helsinki 4. marraskuuta 2002 HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Ohjelmistotuotantoprojekti samo Marko Konttinen Tarmo

Lisätiedot

Sisällön automaattinen moniluokittelu. Määrittelydokumentti Versio 1.2

Sisällön automaattinen moniluokittelu. Määrittelydokumentti Versio 1.2 Sisällön automaattinen moniluokittelu Määrittelydokumentti Versio 1.2 Helsingin yliopisto Tietojenkäsittelytieteen laitos Ohjelmistotuotantoprojektiryhmä 5. Sisällön automaattinen moniluokittelu (Samo)

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

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

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

Javan perusteita. Janne Käki

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

Lisätiedot

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

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

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

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

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

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

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

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

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

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

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

Lisätiedot

Sisältö. 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

16. Javan omat luokat 16.1

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

Lisätiedot

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

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

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

Lisätiedot

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

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

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

Lisätiedot

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

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

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

Rajapinnasta ei voida muodostaa olioita. Voidaan käyttää tunnuksen tyyppinä. Rajapinta on kuitenkin abstraktia luokkaa selvästi abstraktimpi tyyppi.

Rajapinnasta ei voida muodostaa olioita. Voidaan käyttää tunnuksen tyyppinä. Rajapinta on kuitenkin abstraktia luokkaa selvästi abstraktimpi tyyppi. 11. Rajapinnat 11.1 Sisällys Johdanto. Abstrakti luokka vai rajapinta? Rajapintojen hyötyjä. Kuinka rajapinnat määritellään ja otetaan käyttöön? Eläin, nisäkäs, kissa ja rajapinta. Moniperiytyminen rajapintojen

Lisätiedot

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

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

Lisätiedot

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

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

Tietokannat II -kurssin harjoitustyö

Tietokannat II -kurssin harjoitustyö Tietokannat II -kurssin harjoitustyö Olli Opiskelija (123), olli.opiskelija@foo.fi Maija Mallioppilas (321), maija.mallioppilas@foo.fi 13.3. 2007 1 Sisältö 1 Tietokannan kuvaus 3 1.1 Tietokannan rakenne..................................

Lisätiedot

Tietokannat II -kurssin harjoitustyö

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

Lisätiedot

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

Sisällys. 11. Rajapinnat. Johdanto. Johdanto Sisällys 11. ajapinnat. bstrakti luokka vai rajapinta? ajapintojen hyötyjä. Kuinka rajapinnat määritellään ja otetaan käyttöön? Eläin, nisäkäs, kissa ja rajapinta. Moniperiytyminen rajapintojen avulla.

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

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

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

Lisätiedot

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

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

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

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

Java-kielen perusteet

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

Lisätiedot

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

7. Näytölle tulostaminen 7.1

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

Lisätiedot

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

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

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

Lisätiedot

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

Ylläpitodokumentti. Ohjelmistotuotantoprojektin tietojärjestelmä OhtuTie

Ylläpitodokumentti. Ohjelmistotuotantoprojektin tietojärjestelmä OhtuTie Ylläpitodokumentti Ohjelmistotuotantoprojektin tietojärjestelmä OhtuTie Helsinki 16.7.2004 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti

Lisätiedot

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

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

Lisätiedot

Sisällys. JAVA-OHJELMOINTI Osa 6: Periytyminen ja näkyvyys. Luokkahierarkia. Periytyminen (inheritance)

Sisällys. JAVA-OHJELMOINTI Osa 6: Periytyminen ja näkyvyys. Luokkahierarkia. Periytyminen (inheritance) Sisällys JAVA-OHJELMOINTI Osa 6: Periytyminen ja näkyvyys Periytyminen (inheritance) Näkyvyys (visibility) Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto 13.10.2000 E. Hyvönen: Java Osa

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

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

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

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

Lisätiedot

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

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

Java ja tietokannan käsittely (JDBC)

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

Lisätiedot

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

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

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

Lisätiedot

9. Periytyminen Javassa 9.1

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

Lisätiedot

13. Loogiset operaatiot 13.1

13. Loogiset operaatiot 13.1 13. Loogiset operaatiot 13.1 Sisällys Loogiset operaatiot AND, OR, XOR ja NOT. Operaatioiden ehdollisuus. Bittioperaatiot. Loogiset operaatiot ohjausrakenteissa. Loogiset operaatiot ja laskentajärjestys.

Lisätiedot

Luokan sisällä on lista

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

Lisätiedot

Tässä tehtävässä käsittelet metodeja, listoja sekä alkulukuja (englanniksi prime ).

Tässä tehtävässä käsittelet metodeja, listoja sekä alkulukuja (englanniksi prime ). Tehtävä 1: Metodit, listat, alkuluvut (4p) Tässä tehtävässä käsittelet metodeja, listoja sekä alkulukuja (englanniksi prime ). Alkuluvut ovat lukuja, jotka ovat suurempia kuin yksi ja jotka ovat jaollisia

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

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

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

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

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

Lisätiedot

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

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

Lisätiedot

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

Pakkauksen kokoaminen

Pakkauksen kokoaminen 13. Pakkaukset 13.1 Sisällys Pakkauksen kokoaminen package-määrettä käyttäen. Pakkaukset ja hakemistorakenne. Pakkauksen luokkien käyttö muissa pakkauksissa importlauseen avulla. Pakkaukset ja näkyvyys.

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

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

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

Lisätiedot

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

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

Osio 4: Tietovirrat. Properties- eli ominaisuustiedostot Logger: lokitietojen käsittely

Osio 4: Tietovirrat. Properties- eli ominaisuustiedostot Logger: lokitietojen käsittely Properties- eli ominaisuustiedostot Logger: lokitietojen käsittely 1 Ominaisuudet Kun tutkimme työasemapohjaisia sovelluksiamme, tarvitaan joskus tietoa: mikä on käyttöjärjestelmä mikä on käytössä oleva

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

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

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

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

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

Lisätiedot

1. Omat operaatiot 1.1

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

Lisätiedot

Poikkeustenkäsittely

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

Lisätiedot

OutputStream ja InputStream. Tietovirrat ja niiden suunnat. Tietovirtojen käyttö. FileInputStream esimerkki. DataOutputStream ja DataInputStream

OutputStream ja InputStream. Tietovirrat ja niiden suunnat. Tietovirtojen käyttö. FileInputStream esimerkki. DataOutputStream ja DataInputStream Tietovirrat ja niiden suunnat Output stream Koodi Tiedosto OutputStream ja InputStream OutputStream (abstrakti) FileOutputStream Tallennus tavuina ObjectOutputStream Olioiden tallennus FilterOutputStream

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

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

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

CINAHL(EBSCO) käyttöohjeita (10/2010)

CINAHL(EBSCO) käyttöohjeita (10/2010) CINAHL(EBSCO) käyttöohjeita (10/2010) Sisältö 1. Katkaisumerkki, sanojen yhdistely, fraasihaku... - 1-2. Advanced Search haku vapailla hakusanoilla... - 1-3. Haku asiasanoilla (CINAHL Headings)... - 2-4.

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

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

Poikkeusinfo XML-rajapinnan kuvaus, rajapinnan versio 2 Seasam Group

Poikkeusinfo XML-rajapinnan kuvaus, rajapinnan versio 2 Seasam Group 1.10.2010 1(15) Poikkeusinfo XML-rajapinnan kuvaus, rajapinnan versio 2 Seasam Group Graanintie 7 Tel. + 358 15 338 800 FIN-50190 MIKKELI Fax + 358 15 338 810 VERSIOHISTORIA Versio Pvm Tekijä Selite 1.0

Lisätiedot

17. Javan omat luokat 17.1

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

Lisätiedot

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena Ohjelmointikielet ja -paradigmat 5op Markus Norrena Ko#tehtävä 4 Viimeistele "alkeellinen kuvagalleria". Käytännössä kaksi sivua Yksi jolla voi ladata kuvia palvelimelle (file upload) Toinen jolla ladattuja

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

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti

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

Lisätiedot

TIETOKANTA MERIKOTKIEN SEURANTAAN Toteutusdokumentti. Versiohistoria:

TIETOKANTA MERIKOTKIEN SEURANTAAN Toteutusdokumentti. Versiohistoria: TIETOKANTA MERIKOTKIEN SEURANTAAN Toteutusdokumentti Versiohistoria: Versio Päivämäärä Kuvaus Tekijä 0.1 23.05.04 Ensimmäinen luonnos Timo 0.2 25.05.04 Toinen luonnos Timo 1.0 30.05.04 Ensimmäinen versio

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

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

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

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

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

Lisätiedot

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

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

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