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

Koko: px
Aloita esitys sivulta:

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

Transkriptio

1 Suunnittelumallit OULUN YLIOPISTO Tietojenkäsittelytieteiden laitos Oliosuuntautunut analyysi ja -suunnittelu 27. joulukuuta 2003 Mikael Kujanpää LuTK / TOL -03

2 Tiivistelmä Suunnittelumallit ovat tärkeä työkalu nykypäivän oliopohjaisessa ohjelmistotuotannossa. Mallit tarjoavat tiettyihin ongelmiin valmiit, ajankuluessa hyviksi todetut ratkaisut. Mallien avulla jokaisen ongelman kohdalla suunnittelijoiden ei tarvitse keksiä pyörää uudelleen. Suunnittelumallien avulla voidaan parantaa ohjelmiston ylläpidettävyyttä, kustannustehokkuutta ja vähentää loogisten ohjelmointivirheiden määrää. Toisaalta ohjelmistomalleja oikeaoppisesti sovellettuna saavutetaan ylläpidettävämpi ja rakenteellisesti looginen, hyvin toimiva ohjelmisto. Antisuunnittelumallit ovat malleja, joiden avulla voidaan etsiä huonoja, epätoivottavia ohjelmistosuunnitteluratkaisuja. Olio-ohjelmoinnin kultakausi alkoi 1980-luvulta, alettaessa esittää graafisten käyttöliittymien osia olioiden avulla. Vaikka oliot ovatkin varsin luonnollinen tapa mallintaa ohjelmistoja ja niiden komponentteja, on niidenkin hyödyntämisessä omat ongelmansa. Näihin ongelmiin suunnittelumallit ovat syntyneet vastaukseksi. Suunnittelumallit voidaan nähdä myös hieman toisenlaisessa merkityksessä: ne ovat kokeneiden ohjelmistosuunnittelijoiden ja -ohjelmoijien laatimia dokumentteja, jotka sinällään sisältävät arvokasta informaatiota erilaisten ongelmien ratkaisemiseksi.

3 Sisältö Tiivistelmä Sisältö 1 Johdanto 2 2 Aiheen kartoitus Suunnittelumallien historiaa Mitä ovat suunnittelumallit? Antisuunnittelumallit Suunnittelumallien luokittelu Esimerkki: abstrakti tehdas Analyysi Minkä verran eri suunnittelumalleja käytetään ja miltä tulevaisuus näyttää? Suunnittelumallien hyviä ja huonoja puolia Yhteenveto 10 Viitteet

4 1 Johdanto Tarkastelen tässä esseessäni suunnittelumalleja. Mitä ne ovat, miksi niitä on ja miten niitä käytetään. Teksti on kuitenkin vain pintapuolinen näkemys aihepiiristä, ei mikään kaiken kattava selvitys. En esittele käytännössä kuin yhden suunnittelumallin, abstraktin tehtaan. Tämän esseen tarkoitus ei ole olla opas eri suunnittelumalleista, eikä esseen pituudeksi asetettu raja antaisi sille myötenkään. Yritän siis keskittyä tekstissäni enemmän suunnittelumalleihin yleensä, enkä kasvattaa sivumäärää mekaanisella, eri mallien esittelyllä. Tämän jälkeen analysoin yleisellä tasolla suunnittelumallien tarkoitusta, sekä hyötyjä ja haittoja. Tarkastelen aihetta etenkin suunnittelijan näkökulmasta. Toisaalta mallit ovat nimenomaan tarkoitettukin suunnittelijoille, joten loppukäyttäjälle näkyviä ominaisuuksia saavutetaan suunnittelumallien avulla varsin vähän jollei sellaiseksi lasketa ohjelmiston mahdollista yleistä laadukkuutta. Suunnittelumallit ovat varsin paljon käytetty menetelmä tietynlaisten ongelmien ratkaisemiseksi. Pohjimmiltaan suunnittelumallit ovat ainoastaan kokoelma hyviksi havaittuja sääntöjä ja menetelmiä. Suunnittelumallit eivät ole valmista koodia. 2

5 2 Aiheen kartoitus Käsittelen tässä luvussa suunnittelumallien historiaa, millaisia ne ovat ja miten niitä käytetään. Esimerkinomaisesti esittelen yhden suunnittelumallin yksityiskohtaisesti, abstraktin tehtaan. 2.1 Suunnittelumallien historiaa Suunnittelumallien idea tulee ehkä hiukan yllättäen perinteisestä arkkitehtien maailmasta. Arkkitehti Christopher Alexander suunnitteli järjestelmän, jolle monet nykyajan oliosuunnittelumallit perustuvat. Hän ja hänen kollegansa kehittelivät kahdenkymmenen vuoden ajan suunnittelumalleja arkkitehtuuriin Berkleyssä, Kaliforniassa. Ward Cunningham ja Kent Beck lukivat Alexanderin kirjoittamia kirjoja, ja innostuivat kokeilemaan ideoita myös ohjelmistokehityksessä. He kehittivät ja toteuttivat smalltalk -kieleen viisi suunnittelimallia, jotka käsittelivät graafisen käyttöliittymän suunnittelua: Window per Task, Few Panels, Standard Panels, Nouns and Verbs ja Short menus. [5] Erich Gamma kirjoitti väitöskirjan 1991 suunnittelumallien käytöstä ohjelmistokehityksessä. Valitettavasti kirja kirjoitettiin saksaksi, joten se ei saanut ansaitsemaansa arvostusta keski-euroopan ulkopuolella. Gamma oli kuitenkin neljä vuotta myöhemmin mukana kirjoittamassa yhdessä Richard Helmin, Ralph Johnssonin ja John Vlissidesin kanssa yhtä tunnetuimmista suunnittelumalleja käsittelevistä kirjoista: Design Patterns Elements of Reusable Object-Oriented Software [1]. Kyseisen kirjan jälkeen on kirjoitettu monia muita vastaavanlaisia teoksia, mutta useimmat niistä pohjaavat ajatuksensa enemmän tai vähemmän suoraan Gamman kirjaan. 2.2 Mitä ovat suunnittelumallit? Suunnittelumallit ovat kokoelma erilaisia menetelmiä tietyntyyppisten ongelmien ratkaisemiseksi. Mallit eivät ole valmista koodia, vaan ne ovat ainoastaan ratkaisukuvauksia. Näin ollen niitä voidaan ja niitä tuleekin hyödyntää suunnitteluvaiheessa ainoastaan. Mallit ovat syntyneet ajan saatossa tavallaan itsestään, mutta niistä on laadittu yleiset säännönalaisuudet jottei jokaisen ohjelmiston kohdalla tarvitsisi aina keksiä pyörää uudelleen. [4] Suunnittelumallien avulla ei synny laadukasta ohjelmistoa itsestään. Malleja voidaan soveltaa vain tietyissä, tarkasti rajatuissa tapauksissa. Silloinkin toteutus loppuviimein ratkaisee, miten ohjelmisto toimii suunnittelumalli ei siis automaattisesti luo laadukasta ohjelmistoa. Ei ole myöskään epätavallista, että johonkin ongelmaan ei löydy ollenkaan valmista suunnittelumallia. 3

6 Mirja Immonen on määritellyt suunnitellumallin näin: [3] Suunnittelumalli nimeää, tarjoaa taustatietoa ja selittää käytännössä hyväksi todetun tavan ratkaista jokin järjestelmissä usein esiintyvä arkkitehtuuri- tai suunnitteluongelma. Ratkaisu on yleinen kokoelma olioita ja luokkia, joita sovelletaan ja muokataan ratkaisemaan ongelma erilaisissa käytännön tilanteissa. Raine Lehto [5] on poiminut Desing Patterns -kirjasta [1] seuraavat neljä suunnittelumalliin kuuluvaa osaa. Osat ovat periaatteessa toisenlainen määritelmä suunnittelumallille, joskin näiden ohjeiden perusteella voi paremminkin tutkia voidaanko jotain sääntökokoelmaa kutsua suunnittelumalliksi. 1. Mallin nimi kuvaa kuvaa muutamalla sanalla ongelmaa, ratkaisua ja seurauksia. Hyvin valittu nimi helpottaa mallin hyödyntämistä jatkossa. 2. Ongelma. Kappaleessa kuvaillaan kohteena oleva ongelma, sen tyypillisiä ilmenemisalueita sekä sen perinteisiä ratkaisutapoja. Joskus ongelma voi sisältää listan ehtoja, joiden tulee täyttyä ennenkuin on järkevää käyttää mallia. 3. Ratkaisu. Kappale kuvailee ratkaisun rakenteen jollakin yleisellä esitystavalla, yleensä olioperustaisin menetelmin sanallisesti tarkennettuina UMLkaavioina. 4. Seuraukset. Kappaleessa analysoidaan mallin hyviä ja huonoja puolia, sekä esitellään tilanteita, joihin malli ei sovellu. Lasse Harjumaa on listannut seuraavat asiat huomioon otettavaksi, ennenkuin suunnittelumallia tulisi alkaa hyväksikäyttämään: [2] 1. Varmista, että malli on oikea kyseiseen tarkoitukseen. 2. Varmista, että ymmärrät mallin. 3. Hyödynnä esimerkkikoodia. 4. Määrittele vaikutuksen alaiset luokat. 5. Toteuta. Nämä ohjeet ovat eräänlainen muistilista suunnittelijalle, jotta hän varmasti on hyödyntämässä ongelmaansa siihen tarkoitettua suunnittelumallia. 4

7 2.2.1 Antisuunnittelumallit Mielenkiintoinen lähestymistapa suunnittelumalleihin ovat niin sanotut antisuunnittelumallit. Mallien ideana on esittää erilaisia ei-toivottuja malleja. Vaikka ajatus kuulostaakin äkkiseltään typerältä, on näistä malleista käytännössä paljonkin hyötyä koska niiden avulla voidaan löytää huonoja ratkaisumalleja ohjelmistoista. Mallit ovat luenteeltaan varsin yleismaailmallisia, etenkin perinteisiin suunnittelumalleihin verrattuna. Esimerkki antisuunnittelumallista voisi olla vaikkapa sovelluksen yleinen liian kookkaaksi kasvanut ohjausluokka, joka sisältää suuren määrän toisiinsa liittymättömiä attribuutteja ja operaatioita. [4] 2.3 Suunnittelumallien luokittelu Tämän kappaleen ajatukset ovat lainattu lähes suoraan Mirja Immosen [3] tekemästä erikoistyöstä. Suunnittelumallit luokitellaan tavallisesti kahteen luokkaan: 1. Mitä suunnittelumalli tekee, eli käyttötarkoitus. 2. Onko suunnittelumalli tarkoitettu käytettäväksi luokkien vai olioiden kanssa? Käyttötarkoituksen mukaan suunnittelumallit voidaan luokitella kolmeen luokkaan: 1. Toiminnalliset- tai käyttäytymismallit 2. Luontimallit 3. Rakennemallit Ensimmäiseen ryhmään luetaan luokkamallit, jotka käyttävät perintää jakamaan eri toiminnot eri luokkiin. Samaan kategoriaan kuuluvat myös olioiden yhdistämiseen tähtäävät oliomallit. Toiseen ryhmään luetaan muun muassa mallit, jotka auttavat ratkaisemaan miten luodaan olioita ympäristössä, jossa liittymänä on joukko tapauskohtaisia abstrakteja luokkia tai kuinka varmistetaan, että luokalla on vain yksi ilmentymä joka on kaikkien muiden luokkien saatavilla. Kolmanteen ryhmään katsotaan kuuluvaksi mallit, jotka kuvaavat olioiden välisiä suhteita, ja kuinka olioita yhdistelemällä saadaan uusia toimintoja. Ratkaisumallit auttavat suurten järjestelmien yhteydessä muistinkäytön optimointiin ja tehokkuuden maksimointiin. 5

8 2.4 Esimerkki: abstrakti tehdas Esittelen tässä esimerkkinä erään yleisesti käytössä olevan suunnittelumallin. Lähteenä olen käyttänyt tässä kappaleessa erittäin laajasti Kai Koskimiehen Oliokirjaa [4]. Tarkoitus: Mallin avulla voidaan luoda oliokokoelmia, vaikka ei tunnettaisi näiden olioiden konkreettisia perusluokkia. Motivointi: Oletetaan, että täytyy mallintaa ajoneuvovuokraamo. Kyseisestä liike myös tarvittaessa myy ajokkeja. Abstraktin tehtaan avulla voidaan suunnitella luokkarakenne, jossa on yleinen Ajoneuvo-luokka. Kyseinen luokka on abstrakti luokka, jossa on määritelty ainoastaan rajapinta jonka Ajoneuvoluokan perivät oliot toteuttavat. Rajapinta voisi määritellä esimerkiksi metodit Ajoneuvo.vuokraa(), Ajoneuvo.myy() ja niin edelleen. Tällöin yksittäinen olio voi olla mikä tahansa olio joka on luotu Vene, Polkupyörä, Henkilöauto tai muusta vastaavasta luokasta, ja silti sitä voidaan käsitellä yleisen Ajoneuvo-rajapinnan kautta. Soveltuvuus: Mallia voidaan käyttää silloin, kun: järjestelmän tulisi olla riippumaton siitä, miten sen tuotteita luodaan, kootaan ja esitetään järjestelmän tulisi olla konfiguroitavissa tietylle tuoteperheelle järjestelmän tulisi taata, että tietyn tuoteperheen jäseniä käytetään yhdessä halutaan esittää erilaiset järjestelmän tuotteet luokkakirjastona, ja halutaan paljastaa vain niiden abstraktit rajapinnat, ei toteutustapaa Rakenne: Abstraktin tehtaan rakenne on esitettynä kuvassa 1 Osallistujat: AbstractFactory: määrittelee konkreettisten tuoteolioiden luontioperaatioiden kutsumuodon ConcreteFactory: toteuttaa konkreettisten tuoteolioiden luontioperaatiot AbstractProduct: määrittelee tietyntyyppisen tuoteolion operaatioiden kutsumuodon ConcreteProduct: määrittelee tuoteolion ja toteuttaa AbstractProductluokassa annetut operaatiot Client: käyttää AbstractFactory- ja AbstractProduct-luokkien määrittelemää rajapintaa 6

9 Seuraukset: Mallin avulla voidaan eristää olioiden konkreettiset luokat asiakkaasta Mallin avulla konkreettiset luokat voidaan vaihtaa helposti toisiksi Malli edistää luokkien standardointia yhteisen rajapinnan mukaisiksi Malli ei tue uusien tuotteiden lisäämistä Kuva 1: Abstraktin tehtaan rakenne 3 Analyysi Tässä luvussa analysoin hiukan suunnittelumallien etuja ja haittoja. Pohdin myös lyhyesti suunnittelumallien tulevaisuutta. 3.1 Minkä verran eri suunnittelumalleja käytetään ja miltä tulevaisuus näyttää? Olio-ohjelmoinnin yleistyttyä 1980-luvulla lähinnä graafisten käyttöliittymien myötä myös suunnittelumalleille syntyi luontainen tarve. Graafisissa käyttöliittymissä kuvataan erilaisia käyttöliittymän osia esimerkiksi painonappeja, tekstikenttiä, listoja ynnä muita olioiden avulla. Koska GUI 1 :t ovat loppujen lopuksi varsin samanlaisia ympäristöstä riippumatta, syntyivät suunnittelumallien kaltaiset yleisohjeet varsin luontevasti. Graafiset käyttöliittymät olivat siis yksi tekijä jotka edesauttoivat suunnittelumallien syntymistä. Tältä pohjalta ei liene kovinkaan erikoista, että myös nykyään suunnittelumalleja hyödynnetään paljon etenkin käyttöliittymien yhteydessä. 1 Graphical User Interface 7

10 Koska suunnittelumallit ovat kieli- ja toteutusriippumattomia, kykenevät ne myös elämään ajan mukana vaikka erilaisia ohjelmointikieliä syntyykin. Tosin mallit ovat käytännössä myös nivoutuneet tiiviisti olio-ohjelmointiin, joten mikäli olioiden tilalle kehittyy jotain uutta ja mullistavaa, voi hyvinkin käydä niin että suunnittelumallit katoavat tosin huomattavasti todennäköisempää on, että oliomaiset suunnittelumallit jäävät käytöstä pois, ja niiden tilalle syntyy joitain uusia kyseistä tekniikkaa hyödyntäviä malleja. Olio-ohjelmointikielet, kuten C++ ja Java, ovat kuitenkin tällä hetkellä niin vahvasti käytössä, että suunnittelumalleille näyttää olevan vain entistä enemmän tilausta. Niiden merkitys tulee myös epäilemättä korostumaan tulevaisuudessa. Javan luokkakirjastossa on myös lukemattomia Design Patterns -kirjan malleja hyödyntäviä luokkakirjastoja [5]. Suunnittelumalleja voi kehittää kuka tahansa, jopa tyhjästä. Käytännössä vain tämä on erittäin vaikeata, koska mallit ovat yleensä itsestään syntyneet monien toisistaan riippumattomien ongelmien ratkaisujen yhteisenä kuvauksena. Oman mallin kehittäminen olisi siis huomattavasti helpompaa tutkimalla tietyntyyppisten ongelmien ratkaisuja eri ohjelmistoista, ja laatimalla näistä mahdollisimman yleiskäyttöisen kuvauksen. 3.2 Suunnittelumallien hyviä ja huonoja puolia Suunnittelumalleilla saavutetaan merkittäviä säästöjä resursseissa. Samaa ongelmaa ei tarvitse ratkaista joka kerta uudelleen, vaan voidaan tyytyä yleiskäyttöisiin, hyviksi havaittuihin menetelmiin. Tämä nopeuttaa ohjelmistokehitystä, ja useimmiten myöskin mahdollistaa laadukkaampien ja ylläpidettävimpien ohjelmistojen tuottamisen. Lisäksi suunnittelumallien avulla voidaan välttää joitakin ohjelmointivirheitä. Suunnittelumallien avulla myös komponenttien uudelleenkäytettävyys helpottuu. Vaikka olio-ohjelmointi paradigmana ylipäätään tukee komponenttien uudelleenkäytettävyyttä, on kokemattoman suunnittelijan vaikea suunnitella ohjelmistoa joka mukautuu helposti erilaisiin käyttötilanteisiin. Tässä suunnittelumallit voivat olla suurena apuna, koska niiden avulla ohjelmiston yleisestä mallista saattaa syntyä hyvinkin yleiskäyttöinen ja kohtuullisen vähällä vaivalla hyödynnettävissä oleva kokonaisuus. Suunnittelumallien eräänlaisena haittana voidaan pitää sitä, että mikäli niitä ei ole ennen hyödynnetty, täytyy henkilöstön opetella niiden käyttö. Tämä voi olla aikaavievää, ja vaatii koulutusta tai itseopiskelua. Suunnittelumalleja voi myös tahattomasti väärinkäyttää, esimerkiksi valitsemalla väärän mallin. Pienessä projektissa tätä ei välttämättä edes huomaa eikä se ehkä haittaakaan, mutta suuressa projektissa virhe voidaan havaita vasta myöhään, jolloin viikkojen työ voi mennä hukkaan 8

11 tai joudutaan tehdä purkkaliimakorjaus, joka todennäköisesti on tie vielä pahempiin vaikeuksiin. On siis erittäin tärkeätä käyttää riittävästi aikaa oikean mallin etsimiseen. Suunnittelumallit eivät myöskään ratkaise jokaista vastaan tulevaa ohjelmistosuunnitteluongelmaa; siksi kaikkeen ei kannata yrittää edes etsiä ratkaisua suunnittelumalleista. Tosin antisuunnittelumalleista voi olla näissäkin tapauksissa hyötyä. Toisenlainen ongelma suunnittelumalleista voi syntyä silloin, jos niiden käyttö muodostuu itsetarkoitukseksi. Kokematon suunnittelija saattaa erehtyä luulemaan, että ohjelmistosta syntyy sitä parempi mitä useampaa suunnittelumallia on hyödynnetty. Näinhän ei missään nimessä ole, vaan jokaista mallia tulisi käyttää ainoastaan silloin kun projekti sitä edellyttää. Mallit ovat ohjelmistoja varten, ei toisinpäin. 9

12 4 Yhteenveto Suunnittelumallien avulla voidaan ratkoa monia ohjelmistosuunnitteluun liittyviä ongelmia. Nykyään erilaisia malleja on olemassa hyvin paljon, joten jotakuinkin kaikkiin yleisiin ongelmiin löytynee jo valmis ratkaisumalli. Mallien huolellinen käyttö auttaa luomaan laadukkaamman ohjelmiston nopeammin. Mallia tarkasti seuraamalla myös joitakin rakenteellisia ongelmia on mahdollista välttää. Toisaalta suunnittelumallien käyttöä täytyy opiskella, ja niitä voi myös etenkin kokematon suunnittelija käyttää vahingossa myös väärin. Suunnittelumallit ovat tarkoitettu kuitenkin etupäässä kokemattomille suunnittelijoille ja ohjelmoijille. Suunnittelumallit ovat tiettyjen ongelmien hyviksi havaittuja ratkaisumenetelmiä, joista on koottu ajan saatossa yleiset ratkaisuohjeet, suunnittelumallit. 10

13 Viitteet [1] E. Gamma. Desing Patterns Elements of Reusable Object-Oriented Software. Addison-Wesley, [2] Lasse Harjumaa. Luentomateriaali: olio-ohjelmointi. Oulun yliopisto, [3] Mirja Immonen. Erikoistyö: suunnittelumallit. Kuopion yliopisto, tietojenkäsittelytieteen ja sovelletun matematiikan laitos, Teho/Suunnittelumallit.pdf, [4] Kai Koskimies. Oliokirja. Satku - Kauppakaari, Gummerus kirjapaino, Jyväskylä, [5] Reijo Lehto. Seminaariesitelmän alustus: olioarkkitehtuurit. Helsingin yliopisto, tietojenkäsittelytieteen laitos, rmelehto/olioarkkiteh tuurit/esitelma.html,

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton 2015 syksy 2. vsk IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton Sisältö 1. Johdanto luontimalleihin 2. Proxy 3. Factory Method 4. Prototype 5. Singleton Suunnittelumallit Proxy et.

Lisätiedot

ohjelman arkkitehtuurista.

ohjelman arkkitehtuurista. 1 Legacy-järjestelmällä tarkoitetaan (mahdollisesti) vanhaa, olemassa olevaa ja käyttökelpoista ohjelmistoa, joka on toteutettu käyttäen vanhoja menetelmiä ja/tai ohjelmointikieliä, joiden tuntemus yrityksessä

Lisätiedot

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. VIII Suunnittelumallit Observer ja State

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. VIII Suunnittelumallit Observer ja State 2015 syksy 2. vsk VIII Suunnittelumallit Observer ja State Sisältö 1. Johdanto käyttäytymismalleihin 2. Observer 3. State Suunnittelumallit Observer ja State 2 VIII.1 Johdanto käyttäytymismalleihin Päätarkoitus

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

Olio-ohjelmointi Johdanto suunnittelumalleihin. 1. Yleistä

Olio-ohjelmointi Johdanto suunnittelumalleihin. 1. Yleistä Olio-ohjelmointi Johdanto suunnittelumalleihin Hyvin toimivan olio-ohjelmointiparadigmaa noudattavan ohjelman suunnitteleminen ei ole helppo tehtävä. On löydettävä sopiva luokkarakenne kuvaamaan ratkaistavaa

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

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. VII Suunnittelumallit Adapter ja Composite

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. VII Suunnittelumallit Adapter ja Composite 2015 syksy 2. vsk VII Suunnittelumallit Adapter ja Composite Sisältö 1. Johdanto rakennemalleihin 2. Adapter (Sovitin) 3. Composite (Rekursiokooste) Suunnittelumallit Adapter ja Composite 2 VII.1 Johdanto

Lisätiedot

Ohjelmistojen mallintaminen, mallintaminen ja UML

Ohjelmistojen mallintaminen, mallintaminen ja UML 582104 Ohjelmistojen mallintaminen, mallintaminen ja UML 1 Mallintaminen ja UML Ohjelmistojen mallintamisesta ja kuvaamisesta Oliomallinnus ja UML Käyttötapauskaaviot Luokkakaaviot Sekvenssikaaviot 2 Yleisesti

Lisätiedot

Ohjelmistotekniikan menetelmät, suunnittelumalleja

Ohjelmistotekniikan menetelmät, suunnittelumalleja 582101 - Ohjelmistotekniikan menetelmät, suunnittelumalleja 1 Suunnittelumallit (design patterns) Kuvaus sellaisesta luokkarakenteesta & olioiden vuorovaikutuksesta, joka ratkaisee tietyn yleisen ongelman

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

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

Olio-ohjelmointi Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton. 1. Proxy (Edustaja)

Olio-ohjelmointi Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton. 1. Proxy (Edustaja) Olio-ohjelmointi Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton Tässä osassa tutustutaan yhteen rakennemalliin (Proxy) ja kolmeen luontimalliin (Factory Method, ) teoksen [Gam] pohjalta.

Lisätiedot

Olio-ohjelmointi Johdanto olio-ohjelmointiin

Olio-ohjelmointi Johdanto olio-ohjelmointiin Olio-ohjelmointi Johdanto olio-ohjelmointiin Ohjelmistoa kehitettäessä voidaan tunnistaa ainakin kaksi abstraktiota: prosessiabstraktio ja dataabstraktio. Prosessiabstraktio huomattiin jo varhain, koska

Lisätiedot

Ohjelmistoarkkitehtuurit. Syksy 2007

Ohjelmistoarkkitehtuurit. Syksy 2007 Ohjelmistoarkkitehtuurit Syksy 2007 Kai Koskimies 1 Tervetuloa Tampereen yliopisto, Teknillinen korkeakoulu, Turun yliopisto 2 Kurssin tavoitteet Arkkitehtuuritason peruskäsitteiden ymmärtäminen Arkkitehtuurien

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

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

Oliosuunnittelu. Oliosuunnittelu

Oliosuunnittelu. Oliosuunnittelu Oliosuunnittelu Perinnän ja dynaamisen sidonnan hyödyntäminen Tarkastellaan ohjelmaa, jonka tehtävänä on tuottaa erilaisista kuvioista muodostuva kuvaesitys Ratkaisu 1: perinteinen malli - ei perintää

Lisätiedot

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä Rekursiolause Laskennan teorian opintopiiri Sebastian Björkqvist 23. helmikuuta 2014 Tiivistelmä Työssä käydään läpi itsereplikoituvien ohjelmien toimintaa sekä esitetään ja todistetaan rekursiolause,

Lisätiedot

Software product lines

Software product lines Thomas Gustafsson, Henrik Heikkilä Software product lines Metropolia Ammattikorkeakoulu Insinööri (AMK) Tietotekniikan koulutusohjelma Asiantuntijateksti 17.11.2013 Sisällys 1 Johdanto 1 2 Software product

Lisätiedot

Järjestelmäarkkitehtuuri (TK081702) Avoimet web-rajapinnat

Järjestelmäarkkitehtuuri (TK081702) Avoimet web-rajapinnat Järjestelmäarkkitehtuuri (TK081702) SOA yleistyvät verkkopalveluissa Youtube Google... Avaavat pääsyn verkkopalvelun sisältöön. Rajapintojen tarjoamia tietolähteitä yhdistelemällä luodaan uusia palveluja,

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

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

Uudelleenkäytön jako kahteen

Uudelleenkäytön jako kahteen Uudelleenkäyttö Yleistä On pyritty pääsemään vakiokomponenttien käyttöön Kuitenkin vakiokomponentit yleistyneet vain rajallisilla osa-alueilla (esim. windows-käyttöliittymä) On arvioitu, että 60-80% ohjelmistosta

Lisätiedot

Test-Driven Development

Test-Driven Development Test-Driven Development Ohjelmistotuotanto syksy 2006 Jyväskylän yliopisto Test-Driven Development Testilähtöinen ohjelmistojen kehitystapa. Tehdään ensin testi, sitten vasta koodi. Tarkoituksena ei ole

Lisätiedot

Test-Driven Development

Test-Driven Development Test-Driven Development Syksy 2006 Jyväskylän yliopisto Test-Driven Development Testilähtöinen ohjelmistojen kehitystapa. Tehdään ensin testi, sitten vasta koodi. Tarkoituksena ei ole keksiä kaikkia mahdollisia

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

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

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

Lisätiedot

Hirviö. Design Patterns

Hirviö. Design Patterns Hirviö SEPA-päiväkirja Design Patterns Anssi Kalliolahti Liia Sarjakoski 15. maaliskuuta 2005 1 Sisältö 1 Johdanto 3 2 Menetelmän käytäntöön soveltaminen 3 3 Kokemuksia ja muutoksia 3 3.1 PP..........................................

Lisätiedot

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. II Johdanto olio-ohjelmointiin

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. II Johdanto olio-ohjelmointiin 812347A Olio-ohjelmointi, 2015 syksy 2. vsk II Johdanto olio-ohjelmointiin Sisältö 1. Abstraktiosta 2. Olio-ohjelmoinnin historiaa 3. Olioparadigmasta 4. Peruskäsitteiden esittely 2 II.1 Abstraktiosta

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

Tämän lisäksi listataan ranskalaisin viivoin järjestelmän tarjoama toiminnallisuus:

Tämän lisäksi listataan ranskalaisin viivoin järjestelmän tarjoama toiminnallisuus: Dokumentaatio, osa 1 Tehtävämäärittely Kirjoitetaan lyhyt kuvaus toteutettavasta ohjelmasta. Kuvaus tarkentuu myöhemmin, aluksi dokumentoidaan vain ideat, joiden pohjalta työtä lähdetään tekemään. Kuvaus

Lisätiedot

HELIA 1 (14) Outi Virkki Käyttöliittymät ja ohjlmiston suunnittelu

HELIA 1 (14) Outi Virkki Käyttöliittymät ja ohjlmiston suunnittelu HELIA 1 (14) Luento 7 Käyttöliittymäolio... 2 Olioajattelun perusteet... 3 Tavoitteet... 3 Peruskäsitteet... 4 Olio / Olioinstanssi / Olion esiintymä... 4 Ominaisuudet... 4 Toiminnot... 4 Olioluokka /

Lisätiedot

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

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

Lisätiedot

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

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

13/20: Kierrätys kannattaa koodaamisessakin

13/20: Kierrätys kannattaa koodaamisessakin Ohjelmointi 1 / syksy 2007 13/20: Kierrätys kannattaa koodaamisessakin Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy

Lisätiedot

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

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

Lisätiedot

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1 Ohjelmistoarkkitehtuurit Syksy 2009 Kai Koskimies Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1 Tervetuloa Kuopion yliopisto, Oulun yliopisto (Kajaani), Tampereen yliopisto, Turun yliopisto,

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

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

Ohjelmistojen suunnittelu

Ohjelmistojen suunnittelu Ohjelmistojen suunnittelu 581259 Ohjelmistotuotanto 154 Ohjelmistojen suunnittelu Software design is a creative activity in which you identify software components and their relationships, based on a customer

Lisätiedot

3. Ryhdy kirjoittamaan ja anna kaiken tulla paperille. Vääriä vastauksia ei ole.

3. Ryhdy kirjoittamaan ja anna kaiken tulla paperille. Vääriä vastauksia ei ole. 1 Unelma-asiakas Ohjeet tehtävän tekemiseen 1. Ota ja varaa itsellesi omaa aikaa. Mene esimerkiksi kahvilaan yksin istumaan, ota mukaasi nämä tehtävät, muistivihko ja kynä tai kannettava tietokone. Varaa

Lisätiedot

Testausdokumentti. Kivireki. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Testausdokumentti. Kivireki. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Testausdokumentti Kivireki Helsinki 17.12.2007 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Anu Kontio Ilmari

Lisätiedot

KÄYTTÄJÄKOKEMUKSEN PERUSTEET, TIE-04100, SYKSY 2014. Käyttäjätutkimus ja käsitteellinen suunnittelu. Järjestelmän nimi. versio 1.0

KÄYTTÄJÄKOKEMUKSEN PERUSTEET, TIE-04100, SYKSY 2014. Käyttäjätutkimus ja käsitteellinen suunnittelu. Järjestelmän nimi. versio 1.0 KÄYTTÄJÄKOKEMUKSEN PERUSTEET, TIE-04100, SYKSY 2014 Käyttäjätutkimus ja käsitteellinen suunnittelu Järjestelmän nimi versio 1.0 Jakelu: Tulostettu: 201543 Samuli Hirvonen samuli.hirvonen@student.tut.fi

Lisätiedot

812341A Olio-ohjelmointi, I Johdanto

812341A Olio-ohjelmointi, I Johdanto 812341A Olio-ohjelmointi, 2016 I Johdanto Sisältö 1. Abstraktiosta 2. Olio-ohjelmoinnin historiaa 3. Olioparadigmasta 4. Peruskäsitteiden kertausta 812341A Olio-ohjelmointi, Johdanto 2 1 Abstraktiosta

Lisätiedot

Ohjelmistoarkkitehtuurit. Syksy 2010

Ohjelmistoarkkitehtuurit. Syksy 2010 Ohjelmistoarkkitehtuurit Syksy 2010 Kai Koskimies Tervetuloa Oulun yliopisto, Tampereen yliopisto, Turun yliopisto, Tampereen teknillinen yliopisto, Vaasan yliopisto Kurssin tavoitteet Arkkitehtuurin roolin

Lisätiedot

Hirviö. Design Patterns

Hirviö. Design Patterns Hirviö SEPA-päiväkirja Design Patterns Anssi Kalliolahti Liia Sarjakoski 8. helmikuuta 2005 1 Sisältö 1 Johdanto 3 2 Menetelmän käytäntöön soveltaminen 3 3 Kokemuksia ja muutoksia 3 3.1 PP..........................................

Lisätiedot

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

Hakemistojen sisällöt säilötään linkitetyille listalle.

Hakemistojen sisällöt säilötään linkitetyille listalle. Harjoitustyö 1 Harjoitustyö Tehtävä: ohjelmoi Java-kielellä komentoikkunaa (komentotulkkia, komentoriviä) simuloiva olioperustainen ohjelma. Hakemistojen sisällöt säilötään linkitetyille listalle. Työ

Lisätiedot

Olio-ohjelmointi: Luokkien toteuttaminen. Jukka Juslin

Olio-ohjelmointi: Luokkien toteuttaminen. Jukka Juslin Olio-ohjelmointi: Luokkien toteuttaminen Jukka Juslin Luokkien kirjoittaminen Tähän mennessä on käytetty valmiiksi määritettyjä luokkia. Nyt opimme kirjoittamaan omia luokkia olioiden kuvaamiseksi Seuraavaksi

Lisätiedot

Osoitin ja viittaus C++:ssa

Osoitin ja viittaus C++:ssa Osoitin ja viittaus C++:ssa Osoitin yksinkertaiseen tietotyyppiin Osoitin on muuttuja, joka sisältää jonkin toisen samantyyppisen muuttujan osoitteen. Ohessa on esimerkkiohjelma, jossa määritellään kokonaislukumuuttuja

Lisätiedot

E-kirjan kirjoittaminen

E-kirjan kirjoittaminen 1 E-kirjan kirjoittaminen Ohjeet e-kirjan kirjoittamiseen Tämän ohjeistuksen tavoitteena on auttaa sinua luomaan yksinkertainen e-kirja (pdftiedosto) asiakkaallesi. Kirja näyttää hänelle kuinka hyvin ymmärrät

Lisätiedot

Ohjelmistotekniikan menetelmät, luokkamallin laatiminen

Ohjelmistotekniikan menetelmät, luokkamallin laatiminen 582101 - Ohjelmistotekniikan menetelmät, luokkamallin laatiminen 1 Lähestymistapoja Kokonaisvaltainen lähestymistapa (top-down) etsitään kerralla koko kohdealuetta kuvaavaa mallia hankalaa, jos kohdealue

Lisätiedot

IT-OSAAJA, TIETOJENKÄSITTELYN ERIKOISTUMISOPINNOT

IT-OSAAJA, TIETOJENKÄSITTELYN ERIKOISTUMISOPINNOT IT-OSAAJA, TIETOJENKÄSITTELYN ERIKOISTUMISOPINNOT KOULUTUKSEN KOHDERYHMÄ SISÄLTÖ Koulutuksen tavoitteena on antaa opiskelijalle valmiudet uusien tietoteknisten menetelmien ja välineiden hyödyntämiseen.

Lisätiedot

Sisällys. Mitä on periytyminen? Yksittäis- ja moniperiytyminen. Oliot ja perityt luokat. Periytymisen käyttö. 8.2

Sisällys. Mitä on periytyminen? Yksittäis- ja moniperiytyminen. Oliot ja perityt luokat. Periytymisen käyttö. 8.2 8. Periytyminen 8.1 Sisällys Mitä on periytyminen? Yksittäis- ja moniperiytyminen. Oliot ja perityt luokat. Periytymisen käyttö. 8.2 Mitä on periytyminen? Periytyminen (inheritance) tarkoittaa luokan piirteiden

Lisätiedot

Automaattinen yksikkötestaus

Automaattinen yksikkötestaus Teknillinen Korkeakoulu T-76.115 Tietojenkäsittelyopin ohjelmatyö Lineaaristen rajoitteiden tyydyttämistehtävän ratkaisija L models Automaattinen yksikkötestaus Ryhmä Rajoitteiset Versio Päivämäärä Tekijä

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

UML- mallinnus: Tilakaavio

UML- mallinnus: Tilakaavio UML- mallinnus: Tilakaavio Karkea kuvaus UML- kaavioiden käytöstä ohjelmistonkehityksen eri vaiheissa ja tehtävissä. Mallinnus tilakaavioilla Tilakaaviolla kuvataan yhden luokan olioiden tilan muuttumista

Lisätiedot

Ohjelmistoarkkitehtuurit kevät

Ohjelmistoarkkitehtuurit kevät Ohjelmistoarkkitehtuurit Kevät 2011-2012 Johannes Koskinen http://www.cs.tut.fi/~ohar/ 5. Suunnittelumallit Suunnittelumallin käsite Suunnittelumallien hyötyjä Suunnittelumallien kuvaaminen Esimerkki:

Lisätiedot

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat Rajapinnat Java-kieli ei tue luokkien moniperintää. Jokaisella luokalla voi olla vain yksi välitön yliluokka. Toisinaan olisi

Lisätiedot

Kehyksillä toteuttettujen tuotelinjojen rakenteellinen optimointi

Kehyksillä toteuttettujen tuotelinjojen rakenteellinen optimointi Kehyksillä toteuttettujen tuotelinjojen rakenteellinen optimointi Pietu Pohjalainen Geneerinen metaohjelmointi Syksy 2004 Tietojenkäsittelytieteen laitos Helsingin yliopisto Esityksen sisältö Oliopohjaiset

Lisätiedot

7/20: Paketti kasassa ensimmäistä kertaa

7/20: Paketti kasassa ensimmäistä kertaa Ohjelmointi 1 / syksy 2007 7/20: Paketti kasassa ensimmäistä kertaa Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007

Lisätiedot

19/20: Ikkuna olio-ohjelmoinnin maailmaan

19/20: Ikkuna olio-ohjelmoinnin maailmaan Ohjelmointi 1 / syksy 2007 19/20: Ikkuna olio-ohjelmoinnin maailmaan Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007

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

Ohjelmistojen mallintaminen. Luento 11, 7.12.

Ohjelmistojen mallintaminen. Luento 11, 7.12. Ohjelmistojen mallintaminen Luento 11, 7.12. Viime viikolla... Oliosuunnittelun yleiset periaatteet Single responsibility eli luokilla vain yksi vastuu Program to an interface, not to concrete implementation,

Lisätiedot

T SEPA - päiväkirja: Design Patterns. ETL työkalu

T SEPA - päiväkirja: Design Patterns. ETL työkalu T-76.115 SEPA - päiväkirja: Design Patterns ETL työkalu Versio Päivämäärä Tekijä Kuvaus 1.0 25.10.2004 Jani Honkanen PP-vaiheen jälkeinen versio 1,1 26.11.2004 Mika Suvanto I1- vaiheen kokemuksia lisätty

Lisätiedot

Opinnäytetyön ulkoasu

Opinnäytetyön ulkoasu Opinnäytetyön ulkoasu Antti Leino Tampereen yliopisto Kieli-, käännös- ja kirjallisuustieteiden yksikkö Suomen kielen tutkinto-ohjelma Tutkielmaohje Syyskuu 2012 Tampereen yliopisto Suomen kielen tutkinto-ohjelma

Lisätiedot

Koodaamme uutta todellisuutta FM Maarit Savolainen https://blog.edu.turku.fi/matikkaajakoodausta/

Koodaamme uutta todellisuutta FM Maarit Savolainen https://blog.edu.turku.fi/matikkaajakoodausta/ Koodaamme uutta todellisuutta FM Maarit Savolainen 19.1.2017 https://blog.edu.turku.fi/matikkaajakoodausta/ Mitä on koodaaminen? Koodaus on puhetta tietokoneille. Koodaus on käskyjen antamista tietokoneelle.

Lisätiedot

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä 582104 Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä 1 Luokkamallin lisäpiirteitä Erilaiset yhteystyypit kooste kompositio Muita luokkien välisiä suhteita riippuvuudet periytyminen eli luokkahierarkia

Lisätiedot

Suunnitteluvaihe prosessissa

Suunnitteluvaihe prosessissa Suunnittelu Suunnitteluvaihe prosessissa Silta analyysin ja toteutuksen välillä (raja usein hämärä kumpaankin suuntaan) Asteittain tarkentuva Analyysi -Korkea abstraktiotaso -Sovellusläheiset käsitteet

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

JavaBeans Components

JavaBeans Components JavaBeans Components OULUN YLIOPISTO Tietojenkäsittelytieteiden laitos Software Architectures 6. helmikuuta 2004 Mikael Kujanpää mahead@ee.oulu.fi LuTK / TOL -03 Tiivistelmä Ohjelmistokomponentit ovat

Lisätiedot

S11-04 Kompaktikamerat stereokamerajärjestelmässä. Projektisuunnitelma

S11-04 Kompaktikamerat stereokamerajärjestelmässä. Projektisuunnitelma AS-0.3200 Automaatio- ja systeemitekniikan projektityöt S11-04 Kompaktikamerat stereokamerajärjestelmässä Projektisuunnitelma Ari-Matti Reinsalo Anssi Niemi 28.1.2011 Projektityön tavoite Projektityössä

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

Yhtälönratkaisusta. Johanna Rämö, Helsingin yliopisto. 22. syyskuuta 2014

Yhtälönratkaisusta. Johanna Rämö, Helsingin yliopisto. 22. syyskuuta 2014 Yhtälönratkaisusta Johanna Rämö, Helsingin yliopisto 22. syyskuuta 2014 Yhtälönratkaisu on koulusta tuttua, mutta usein sitä tehdään mekaanisesti sen kummempia ajattelematta. Jotta pystytään ratkaisemaan

Lisätiedot

Ohjelmistoarkkitehtuurit. Kevät

Ohjelmistoarkkitehtuurit. Kevät Ohjelmistoarkkitehtuurit Kevät 2012-2013 Johannes Koskinen http://www.cs.tut.fi/~ohar/ Tervetuloa Oulun yliopisto, Tampereen yliopisto, Turun yliopisto, Tampereen teknillinen yliopisto 2 Kurssin tavoitteet

Lisätiedot

Standardit osana käyttäjäkeskeistä suunnittelua

Standardit osana käyttäjäkeskeistä suunnittelua Standardit osana käyttäjäkeskeistä suunnittelua 20.4.2006 Mikä on standardi? sovittu tapa tehdä jokin asia saatetaan tarkoittaa asian määrittelevää normatiivista asiakirjaa varmistetaan esim. Euroopassa

Lisätiedot

Opas koulujen VALO-hankintaan. Elias Aarnio Avoimet verkostot oppimiseen -hanke Educoss Innopark Oy

Opas koulujen VALO-hankintaan. Elias Aarnio Avoimet verkostot oppimiseen -hanke Educoss Innopark Oy Opas koulujen VALO-hankintaan Elias Aarnio Avoimet verkostot oppimiseen -hanke Educoss Innopark Oy Mikä ihmeen VALO? VALO = vapaat ja avoimen lähdekoodin ohjelmistot Kyse on siis Open Sourcesta eli vapaista

Lisätiedot

Järjestelmäarkkitehtuuri (TK081702) Web Services. Web Services

Järjestelmäarkkitehtuuri (TK081702) Web Services. Web Services Järjestelmäarkkitehtuuri (TK081702) Standardoidutu tapa integroida sovelluksia Internetin kautta avointen protokollien ja rajapintojen avulla. tekniikka mahdollista ITjärjestelmien liittämiseen yrityskumppaneiden

Lisätiedot

S11-09 Control System for an. Autonomous Household Robot Platform

S11-09 Control System for an. Autonomous Household Robot Platform S11-09 Control System for an Autonomous Household Robot Platform Projektisuunnitelma AS-0.3200 Automaatio- ja systeemitekniikan projektityöt Quang Doan Lauri T. Mäkelä 1 Kuvaus Projektin tavoitteena on

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

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

Olio-ohjelmoinnissa luokat voidaan järjestää siten, että ne pystyvät jakamaan yhteisiä tietoja ja aliohjelmia.

Olio-ohjelmoinnissa luokat voidaan järjestää siten, että ne pystyvät jakamaan yhteisiä tietoja ja aliohjelmia. 4. Periytyminen 4.1. Johdantoa Käytännössä vähänkään laajemmissa ohjelmissa joudutaan laatimaan useita luokkia, joiden pitäisi pystyä välittämään tietoa toisilleen. Ohjelmien ylläpidon kannalta olisi lisäksi

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

Ohjelmistojen mallintaminen viikon 4 laskareiden mallivastauksia

Ohjelmistojen mallintaminen viikon 4 laskareiden mallivastauksia Ohjelmistojen mallintaminen viikon 4 laskareiden mallivastauksia Tehtävä 1 Tehtävässä 1 mallinnettiin Monopolipeliä. Alla olevassa esimerkissä peliin liittyy aina 2 noppaa, peliä pelataan pelilaudalla,

Lisätiedot

Kehittää ohjelmointitehtävien ratkaisemisessa tarvittavia metakognitioita!

Kehittää ohjelmointitehtävien ratkaisemisessa tarvittavia metakognitioita! Kehittää ohjelmointitehtävien ratkaisemisessa tarvittavia metakognitioita! eli... Hyvä kaava sanoo enemmän kuin,... tuhat riviä koodia!... sata riviä tekstiä!... kymmenen diagrammia! YLEISTÄ FORMAALEISTA

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

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

Ohjelmistojen mallintaminen

Ohjelmistojen mallintaminen Ohjelmistojen mallintaminen - Mallit - Ohjelmiston kuvaaminen malleilla 31.10.2008 Harri Laine 1 Malli: abstraktio jostain kohteesta Abstrahointi: asian ilmaiseminen tavalla, joka tuo esiin tietystä näkökulmasta

Lisätiedot

Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen

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

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

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

Lisätiedot

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit Ohjelmiston testaus ja laatu Ohjelmistotekniikka elinkaarimallit Vesiputousmalli - 1 Esitutkimus Määrittely mikä on ongelma, onko valmista ratkaisua, kustannukset, reunaehdot millainen järjestelmä täyttää

Lisätiedot

Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS CT10A4000 - Kandidaatintyö ja seminaari

Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS CT10A4000 - Kandidaatintyö ja seminaari LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS CT10A4000 - Kandidaatintyö ja seminaari Alkuraportti Avoimen lähdekoodin käyttö WWW-sovelluspalvelujen toteutuksessa Lappeenranta, 30.3.2008,

Lisätiedot

7 Uusia tarjouskilpailuja koskevien ilmoitusten tilaaminen

7 Uusia tarjouskilpailuja koskevien ilmoitusten tilaaminen 7 Uusia tarjouskilpailuja koskevien ilmoitusten tilaaminen Käyttäjä voi tilata sähköposti-ilmoituksen kaikista uusista tarjouskilpailuista valitsemallaan alalla CPV-luokituksen pohjalta. Euroopan komissio

Lisätiedot

11.4. Context-free kielet 1 / 17

11.4. Context-free kielet 1 / 17 11.4. Context-free kielet 1 / 17 Määritelmä Tyypin 2 kielioppi (lauseyhteysvapaa, context free): jos jokainenp :n sääntö on muotoa A w, missäa V \V T jaw V. Context-free kielet ja kieliopit ovat tärkeitä

Lisätiedot

Palvelun versio 1.0 Toimeenpanopalvelun tunnus (ks. M ) 10fea, 9c2f, 4760, 9095, f4f9295f4b19

Palvelun versio 1.0 Toimeenpanopalvelun tunnus (ks. M ) 10fea, 9c2f, 4760, 9095, f4f9295f4b19 1 5. Luokittamispalvelu 5.1. Palveluinformaatio Palvelun nimi Luokittamispalvelu Palvelun versio 1.0 Toimeenpanopalvelun tunnus (ks. M14.4.42) 10fea, 9c2f, 4760, 9095, f4f9295f4b19 5.2 Avainkäsitteet 5.2.1

Lisätiedot

Ratkaisumallien historia

Ratkaisumallien historia Ratkaisumallien historia Jaakko Vuolasto Helsinki 25.1.2001 Seminaariesitelmä HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Sisällys 1 Johdanto... 1 2 Ratkaisumallin käsite ohjelmistotuotannossa...

Lisätiedot

Järjestelmäarkkitehtuuri (TK081702)

Järjestelmäarkkitehtuuri (TK081702) Järjestelmäarkkitehtuuri (TK081702) yleistyvät verkkopalveluissa Youtube Google... Avaavat pääsyn verkkopalvelun sisältöön. Rajapintojen tarjoamia tietolähteitä yhdistelemällä luodaan uusia palveluja,

Lisätiedot

Testaajan eettiset periaatteet

Testaajan eettiset periaatteet Testaajan eettiset periaatteet Eettiset periaatteet ovat nousseet esille monien ammattiryhmien toiminnan yhteydessä. Tämä kalvosarja esittelee 2010-luvun testaajan työssä sovellettavia eettisiä periaatteita.

Lisätiedot

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

812341A Olio-ohjelmointi Peruskäsitteet jatkoa 812341A Olio-ohjelmointi 2106 Peruskäsitteet jatkoa Luokkakohtaiset piirteet n Yhteisiä kaikille saman luokan olioille n Liittyvät luokkaan, eivät yksittäiseen olioon n Kaikki ko. luokan oliot voivat käyttää

Lisätiedot