Sisällön automaattinen moniluokittelu Toteutusdokumentti v0.6
|
|
- Sanna Aho
- 8 vuotta sitten
- Katselukertoja:
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 Käyttöohje v0.2 Helsinki 3. joulukuuta 2002 HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Ohjelmistotuotantoprojekti samo Marko Konttinen Tarmo Pellikka Pia
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
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
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)
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
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
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.
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ä).
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,
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.
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.
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ää
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
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
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:
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
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ä
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
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)
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ä
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
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:
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
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.
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).
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
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ä
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ä
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
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ä,
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
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ä
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..................................
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
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.
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
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
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
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,
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.
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
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
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
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
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)
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ä
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)
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
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
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
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
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
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
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
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
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
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
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
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
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.
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ä
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
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
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
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
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
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
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
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.
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
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:
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;
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
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
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
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
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
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
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
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
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
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
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
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.
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
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.
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ö
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
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
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)
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
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)
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
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
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.
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ä
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
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
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
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