OS3 Toteutusdokumentti
|
|
- Aki Saarinen
- 4 vuotta sitten
- Katselukertoja:
Transkriptio
1 OS3 Toteutusdokumentti Teemu Ajalin Lauri Jokipii Anu Määttä Juho Peltonen Nuutti Rintala Mikko Suonio Helsinki 28. toukokuuta 2003 Ohjelmistotuotantoprojekti Toteutusdokumentti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos
2 Dokumentin versiohistoria Dokumenttipohjan ensimmainen versio, kopio suunnitteludokumentista poistettu opintokokonaisuuslomakkeen dynaaminen osa Lisätty opintojen tilan visualisoinnin javadocit lisätty liitteisiin create-table-lauseet Javadocien liittämiseen rakenteellinen muutos (->rakenne_visu.tex). Muita pieniä muutoksia Kuvatiedostojen valinnat ja sijoittelut. toteutusdokumentti.tex:iin lähteet Koostettu, yhtenäistetty ja oikoluettu versio
3 Sisältö 1 Johdanto (Teemu) 1 2 Opintojen tila (Lauri) Yleiskuvaus (Lauri) Muutokset suunnitteludokumenttiin OpintojenTilanVisualisointi-servlet (Lauri) Piirto-luokka (Anu) VerkkoPlus-luokka (Teemu) Verkko-luokka (Lauri) Solmu-luokka (Lauri) Kaari-luokka (Lauri) Luokka OpintojenTilanVisualisointi Esittely Kenttien yhteenveto Metodien yhteenveto Kentät Metodit Luokka Piirto Esittely Kenttien yhteenveto Konstruktorien yhteenveto Metodien yhteenveto Kentät Konstruktorit Metodit Luokka VerkkoPlus Esittely Kenttien yhteenveto Konstruktorien yhteenveto Metodien yhteenveto Kentät Konstruktorit Metodit Luokalta os3.visualisointi.verkko perityt jäsenet in 2.6, page Luokka Verkko Esittely Kenttien yhteenveto Konstruktorien yhteenveto Metodien yhteenveto Kentät Konstruktorit Metodit Luokka Solmu Esittely
4 2.7.2 Kenttien yhteenveto Konstruktorien yhteenveto Metodien yhteenveto Kentät Konstruktorit Metodit Luokka Kaari Esittely Kenttien yhteenveto Konstruktorien yhteenveto Metodien yhteenveto Kentät Konstruktorit Metodit Havaitut puutteet ja ongelmat OpintojenTilanVisualisointi-servlet (Lauri) Piirto-luokka (Anu) Verkko-luokka (Lauri) Opintokokonaisuuslomake (Juho, Mikko, Nuutti) Yleiskuvaus (Juho) Muutokset suunnitteludokumenttiin (Mikko) Muutokset tietokantaan Muutokset ohjelman rakenteeseen Luokka KurssiPidike Esittely Kenttien yhteenveto Konstruktorien yhteenveto Metodien yhteenveto Kentät Konstruktorit Metodit Luokka Lomake Esittely Kenttien yhteenveto Konstruktorien yhteenveto Metodien yhteenveto Kentät Konstruktorit Metodit Luokka LomakeTietokantaOperaatiot Esittely Kenttien yhteenveto Konstruktorien yhteenveto Metodien yhteenveto Kentät Konstruktorit
5 3.5.7 Metodit Luokka Paallekkaisyys Esittely Kenttien yhteenveto Konstruktorien yhteenveto Kentät Konstruktorit Luokka OpintokokonaisuusLomakeServlet Esittely Kenttien yhteenveto Metodien yhteenveto Kentät Metodit Jäsenet, jotka on peritty luokalta opintosu.tietokanta.opintosu Jäsenet, jotka on peritty luokalta javax.servlet.http.httpservlet Jäsenet, jotka on peritty luokalta javax.servlet.genericservlet Muutokset Oodi-otteen sisäänlukuun (Nuutti) Tietokanta Havaitut puutteet, ongelmat ja kehitysideoita Käsitteistö (kaikki) Yhteenveto (Teemu) 134 Lähteet 136 Liitteet A Liite 1. Tietokannan luontiskriptit Tietokannan luontiskriptit
6 1 Johdanto (Teemu) 1 OS3-projekti toteutti Helsingin yliopiston tietojenkäsittelytieteen laitoksen kevään 2003 ohjelmistotuotantoprojekti -kurssina laajennukset Desmond-järjestelmään. Projektin asiakkaita olivat Anni Rytkönen ja Vilho Raatikka. Ohjaajana toimi Jaakko Nurro. Desmond-järjestelmä on kevään 2002 Opintosu- ja syksyn 2002 OS2- ohjelmistotuotantoprojektien tuotteista Juhani Haaviston tammikuussa 2003 integroima järjestelmä, jonka avulla opiskelija voi suunnitella opintojaan. Lisätietoja projekteista on niiden suunnitteludokumenteissa [Haa02, Aho02] ja integroinnista sen toteutusdokumentissa [Haa03]. OS3-projekti toteutti järjestelmään opintojen tilan visualisointiin ja opintokokonaisuuslomakkeen suunnitteluun tarkoitetut toiminnallisuudet. Ne on määritelty tarkemmin projektin vaatimusanalyysissä [Aj103]. Toteutuksen suunnittelu dokumentoitiin suunnitteludokumenttiin [Aj203]. Teemu Ajalin, Lauri Jokipii ja Anu Määttä ovat toteuttaneet opintojen tilan visualisointiin liittyvät toiminnallisuudet. Juho Peltonen, Nuutti Rintala ja Mikko Suonio ovat toteuttaneet opintokokonaisuuslomakkeen toiminnallisuudet. Projektin alkuvaiheessa järjestelmään tehdyistä korjauksista on laadittu oma dokumentti [Pel03]. Tähän dokumenttiin on koottu toteutuksen muutokset verrattuna suunnitteludokumenttiin. Dokumenttien sisältöjä voi siis pahimmassa tapauksessa joutua vertailemaan; kuitenkin, jollei toteutusdokumentista löydy mainintaa muutoksesta suunnitteluun, on se toteutettu suunnitteludokumentin mukaisesti. Etuna tässä ratkaisussa on se, että toteutusdokumentin rakenne pysyi selkeänä. Muutosten määrä on lisäksi vähäinen. Suurin osa tätä dokumenttia koostuu TEXDoclet:lla [XOS03] koostetuista Javadoc-dokumentaatiosta. 2 Opintojen tila (Lauri) Tässä kappaleessa kuvataan opintojen tilan visualisointi-osajärjestelmän toteutettu rakenne. Aluksi selvitetään osajärjestelmän arkkitehtuuria, ja muutosten suunnitteluun kautta kuvauksiin kaikista luokista, metodeista ja kentistä. Lopuksi vielä maininnat toteutuksessa havaituista puutteista ja ongelmista.
7 2 2.1 Yleiskuvaus (Lauri) Opintojen tilan visualisointi -osajärjestelmä koostuu yhdestä servlet-luokasta ja kuudesta muusta luokasta. Luokkakaavio on esitetty kuvassa 1. OpintojenTilanVisualisointiservletistä on erillinen luokkakaaviokuva kuvassa 2, samoin kuin Piirto-luokasta kuvassa 3.
8 Kuva 1: Opintojen tilan luokkakaavio. 3
9 Kuva 2: OpintojenTilanVisualisointi-servletin luokkakaavio. 4
10 Kuva 3: Piirto-luokan luokkakaavio. 5
11 6 Pelkistetysti selitettynä opintojen tilan visualisointi -osajärjestelmä hakee tietokannasta, Desmond-järjestelmään opiskelijan syöttämien tietojen perusteella, opiskelijan suorittamia opintoja ja Desmond-järjestelmässä suunniteltuja opintoja. Opintojen tilan visualisointi -osajärjestelmä esittää nämä tiedot HTML-sivulla visuaalisesti. Pakolliset cum laude approbatur -opinnoista osajärjestelmä luo graafin, kuvan opintojen esitietovaatimusverkosta, osajärjestelmän luokkien avulla. Muut opinnot, kuten valinnaiset cum laude approbatur -opinnot ja laudatur-opinnot, esitetään HTML-sivulla listoina ja tiedot kaikille näille muille osa-alueille haetaan suoraan OpintojenTilanVisualisointi-servletistä käsin. Kaikissa asian omaisissa listoissa näytetään opiskelijan suorittamat ja suunnitellut opintojaksot. Laudatur-opintoihin liittyvissä listoissa, jotka perustuvat opiskelijan valitsemaan suuntautumisvaihtoehtoon ja erikoistumislinjaan, näytetään vielä asian omaisissa listoissa listaan kuuluvia pakollisia opintojaksoja, olivat ne sitten suoritettuja, suunniteltuja tai ei kumpaakaan. 2.2 Muutokset suunnitteludokumenttiin OpintojenTilanVisualisointi-servlet (Lauri) Koska muutokset suunnitteluun ovat valtaisat, muutoksien selvittäminen erikseen olisi lähes koko servletin selostamista uudestaan myöhemmin esitettävän javadoc-listauksen lisäksi, joten selvitys yksityiskohtaisesti sivuutetaan. Sen sijaan hieman perinpohjaisempi selostus OpintojenTilanVisualisointi-servletin toiminnasta lienee paikallaan. Servletin toiminta Servletin toiminta alkaa dokysely-metodista. Metodi asettaa ensin tietorakenteisiin tiedon käyttäjästä (henkilo), sekä tietokantayhteydestä (yhteys). Luo pohjakkeen OpintoSuryhmän tekemän opintosu.kayttoliittyma.pohjake-luokan avulla, sekä asettaa pohjakkeeseen Desmond-järjestelmän tyylitiedoston (css) osoitteen. Lukee asetuksia asetukset -tiedostosta, jälleen OpintoSu-ryhmän tekemän luokan, tällä kertaa opintosu.yleiset.asetukset, avulla ja pohjustaa muut tietorakenteet. Sitten metodi aloittaa tietojen selvittämisen käyttäjän tekemistä valinnoista. Valintojen (parametrit) käyttämisen periaate on, että asetetaan ensin tietorakenteisiin käyttäjän tietokantaan tallentamat arvot, ja vasta sitten parametreina syötetyt arvot, jotta viimeksi mainittu jäisi voimaan mahdollisessa päällekkäisessä tapauksessa.
12 7 Näytettävän osion (cumu, lavi, kaikki) on käyttäjä voinut valita, ja pyyntöön vastataan metodissa asetaopintojentilanne, joka sitten kutsuu vain tarvitut metodit halutun osion tietojen keräämistä varten. Otsikko Otsikko-osaan servlet tulostaa otsikon lisäksi mm. jonkin verran JavaScript-koodia. JavaScriptiä käytetään HTML-sivulla eri vuosien tutkintovaatimusten vaihtamiseen valintalistalla. HTML-sivu toimii kyllä ilmankin JavaScriptiä, mutta eri vuosien tutkintovaatimusten hakemiseen tarvitaan tällöin uusi lataus. Otsikon tulostus riippuu myös valitusta osiosta. Mikäli valittuna on cumu tai lavi, niin otsikkoon tulostetaan valitun osion nimi: Cum laude tai Laudatur. Cum laude approbatur Cum laude approbatur -opintojen tulostamisesta erityisen maininnan vaatii kaksi asiaa. Ensiksi pakollisten cum laude approbatur -kurssien verkkokuvan muodostaminen. Jos servletiä ladataan ensimmäistä kertaa, niin kuva joudutaan luonnollisesti muodostamaan tietokannasta löytyvillä opiskelijaa koskevilla tiedoilla. Kuvan muodostamisen hoitaa os3.visualisointi.piirto-luokka. Mutta jos servletiä ladataankin toista tai useampaa kertaa (sama opiskelija, sama istunto), eli käytännössä servletin kutsu on lähtenyt servletin tulostamalta sivulta, niin silloin muistetaan ensimmäisellä latauskerralla luotu kuva, joka näytetään opiskelijalle vain uudestaan. Riski tässä viimeksi mainitussa on, että opiskelijalla on useampi selainikkuna samaan aikaan auki, joista yhdessä opiskelija esimerkiksi suunnittelee opintojaan (ts. tekee muutoksia tietokantaan suunnitelmiinsa tai suorituksiinsa) ja toisessa katselee muuttuvaa tilannetta lataamalla sivua uudestaan, jolloin tilanne ei pääse muuttumaan, tehdyn ominaisuuden vuoksi. Toinen erityisen maininnan vaativa on pakollisten cum laude approbatur -kurssien opintoviikkojen hakeminen metodilla haecumupakvaaditutopintoviikot. Metodissa oleva tietokanta haku hakee siis opiskelijan suorittamat pakolliset vanhat approbatur ja cum laude approbatur -kurssit. Äskeiseen joukkoon lisätään (yhdistetään) kurssit joita luennoidaan nyt, tulevana tai sitä seuraavana lukukautena, ja jotka kuuluvat myös pakollisiin cum laude approbatur -kursseihin. Viimeksi mainitusta luennoitavien kurssien joukosta leikataan pois ennen yhdistämistä opiskelijan suorittamat kurssit sekä niitä vastaavat kurssit. Maininta on erityisen tärkeä, sillä varsinaisten näytettävien kurssien joukko haetaan sa-
13 8 manlaisella metodilla luokassa os3.visualisointi.verkko. Vain palautusarvot ovat näissä metodeissa eriävät, joten jos toiseen tekee muutoksia, on toiseenkin syytä tehdä samat muutokset. Laudatur Laudatur-opintojen tulostuskin vaatii muutaman erityisen maininnan. Ensiksi pro gradu -tutkielman tulostaminen, joka on koodissa isoilla näkyvillä kommenteilla erotettu muusta koodista. Tulostaminen tehdään nyt ns. kovakoodauksena, eli tietoja ei haeta tietokannasta. Tämä siksi, että tiedot yksinkertaisesti puuttuvat tietokannasta, ainakin nyt meidän toteutusvaiheen aikaan. Sen verran taustatöitä asian eteen kuitenkin tein, että selasin vanhoja opinto-oppaita aina vuoteen 1996 asti ja huomasin pro gradu -tutkielmasta saatavien opintoviikkojen olevan vakiot. Opettajien suuntautumisvaihtoehdoissa 10 opintoviikkoa ja muilla 16, mutta riski tiedon muuttumiselle on tietenkin olemassa. Toinen huonopuoli kovakoodauksessa on, että pro gradun esitietoja ei saada mistään jolloin oletukseksi tekemäni "ei voi vielä suorittaa"on aina voimassa, vaikka todellinen tilanne ei niin olisikaan. Toisena valinnaisten cum laude approbatur -kurssien tulostaminen laudaturin valinnaisten yhteydessä. Näitä kursseja määritelmän mukaan on siis sellaiset kurssit, joita ei ole valittu mukaan haettuun ja saatuun cum laude approbatur -opintokokonaisuusmerkintään. Tällaista tietoa ei tietääkseni tietokannasta vielä saanut, joten ko. kentän tiedot jäävät nyt tyhjäksi (kenttää ei myöskään tulosteta HTML:ään, niinkuin ei muitakaan tyhjiä ei vaadittuja kenttiä). Koodista kyseenomainen kohta löytyy selvällä kommentoinnilla, sekä hassulla if(0==0) -vertailulla Piirto-luokka (Anu) Toteuttamatta jätetyt muuttujat private ArrayList suunnitelmat private ArrayList suoritukset Suoritukset ja suunnitelmat luetaan Verkko-luokassa. private fileoutputstream tulostusputki
14 9 Kuvaa ei lähetetä servletille tulostusputkessa, vaan se tallennetaan palvelimelle. Muuttuneet muuttujat private PngEncoder enkoodaaja -> koodaaja muuttujan nimi vaihdettiin paremmin suomenkieltä vastaavaksi. private Image kuva -> private BufferedImage kuva Kuvan tyyppi muutettiin sillä BufferedImagen rajapinta on helpompi piirtelyssä. Uudet muuttujat Asetustiedostosta luettavia muuttujia on tullut lisää paljon, jotta kuvan ulkonäköä olisi mahdollisimman vaivatonta säädellä. Muita apumuuttujia on myös lisätty, niiden ennakointi suunnitteluvaiheessa oli vaikeaa. Asetuksista luettavat private static int PUNAISENKOODI private static int VIHREANKOODI private static int LAATIKONLEVEYS private static int LAATIKONKORKEUS private static int MERKKILAATIKONLEVEYS private static String KUVAHAKEMISTO private static String KUVAHTMLHAKEMISTO private final float VIIVANPAKSUUS private final float VIIVANVALI private static int FONTINKOKO private static String FONTINTYYPPI private static int MERKKIFONTINKOKO private static String MERKKIFONTINTYYPPI private static int KUVANLEVEYS private static int KUVANKORKEUS private static int LEGENDANKORKEUS private static int KESALUKUKAUSI_ALKAA
15 10 private static int SYYSLUKUKAUSI_ALKAA Koordinaatistoon liittyvät private int enitenoikealla private int enitenvasemmalla private int alintaso private int matriisinskaalaus private static int VERKONLEVEYSSOLUINA private static int VERKONKORKEUSSOLUINA Kurssien tilat private static final int SUORITETTU = 0 private static final int SUUN_ESITIEDOT = 1 private static final int EISUUN_ESITIEDOT = 2 private static final int SUUN_EIESITIEDOT = 3 private static final int EISUUN_EIESITIEDOT = 4 private static final int VOIOSALLISTUA = 5 private static final int VOITULEVAISUUDESSAOSALLISTUA = 6 private String[] merkit private String[] selitykset private boolean verkontekoonnistui = false private boolean verkonkoodausonnistui = false Debuggauksen apumuuttujat private int[][] tilavarausmatriisi private static boolean tulostetaankodebuggausviestit = false private static boolean testaus = false private static boolean piirretaankoapuviivat = false
16 11 Uudet konstruktorit public Piirto(Henkilo henkilo, YhteysSailio yhteys) public Piirto(Henkilo henkilo, YhteysSailio yhteys, String file) Toteuttamatta jääneet metodit public fileoutputstream annakuva() Servletille ei anneta kuvaa tulostusputkessa, joten metodi jäi tarpeettomaksi. private boolean haesuoritukset(string opiskelijantunnus) Toteutettiin Verkko-luokassa. Piirto-luokan ei siis itse tarvitse hakea näitä tietoja itse. Uudet metodit public String annakuvanurl() tarjoaa lähes saman rajapinnan selaimelle, kuin toteuttamatta jäänyt metodi public FileOutputStream annakuva(). Selaimelle tarjotaan kuvan URL sen sijaan, että kuva annettaisiin suoraan tulostusvirrassa. Tämän ansiosta on helpompi myöhemmin toteuttaa vanhan kuvan tarjoaminen opiskelijalle. private void lueasetukset() throws Exception, NumberFormatException Asetusten lukua varten toteutettu apumetodi, jota kutsutaan konstruktorista. private String arvotiedostonnimi() Arpoo muodostettavalle kuvatiedostolle nimen. private void selvitakuvanulottuvuudet Apumetodi, joka selvittää muodostettavan kuvan korkeuden ja leveyden verkon tietojen perusteella. private int annakurssintila(kurssi k) Apumetodi, joka selvittää annetun kurssin tilan (SUORITETTU,...). Toteutettiin, jotta kurssin tilojen käsittely olisi mahdollisimman keskitettyä.
17 12 private int annastringinleveys(string str) Apumetodi, joka palauttaa annetun merkkijonon leveyden pikseleinä kuvan grafiikkakontekstissa, kulloisellakin fontin koolla. Toteutettii, jotta fontin muodostuskontekstia ei tarvitsisi erikseen tarvittaessa kutsua. private int rivita() Apumetodi, joka rivittää annetun tekstin annettuun leveyteen. Toteutettiin, jotta kurssin nimien ja legendan tekstien käsittely, eri riveille jakautuminen voitaisiin tehdä keskitetysti. private int piirralaatikontekstit() Apumetodi, joka piirtää yhden (kurssi)laatikon sisältämät tekstit private voi piirramerkkilaatikko() Apumetodi, joka piirtää merkkilaatikon sekä legendassa että kurssiverkossa. Toteutettiin, jotta merkkilaatikoiden piirtäminen tapahtuisi ainoastaan yhdessä paikassa. public String annakuvanpaikka() Apumetodi, joka palauttaa muodostetun kuvan hakemistopolun. private void piirraapuviivat() Apumetodi sijoittelun debuggaukseen. Piirtää kuvaan ruudukon, asteikkona solun leveys ja korkeus, rivi- ja sarakeindeksit sekä piirrettävän verkon tilavarausmatriisin tiedot. private void debug Apumetodi debugfaukseen. Tulostaa määrämuotoisia debug-viestejä (alkaa: "Piirto."jos luokan ajoparametreissä on asetettu päälle muuttuja debug.
18 VerkkoPlus-luokka (Teemu) AsetaJuurienPaikka()-metodin toteutukseen tuli muutos suunniteltuun. Juuret käydään juuri-listalta kerran läpi sijoittaen ne kahteen metodin sisäiseen listaan (ylikahdentason- Solmut ja allekahdentasonsolmut) sen perusteella, kuinka pitkä on solmun pisin seuraajakaari. Kahden tai yli kahden pituiset kaaret sijoitetaan ylikahdentasonsolmut-listaan ja muut allekahdentasonsolmut listaan. Laskettaessa pisintä kaarta paljonesitietoja-listalla olevia seuraaja-solmuja ei huomioida. Kun juurten paikat asetetaan, sijoitetaan ylikahdentasonsolmut-listan juuret ja niiden jälkeen allekahdentasonsolmut-listan juuret. Lisäksi juuria ei aseteta kahden solmun päähän toisistaan, vaan vierekkäin. Solmujen paikanvaraussääntöihin tehtiin muutoksia. Kaikki säännöt on esitetty kuvissa 4-8. Jos lisätty solmu kuuluu paljonesitietoja-listaan, ei tilaa varata edellä mainittujen sääntöjen mukaan. Tilaa varataan vain Verkko-luokan annapieninpaljonesitietojataso()-metodin palauttamasta tasosta suoraan ylös-alas -suunnassa solmun saakka. Tämä sen vuoksi, että Piirto-luokka piirtää laatikon ulkopuoliset kaaret suoraan laatikon reunaan. Jos solmu tai kaari yritetään sijoittaa paikkaan, jonka tilanvarauksen tarkistamiselle ei ole olemassa sääntöä, aiheutetaan poikkeus, joka välitetään luokkaa kutsuneelle. jne... Kuva 4: Kaaren varaamat alkiot, kun solmujen tasojen erotus on yksi.
19 14 varaa varaa varaa varaa varaa varaa Kuva 5: Kaaren varaamat alkiot, kun solmujen tasojen erotus on kaksi. varaa varaa varaa varaa varaa varaa Kuva 6: Kaaren varaamat alkiot, kun solmujen tasojen erotus on kolme.
20 15 varaa varaa varaa varaa varaa Kuva 7: Kaaren varaamat alkiot, kun solmujen tasojen erotus on neljä.
21 16 varaa varaa varaa varaa varaa varaa varaa varaa Kuva 8: Kaaren varaamat alkiot, kun solmujen tasojen erotus on viisi.
22 17 Toteuttamatta jätetty muuttuja public static final int PALJONESITIETOJA_LKM - siirrettiin Verkko-luokkaan. Muuttuneet muuttujat protected int[][] tilavarausmatriisi - muutettiin pakettinäkyvyydeksi, jotta Piirto-luokka voi lukea arvoja. private LinkedList yksitaso - muutettiin List-tyypistä LinkedList-tyyppiseksi. private LinkedList useataso - muutettiin List-tyypistä LinkedList-tyyppiseksi. Uudet muuttujat private static boolean tulostetaankodebuggausviestit - muuttujan arvo on tosi, jos VerkkoPlus-luokan debuggaus-viestit ovat päällä. Oletusarvo on false. private static boolean luokkaatestataan - muuttujan arvo on tosi, jos VerkkoPlus-luokkaa testataan. Oletusarvo on false. Muutokset konstruktoriin public VerkkoPlus(Henkilo henkilo, YhteysSailio yhteys) throws Exception - Lisättiin parametri Yhteyssäiliö-oliolle, jota kutsuttava Verkko-luokka tarvitsee tietokantahakuja varten. Lisättiin myös keskeytysten välitys kutsujalle. Toteuttamatta jääneet metodit Ei toteuttamatta jääneitä metodeita. Muuttuneet metodit private void asetajuurienpaikka() throws Exception - Metodi välittää keskeytyksen kutsujalle. private void asetapaikat() throws Exception - Metodi välittää keskeytyksen kutsujalle. private void asetasolmunpaikka(solmu solmu, Kaari kaari) throws Exception - Metodi välittää keskeytyksen kutsujalle. Uudet metodit
23 18 private void asetaylikahdenpituisetkaaret(solmu tamasolmu) throws Exception - metodi asettaa yli kahden tason pituisten kaarten seuraajasolmut rekursiivisesti itseään kutsuen. private void varaapaikkakaarelle(kaari kaari) throws Exception - metodi varaa paikan tilavarausmatriisista parametrina saamalleen kaarelle. Poikkeukset välitetään kutsujan käsiteltäväksi. private Solmu annasolmutasosta() - palauttaa Solmun, jonka taso on pienin yksitasoja useataso-listoista. private void asetalapikaytavienlistaan(solmu tamasolmu, Solmu seuraaja) - asettaa parametrina saamansa seuraaja-solmun yksitaso- tai useataso-listaan. public static void main (String[] args) - päämetodi luokan testausta varten Verkko-luokka (Lauri) Toteuttamatta jätetty muuttuja private List seuraavaksiasetettavatsolmut - ajatus, että Verkko-luokka hoitaisi solmujensa läpikäymisen poistettiin, joten tästä muuttujasta tuli tarpeeton. Muuttuneet muuttujat protected Collection solmut - tyyppi muutettiin List:stä abstraktiin Collection:iin. Näkyvyys muutettiin pakkaukselle. protected Collection juuret - tyyppi muutettiin List:stä abstraktiin Collection:iin. Näkyvyys muutettiin pakkaukselle. Uudet muuttujat protected Collection paljonesitietoja - lista, johon lisätään solmut, joilla on paljon esitietoja. Siirrettiin VerkkoPlus-luokasta. Verkko-luokka huolehtii joka tapauksessa solmujen tasojen asetuksen jolloin sen on helppo asettaa myös solmut ko. listaan.
24 19 public final int PALJONESITIETOJA_LKM - vakio, joka kuvaa esitietojen määrää, jolla solmu asetetaan paljonesitietoja-listaan. Siirrettiin VerkkoPlus-luokasta. private int tasojenlkm - kertoo verkossa olevien solmujen tasojen lukumäärän. Muuttuja lisättiin, sillä tiedon etsiminen myöhemmin (useaan kertaan VerkkoPlus- ja Piirtoluokista) läpikäymällä solmut, olisi turhan raskas operaatio. Uudet konstruktorit public Verkko() - oletus konstruktori ilman parametreja. Verkon voi luoda, mutta kutsujan täytyy kutsua luoverkko-metodia parametreineen, jotta varsinainen verkko muodostuisi. public Verkko(Henkilo henkilo, YhteysSailio yhteys) - konstruktori jolle voi antaa myös avatun tietokantayhteyden. Toteuttamatta jääneet metodit private void haekurssit(henkilo henkilo, YhteysSailio yhteys) - metodi pilkottiin pienemmiksi metodeiksi (luosolmut, selvitaesitiedot ja haecumupakolliset). public List annasolmut() - solmut-muuttujan näkyvyys muutettiin pakkaukselle ja aksessorista tuli turha. public List annajuuret() - juuret-muuttujan näkyvyys muutettiin pakkaukselle ja aksessorista tuli turha. private void lisaaesitieto(solmu seuraaja, Solmu uusiesitieto) - poistettiin turhana. public Kurssi annakurssi(solmu solmu) - solmut-muuttujan pakkausnäkyvyyden muuttamisen jälkeen tämä metodi jäi turhaksi. public List annaseuraajat(solmu solmu) - solmut-muuttujan pakkausnäkyvyyden muuttamisen jälkeen tämä metodi jäi turhaksi.
25 20 private Solmu annaseuraavaksiasetettavatsolmut() - solmujen läpikäymisen siirtyminen asianomaisille luokille jätti tämän turhaksi. private void lisaseuraavaksiasetettavatsolmut(solmu seuraavaksiasetettavasolmu) - solmujen läpikäymisen siirtyminen asianomaisille luokille jätti tämän turhaksi. Uudet metodit public void luoverkko(henkilo henkilo) - usean konstruktorin kanssa käytettävä apumetodi. Tämä metodi luo YhteysSailio-olion ja kutsuu kuormitettua luoverkko-metodia. public void luoverkko(henkilo henkilo, YhteysSailio yhteys) - usean konstruktorin kanssa käytettävä apumetodi yhteys-oliolla kuormitettuna. Tämä metodi käytännössä tekee verkko-olion kutsumalla tarvittavat metodit. private void luosolmut(henkilo henkilo, YhteysSailio yhteys) - metodi haetuttaa haecumupakolliset, opintosu.suunnittelu.suoritus.haepaaainesuoritukset ja opintosu.suunnittelu.suunnittelu.haepaaainesuunnitelma -metodien avulla opiskelijan pakolliset cum laude approbatur -kurssit, sekä luo näille solmu-oliot. private void selvitaesitiedot(yhteyssailio yhteys) - metodi haetuttaa metodien os2.ljk.kyselyt.haeesitiedot ja os2.ljk.kyselyt.haevastaavuudet avulla solmut-listalla olevien kurssien esitiedot ja luo saatujen tietojen perusteella kaari-oliot solmujen välille. private ArrayList[] haecumupakolliset(henkilo henkilo, YhteysSailio yhteys) - metodi hakee tietokannasta opiskelijan (henkilo parametri) tietojen perusteella pakolliset cum laude approbatur -kurssien tiedot. public int annapieninpaljonesitietojataso() - metodi joka palauttaa tason, jonka yläpuolella ei ole enää paljonesitietoja-listan solmuja. Eli tämän metodin palauttaman tason yläpuolelle piirretään "esitietolaatikon"alareuna. Metodia kutsuu Verkkoa käyttävä luokka (nyt VerkkoPlus ja/tai Piirto). private void asetapaljonesitietojalistaan(solmu solmu) - asettaa parametrina saamansa
26 21 solmu paljonesitietoja-listaan. Siirrettiin VerkkoPlus-luokasta. public int annatasojenlkm() - palauttaa luokan tietorakenteessa säilötyn tasojen lukumäärän. private void asetatasot() - asettaa tasot juurille (=0). Metodi asetuttaa tasot myös muille solmuille käyttäen apunaan rekursiivista metodia asetasolmujentasotalkaen, joka palauttaa suurimman asettamansa tason, jonka tämä metodi sitten asettaa tasojenlkmmuuttujaan. private int asetasolmujentasotalkaen(solmu solmusta) - metodi asettaa solmujen tasot parametrina saamastaan solmusta alkaen. Parametrina saadun solmun seuraajille asetetaan taso, joka on yhden suurempi kuin taso parametrina saadussa solmussa, mikäli seuraajalla (asetettavalla) ei ole tasoa vielä (= -1) tai taso on pienempi kuin asetettava taso (kaaren pituus edelliselle asetukselle kasvaa) Solmu-luokka (Lauri) Toteuttamatta jätetty muuttuja private Kurssi kurssi - kurssi-oliosta tarvittiin vain tiedot kurssikoodi, nimi ja opintoviikot. Tämä muuttuja poistettiin siksikin, että kaikkien verkkoon asetettavien solmujen kurssien tiedot eivät tule OpintoSu- ja OS2-ryhmien tekemistä koodeista kurssi-olioina, vaan myös suoritus- ja suunnittelu-olioina. Muuttuneet muuttujat private Collection esitiedot - tyyppi muuttui List:stä Collection:ksi. private Collection seuraajat - tyyppi muuttui List:stä Collection:ksi. Uudet muuttujat private final String KURSSIKOODI - solmun kuvaaman kurssin kurssikoodi, joka on vakio koko solmu-olion elinajan.
27 private final String NIMI - solmun kuvaaman kurssin nimi, joka on vakio koko solmuolion elinajan. 22 private final double OPINTOVIIKOT - solmun kuvaamasta kurssista saatavat opintoviikot, joka on vakio koko solmu-olion elinajan. private Date suoritettupvm - mahdollisesti suoritetun kurssin suorituspäivämäärä. private String arvosana - mahdollisesti suoritetun kurssin arvosana. private Date suunniteltupvm -mahdollisesti suunnitellun kurssin suunniteltu käymisen päivämäärä. Poistettu metodi public Kurssi annakurssi() - koska solmun kuvaaman kurssin tietojen tallennustapa muutettiin kurssikoodin, nimen ja opintoviikkojen tallennukseen, ja kurssi-muuttuja poistettiin, aksessorista tuli turha ja se poistettiin. Muuttuneet metodit public Collection annaesitiedot() - tietorakenteen tyypin muuttumisen myötä aksessorinkin tyyppi muuttui. public Collection annaseuraajat() - tietorakenteen tyypin muuttumisen myötä aksessorinkin tyyppi muuttui. public Kaari lisaakaari(solmu esitieto) - palautusarvoksi viite uuteen kaari-olioon. Näin ei luotua kaari-oliota tarvitse heti etsiä. Uudet metodit public String annakurssikoodi() - tietorakenteelle oma aksessori. public String annanimi() - tietorakenteelle oma aksessori.
28 23 public double annaopintoviikot() - tietorakenteelle oma aksessori. public Date annasuoritettupvm() - tietorakenteelle oma aksessori. public String annaarvosana() - tietorakenteelle oma aksessori. public Date annasuunniteltupvm() - tietorakenteelle oma aksessori. public void asetasuoritettupvm(date suoritettupvm) - tietorakenteelle oma aksessori. Asettaa parametrina saadun päivämäärän tietorakenteeseen. public void asetaarvosana(string arvosana) - tietorakenteelle oma aksessori. Asettaa parametrina saadun merkkijonon tietorakenteeseen. public void asetasuoritettu(date suoritettupvm, String arvosana) - aksessori suoritusta kuvaavien tietorakenteiden yhteiselle asetukselle. Kutsuu oikeat aksessorit. public void asetasuunniteltupvm(date suunniteltupvm) - tietorakenteelle oma aksessori. Asettaa parametrina saadun päivämäärän tietorakenteeseen. public void asetasuunniteltu(date suunniteltupvm) - yhtenäinen nimitys suorituksen ja suunnitellun asettamiselle. Kutsuu oikean aksessorin. public boolean onkosuoritettu() - palauttaa totuusarvona onko solmun kuvaama kurssi suoritettu. public boolean onkosuunniteltu() - palauttaa totuusarvona onko solmun kuvaama kurssi suunniteltu käytäväksi. public boolean onkoesitiedotsuoritettu() - palauttaa totuusarvona onko solmun kuvaaman kurssin kaikki esitiedot suoritettu.
29 Kaari-luokka (Lauri) Ei muutoksia suunniteltuun.
30 Luokka OpintojenTilanVisualisointi Opintojen tilan visualisointi -sivulla opiskelija näkee kokonaisuutena, miten hänen opintonsa ovat edenneet. Opiskelija voi sivulla valita joko cum laude -opinnot tai haluamansa suuntautumisvaihtoehdon laudatur-opinnot. Sivulta opiskelija näkee mitä kursseja hän on jo suorittanut, mitä hänellä on suunnitelmissaan sekä pakollisista kursseista ne joihin hän ei ole vielä koskenut. Käytössä olevat tiedot Servletillä on aina tiedossa henkilön käyttäjätunnus. Lisäksi servletti voi saada tietoja parametrin avulla. Parametria käytetään silloin, kun opiskelija valitsee katsottavakseen toisen suuntautumisvaihtoehdon ja/tai kun opiskelija valitsee katsottavakseen cumun, lavin tai kaikki -opinnot. Servletin parametrit on kuvattu luokan vakioiden kuvauksessa. Käytettävät luokat opintosu.kayttoliittyma.pohjake Pohjake-luokkaa käytetään sivun HTML:n sisältävän pohjaketiedoston muokkaamiseen. Luokan muokkaama pohjaketiedosto on nimeltään OpintojenTilanVisualisointi.html opintosu.yleiset.asetukset Asetukset-luokan avulla luetaan palvelimelta löytyvää asetustiedostoa, jossa on mm. värikoodauksien asetuksia, sekä muita tulostukseen ja yleisiin asioihin liittyviä asetuksia. opintosu.kayttajat.henkilo Henkilo-luokan ilmentymä Servletille parametrina annettu kuvaa järjestelmää käyttävää opiskelijaa. Luokalta pyydetään tarvittaessa opiskelijan tietoja ja tallennuksia liittyen opintoihin. opintosu.tietokanta.tkapu Luokan avulla suoritetaan tietokantaan SQL-kyselyt. opintosu.tietokanta.yhteyssailio Servletiä kutsuttaessa saadaan tämän luokan ilmentymä parametrina (yhteys), ja olion kautta tapahtuu kaikki liikenne tietokantaan. opintosu.suunnittelu.suoritus Luokan metodin haepaaainesuoritukset avulla haetaan tietokannasta opiskelijan suorittamat pääainesuoritukset.
31 26 os2.ljk.kyselyt Käytetään hakemaan esitiedot tietylle kurssille. Tämä luokka palauttaa Collection:n os2.ljk.esitieto olioita. os2.ljk.esitietokurssit Luokan ilmentymät kuvaavat os2.ljk.kyselyt.haeesitiedot-metodin palauttamia kursseja. Luokan kuvaamien kurssien tiedoista kaivataan vain kurssikoodia. os3.visualisointi.piirto Piirto-luokka luo Servletin tunteman käyttäjän (henkilo) ja tietokantayhteyden (yhteys) avulla pakollisten cum laude approbatur -kurssien esitietovaatimusverkon kuvaksi Esittely public class OpintojenTilanVisualisointi extends java.lang.object Kenttien yhteenveto asetukset ASETUSTIEDOSTO cumupaksuor Opiskelijan suorittamien cum laude approbatur -tasoisten pakollisten opintojaksojen opintoviikot. cumupaksuun Opiskelijan suunnittelemien cum laude approbatur -tasoisten pakollisten opintojaksojen opintoviikot. cumupakvaad Vaaditut cum laude approbatur -tasoisten pakollisten opintojaksojen opintoviikot. cumuvaad Tutkintoon vaadittavat cum laude approbaturin opintoviikot. cumuvalsuor Opiskelijan suorittamien cum laude approbatur -tasoisten valinnaisten opintojaksojen opintoviikot. cumuvalsuun Opiskelijan suunnittelemien cum laude approbatur -tasoisten valinnaisten opintojaksojen opintoviikot. EISUUN_EIESITIEDOT Kurssin tila: suoritettu / suunniteltu / esitiedot käyty erilaisina yhdistelminä EISUUN_ESITIEDOT Kurssin tila: suoritettu / suunniteltu / esitiedot käyty erilaisina yhdistelminä henkilo Kutsujaa kuvaavan henkilön olio. kuvatiedosto Ensimmäisellä latauskerralla luodon kuvatiedoston nimi.
32 27 lavipaksuor Opiskelijan suorittamien laudatur-tason pakollisten opintojaksojen opintoviikot. lavipaksuun Opiskelijan suunnittelemien laudatur-tason pakollisten opintojaksojen opintoviikot. lavipakvaad Tutkintoon vaadittavat laudaturin opintoviikot. lavivaad Tutkintoon vaadittavat laudaturin opintoviikot. lavivalsuor Opiskelijan suorittamien laudatur-tason valinnaisten opintojaksojen opintoviikot. lavivalsuun Opiskelijan suunnittelemien laudatur-tason valinnaisten opintojaksojen opintoviikot. lavivalvaad Tutkintoon vaadittavat laudaturin valinnaisten opintojaksojen opintoviikot. linja Opiskelijan valitsema erikoistumislinja (tietojenkäsittelyn suuntautumisvaihtoehdossa). merkit nayta Opiskelijan valitsema näytettävä opintojen kokonaisuus (cumu (oletus), lavi tai kaikki). PARAMETRI_KUVATIEDOSTO Ensimmäisellä latauskerralla luodun pakollisten cum laude approbatur -kurssien esitietovaatimusverkon kuvan tiedostonimi annetaan tällä parametrilla. PARAMETRI_NAYTA Minkä oppimäärien opinnot näytetään (cumu, lavi, kaikki). PARAMETRI_SUUNTA Valittu suuntautumisvaihtoehto tai erikoistumislinja. PARAMETRI_VUOSI Minkä vuoden tutkintovaatimuksien mukaisia suuntautumisvaihtoehtoja ja erikoistumislinjoja näytetään. PUNAINENKURSSI Asetuksista saatava HTML-värikoodi kurssin suoritusta kuvaavalle värille. selitykset Legendan selitystekstit pelkän laudaturin näyttöä varten. sivu Pohjake, johon kirjoitetaan tulostusmetodeissa. SUORITETTU Kurssin tila: suoritettu / suunniteltu / esitiedot käyty erilaisina yhdistelminä SUUN_EIESITIEDOT Kurssin tila: suoritettu / suunniteltu / esitiedot käyty erilaisina yhdistelminä SUUN_ESITIEDOT Kurssin tila: suoritettu / suunniteltu / esitiedot käyty
33 28 erilaisina yhdistelminä suunta Opiskelijan valitsema suuntautumisvaihtoehto. VIHREAKURSSI Asetuksista saatava HTML-värikoodi kurssin suoritusta kuvaavalle värille. vuosi Opiskelijan valitsema tutkintovaatimusten vuosi. yhteys Tietokantayhteyksiä Metodien yhteenveto asetaopintojentilanne() Asettaa näytettävälle sivulle otsikon, näytettävät osiot, kuva ja/tai listat kursseista ja mahdollisen yhteenvedon opintoviikoille. dokysely(httpservletrequest, HttpServletResponse, YhteysSailio, Henkilo) Vastaa selaimen tekemään kutsuun. haecumupakvaaditutopintoviikot() Hakee cum laude approbatun -oppimäärän pakollisten kurssien opintoviikkomäärän tietokannasta. haecumuvaaditutopintoviikot() Hakee cum laude approbatur -oppimäärään vaaditut opintoviikot tietokannasta. haelinjatsuuntautumiselle(string) Metodi hakee tietokannasta parametrina annetun suuntautumisvaihtoehdon erikoistumislinjojen tiedot. haemuutpakolliset(string) Metodi hakee tietokannasta valitulla parametrilla opiskelijan muiden laudatur-oppimäärän pakollisten kurssien tiedot. haesuoritetut(string, boolean, String) Metodi hakee tietokannasta valituilla parametreilla opiskelijan suorittamien kurssien tiedot. haesuunnitellut(string, boolean, String) Metodi hakee tietokannasta valituilla parametreilla opiskelijan suunnittelemien kurssien tiedot. haesuuntautuminenlinjalle(string) Metodi hakee tietokannasta parametrina annetun erikoistumislinjan suuntautumisvaihtoehdon. haesuuntautumiset(string) Metodi hakee tietokannasta valitulla parametrilla tietyn tutkintovaatimusvuoden suuntautumisvaihtoehtojen tiedot. haetutkintovaatimusvuodet() Metodi hakee tietokannasta kaikki eri henkilölle sopivat tutkintovaatimusvuodet. haevaaditutopintoviikot(string) Hakee parametrina annetun kokonaisuuden minimiopintoviikkomäärän tietokannasta. suoritettupvm(date) Metodia käytetään suoritettujen kurssien suorituspäivämäärän muuttamiseksi tulostettavaan muotoon.
34 29 suunniteltupvm(date) Metodia käytetään suunniteltujen kurssien käymistä kuvaavan tietokannasta saadun alkamisajankohdan päivämäärän muuttamiseksi tulostettavaan muotoon. tulostacumu() Tulostaa näytettävälle sivulle cum laude approbatur -opinnot. tulostalavi() Tulostaa näytettävälle sivulle opiskelijan valitsemien tietojen mukaan opiskelijan laudatur-opinnot. tulostamuutpakolliset(pohjake, String) Tulostaa parametrilla valitun laudatur osan opintojaksoja, jotka ovat osassa pakollisia, mutta eivät ole opiskelijan huomioimia vielä. tulostaopintoviikot(pohjake, int, int) Tulostaa parametrein saadut opintoviikot parametrina annettuun lohkoon. tulostaotsikko() Tulostaa halutunlaisen otsikon näytettävälle sivulle. tulostaovsumma() Tulostaa näytettävälle sivulle kaikkien osioiden (cumu ja lavi) opintoviikkojen yhteenvedon. tulostasuoritetut(pohjake, String, boolean, String) Tulostaa valituin parametrein opiskelijan suorittamia opintojaksoja. tulostasuunnitellut(pohjake, String, boolean, String) Tulostaa valituin parametrein opiskelijan suunnittelemia opintojaksoja. tulostasuuntautumiset(pohjake, String, String) Tulostaa suuntautumisvaihtoehdot ja erikoistumislinjat näytettävään sivuun valintalistaan. tulostatutkintovaatimusvuodet(pohjake) Tulostaa kannasta löytyvät tutkintovaatimusvuodet valintalistaan Kentät public static final java.lang.string PARAMETRI_NAYTA Minkä oppimäärien opinnot näytetään (cumu, lavi, kaikki). public static final java.lang.string PARAMETRI_SUUNTA Valittu suuntautumisvaihtoehto tai erikoistumislinja. Arvot annetaan muodossa suunta# tai linja# ja "suunnan_tai_linjan_id". public static final java.lang.string PARAMETRI_VUOSI
35 30 Minkä vuoden tutkintovaatimuksien mukaisia suuntautumisvaihtoehtoja ja erikoistumislinjoja näytetään. public static final java.lang.string PARAMETRI_KUVATIEDOSTO Ensimmäisellä latauskerralla luodun pakollisten cum laude approbatur -kurssien esitietovaatimusverkon kuvan tiedostonimi annetaan tällä parametrilla. Parametri on tarkoitettu annettavaksi vain Servletin itse, jolloin mahdolliset suunnitelmien tai suoritusten muutokset eivät jää huomioitta kuvassa. private java.lang.string suunta Opiskelijan valitsema suuntautumisvaihtoehto. On tyhjä merkkijono tai "eivalittu", jos opiskelija ei ole valinnut suuntautumistaan. private java.lang.string linja Opiskelijan valitsema erikoistumislinja (tietojenkäsittelyn suuntautumisvaihtoehdossa). On tyhjä merkkijono tai "VALITTAVAENSIN", jos opiskelija ei ole valinnut erikoistumislinjaa. private java.lang.string nayta Opiskelijan valitsema näytettävä opintojen kokonaisuus (cumu (oletus), lavi tai kaikki). private java.lang.string vuosi Opiskelijan valitsema tutkintovaatimusten vuosi. private java.lang.string kuvatiedosto Ensimmäisellä latauskerralla luodon kuvatiedoston nimi. private static opintosu.yleiset.asetukset asetukset ASETUSTIEDOSTO private static final int SUORITETTU Kurssin tila: suoritettu / suunniteltu / esitiedot käyty erilaisina yhdistelminä private static final int SUUN_ESITIEDOT Kurssin tila: suoritettu / suunniteltu / esitiedot käyty erilaisina yhdistelminä
36 31 private static final int EISUUN_ESITIEDOT Kurssin tila: suoritettu / suunniteltu / esitiedot käyty erilaisina yhdistelminä private static final int SUUN_EIESITIEDOT Kurssin tila: suoritettu / suunniteltu / esitiedot käyty erilaisina yhdistelminä private static final int EISUUN_EIESITIEDOT Kurssin tila: suoritettu / suunniteltu / esitiedot käyty erilaisina yhdistelminä private static final java.lang.string merkit private static final java.lang.string selitykset Legendan selitystekstit pelkän laudaturin näyttöä varten. Cumu tehdään Piirtoluokassa suoraan kuvaan. Itse tekstit haetaan asetukset-tiedostosta private static java.lang.string VIHREAKURSSI Asetuksista saatava HTML-värikoodi kurssin suoritusta kuvaavalle värille. private static java.lang.string PUNAINENKURSSI Asetuksista saatava HTML-värikoodi kurssin suoritusta kuvaavalle värille. private opintosu.kayttajat.henkilo henkilo Kutsujaa kuvaavan henkilön olio. private opintosu.tietokanta.yhteyssailio yhteys Tietokantayhteyksiä. private opintosu.kayttoliittyma.pohjake sivu Pohjake, johon kirjoitetaan tulostusmetodeissa. private int cumupaksuor Opiskelijan suorittamien cum laude approbatur -tasoisten pakollisten opintojaksojen opintoviikot. private int cumupaksuun Opiskelijan suunnittelemien cum laude approbatur -tasoisten pakollisten opintojaksojen opintoviikot.
37 32 private int cumupakvaad Vaaditut cum laude approbatur -tasoisten pakollisten opintojaksojen opintoviikot. Haetaan tietokannasta haecumpakvaaditutopintoviikot-metodilla. private int cumuvalsuor Opiskelijan suorittamien cum laude approbatur -tasoisten valinnaisten opintojaksojen opintoviikot. private int cumuvalsuun Opiskelijan suunnittelemien cum laude approbatur -tasoisten valinnaisten opintojaksojen opintoviikot. private int cumuvaad Tutkintoon vaadittavat cum laude approbaturin opintoviikot. Haetaan tietokannasta haecumuvaaditutopintoviikot-metodilla. private int lavipaksuor Opiskelijan suorittamien laudatur-tason pakollisten opintojaksojen opintoviikot. private int lavipaksuun Opiskelijan suunnittelemien laudatur-tason pakollisten opintojaksojen opintoviikot. private int lavipakvaad Tutkintoon vaadittavat laudaturin opintoviikot. private int lavivalsuor Opiskelijan suorittamien laudatur-tason valinnaisten opintojaksojen opintoviikot. private int lavivalsuun Opiskelijan suunnittelemien laudatur-tason valinnaisten opintojaksojen opintoviikot. private int lavivalvaad Tutkintoon vaadittavat laudaturin valinnaisten opintojaksojen opintoviikot.
38 33 private int lavivaad Tutkintoon vaadittavat laudaturin opintoviikot. Haetaan tietokannasta haevaaditutopin metodilla Metodit asetaopintojentilanne private void asetaopintojentilanne( ) throws java.lang.exception Asettaa näytettävälle sivulle otsikon, näytettävät osiot, kuva ja/tai listat kursseista ja mahdollisen yhteenvedon opintoviikoille. Kutsuu tarvittavat metodit. Tulostaa lopuksi vielä ensimmäisellä latauskerralla luodun kuvatiedoston nimen koko sivun kattavaan form:iin hidden-kenttään. dokysely public void dokysely( HttpServletRequest request, HttpServletResponse response, opintosu.tietokanta.yhteyssailio yhteys, opintosu.kayttajat.henkilo henkilo ) throws java.lang.exception Vastaa selaimen tekemään kutsuun. Ensimmäiseksi metodi avaa tulostusvirran tulostamista varten. Valituin ja saaduin parametrein siirrytään tulostamaan sivua ja haetaan tunnusta vastaavat opiskelijan kurssit. Metodi hakee sivun pohjakkeen ja asettaa tiedot pohjakkeeseen. Lopuksi tulostetaan tulostusvirtaan sivu pohjakkeen tulostusmetodilla sekä suljetaan tulostusvirta. haecumupakvaaditutopintoviikot private int haecumupakvaaditutopintoviikot( ) throws java.lang.exceptio Hakee cum laude approbatun -oppimäärän pakollisten kurssien opintoviikkomäärän tietokannasta. Tässä otetaan huomioon siis opiskelijan suorittamat kurssit joiden vastaavuudet karsitaan nykyisin luennoitavista kursseista pois.
39 Palauttaa pakollisten cum laude approbatur -oppimäärän kurssien opintoviikkomäärän int-arvona. 34 haecumuvaaditutopintoviikot private int haecumuvaaditutopintoviikot( ) throws java.lang.exception Hakee cum laude approbatur -oppimäärään vaaditut opintoviikot tietokannasta. Hakeminen tehdään mahdollisesti kolmiosaisena, ja seuraavassa järjestyksessä: Mikäli ensimmäinen, henkilön suuntautumisvaihtoehtoon perustuva haku, ei palauta tietokannasta yhtään riviä, niin suoritetaan toinen haku, joka perustuu henkilön valitsemaan (tai annettuun) tutkintovaatimukseen. Jos toinenkaan haku ei palauta riviäkään, niin haetaan henkilöstä riippumaton kolmas vaihtoehto, joka palauttaa uusimman tktl cumun minimiopintoviikkomäärän, ja siten aina yhden rivin, jos vain tietokannassa tietoja yleensä on siis. Palauttaa cum laude approbatur -oppimäärän minimiopintoviikkomäärän int-arvona. haelinjatsuuntautumiselle private java.util.arraylist[] haelinjatsuuntautumiselle ( java.lang.string suunta ) throws java.lang.exception Metodi hakee tietokannasta parametrina annetun suuntautumisvaihtoehdon erikoistumislinjojen tiedot. suunta Suuntautumisvaihtoehdon id. Palauttaa erikoistumislinjojen tiedot ArrayList[]:nä, jossa yksi ArrayList sisältää solut: kokonaisuus_id ja nimi. Jos linjoja ei ole, niin palautus on null. haemuutpakolliset private java.util.arraylist[] haemuutpakolliset
40 35 ( java.lang.string osa ) throws java.lang.exception Metodi hakee tietokannasta valitulla parametrilla opiskelijan muiden laudaturoppimäärän pakollisten kurssien tiedot. Siis ei opiskelijan suorittamat tai suunnittelemat. osa Merkkijono, jolla kerrotaan metodille mitä laudatur-kursseja haetaan (suunta,linja,semin). Palauttaa kurssien tiedot ArrayList[]:nä, jossa yksi ArrayList sisältää solut: kurssikoodi, nimi_suomi, opintoviikot. haesuoritetut private java.util.arraylist[] haesuoritetut ( java.lang.string taso, boolean pakolliset, java.lang.string osa ) throws java.lang.exception Metodi hakee tietokannasta valituilla parametreilla opiskelijan suorittamien kurssien tiedot. taso Yksi kirjain haettavien kurssien oppimäärän tasolle (C umu tai L audatur tai S eminaari). Jos taso on Cumu, niin kannasta haetaan myös Approbatur suoritukset. pakolliset Haetaanko kannasta pakollisten vai valinnaisten kurssien opintoviikot (totuusarvo). Vaikka seminaarit ovatkin tutkintovaatimuksissa pakollisia, niin yksikään seminaari itsessään ei ole pakollinen. osa Merkkijono, jolla kerrotaan metodille mitä laudatur-kursseja haetaan (suunta,linja,semin). Palauttaa kurssien tiedot ArrayList[]:nä, jossa yksi ArrayList sisältää solut: kurssikoodi, nimi_suomi, opintoviikot, hyvaksymis_pvm ja arvosana. haesuunnitellut private java.util.arraylist[] haesuunnitellut
41 ( java.lang.string taso, boolean pakolliset, java.lang.string osa ) throws java.lang.exception Metodi hakee tietokannasta valituilla parametreilla opiskelijan suunnittelemien kurssien tiedot. taso Yksi kirjain haettavien kurssien oppimäärän tasolle (C umu tai L audatur tai S eminaari). Jos taso on C_umu, niin kannasta haetaan myös A_pprobaturin suunnitellut (turhaa, mutta ei haittaakaan). pakolliset Haetaanko kannasta pakollisten vai valinnaisten kurssien opintoviikot (totuusarvo). Vaikka seminaarit ovatkin tutkintovaatimuksissa pakollisia, niin yksikään seminaari itsessään ei ole pakollinen. osa Merkkijono, jolla kerrotaan metodille mitä laudatur-kursseja haetaan (suunta,linja,semin). Palauttaa kurssien tiedot ArrayList[]:nä, jossa yksi ArrayList sisältää solut: kurssikoodi, nimi_suomi, opintoviikot ja alku_pvm. 36 haesuuntautuminenlinjalle private java.lang.string haesuuntautuminenlinjalle( java.lang.string linja ) throws java.lang.exception Metodi hakee tietokannasta parametrina annetun erikoistumislinjan suuntautumisvaihtoehdon. Palauttaa suuntautumisvaihtoehdon id:n String:nä tai null, jos haulla ei löytynyt suuntautumisvaihtoehtoa. haesuuntautumiset private java.util.arraylist[] haesuuntautumiset( java.lang.string vuodelle ) throws java.lang.exception Metodi hakee tietokannasta valitulla parametrilla tietyn tutkintovaatimusvuoden suuntautumisvaihtoehtojen tiedot.
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ätiedotOlio-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ätiedotTietokanta.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ätiedotJavan 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ätiedotOhjelmointitaito (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ätiedotHarjoitus 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ätiedotTik-76.115 Tietojenkäsittelyopin ohjelmatyö Tietotekniikan osasto Teknillinen korkeakoulu KÄYTTÖOHJE. LiKe Liiketoiminnan kehityksen tukiprojekti
Tik-76.115 Tietojenkäsittelyopin ohjelmatyö Tietotekniikan osasto Teknillinen korkeakoulu JÄRJESTELMÄN KÄYTTÖOHJE LiKe Liiketoiminnan kehityksen tukiprojekti Versio: 1.1 Tila: hyväksytty Päivämäärä: 13.2.2001
LisätiedotMyös opettajaksi aikova voi suorittaa LuK-tutkinnon, mutta sillä ei saa opettajan kelpoisuutta.
Tietojenkäsittelytiede Tutkintovaatimukset Perustutkinnot LUONNONTIETEIDEN KANDIDAATIN TUTKINTO (VÄHINTÄÄN 120 OV) 1. Tietojenkäsittelytieteen cum laude approbatur -oppimäärä (vähintään 55 ov) ja kypsyysnäyte
LisätiedotMetodit. 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ätiedotInformaatioteknologian 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ätiedotOhjelmointi 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ätiedotSisä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ätiedotSisä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ätiedot1. 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ätiedotOhjelmassa 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ätiedotMetodien 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ätiedotYleistä. 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ätiedotTietorakenteet. 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ätiedot7. 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ätiedotOhjelmointitaito (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ätiedotLuokan 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ätiedotTä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ätiedotSisä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ätiedotSisä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ätiedot16. 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ätiedotJava-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ätiedotKää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ätiedotRajapinta (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ätiedot20. 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ätiedotSisä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ätiedotAlgoritmit 2. Luento 7 Ti Timo Männikkö
Algoritmit 2 Luento 7 Ti 4.4.2017 Timo Männikkö Luento 7 Joukot Joukko-operaatioita Joukkojen esitystapoja Alkiovieraat osajoukot Toteutus puurakenteena Algoritmit 2 Kevät 2017 Luento 7 Ti 4.4.2017 2/26
LisätiedotTietokannat 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ätiedotTaulukot. 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ätiedotJAVA-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ätiedotLuokat ja oliot. Ville Sundberg
Luokat ja oliot Ville Sundberg 12.9.2007 Maailma on täynnä olioita Myös tietokoneohjelmat koostuvat olioista Σ Ο ω Μ ς υ φ Ϊ Φ Θ ψ Љ Є Ύ χ Й Mikä on olio? Tietokoneohjelman rakennuspalikka Oliolla on kaksi
Lisätiedot9. 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ätiedotJava-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ätiedot1 Tehtävän kuvaus ja analysointi
Olio-ohjelmoinnin harjoitustyön dokumentti Jyri Lehtonen (72039) Taneli Tuovinen (67160) 1 Tehtävän kuvaus ja analysointi 1.1 Tehtävänanto Tee luokka, jolla mallinnetaan sarjaan kytkettyjä kondensaattoreita.
LisätiedotVertailulauseet. 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ätiedotOpintojensuunnittelujärjestelmä Vaatimusanalyysi
Opintojensuunnittelujärjestelmä Vaatimusanalyysi Teemu Ajalin Lauri Jokipii Anu Määttä Juho Peltonen Nuutti Rintala Mikko Suonio Helsinki 11. helmikuuta 2003 Ohjelmistotuotantoprojekti Vaatimusanalyysi
Lisätiedot15. 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ätiedotOhjelmoinnin perusteet, kurssikoe
Ohjelmoinnin perusteet, kurssikoe 18.6.2014 Kirjoita jokaiseen konseptiin kurssin nimi, kokeen päivämäärä, nimi, TMC-tunnus ja opiskelijanumero tai henkilötunnus. Vastaukset palautetaan tehtäväkohtaisiin
LisätiedotOpintojakso 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ätiedotA) 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ätiedotSisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen
Sisällys 6. Metodit Oliot viestivät metodeja kutsuen. Kuormittaminen. Luokkametodit (ja -attribuutit).. Metodien ja muun luokan sisällön järjestäminen. 6.1 6.2 Oliot viestivät metodeja kutsuen Oliot viestivät
Lisätiedot17. 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ätiedotOhjelmointi 2, välikoe
Ohjelmointi 2, välikoe 21.3.2014 Vastaa neljään tehtävään kuudesta siten, että jokainen tehtävä tulee omalle konseptilleen. Mikäli vastaat useampaan kuin neljään tehtävään, pisteiden laskussa huomioidaan
Lisätiedot15. 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ätiedotLinkitetystä 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ätiedot8. Näppäimistöltä lukeminen 8.1
8. Näppäimistöltä lukeminen 8.1 Sisällys Arvojen lukeminen näppäimistöltä Java-kielessä. In-luokka. In-luokka, käännös ja tulkinta Scanner-luokka. 8.2 Yleistä Näppäimistöltä annettujen arvojen (syötteiden)
LisätiedotHakemistojen 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ätiedotSisältö. Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 6.2
6. Tiedostot 6.1 Sisältö Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 6.2 Johdanto Tiedostoja on käsitelty uudelleenohjattujen standardisyöteja tulostusvirtojen avulla. Tiedostoja voidaan
Lisätiedot14. 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ätiedotTehtä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ätiedotPoikkeustenkä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ätiedotSisä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ätiedotYllä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ätiedotHarjoitustyö: virtuaalikone
Harjoitustyö: virtuaalikone Toteuta alla kuvattu virtuaalikone yksinkertaiselle olio-orientoituneelle skriptauskielelle. Paketissa on testaamista varten mukana kaksi lyhyttä ohjelmaa. Ohjeita Noudata ohjelman
LisätiedotOliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä
Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä Matti Luukkainen 10.12.2009 Tässä esitetty esimerkki on mukaelma ja lyhennelmä Robert Martinin kirjasta Agile and Iterative Development löytyvästä
LisätiedotITKP102 Ohjelmointi 1 (6 op)
ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 7. huhtikuuta 2017 Vastaa kaikkiin tehtäviin. Tee jokainen tehtävä erilliselle konseptiarkille. Kirjoittamasi luokat, funktiot ja aliohjelmat
LisätiedotMikä 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ätiedot18. 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ätiedotTietokannat 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ätiedotKompositio. 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ätiedotSisältö. Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 6.2
6. Tiedostot 6.1 Sisältö Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 6.2 Johdanto Tiedostoja on käsitelty uudelleenohjattujen standardisyöte- ja tulostusvirtojen avulla. Tiedostoja voidaan
Lisätiedot2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)
2. Lisää Java-ohjelmoinnin alkeita Muuttuja ja viittausmuuttuja Vakio ja literaalivakio Sijoituslause Syötteen lukeminen ja Scanner-luokka 1 Muuttuja ja viittausmuuttuja (1/4) Edellä mainittiin, että String-tietotyyppi
LisätiedotOS3 Vaatimusanalyysi
OS3 Vaatimusanalyysi Teemu Ajalin Lauri Jokipii Anu Määttä Juho Peltonen Nuutti Rintala Mikko Suonio Helsinki 17. helmikuuta 2003 Ohjelmistotuotantoprojekti Vaatimusanalyysi HELSINGIN YLIOPISTO Tietojenkäsittelytieteen
LisätiedotSisällys. Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2
6. Metodit 6.1 Sisällys Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2 Oliot viestivät metodeja kutsuen Olio-ohjelmoinnissa ohjelma
LisätiedotSisä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ätiedotOlion 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ätiedoton 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ätiedotTaulukot. Taulukon määrittely ja käyttö. Taulukko metodin parametrina. Taulukon sisällön kopiointi toiseen taulukkoon. Taulukon lajittelu
Taulukot Taulukon määrittely ja käyttö Taulukko metodin parametrina Taulukon sisällön kopiointi toiseen taulukkoon Taulukon lajittelu esimerkki 2-ulottoisesta taulukosta 1 Mikä on taulukko? Taulukko on
LisätiedotSisä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ätiedotOhjelmisto on selainpohjaisen käyttöliittymän tarjoava tietokantajärjestelmä merikotkien seurantaan WWF:n Merikotka-työryhmän tarpeisiin.
TIETOKANTA MERIKOTKIEN SEURANTAAN Käyttöohje Versiohistoria: Versio Päivämäärä Kuvaus Tekijä 1.0 11.12.2007 Ensimmäinen luonnos Janne Piippo 2.0 13.12.2007 Virallinen verio Janne Piippo HELSINGIN YLIOPISTO
LisätiedotSisä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ätiedotAIKAISEMPIEN OPINTOJEN TUNNUSTAMINEN YLEISET HAKUOHJEET
1 AIKAISEMPIEN OPINTOJEN TUNNUSTAMINEN YLEISET HAKUOHJEET Opiskelija täyttää itse hakemansa opintojakson tiedot eli mitä opintojaksoa tai opintojakson osaa hän hakee tunnustettavaksi. Samoin opiskelija
LisätiedotSisä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ätiedotLuokka 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ätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2009 1 / 28 Puhelinluettelo, koodi def lue_puhelinnumerot(): print "Anna lisattavat nimet ja numerot." print
LisätiedotJava 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ätiedotSisä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ätiedot17. 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ätiedotSisältö Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 26.2
26. Tiedostot 26.1 Sisältö Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 26.2 Johdanto Tiedostoja on käsitelty uudelleenohjattujen standardisyöte- ja tulostusvirtojen avulla. Tiedostoja
LisätiedotOhjelmointi 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ätiedotArkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14
Arkkitehtuurikuvaus Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy Ryhmä 14 Muutoshistoria Versio Pvm Päivittäjä Muutos 0.4 1.11.2007 Matti Eerola 0.3 18.10.2007 Matti Eerola 0.2
LisätiedotHYVÄKSILUKEMISEN TEKEMINEN ILMAN ENNAKKOPÄÄTÖSTÄ
HYVÄKSILUKEMISEN TEKEMINEN ILMAN ENNAKKOPÄÄTÖSTÄ Valitse Opintojen rekisteröinti -valikosta komento. Ikkuna aukeaa. Voit valita Näytettävät opinnot - osiosta, mitkä opiskelijan suorituksista näkyvät aktiivisina
LisätiedotOpintokohteiden muokkaus
1 Opintokohteiden muokkaus Näiden ohjeiden avulla hahmottuu kuinka opintokohteita voidaan muokata Opinto-oppaassa. Ohje on suunnattu käyttäjille, joilla on WebOodiin OpasMuokkaaja-oikeudet. WebOodin käyttölupia
LisätiedotOpintojakso 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ätiedotHumakPro-uudistuksia ja -parannuksia / kevät 2013:
HumakPro-uudistuksia ja -parannuksia / kevät 2013: Pikavalikon hallinnointi koskien HALLINTO-osion toimintoja: Henkilöstöllä on mahdollisuus luoda itselleen valikko josta pääsee navigoimaan suoraan tiettyyn
Lisätiedotehops Henkilökohtainen opintosuunnitelma
ehops Henkilökohtainen opintosuunnitelma Hopsin tekeminen WebOodin ehops-toiminnolla KTK-tutkinto Mikä on ehops? ehops on WebOodin toiminto, jolla voit laatia sähköisen henkilökohtaisen opintosuunnitelman
Lisätiedot8. Näppäimistöltä lukeminen 8.1
8. Näppäimistöltä lukeminen 8.1 Sisällys Arvojen lukeminen näppäimistöltä Java-kielessä. In-luokka. In-luokka, käännös ja tulkinta Scanner-luokka. 8.2 Yleistä Näppäimistöltä annettujen arvojen (syötteiden)
Lisätiedot9. 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ätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2011 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2011 1 / 39 Kertausta: tiedoston avaaminen Kun ohjelma haluaa lukea tai kirjoittaa tekstitiedostoon, on ohjelmalle
Lisätiedot14. 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ätiedotListarakenne (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ätiedotAlgoritmit 2. Luento 2 Ke Timo Männikkö
Algoritmit 2 Luento 2 Ke 15.3.2017 Timo Männikkö Luento 2 Tietorakenteet Lineaarinen lista, binääripuu Prioriteettijono Kekorakenne Keko-operaatiot Keon toteutus taulukolla Algoritmit 2 Kevät 2017 Luento
LisätiedotITKP102 Ohjelmointi 1 (6 op)
ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 12. huhtikuuta 2019 Tee kukin tehtävä omalle konseptiarkille. Noudata ohjelmointitehtävissä kurssin koodauskäytänteitä. Yksi A4-kokoinen lunttilappu
LisätiedotSQL-perusteet, SELECT-, INSERT-, CREATE-lauseet
SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet A271117, Tietokannat Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: Leon Atkinson: core MySQL Ari Hovi: SQL-opas TTY:n tietokantojen perusteet-kurssin
LisätiedotOhjelmistojen 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ätiedotKuva: Ilpo Okkonen
OodiHOPS OHJAAJAN OHJE 14.2.2017 Kuva: Ilpo Okkonen OodiHOPS Oulun yliopistossa Oulun yliopiston koulutusneuvosto on päättänyt, että OodiHOPS-toiminto otetaan käyttöön vähintään aloittavilla opiskelijoilla
Lisätiedot