Hirviö. Design Patterns

Koko: px
Aloita esitys sivulta:

Download "Hirviö. Design Patterns"

Transkriptio

1 Hirviö SEPA-päiväkirja Design Patterns Anssi Kalliolahti Liia Sarjakoski 15. maaliskuuta

2 Sisältö 1 Johdanto 3 2 Menetelmän käytäntöön soveltaminen 3 3 Kokemuksia ja muutoksia PP I Model View Controller Command Chain of Responsibility Visitor Singleton / Factory Composite Strategy Decorator I Viimeistely ja toimitus Analyysi Model View Controller Command Chain of Responsibility Visitor Singleton / Factory Composite Strategy Decorator Yhteenveto 8 2

3 1 Johdanto Tämä dokumentti on suunnittelumallien (Design Patterns) käytöstä kertova SEPA-päiväkirja, jonka tarkoituksena on esitellä, kuinka kirjoittajat ovat käyttäneet suunnittelumalleja Hirviöprojektissa. Suunnittelumallit ovat dokumentoituja ja toimiviksi todettuja ratkaisuja yleisiin suunnitteluongelmiin olio-ohjelmoinnissa. Toisin sanottuna suunnittelumallit ovat uudelleenkäytettävän suunnittelun rakennuspalikoita. Järjestelmäarkkitehti Liia Sarjakoski valitsi SEPA-aiheekseen suunnittelumallit, sillä hän oletti niiden olevan hyödyllisiä järjestelmän arkkitehtuurin suunnittelussa ja oli aikonut muutenkin tutkia niitä tarkemmin. Myös Anssi Kalliolahti on mukana Hirviön arkkitehtuurin suunnittelussa ja kokee suunnittelumallit hyödyllisiksi ja mielenkiintoisiksi. Tärkeimpänä lähteenä suunnittelumallien soveltamiseen on käytetty teosta Design Patterns: elements of reusable object-oriented software / Erich Gamma et al. Tämä teos on suunnittelumallien raamattu, katalogi, jota käytetään lähteenä useissa muissa suunnittelumalleja käsittelevissä teoksissa ja artikkeleissa. 2 Menetelmän käytäntöön soveltaminen Suunnittelumalleja käytetään Hirviön arkkitehtuurin suunnittelussa siten, että suunnittelun aikana mietitään valmiiden suunnittelumallien soveltuvuutta käsillä oleviin ongelmiin sen sijaan, että yritettäisiin keksiä kaikkiin ongelmiin ratkaisut itse. Suunnittelumalleja käytetään soveltuvilta osin, eikä arkkitehtuuria yritetä väkisin pakottaa suunnittelumallin mukaiseksi. Hirviö on jaoteltu osiin, joiden sisäinen kohensio on suuri. Nämä ovat järjestelmän moduleita (AAA, DataManagement, GUI ja sovelluslogiikka). Järjestelmä halutaan toteuttaa siten että moduleiden väliset sidokset ovat järkeviä, ja toisaalta itse moduleiden rakenteen tulee olla laajennuskelpoinen. Näiden ehtojen toteuttamiseksi tutkitaan rakenteellisia suunnittelumalleja, joiden toivotaan auttavan sekä kokonaisarkkitehtuurin että modulien sisäisen rakenteen suunnitellussa. Hirviö on sovellus, joka koostuu selkeästi HTML-käyttöliittymästä, tietokannasta ja sovelluslogiikasta. Arkkitehtuurisuunnitelijoilla on tarkoitus hyödyntää Hirviössä Model-View- Controller suunnittelumallia, jolla on ensisijaisesti tarkoitus eriyttää näkymä varsinaisesta sovelluslogiikasta. Tämä on tärkeää, koska perinteistä käyttöliittymäkoodin (XHTML) ja sovelluskoodin (PHP) sekoitusta on hankala lukea, se on heikosti ylläpidettävää ja virhealtista. Jotta MVC-mallin mukainen arkkitehtuuri olisi mahdollinen, on suunniteltava tätä tukeva alusta. Tämän suunnittelussa käytetään apuna sisäiseen käyttäytymiseen keskittyviä malleja (behavioral patterns) ja rakentamiseen keskittyviä malleja (creational patterns). Suunnittelumalleja käytetään ensisijaisesti iteraation I1 alussa, sillä järjestelmän perusarkkitehtuuri suunnitellaan silloin. Suunnittelumalleja pyritään soveltamaan myös iteraation I2 alussa arkkitehtuuriin tulevien tarkennusten osalta. On kuitenkin todennäköistä, että suunnittelumallien merkitys silloin on jo varsin pieni, ja suunnittelu keskittyy enemmän järjestelmän yksityiskohtiin. 3 Kokemuksia ja muutoksia 3.1 PP Suunnittelumalleja ei käytetty PP-iteraation aikana. 3

4 3.2 I1 Iteraation I1 aikana suunnittelumalleja käytettiin arkkitehtuurisuunnittelun apuna. Arkkitehtuurissa voitiin useissa kohdissa hyödyntää valmiita suunnittelumalleja ja toisaalta osan tehdyistä ratkaisuista huomattiin toteuttavan jo jonkin suunnittelumallin perusajatuksen. Suunnittelumalleihin liittyviä UML-kaavioita löytyy Hirviön teknisestä spesifikaatiosta Model View Controller Model-View-Controller -mallissa eriytetään näkymä, malli ja kontrolli. Hirviössä tämä toteutetaan siten että sovelluslogiikka toimii kontrollina, joka ottaa vastaan näkymältä saatuja käyttäjän aiheuttamia tapahtumia. Tapahtuman saatuaan Hirviö voi hakea, päivittää tai muokata mallia, joka käsittää tietokannan, sen käsittelyyn tarkoitetut luokat sekä muut väliaikaisdatan säilytykseen tarkoitetut luokat. Vastoin perinteistä MVC-mallia, Hirviössä näkymä ei suoraan hae muutoksia mallilta, vaan kontrolli välittää mahdolliset muutokset mallilta näkymälle. Tämä johtuu osittain siitä, että mallin ja näkymän välille ei haluttu suoria sidoksia, ja toisaalta siitä, että käyttöliittymän XHTML- ja PHP-kielien sekoitus haluttiin minimoida Command Hirviössä käytetään tapahtumapohjaista WWW-käyttöliittymää. Tämä on toteutettu yksinkertaisesti siten, että jokainen sovelluksen toimia vaativa input-elementti (linkit ja painikkeet) saavat automaattisesti generoidun uniikin ja satunnaisen tunnisteen, jota käytetään varsinaisessa käyttäjän selaimelle välitettävässä XHTML-sivussa. Sivun luontivaiheessa näitä uniikkeja tunnisteita vastaamaan luodaan tapahtumia, jotka enkapsuloidaan luokkaan Event, ja säilötään odottamaan käyttäjän toimia. Tälläinen toiminnon, tai komennon säilöminen luokkaan toteuttaa Command-suunnittelumallin Chain of Responsibility Jotta tapahtumilla olisi jokin merkitys on ne käsiteltävä. Kun käyttäjä painaa linkkiä tai painiketta, lähettää hän käytännössä palvelimelle vastaavan tapahtuman tunnisteen joko POST- tai GET-muuttujassa. Tämän tunnisteen perusteella säilötty tapahtuma voidaan ottaa käsiteltäväksi. Tätä varten järjestelmä tarjoaa abstraktin luokan, joka toimii tapahtumakuuntelijana. Tapahtumakuuntelijat voivat sisältää muita tapahtumakuuntelijoita, jolloin niistä muodostuu käytännössä puu. Lähetettävä tapahtuma ei tiedä suoraan mikä tapahtumankäsittelijä sen hoitaa, vaan se lähetetään etenemään puun juuresta, jolloin tapahtuma läpikäy kaikki tietyn haaran tapahtumakäsittelijät, kunnes se käsitellään. Tällainen käsittelijöiden ketjuttaminen toteuttaa Chain of Responsibility -suunnittelumallin Visitor Linkki- ja painike-elementtien lisäksi on XHTML:ssä tarjolla erilaisia syötteenantomahdollisuuksia kuten tekstikentät, checkboxit ja pudotusvalikot. Näiden käsittely ei aiheuta tapahtumia, mutta niiden sisältöön halutaan päästä käsiksi, ja niitä pitää pystyä päivittämään. Hirviössä tällaisten komponenttien käyttö on toteutettu siten, että niissä näkyvä data syötetään suoraan niitä esittäviin olioihin, ja vastaavasti käyttäjän antama syöte halutaan lukea suoraan niitä esittävistä olioista. Linkkien ja nappien tapaan jokainen syöte-elementti saa uniikin tunnisteen, joka välitetään käyttäjälle XHTML-sivussa. Kun käyttäjä operoi syöte-elementeillä, niihin syötetty data toimitetaan pavelimelle POST-muuttujissa, jotka on nimetty annetulla tunnisteella. 4

5 Jotta syöte saadaan takaisin haluttuihin olioihin, on niihin lisätty joukko visitor -metodeja joilla dataa voidaan operoida. Kun elementti luodaan ruudulle, se kutsuu alustan syötteenhallintaoliota saadakseen uniikin tunnisteen. Kutsuessaan tätä olioita, jokainen inputelementti antaa syötteenhallintaoliolle viittauksen itseensä, jolloin syötteenhallintaolio voi tätä viittausta ja visitor -metodeja hyväksikäyttäen operoida elementin datalla Singleton / Factory Jotta kaikkien syöte-elementtien tunnisteet olisivat yksilöllisiä ja niitä voitaisiin järkevästi hallita, tarvitaan keskitetty palvelu. Koska tämä keskitetty palvelu sijaitsee abstraktisti ajateltuna puun juuressa ja palvelua käyttävät elementit lehdissä, ei viittausta palveluun haluta välittää läpi puun haarojen. Hirviössä tämä palvelu toteutetaan staattisena luokkana, jonka ainoaa suorituksenaikaista instanssia voi käsitellä luokan staattisten metodien välityksellä. Luokan konstruktorista on tehty privaatti, jolloin sitä ei voida luoda, vaan luokka luo itse ainoan instanninsa, kun sen staattisia metodeja ensi kerran kutsutaan. Tällainen yhden instanssin luokka toteuttaa Singleton-suunnittelumallin. Tämä palvelu toimii samalla myös luokkana, joka luo jokaista toiminnon aiheuttavaa syöteelementtiä vastaavan tapahtumaolion, ja säilöö sitä niin pitkään kuin elementti on olemassa (kahden sivupyynnön välisen ajan). Tällainen toisia olioita tuottava luokka toteuttaa suunnittelumallin Factory Composite Hirviön käyttöliittymä on luonteeltaan sellainen, josta löytyy paljon uudelleenkäytettäviä elementtejä, kuten esimerkikis päävalikko. Näistä elementeista luodaan omia luokkia, joita voi yhdistellä. Hirviön käyttöliittymä koostuukin sisäkkäisistä elementeistä, joista muodostuu puumainen rakenne. Puussa olevia elementtejä voidaan hallita tarvittaessa isäelementtiensä avulla. Tälläinen yhdistely toteuttaa Composite-suunnittelumallin Strategy Strategy-mallia on käytetty mahdollistamaan erilaisten todennusmenetelmien ja tietokantojen käyttö järjestelmässä. Eri todennusmenetelmillä on yhteinen rajapinta siten, että mitä tahansa menetelmää voidaa käyttää sen kautta. Eri todennusmenetelmät ovat siis vaihdettavissa keskenään. Käytettävä menetelmä valitaan käyttäjän asetuksien mukaan. Järjestelmä voi käyttää myös erilaisia SQL-tietokantaohjelmistoja vastaavalla menettelyllä, mutta luonnollisesti vain yhtä kerrallaan ja vain niin kauan kuin SQL-lauseet tuottavat kaikilla tietokannoilla saman lopputuloksen. Ratkaisu eroaa puhtaasta Strategy-mallista siten, että Context käyttämisen lisäksi myös luo tarvitsemansa Strategyn. Context ja Strategy ovat Strategy-mallin käsitteitä Decorator Decorator on suunnittelumalli, jolla täydennetään jo olemassaolevaa luokkaa. Hirviössä tietokantayhteydet hoidetaan DatabaseConnection -rajapinnan toteuttavien luokkien avulla. Sovelluslogiikan tasolla ei kuitenkaan haluta käyttää suoraan SQL:ää, joten DatabaseConnection -luokkaa luodaan täydentämään DataManager-luokka, joka abstraktoi SQL:n pois sovelluslogiikan näkyvistä. 3.3 I2 Suunnittelumalleja ei käytetty I2-iteraation aikana. 5

6 Järjestelmän arkkitehtuuri suunniteltiin kokonaisuudessaan iteraation I1-aikana. Iteraatiolla I2 arkkitehtuuriin ei tehty mitään muutoksia, jolloin myös käytetyt suunnittelumallit pysyivät muuttumattomina. Kierroksen aikana oli tarkoitus implementoida varsinainen sovellus, käyttäen hyväksi kierroksella I1 valittuja ratkaisuja. Näiden ratkaisujen soveltuvuus havaittiin hyväksi, eikä alustaan kaivattu mitään muutoksia. SEPA-pari on tyytyväinen tekemiinsä valintoihin. Käytettyjen suunnittelumallien soveltuvuutta pyritään tarkemmin analysoimaan vasta viimeisellä iteraatiolla, jolloin sovellus on valmis, sekä kaikki mahdolliset kokemukset (tämän projektin puitteissa) ovat käytössä. 3.4 Viimeistely ja toimitus Suunnittelumalleja ei käytetty FD-iteraation aikana. Käytettyjen suunnittelumallien soveltuvuutta on analysoitu seuraavassa kappaleessa 4 Analyysi Alla on arvoitu käytettyjen mallien soveltuvuutta sovelluksen valmistuttua. Suunnittelumallien varsinainen käyttö on esitetty kappaleessa Model View Controller PHP ei sellaisenaan pakota sovelluksia mihinkään tiettyyn malliin, eikä sille ole mitään vakiintunutta kirjastoa / runkoa, jota käyttäen sovelluksia voisi toteuttaa. Tämä antaa toteuttajalle vapaat kädet luoda mieleisensä runkoarkkitehtuurin. Ryhmän koon, sekä iteratiivisen toteutuksen vuoksi yhtenäinen tapa toteuttaa ja lisätä toiminnallisuutta kuitenkin nähtiin välttämättömyytenä. Arkkitehtuurin suunnittelussa pyörää ei haluttu lähteä keksimään uudelleen, vaan lähtökohdaksi otettiin tapahtumapohjainen MVCmalli, jollainen esimerkiksi Javan Swing on. MVC-malli oli ehkä kaikkein tärkein käytetyistä suunnittelumalleista. Yksittäisten komponettien luonti käyttäen tätä arkkitehtuuria oli perinteistä HTML:n skriptailua hitaampaa, mutta kokonaisuudessa sen edut olivat huomattavasti tätä haittaa suuremmat. Malli mahdollisti useiden käyttöliittymäkomponenttien ja käyttöliittymäkokonaisuuksien uudelleenkäytön sovelluksen eri osissa (nopeuttaen kehitystä kokonaisuudessaan). Ehkä kaikkein tärkeimpänä, se helpotti toiminnallisuuden lisäämistä iteratiivisesti, sekä teki siitä huomattavasti vähemmän virhealttiimpaa. (Vertailukohteena on käytetty muita vastaavanlaisia, mutta perinteisin tavoin tehtyjä työ- ja kouluprojekteja). Sovelluksen rungon arkkitehtuuri noudatti siis MVC-mallia. PHP ei kuitenkaan tarjonnut suoraan mahdollistuutta toteuttaa sovellusta käyttäen tätä suunnittelumallia, joten ensin oli luotava tämän mahdollistava runko. Rungon oli hoidettava tapahtumien käsittely, sekä samalla piiloitettava sovellustason ohjelmoijilta kaikki heille tarpeeton toiminnallisuus. Loput käytetyistä suunnittelumalleista mahdollistivat tämän. 4.2 Command Tämä oli erittain käyttökelpoinen ratkaisu. Alla on esimerkkinä yksittäisen linkin luominen, sekä tälle määriteltävä tapahtumankäsittelijä, jota runko kutsuu sovellusohjelmoijalle näkymättömästi kun linkkiä on painettu. Sovellusohjelmoija luo linkin ja määrittelee kutsuttavan käsittelijän nimen: 6

7 $do_something_link = new Link( DoSomethingPressed, Press this to do foo ); Sekä määrittelee varsinaisen tapahtumakäsittelijän sovelluslogiikkaluokkaan: public function ondosomethingpressed(event $event) { } dofoo(); dobar(); Malli mahdollisti käyttäjän syötteen keskitetyn käsittelyn. Tämä oli eräs eniten sovellusohjelmoijiin vaikuttaneista suunnittelumalleista, palaute ohjelmoijilta oli myönteinen. 4.3 Chain of Responsibility Tämän mallin tarkoituksena oli mahdollistaa tapahtumia kuuntelevien olioiden ketjutus puuksi siten, että sovelluslogiikka olisi voitu pilkkoa useisiin osiin. Kaikki sovelluslogiikka kuitenkin keskittyi yksittäiseen luokkaan, jolloin tätä mahdollisuutta ei hyödynnetty. Jälkeenpäin kuinenkin huomattiin, että logiikka olisi ollut järkevää pilkkoa useampiin oliohin (jo päivityskonfliktien estämiseksi), mutta tässä vaiheessa koodia oli jo niin paljon, ettei sitä enää jälkikäteen tehty ongelmien välttämiseksi (tai refaktoroitu vastaavan SEPA-parin toimesta). 4.4 Visitor Erilaisten syöte-elementtien (tekstikenttien ja valikoiden) haluttiin toimivan mahdollisimman samankaltaisesti kuin muissa vastaavissa toteutuksissa (esimerkiksi Java Swing). Tavoitteena oli toteuttaa sellaisia syöte-elementtejä, joihin käyttäjän antama syöte siirrettiin sovellusohjelmoijalta näkymättömästi seuraavan sivulatauksen yhteydessä. Käytännössä tämä tarkoitti sovellusohjelmoijan kannalta sitä, että esimerkiksi tallennusnappia vastaavassa tapahtumakäsittelijässä ohjelmoija pystyi lukemaan käyttäjän antaman syötteen suoraan inputelementtiä kuvaavasta olioista: $search_field = new FormTextField(); Ja tallennuksen jälkeisessä tapahtumakäsittelijässä käyttäjän syöttämään arvoon päästiin käsiksi seuraavasti: $search_field->getvalue(); Tällä suunnittelumallilla toteutettu toiminnallisuus oli myös sovellusohjelmoijille näkyvä. Ohjeilmoijien palaute tästä oli myönteinen. 7

8 4.5 Singleton / Factory Tämän suunnittelumallin mukaisesti toteutettiin tapahtumien käsittelyn ydin (InputProcessor, joka ei ole sovellustasolla näkyvissä). Ratkaisu osoittautui toimivaksi ja sitä ei ollut tarve muttaa jälkikäteen. 4.6 Composite Käyttöliittymäoliot luotiin composite-mallia hyödyntäen. Mallin käyttö mahdollisti yksittäisten komponenttien, ja jopa suurempien kokonaisuuksien uusiokäytön eri sovelluksen osissa. Hyvä ratkaisu, joka omalta osaltaan vähensi työtä loppuvaiheessa. 4.7 Strategy Tämän suunnittelumallin tarkoituksena on mahdollistaa sovelluksen helppo siirrettävyys tietokantaympäristöstä toiseen (esimerkiksi PostgreSQL:stä MySQL:ään), sekä mahdollistaa useiden erilaisten autentikontimenetelmien käytön, siten että vaaditut muutokset keskittyisivät yksittäiseen sovelluksen osaan (ei varsinaiseen sovelluslogiikkaan). Projektin aikana sovellukseen ei kuitenkaan luotu kuin yksi autentikointimenetelmä sekä yksi kantayhteys (PostgreSQL), joten mallin toimivuuden toteaminen jää mahdollisille jatkokehittäjille. 4.8 Decorator Tätä suunnittelumallia käyttäen saatiin abstraktoitua sovellusohjelmoijilta tietty monimutkaisuus pois. Mallin hyödyntäminen keskittyi käytännössä tietokannan käsittelyyn: PostgreSQLConnection on varsinainen tietokantayhteysluokka, joka toteuttaa DatabaseConnectionrajapinnan. Tälle rajapinnalle on kuitenkin syötettävä SQL-lauseita, jotta niitä voi käyttää. Varsinaiseen sovelluslogiikkaan ei kuitenkaan haluttu SQL:ää, joten DatabaseConnectionia hyödyntämään luotiin DataManager-decorator luokka, joka käytti DatabaseConnectionin tarjoamaa toiminnallisuutta ja tarjosi samalla itsensä käyttäjälle hyvin yksinkertaisen rajapinnan haluttujen hakujen tekemiseen. Mallin käyttö oli hyödyllistä, koska näin kantariippuvainen SQL saatiin varsinaisesta sovelluslogiikasta täysin pois. 5 Yhteenveto Suunnittelumalleja käyttämällä saatiin aikaan normaali tapahtumapohjainen, MVC-mallin mukainen sovellus, ilman että pyörää olisi tarvinnut keksiä useassa paikassa uudelleen (tai oikeastaan pyörän muotoa, varsinainen pyörä oli käytännössä toteutettava). Toteutettu sovellus on näin myös tilallinen (palvelimen osalta), mikä poikkeaa yleisestä käytännöstä websovelluksien yhteydessä. Suunnittelumalleja hyödyntämällä varsinaisille sovellusohjelmoijille saatiin luotua ympäristö, joka oli tarpeeksi nopeasti opittavissa ja mahdollisti helpon iteratiivisen kehityksen, ilman suurempia sudenkuoppia. Arkkitehtuurista, käytetyistä suunnittelumalleista, sekä tilallisesta sovelluksesta johtuva suurin negatiivinen asia on näkyvissä loppukäyttäjälle oli se, että selaimen navigointinappeja ei voi käyttää (toisaalta nyt käyttäjä ei voi myöskään korruptoida sovellusta tai tietokantaa käyttämällä navigointinappeja). 8

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

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

Lisätiedot

4.12.2005. SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T

4.12.2005. SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T SEPA: REFAKTOROINTI 2 (9) SEPA: REFAKTOROINTI 3 (9) VERSIOHISTORIA Version Date Author Description 0.1 2.12.2005 Erik Hakala Ensimmäinen

Lisätiedot

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta. Malli-näkym kymä-ohjain arkkitehtuurit (Model-View View-Controller, MVC) Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta. Lähtökohdat: Sovelluksen

Lisätiedot

Ohjelmistotuotanto. Luento 9 23.4.2012

Ohjelmistotuotanto. Luento 9 23.4.2012 Ohjelmistotuotanto Luento 9 23.4.2012 Lisää suunnittelumalleja Olion rikastaminen dekoraattorilla Joskus eteen tulee tarve lisätä olioon jotain ekstraominaisuuksia, pitäen kuitenkin olio sellaisena että

Lisätiedot

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op

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

Lisätiedot

Graafinen käyttöliittymä, osa 1

Graafinen käyttöliittymä, osa 1 Graafinen käyttöliittymä, osa 1 Idea, MVC-malli ja ensimmäinen ohjelma Graafinen käyttöliittymä Ensimmäisen kerran tavoitteena on oppia graafisen ohjelman perusidea sekä oppia laatimaan esimerkin mukaan

Lisätiedot

WWW-sivut HTML-kielellä esitettyä hypertekstiaineistoa

WWW-sivut HTML-kielellä esitettyä hypertekstiaineistoa WWW ja tietokannat WWW-sivut HTML-kielellä esitettyä hypertekstiaineistoa tekstiä, kuvia, hyperlinkkejä Staattiset sivut kirjoitettu kerran, muuttaminen käsin ongelmana pysyminen ajantasalla Ylläpito hankalaa,

Lisätiedot

<e.g. must, essential, conditional> Käyttötapaukset Kurssin malli käyttötapauksille: Tila < List of users and the other systems that interacts directly with a system>

Lisätiedot

582203 Tietokantasovellus (4 op) - Web-sovellukset ja niiden toteutus

582203 Tietokantasovellus (4 op) - Web-sovellukset ja niiden toteutus 582203 Tietokantasovellus (4 op) - Web-sovellukset ja niiden toteutus Sisältö Mikä on web-sovellus? Selaimen rooli web-sovelluksessa Palvelimen rooli web-sovelluksessa Aineistopyynnöt Tiedon välittäminen

Lisätiedot

Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14

Arkkitehtuurikuvaus. 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ätiedot

http://www.enteract.com/~bradapp/docs/patterns-intro.html http://www.hillside.net/patterns/

http://www.enteract.com/~bradapp/docs/patterns-intro.html http://www.hillside.net/patterns/ 5. Suunnittelumallit Suunnittelumallin käsite Suunnittelumallien hyötyjä Suunnittelumallien kuvaaminen Esimerkki: Rekursiokooste Antisuunnittelumallit Suunnittelumallit ja UML Mallikielet Suunnittelumallit

Lisätiedot

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

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

Lisätiedot

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

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

Lisätiedot

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Kirjoita jokaiseen palauttamaasi konseptiin kurssin nimi, kokeen päivämäärä, oma nimi ja opiskelijanumero. Vastaa kaikkiin tehtäviin omille konsepteilleen.

Lisätiedot

Suunnittelumallien käyttö ohjelmistosuunnittelussa

Suunnittelumallien käyttö ohjelmistosuunnittelussa Suunnittelumallien käyttö ohjelmistosuunnittelussa Mika Rantakeisu Rovaniemen ammattikorkeakoulu Avoin ammattikorkeakoulu mika.rantakeisu@edu.ramk.fi Tiivistelmä Tämä on selvitys suunnittelumallien käytöstä

Lisätiedot

Written by Administrator Monday, 05 September 2011 15:14 - Last Updated Thursday, 23 February 2012 13:36

Written by Administrator Monday, 05 September 2011 15:14 - Last Updated Thursday, 23 February 2012 13:36 !!!!! Relaatiotietokannat ovat vallanneet markkinat tietokantojen osalta. Flat file on jäänyt siinä kehityksessä jalkoihin. Mutta sillä on kuitenkin tiettyjä etuja, joten ei se ole täysin kuollut. Flat

Lisätiedot

Web Services tietokantaohjelmoinnin perusteet

Web Services tietokantaohjelmoinnin perusteet ASP.NET Web Services Web Services tietokantaohjelmoinnin 2 (22) Sisällys Harjoitus 1: Tietokannat ja Web Services... 3 Harjoitus 2: Windows Client... 10 Harjoitus 3: Datan päivitys TableAdapterin avulla...

Lisätiedot

TIE-20200 Ohjelmistojen suunnittelu

TIE-20200 Ohjelmistojen suunnittelu TIE-20200 Ohjelmistojen suunnittelu Luento 6: MVC:t ja kumppanit Samuel Lahtinen TIE-20200 Samuel Lahtinen 1 Ajankohtaista Harjoitustyö Versiohallinnan salasanat jne. lähetetty, ota yhteyttä, jos on kadoksissa

Lisätiedot

Ohjelmistoarkkitehtuurit. Syksy 2008

Ohjelmistoarkkitehtuurit. Syksy 2008 Ohjelmistoarkkitehtuurit Syksy 2008 Kai Koskimies 1 Tervetuloa Kuopion yliopisto, Oulun yliopisto, Tampereen yliopisto, Teknillinen korkeakoulu, Turun yliopisto, Vaasan yliopisto, Tampereen teknillinen

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 12.4.2010 T-106.1208 Ohjelmoinnin perusteet Y 12.4.2010 1 / 34 Graafiset käyttöliittymät Tähän asti kirjoitetuissa ohjelmissa on ollut tekstipohjainen käyttöliittymä.

Lisätiedot

TIE-20200 Ohjelmistojen suunnittelu

TIE-20200 Ohjelmistojen suunnittelu TIE-20200 Ohjelmistojen suunnittelu Luento 1: Virtuaalifunktiot, Template method 1 Yleistä asiaa Muistakaa harkkatyöilmoittautuminen 23 ryhmää (mm. lihansyöjäkirahvi), vajaita ryhmiäkin on 44 henkeä vielä

Lisätiedot

1 Tehtävän kuvaus ja analysointi

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

Mikä yhteyssuhde on?

Mikä yhteyssuhde on? 1 Yhteyssuhde Mikä yhteyssuhde on? Yhteyssuhde Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma 1 Mikä yhteyssuhde on? Tili - : String - : double * 1 Asiakas - hetu: String - : String

Lisätiedot

Osio 4: Graafinen käyttöliittymä

Osio 4: Graafinen käyttöliittymä Javan Swing-tekniikan perusteet: Muistutus: Tarvitset seuraavia komponentteja harjoituksissa: otsikkoteksti (label) muokkausruutu (text field) komentopainike (button) yhdistelmäruutu (combo box) paneeli

Lisätiedot

12. Kehysarkkitehtuurit

12. Kehysarkkitehtuurit 12. Kehysarkkitehtuurit Johdanto Kehystyypit Kehysten osittaminen Kehykset ja suunnittelumallit Kehysten etuja ja ongelmia Yhteenvetoa Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 1 Johdanto

Lisätiedot

AJAX-konsepti AJAX. Asynkronisuus. Nykyisten web-ohjelmien ongelmia. Asynchronous JavaScript And XML

AJAX-konsepti AJAX. Asynkronisuus. Nykyisten web-ohjelmien ongelmia. Asynchronous JavaScript And XML AJAX-konsepti AJAX Asynchronous JavaScript And XML Viimeisin muoti-ilmiö web-ohjelmoinissa, termi Ajax tuli käyttöön vuoden 2005 aikana Joukko teknologioita, joiden avulla voidaan toteuttaa uudenlaisen

Lisätiedot

Sovellusarkkitehtuurit

Sovellusarkkitehtuurit HELIA TiKo-05 1 (9) Sovellusarkkitehtuurit ODBC (Open Database Connectivity)... 2 JDBC (Java Database Connectivity)... 5 Middleware... 6 Middleware luokittelu... 7 Tietokanta -middleware... 8 Tapahtumamonitorit

Lisätiedot

Tietokannat II -kurssin harjoitustyö

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

Lisätiedot

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

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

Lisätiedot

Johdanto Javaan ja tietokantojen käsittelyyn Java Database Connectivity (JDBC)

Johdanto Javaan ja tietokantojen käsittelyyn Java Database Connectivity (JDBC) HAAGA-HELIA ICT1TA006: Ohjelmointi 1 /5 Johdanto Javaan ja tietokantojen käsittelyyn Java Database Connectivity (JDBC) (Lähteet: Oracle java jdbc Tutorial, Arvo Lipitsäinen: Tietokannan käsittely JDBC:n

Lisätiedot

Perusarkkitehtuurin ja vuorovaikutuksen mallintamisen perusteita.

Perusarkkitehtuurin ja vuorovaikutuksen mallintamisen perusteita. Perusarkkitehtuurin ja vuorovaikutuksen mallintamisen perusteita. Arkkitehtuuriin vaikuttavat ympäristötekijät Jo kehittämisen alkuvaiheessa on tarpeellista hahmotella arkkitehtuurin perusratkaisu. Lähtökohdat

Lisätiedot

Kirkkopalvelut Office365, Opiskelijan ohje 1 / 17 IT Juha Nalli 22.12.2015

Kirkkopalvelut Office365, Opiskelijan ohje 1 / 17 IT Juha Nalli 22.12.2015 Kirkkopalvelut Office365, Opiskelijan ohje 1 / 17 Oppilaat saavat vuoden 2016 alusta käyttöönsä oppilaitoksen sähköpostin ja muita palveluita Microsoftin Office365:sta. Oppilaiden sähköposti on muotoa

Lisätiedot

Ohjelmistokehykset ohjelmistorunkoja uudelleenkäyttö olioperustaisista ohjelmistorunko

Ohjelmistokehykset ohjelmistorunkoja uudelleenkäyttö olioperustaisista ohjelmistorunko Ohjelmistokehykset Määritelmä & tavoitteet, taustaa & peruskäsitteitä, kehykset vs. suunnittelumallit, erikoistamisrajapinnat & kontrollinkulku, kehystyypit, kehysten rakenne ja evoluutio, esimerkki: JHotDraw,

Lisätiedot

1. Olio-ohjelmointi 1.1

1. Olio-ohjelmointi 1.1 1. Olio-ohjelmointi 1.1 Sisällys Olio-ohjelmointi on eräs ohjelmointiparadigma. Olio-ohjelmoinnin muotoja. Ohjelmiston analyysi ja suunnittelu. Olioparadigman etuja ja kritiikkiä. 1.2 Ohjelmointiparadigmoja

Lisätiedot

T-76.611 Ohjelmistojen määrittely- ja suunnittelumenetelmät Harjoitustyöraportti TNT - Tarkistetaan Ne Tentit Arkkitehtuuri- ja suunnittelumalli

T-76.611 Ohjelmistojen määrittely- ja suunnittelumenetelmät Harjoitustyöraportti TNT - Tarkistetaan Ne Tentit Arkkitehtuuri- ja suunnittelumalli T-76.611 Ohjelmistojen määrittely- ja suunnittelumenetelmät Harjoitustyöraportti TNT - Tarkistetaan Ne Tentit Arkkitehtuuri- ja suunnittelumalli Lasse Lindqvist Lasse Lopperi llindqvi@cc.hut.fi lmlopper@cc.hut.fi

Lisätiedot

Olio-ohjelmointi Suunnittelumallit Adapter ja Composite. 1. Adapter

Olio-ohjelmointi Suunnittelumallit Adapter ja Composite. 1. Adapter Olio-ohjelmointi Suunnittelumallit Adapter ja Composite Rakennemalleissa päähuomio kohdistetaan siihen, miten luokkia ja olioita yhdistellään muodostamaan laajempia rakenteita. Rakenteelliset luokkamallit

Lisätiedot

JReleaser Yksikkötestaus ja JUnit. Mikko Mäkelä 6.11.2002

JReleaser Yksikkötestaus ja JUnit. Mikko Mäkelä 6.11.2002 JReleaser Yksikkötestaus ja JUnit Mikko Mäkelä 6.11.2002 Sisältö Johdanto yksikkötestaukseen JUnit yleisesti JUnit Framework API (TestCase, TestSuite) Testien suorittaminen eri työkaluilla Teknisiä käytäntöjä

Lisätiedot

Harjoitustehtävät ja ratkaisut viikolle 48

Harjoitustehtävät ja ratkaisut viikolle 48 Harjoitustehtävät ja ratkaisut viikolle 48 1. Tehtävä on jatkoa aiemmalle tehtävälle viikolta 42, missä piti suunnitella älykodin arkkitehtuuri käyttäen vain ennalta annettua joukkoa ratkaisuja. Tämäkin

Lisätiedot

7 Viestipohjaisten yritysjärjestelmien suunnittelumallit

7 Viestipohjaisten yritysjärjestelmien suunnittelumallit 7 Viestipohjaisten yritysjärjestelmien suunnittelumallit Hohpe G., Woolf B.: Enterprise Integration Patterns. Addison-Wesley 2004. Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 1 Viestinvälitykseen

Lisätiedot

2. Olio-ohjelmoinista lyhyesti 2.1

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

Lisätiedot

Viestinvälitysarkkitehtuurit Lähtökohta:

Viestinvälitysarkkitehtuurit Lähtökohta: Ohjelmistoarkkitehtuurit Kevät 2012-2013 Johannes Koskinen http://www.cs.tut.fi/~ohar/ 1 Viestinvälitysarkkitehtuurit Lähtökohta: Järjestelmä koostuu keskenään kommunikoivista komponenteista, mahdollisesti

Lisätiedot

Viestinvälitysarkkitehtuurit

Viestinvälitysarkkitehtuurit Viestinvälitysarkkitehtuurit Lähtökohta: Järjestelmä koostuu keskenään kommunikoivista komponenteista, mahdollisesti hajautettuja Komponenttien palveluja ei tiedetä tarkasti etukäteen Komponentteja ja

Lisätiedot

T 76.115 Tietojenkäsittelyopin ohjelmatyö Hirviöryhmä loppukatselmointi. Hirviö. Projektikatselmointi

T 76.115 Tietojenkäsittelyopin ohjelmatyö Hirviöryhmä loppukatselmointi. Hirviö. Projektikatselmointi Hirviö Projektikatselmointi Mikä Hirviö on? Hajautettu muistikirja Professoreille Muistiinpanoja keskusteluista opiskelijan kanssa Diplomitöiden ja jatko opintojen seuranta Raportointi Opetushenkilökunnalle

Lisätiedot

VisualStudio Pikaopas, osa 1: WEB sivujen suunnittelu

VisualStudio Pikaopas, osa 1: WEB sivujen suunnittelu HAAGA HELIA/IltaTiko ICT2TD005: Ohjelmisto suunnittelutaito 1 VisualStudio Pikaopas, osa 1: WEB sivujen suunnittelu Tämä pikaopas opastaa käyttämään VisualStudion web sivujen suunnittelu ja toteutusominaisuuksia.

Lisätiedot

Sunnittelumallit Harjoitustehtävät syksy 2015 / Simo Silander

Sunnittelumallit Harjoitustehtävät syksy 2015 / Simo Silander Sunnittelumallit Harjoitustehtävät syksy 2015 / Simo Silander Ohjelmointitehtävät koodataan pääsääntöisesti Javalla. Netistä löytyviä vapaasti käytettäviä ratkaisuja voi esittää, kunhan ne osaa selittää.

Lisätiedot

Muutamia peruskäsitteitä

Muutamia peruskäsitteitä Muutamia peruskäsitteitä Huom. 1: nämä peruskäsitteet eivät muodosta hyvin määriteltyä keskenään yhteensopivien käsitteiden joukkoa, vaan käsitteet ovat osittain päällekkäisiä ja eri yhteyksissä niillä

Lisätiedot

Uutiskirjesovelluksen käyttöohje

Uutiskirjesovelluksen käyttöohje Uutiskirjesovelluksen käyttöohje Käyttäjätuki: Suomen Golfpiste Oy Esterinportti 1 00240 HELSINKI Puhelin: (09) 1566 8800 Fax: (09) 1566 8801 E-mail: gp@golfpiste.com 2 Sisällys Johdanto... 1 Päänavigointi...

Lisätiedot

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

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

Lisätiedot

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset

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

Lisätiedot

Palveluperustaiset arkkitehtuurityylit

Palveluperustaiset arkkitehtuurityylit Palveluperustaiset arkkitehtuurityylit Mukana palvelun tarjoajia ja palvelun käyttäjiä Perusajatuksena tyypillisesti tarjota johonkin resurssiin liittyviä palveluita 1 Asiakas-palvelin -arkkitehtuurit

Lisätiedot

TIE-20200 Ohjelmistojen suunnittelu

TIE-20200 Ohjelmistojen suunnittelu TIE-20200 Ohjelmistojen suunnittelu Luento 1: Virtuaalifunktiot, Template method 1 Seuraavaksi tarjolla: Otekn-asiaa vähän pintaa syvemmältä Virtuaalifunktiot ja erikoistaminen, olioiden kopiointi ja elinaika

Lisätiedot

Järjestelmäarkkitehtuuri (TK081702) Hajautettu tietokanta. Hajautuksen hyötyjä

Järjestelmäarkkitehtuuri (TK081702) Hajautettu tietokanta. Hajautuksen hyötyjä Järjestelmäarkkitehtuuri (TK081702) Hajautettu tietokanta Hajautettu tietokanta Jokainen hajautettu tietokanta muodostaa oman kokonaisuutensa Loogisesti yhtenäinen data on hajautettu tietokantoihin (eri

Lisätiedot

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena Ohjelmointikielet ja -paradigmat 5op Markus Norrena Kotitehtävistä: Pankkitilit kotitehtävä 7 Toteuttakaa kotitehtävä 1:n kuvan mukaiset metodit open(), close(), deposit(), withdraw(), joilla voi Nostaa

Lisätiedot

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1 3. Komponentit ja rajapinnat 3.1 Komponenttien idea: ohjelmistotuotannon rationalisointi 3.2 Mikä on ohjelmistokomponentti? 3.3 Komponentit ohjelmistoyksikköinä 3.4 Rajapinnat 3.6 Komponenttien räätälöinti

Lisätiedot

Ohjelmistojen mallintaminen Olioiden yhteistyö. 18.11.2008 Harri Laine 1

Ohjelmistojen mallintaminen Olioiden yhteistyö. 18.11.2008 Harri Laine 1 Ohjelmistojen mallintaminen Olioiden yhteistyö 18.11.2008 Harri Laine 1 Olioiden yhteistyö Oliokeskeisen ohjelmistonäkemyksen mukaan ohjelmiston palvelut tuotetaan olioiden yhteistyön tuloksena. Ohjelmisto

Lisätiedot

Aalto Yliopisto T-106.2001 Informaatioverkostot: Studio 1. Oliot ja luokat Javaohjelmoinnissa

Aalto Yliopisto T-106.2001 Informaatioverkostot: Studio 1. Oliot ja luokat Javaohjelmoinnissa Aalto Yliopisto T-106.2001 Informaatioverkostot: Studio 1 Oliot ja luokat Javaohjelmoinnissa Vesa Laakso 22.9.2012 Sisällysluettelo Sisällysluettelo... 1 Johdanto... 2 1. Luokka... 2 2. Olio... 2 3. Luokan

Lisätiedot

Rakennusten elinkaarimittareiden verkkotyökalun käyttöohje. www.360optimi.com/kiinteistopassi

Rakennusten elinkaarimittareiden verkkotyökalun käyttöohje. www.360optimi.com/kiinteistopassi Rakennusten elinkaarimittareiden verkkotyökalun käyttöohje www.360optimi.com/kiinteistopassi Bionova Consulting, luottamuksellinen Viimeksi päivitetty 9. syyskuuta 2014 Käyttöohjeen sisällysluettelo Luo

Lisätiedot

Suunnittelumallit. OULUN YLIOPISTO Tietojenkäsittelytieteiden laitos Oliosuuntautunut analyysi ja -suunnittelu 27. joulukuuta 2003

Suunnittelumallit. OULUN YLIOPISTO Tietojenkäsittelytieteiden laitos Oliosuuntautunut analyysi ja -suunnittelu 27. joulukuuta 2003 Suunnittelumallit OULUN YLIOPISTO Tietojenkäsittelytieteiden laitos Oliosuuntautunut analyysi ja -suunnittelu 27. joulukuuta 2003 Mikael Kujanpää mahead@ee.oulu.fi LuTK / TOL -03 Tiivistelmä Suunnittelumallit

Lisätiedot

Harjoitustyö (TKO_2023)

Harjoitustyö (TKO_2023) Harjoitustyö (TKO_2023) Jyri Lehtonen (72039) (alkuperäinen 29.1.2008) päivitetty: 8.2.2008 1 Tehtävän kuvaus ja analysointi 1.1 Tehtävänanto Tee Java-appletti, joka kysyy käyttäjältä asioita Java-kielestä.

Lisätiedot

BaseMidlet. KÄYTTÖOHJE v. 1.00

BaseMidlet. KÄYTTÖOHJE v. 1.00 KÄYTTÖOHJE v. 1.00 KUVAUS BaseMidlet on matkapuhelimessa toimiva sovellus jolla voi etäkäyttää Tiimi 7000 sarjan säätimiä. Copyright Team-Control Oy, oikeudet muutoksiin pidätetään. TiiMi on Team-Control

Lisätiedot

Määrittelydokumentti NJC2. Helsinki 11.2.2004 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Määrittelydokumentti NJC2. Helsinki 11.2.2004 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Määrittelydokumentti NJC2 Helsinki 11.2.2004 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti ( ov) Projektiryhmä Eero Anttila Olli

Lisätiedot

XHTML - harjoitus. Tehtävä1: Tee xhtml tiedosto käyttäen notepad (muistio) ohjelmaa. Tiedoston tallennus notepad (muistio) ohjelmassa:

XHTML - harjoitus. Tehtävä1: Tee xhtml tiedosto käyttäen notepad (muistio) ohjelmaa. Tiedoston tallennus notepad (muistio) ohjelmassa: XHTML - harjoitus Tehtävä1: Tee xhtml tiedosto käyttäen notepad (muistio) ohjelmaa Tiedoston tallennus notepad (muistio) ohjelmassa: Jokaisen XHTML-dokumentin tulisi alkaa XML-määrittelyllä(engl.XML-prologue),

Lisätiedot

Joskus yleistäminen voi tapahtua monen ominaisuuden pohjalta. Myös tällöin voi tulla moniperintätilanteita.

Joskus yleistäminen voi tapahtua monen ominaisuuden pohjalta. Myös tällöin voi tulla moniperintätilanteita. Moniperintä 2 Joskus yleistäminen voi tapahtua monen ominaisuuden pohjalta. Myös tällöin voi tulla moniperintätilanteita. Oliomallinnus TITE.2040 Hannu K. Niinimäki 1 Delegointi 1 Moniperinnän toteuttaminen

Lisätiedot

Microsoft Visual Studio 2005

Microsoft Visual Studio 2005 Microsoft Visual Studio 2005 on integroitu kehitysympäristö (Integrated Development Environment) eli (IDE). Kehitysympäristöön kuuluvat seuraavat keskeiset sovelluskehitysvälineet: Ohjelmointikielet C#.NET

Lisätiedot

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät Tenttikysymykset 1. Selitä mitä asioita kuuluu tietojärjestelmän käsitteeseen. 2. Selitä kapseloinnin ja tiedon suojauksen periaatteet oliolähestymistavassa ja mitä hyötyä näistä periaatteista on. 3. Selitä

Lisätiedot

P e d a c o d e ohjelmointikoulutus verkossa

P e d a c o d e ohjelmointikoulutus verkossa P e d a c o d e ohjelmointikoulutus verkossa Java-kielen perusteet Teoria ja ohjelmointitehtävät Java-kielen perusteet 3 YLEISKATSAUS KURSSIN SISÄLTÖIHIN 10 JAVA-KIELEN PERUSTEET 10 OPISKELUN ALOITTAMINEN

Lisätiedot

KERROSARKKITEHTUURIN SUUNNITTELUMALLIT. Kuisma Lehtonen. 15.8.2006 Joensuun yliopisto Tietojenkäsittelytiede Pro gradu -tutkielma

KERROSARKKITEHTUURIN SUUNNITTELUMALLIT. Kuisma Lehtonen. 15.8.2006 Joensuun yliopisto Tietojenkäsittelytiede Pro gradu -tutkielma KERROSARKKITEHTUURIN SUUNNITTELUMALLIT Kuisma Lehtonen 15.8.2006 Joensuun yliopisto Tietojenkäsittelytiede Pro gradu -tutkielma TIIVISTELMÄ Suunnittelumallit ovat yleisiä ratkaisuja tiettyihin oliopohjaisiin

Lisätiedot

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas Tiedonhallinnan perusteet Viikko 1 Jukka Lähetkangas Kurssilla käytävät asiat Tietokantojen toimintafilosofian ja -tekniikan perusteet Tiedonsäilönnän vaihtoehdot Tietokantojen suunnitteleminen internetiä

Lisätiedot

Taulukot. Jukka Harju, Jukka Juslin 2006 1

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

Lisätiedot

Verkkosivut perinteisesti. Tanja Välisalo 11.2.2009

Verkkosivut perinteisesti. Tanja Välisalo 11.2.2009 Verkkosivut perinteisesti Tanja Välisalo 11.2.2009 WWW-sivujen vieminen omaan kotisivutilaan yliopiston mikroverkossa https://salasana.jyu.fi Klikkaa painiketta Activate WWW Klikkaa painiketta Activate

Lisätiedot

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Tietorakenneluokkia 2: HashMap, TreeMap

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Tietorakenneluokkia 2: HashMap, TreeMap Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Tietorakenneluokkia 2: HashMap, TreeMap Tietorakenneluokkia ja -rajapintoja Java tarjoaa laajan kokoelman tietorakennerajapintoja ja - luokkia. Aiemmin

Lisätiedot

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

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

Lisätiedot

Kuva 1. Jokaisen tavallisen kuvan tasotyökalussa näkyy vain yksi taso, tässä nimellä tausta.

Kuva 1. Jokaisen tavallisen kuvan tasotyökalussa näkyy vain yksi taso, tässä nimellä tausta. Gimp alkeet XII 9 luokan ATK-työt/HaJa Sivu 1 / 6 GIMP:in tasotyökalu Lue ensin nämä ohjeet! Harjoitus lopussa! GIMP:in tasotyökalu on nimensä mukaisesti työkalu, jolla hallitaan tasoja, niiden läpinäkyvyyttä,

Lisätiedot

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

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

Lisätiedot

TIETOKANNAT JOHDANTO

TIETOKANNAT JOHDANTO TIETOKANNAT JOHDANTO JOUNI HUOTARI & ARI HOVI 2000-2011 Tieto TAUSTAA Yritykselle tiedot ovat tärkeä resurssi päätöksenteon tukena (JIT) varastointi ja käyttö vaativat investointeja vrt. energia (lähde,

Lisätiedot

Opera Hotel Edition. Arvonlisäverokantojen muutos Operaan 01.07.2010. Finland. Toukokuu 2010 MICROS-Fidelio Finland Oy, Hotel Systems HelpDesk

Opera Hotel Edition. Arvonlisäverokantojen muutos Operaan 01.07.2010. Finland. Toukokuu 2010 MICROS-Fidelio Finland Oy, Hotel Systems HelpDesk Opera Hotel Edition Arvonlisäverokantojen muutos Operaan 01.07.2010 Toukokuu 2010 MICROS-Fidelio Finland Oy, Hotel Systems HelpDesk Sivu / Page: 1 / 15 Document revision history Version Revision Author

Lisätiedot

Johdatus rakenteisiin dokumentteihin

Johdatus rakenteisiin dokumentteihin -RKGDWXVUDNHQWHLVLLQGRNXPHQWWHLKLQ 5DNHQWHLQHQGRNXPHQWWL= rakenteellinen dokumentti dokumentti, jossa erotetaan toisistaan dokumentin 1)VLVlOW, 2) UDNHQQHja 3) XONRDVX(tai esitystapa) jotakin systemaattista

Lisätiedot

Navistools Standard. Navistools

Navistools Standard. Navistools Navistools Standard Navistools on Naviswork pohjainen Asset management sovellus, jota käytetään laitoksen, infrakohteen tai rakennuksen elinkaarenaikasen tiedonhallintaan, suunnittelusta työmaavaiheen

Lisätiedot

Ohje: Miten haen artikkeleita Aleksista

Ohje: Miten haen artikkeleita Aleksista Ohje: Miten haen artikkeleita Aleksista a) Mikä on Aleksi?... 1 b) Verkkopalvelun ulkoasu. 1 c) Artikkelien hakeminen... 2 d) Artikkelien lukeminen... 4 e) Artikkelien lisääminen koriin.. 5 a) Mikä on

Lisätiedot

Open Journal Systems digitoitujen aineistojen tallennusalustana ANTTI-JUSSI NYGÅRD SUUNNITTELIJA, TIETEELLISTEN SEURAIN VALTUUSKUNTA

Open Journal Systems digitoitujen aineistojen tallennusalustana ANTTI-JUSSI NYGÅRD SUUNNITTELIJA, TIETEELLISTEN SEURAIN VALTUUSKUNTA Open Journal Systems digitoitujen aineistojen tallennusalustana ANTTI-JUSSI NYGÅRD SUUNNITTELIJA, TIETEELLISTEN SEURAIN VALTUUSKUNTA OJS digitoitujen aineistojen julkaisualustana Mikä Open Journal Systems

Lisätiedot

Kertaus: yleistys-erikoistus ja perintä

Kertaus: yleistys-erikoistus ja perintä Kertaus: yleistys-erikoistus ja perintä Nauta, Lehmä ja Kuttu ovat Kotieläimiä, Kotieläimet Eläimiä Kotieläimillä (siis myös Naudoilla, Lehmillä ja Kutuilla) on Omistaja Kuttu ja Lehmä toteuttavat rajapinnan

Lisätiedot

Vaasan kaupungin nuorten kesätyöt haetaan Kuntarekry.fi työnhakuportaalin kautta.

Vaasan kaupungin nuorten kesätyöt haetaan Kuntarekry.fi työnhakuportaalin kautta. Mistä on kyse Lyhyt palvelukuvaus Vaasan kaupungin nuorten kesätyöt haetaan Kuntarekry.fi työnhakuportaalin kautta. Kuntarekry.fi on valtakunnallinen kunta-alan työnhakupalvelu ja kuntatyönantajien rekrytointipalvelu.

Lisätiedot

Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä:

Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä: Linux-harjoitus 6 Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä: http://www.mysql.com/, MySQL-tietokantaohjelman kotisivu. http://www.mysql.com/doc/en/index.html,

Lisätiedot

Näin järjestän ohjelmointikurssin, vaikka en ole koskaan ohjelmoinut www.helsinki.fi

Näin järjestän ohjelmointikurssin, vaikka en ole koskaan ohjelmoinut www.helsinki.fi Näin järjestän ohjelmointikurssin, vaikka en ole koskaan ohjelmoinut Ohjelmointikurssin järjestäminen Helsingin yliopiston Ohjelmoinnin MOOC-kurssimateriaalin avulla 15.4.2016 1 Linkki Tietojenkäsittelytieteen

Lisätiedot

Ohje 1 (12) Maarit Hynninen-Ojala MOODLE PIKAOHJE. Kirjautuminen Moodleen ja työtilan valitseminen

Ohje 1 (12) Maarit Hynninen-Ojala MOODLE PIKAOHJE. Kirjautuminen Moodleen ja työtilan valitseminen Ohje 1 (12) Maarit Hynninen-Ojala MOODLE PIKAOHJE Kirjautuminen Moodleen ja työtilan valitseminen 1. Verkko-osoite: http://moodle.metropolia.fi 2. Kirjautuminen: omat verkkotunnukset 3. Oma Moodlessa näkyvät

Lisätiedot

Olio-ohjelmointi Javalla

Olio-ohjelmointi Javalla 1 Olio-ohjelmointi Javalla Olio-ohjelmointi Luokka Attribuutit Konstruktori Olion luominen Metodit Olion kopiointi Staattinen attribuutti ja metodi Yksinkertainen ohjelmaluokka Ohjelmaluokka 1 Olio-ohjelmointi

Lisätiedot

FinFamily Installation and importing data (11.1.2016) FinFamily Asennus / Installation

FinFamily Installation and importing data (11.1.2016) FinFamily Asennus / Installation FinFamily Asennus / Installation 1 Sisällys / Contents FinFamily Asennus / Installation... 1 1. Asennus ja tietojen tuonti / Installation and importing data... 4 1.1. Asenna Java / Install Java... 4 1.2.

Lisätiedot

Hintatiedotus ja tietojen välitys. Loppuraportti

Hintatiedotus ja tietojen välitys. Loppuraportti Hintatiedotus ja tietojen välitys Loppuraportti Henkilöliikenne 18. marraskuuta 2002 1 Lähtökohdat VR Henkilöliikenteellä on käytössä Journey Planner reitinsuunnittelupalvelu. Palvelua käyttävät matkustajat

Lisätiedot

Nuorten hyvinvointi tilastotietokannan käyttöohjeet Tieke 18.5 2015

Nuorten hyvinvointi tilastotietokannan käyttöohjeet Tieke 18.5 2015 Nuorten hyvinvointi tilastotietokannan käyttöohjeet Tieke 18.5 2015 Taulukon valinta Valitse vasemmalta kansioita, kunnes saat taulukkoluettelon näkyviin. Jos etsit tietoa jostain tietystä aiheesta, voit

Lisätiedot

Android ohjelmointi Tunti 2. Käyttöliittymät ja resurssit

Android ohjelmointi Tunti 2. Käyttöliittymät ja resurssit Android ohjelmointi Tunti 2 Käyttöliittymät ja resurssit Debug Log luokka mahdollistaa debug tulostamisen ADB:n kautta konsoliin (esim. DDMS:ään) esim. Log.println(Log.INFO, TAG, Tämä on println ); Voidaan

Lisätiedot

L models. Käyttöohje. Ryhmä Rajoitteiset

L models. Käyttöohje. Ryhmä Rajoitteiset Teknillinen korkeakoulu T-76.115 Tietojenkäsittelyopin ohjelmatyö Lineaaristen rajoitteiden tyydyttämistehtävän ratkaisija L models Käyttöohje Ryhmä Rajoitteiset Versio Päivämäärä Tekijä Muutokset 0.1

Lisätiedot

6.1 Tekstialueiden valinta eli maalaaminen (tulee tehdä ennen jokaista muokkausta ym.)

6.1 Tekstialueiden valinta eli maalaaminen (tulee tehdä ennen jokaista muokkausta ym.) 6. Tekstin muokkaaminen 6.1 Tekstialueiden valinta eli maalaaminen (tulee tehdä ennen jokaista muokkausta ym.) Tekstin maalaaminen onnistuu vetämällä hiirellä haluamansa tekstialueen yli (eli osoita hiiren

Lisätiedot

Kulttuuriympäristön tietojärjestelmän käyttöohje Extranet - palvelu

Kulttuuriympäristön tietojärjestelmän käyttöohje Extranet - palvelu 1/6 Kulttuuriympäristön tietojärjestelmän käyttöohje Extranet - palvelu Järjestelmään kirjautuminen Kulttuuriympäristön tietojärjestelmä löytyy internetistä osoitteesta https://www.museoverkko.fi. Sivut

Lisätiedot

Visual Basic -sovelluskehitin Juha Vitikka

Visual Basic -sovelluskehitin Juha Vitikka Visual Basic -sovelluskehitin Helsinki 30.10.2000 Seminaari HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Visual Basic sovelluskehitin Seminaari: Ohjelmistotuotantovälineet Tietojenkäsittelytieteen

Lisätiedot

9. Muunneltavuuden hallinta

9. Muunneltavuuden hallinta 9. Muunneltavuuden hallinta Muunneltavuuden hallinta (Variability management): Tekniikat ja työtavat, jotka auttavat kuvaamaan, toteuttamaan ja hyödyntämään tuoterungon mahdollistamaa ohjelmistotuotteiden

Lisätiedot

T-76.115 Tekninen spesifikaatio

T-76.115 Tekninen spesifikaatio T-76.115 Tekninen spesifikaatio OtaShop2 Versio Päivämäärä Tekijä Kuvaus Tarkastettu 1.0 30.11.2003 Inkinen Dokumetti tarkastettu ja löydetyt epäkohdat korjattu 2003-11-30 0.7 30.11.2003 Larmo Lisätty

Lisätiedot

Java kahdessa tunnissa. Jyry Suvilehto

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

Lisätiedot

JAVA-OHJELMOINTI 3 op A274615

JAVA-OHJELMOINTI 3 op A274615 JAVA-OHJELMOINTI 3 op A274615 JFC & Swing, Look & Feel, Events Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: http://java.sun.com/docs/books/tutorial/index.html Vesterholm, Kyppö: Java-ohjelmointi,

Lisätiedot

Ohjelmistojen mallintaminen. Luento 10, 3.12.

Ohjelmistojen mallintaminen. Luento 10, 3.12. Ohjelmistojen mallintaminen Luento 10, 3.12. Kertaus Menetelmä: miten edetään ohjelmistoprosessin eri vaiheissa ja mitä apuvälineitä kannattaa missäkin tilanteessa käyttää Käymme läpi erästä olioperustaista

Lisätiedot

Ohjelmistoarkkitehtuurit 2016. Kevät 2016 -käytäntöjä

Ohjelmistoarkkitehtuurit 2016. Kevät 2016 -käytäntöjä Ohjelmistoarkkitehtuurit Kevät 2016 -käytäntöjä Samuel Lahtinen http://www.cs.tut.fi/~ohar/ 13.1.2016 1 Tervetuloa Tampereen teknillinen yliopisto, Oulun yliopisto, Turun yliopisto 13.1.2016 2 Tiedonvälitys

Lisätiedot