Suunnittelumallit. OULUN YLIOPISTO Tietojenkäsittelytieteiden laitos Oliosuuntautunut analyysi ja -suunnittelu 27. joulukuuta 2003
|
|
- Elsa Katajakoski
- 8 vuotta sitten
- Katselukertoja:
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,
Sisällys. Ratkaisumallien historia. Ratkaisumalli. Ratkaisumalli [2] Esimerkki: Composite [2] Esimerkki: Composite. Jaakko Vuolasto 25.1.
Sisällys Ratkaisumallien historia Jaakko Vuolasto 25.1.2001! Ratkaisumalli! Christopher Alexander! Ohjelmistotuotannosta arkkitehtuuriin! Henkilöhistoriaa! Ensimmäisiä käyttökokemuksia! Yhteenveto 25.1.2001
Lisätiedot812347A 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ätiedotohjelman 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ätiedotSisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki
Sisällys JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta Abstrakti luokka ja metodi Rajapintamäärittely (interface) Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto 13.10.2000 E.
Lisätiedot812347A 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ätiedot2. 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ätiedotOhjelmistoarkkitehtuurit. Syksy 2008
Ohjelmistoarkkitehtuurit Syksy 2008 Kai Koskimies 1 Tervetuloa Kuopion yliopisto, Oulun yliopisto, Tampereen yliopisto, Teknillinen korkeakoulu, Turun yliopisto, Vaasan yliopisto, Tampereen teknillinen
Lisätiedothttp://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ätiedotOlio-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ätiedotOhjelmistojen 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ätiedot812347A 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ätiedot1. 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ätiedotOhjelmistotekniikan menetelmät, suunnittelumalleja
582101 - Ohjelmistotekniikan menetelmät, suunnittelumalleja 1 Suunnittelumallit (design patterns) Kuvaus sellaisesta luokkarakenteesta & olioiden vuorovaikutuksesta, joka ratkaisee tietyn yleisen ongelman
LisätiedotOlio-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ätiedotUudelleenkä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ätiedotOlio-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ätiedotSoftware 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ätiedotOhjelmistoarkkitehtuurit. 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ätiedotJä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ätiedotKertaus: 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ätiedotOliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä
Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä Matti Luukkainen 10.12.2009 Tässä esitetty esimerkki on mukaelma ja lyhennelmä Robert Martinin kirjasta Agile and Iterative Development löytyvästä
LisätiedotSuunnittelumallien 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ätiedotOliosuunnittelu. 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ätiedotRekursiolause. 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ätiedotT 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ätiedotTIE-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ätiedotTest-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ätiedotKÄ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ätiedotTenttikysymykset. + 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ätiedotAlkuraportti. 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ätiedotRajapinnasta 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ätiedot3. 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ätiedotHarjoitustehtä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ätiedotTest-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ätiedotTä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ätiedot4. Olio-ohjelmoinista lyhyesti 4.1
4. Olio-ohjelmoinista lyhyesti 4.1 Sisällys Yleistä. Oliot ja luokat. Attribuutit. Olioiden esittely ja alustus. Rakentajat. Olion operaation kutsuminen. 4.2 Yleistä Olio-ohjelmointia käsitellään hyvin
Lisätiedot13/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ätiedotDigi-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ätiedotOlio-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ätiedotHirviö. 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ätiedotAlkukartoitus Opiskeluvalmiudet
Alkukartoitus Opiskeluvalmiudet Päivämäärä.. Oppilaitos.. Nimi.. Tehtävä 1 Millainen kielenoppija sinä olet? Merkitse rastilla (x) lauseet, jotka kertovat sinun tyylistäsi oppia ja käyttää kieltä. 1. Muistan
Lisätiedot812347A 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ätiedotOpintojakso 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ätiedotIT-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ätiedotTIE Tietorakenteet ja algoritmit 1. TIE Tietorakenteet ja algoritmit
TIE-20100 Tietorakenteet ja algoritmit 1 TIE-20100 Tietorakenteet ja algoritmit TIE-20100 Tietorakenteet ja algoritmit 2 Lähteet Luentomoniste pohjautuu vahvasti prof. Antti Valmarin vanhaan luentomonisteeseen
LisätiedotHELIA 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ätiedotOsoitin 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ätiedotSisä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ätiedot4.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ätiedotConcurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo
Concurrency - Rinnakkaisuus Group: 9 Joni Laine Juho Vähätalo Sisällysluettelo 1. Johdanto... 3 2. C++ thread... 4 3. Python multiprocessing... 6 4. Java ExecutorService... 8 5. Yhteenveto... 9 6. Lähteet...
LisätiedotOhjelmistojen 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ätiedot19/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ätiedotOhjelmistoarkkitehtuurit 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ätiedotTarjolla tänää: Ohjelmiston toteutuksesta. Kuinka tulla hyväksi ohjelmoijaksi? CRC-kortit. Testilähtöinen kehittäminen JOT2007. Uudelleenrakentaminen
Tarjolla tänää: Ohjelmiston toteutuksesta JOT2007 CRC-kortit Testilähtöinen kehittäminen Uudelleenrakentaminen Voisiko ohjelmointi olla sittenkin suunnittelua? Kuinka tulla hyväksi ohjelmoijaksi? CRC-kortit
LisätiedotTenttikysymykset. + 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ätiedotOhjelmoinnin 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ätiedot812341A 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ätiedotOlio-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ätiedotTestausdokumentti. 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ätiedotTIE-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ätiedotS11-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ätiedotE-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ätiedotUCOT-Sovellusprojekti. Testausraportti
UCOT-Sovellusprojekti Testausraportti Ilari Liukko Tuomo Pieniluoma Vesa Pikki Panu Suominen Versio: 0.02 Julkinen 11. lokakuuta 2006 Jyväskylän yliopisto Tietotekniikan laitos Jyväskylä Hyväksyjä Päivämäärä
LisätiedotTestaajan 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ätiedotKoodaamme 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ätiedotELM GROUP 04. Teemu Laakso Henrik Talarmo
ELM GROUP 04 Teemu Laakso Henrik Talarmo 23. marraskuuta 2017 Sisältö 1 Johdanto 1 2 Ominaisuuksia 2 2.1 Muuttujat ja tietorakenteet...................... 2 2.2 Funktiot................................
LisätiedotJoskus 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ätiedotSEPA päiväkirja. BetaTeam. Juho Mäkinen, 57796V, Jari Leppä, 42710V, Versio Pvm Tekijä Kuvaus
SEPA päiväkirja BetaTeam Juho Mäkinen, 57796V, jvmakine@cc.hut.fi Jari Leppä, 42710V, jleppa@cc.hut.fi Versio Pvm Tekijä Kuvaus 0.1 10.11.2005 Juho Mäkinen Johdanto 1. 0.2 11.11.2005 J.Mäkinen, Käytäntöön
LisätiedotHallintaliittymän käyttöohje
Hallintaliittymän käyttöohje 1. Yleisiä huomioita Hallintaliittymän käyttöä helpottavia yleisiä huomioita: - Käytä listanäkymien hakukentissä kentän vieressä olevaa hakunappia, älä enter-näppäintä. - Älä
Lisätiedot2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)
2. Lisää Java-ohjelmoinnin alkeita Muuttuja ja viittausmuuttuja Vakio ja literaalivakio Sijoituslause Syötteen lukeminen ja Scanner-luokka 1 Muuttuja ja viittausmuuttuja (1/4) Edellä mainittiin, että String-tietotyyppi
LisätiedotSisä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ätiedotOhjelmistoarkkitehtuurit 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ätiedot1 Kannat ja kannanvaihto
1 Kannat ja kannanvaihto 1.1 Koordinaattivektori Oletetaan, että V on K-vektoriavaruus, jolla on kanta S = (v 1, v 2,..., v n ). Avaruuden V vektori v voidaan kirjoittaa kannan vektorien lineaarikombinaationa:
LisätiedotOhjelmistoarkkitehtuurit. Syksy 2010
Ohjelmistoarkkitehtuurit Syksy 2010 Kai Koskimies Tervetuloa Oulun yliopisto, Tampereen yliopisto, Turun yliopisto, Tampereen teknillinen yliopisto, Vaasan yliopisto Kurssin tavoitteet Arkkitehtuurin roolin
LisätiedotMitä on periytyminen?
8. Periytyminen 8.1 Sisällys Mitä on periytyminen? Yksittäis- ja moniperiytyminen. Oliot ja perityt luokat. Filosofinen ja käytännönläheinen näkökulma periytymiseen. Periytymisen soveltaminen. 8.2 Mitä
LisätiedotHirviö. 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ätiedotTietokoneohjelmien käyttö laadullisen aineiston analyysin apuna
Tietokoneohjelmien käyttö laadullisen aineiston analyysin apuna Laadullinen, verbaalinen, tulkinnallinen aineisto kootaan esimerkiksi haastattelemalla, videoimalla, ääneenpuhumalla nauhalle, yms. keinoin.
LisätiedotHakemistojen sisällöt säilötään linkitetyille listalle.
Harjoitustyö 1 Harjoitustyö Tehtävä: ohjelmoi Java-kielellä komentoikkunaa (komentotulkkia, komentoriviä) simuloiva olioperustainen ohjelma. Hakemistojen sisällöt säilötään linkitetyille listalle. Työ
Lisätiedot7 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ätiedotOpas 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ätiedotOhjelmistoarkkitehtuurit 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ätiedotKUINKA KIRJOITAT E-KIRJAN päivässä
KUINKA KIRJOITAT E-KIRJAN päivässä Valmentaja-Akatemia opettaa sinulle kuinka valmentajana pystyt kasvattamaan bisnestäsi, auttamaan useampia ihmisiä ja ansaitsemaan enemmän. www.valmentaja- akatemia.fi
LisätiedotJohdatus rakenteisiin dokumentteihin
-RKGDWXVUDNHQWHLVLLQGRNXPHQWWHLKLQ 5DNHQWHLQHQGRNXPHQWWL= rakenteellinen dokumentti dokumentti, jossa erotetaan toisistaan dokumentin 1)VLVlOW, 2) UDNHQQHja 3) XONRDVX(tai esitystapa) jotakin systemaattista
LisätiedotOhjelmistotekniikan 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ätiedotOpintojakso 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ätiedotOpinnä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ätiedotOhjelmistojen mallintaminen kertausta Harri Laine 1
kertausta 5.12.2008 Harri Laine 1 Ohjelmiston elinkaari, elinkaarimallit Yleinen puitemalli (reference model) - abstrakti kokonaiskuva ei etenemiskontrollia, ei yksityiskohtia Ohjelmistoprosessimallit
LisätiedotOhjelmistojen 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ätiedotDigimyrsky ja palvelumuotoilun osallistavia menetelmiä Reetta Kerola, Hanna Yli-Korpela Maarit Heikkinen.
Digimyrsky ja palvelumuotoilun osallistavia menetelmiä 6.6.2017 Reetta Kerola, Hanna Yli-Korpela Maarit Heikkinen http://contentunion.net/ Päivän pähkinät 9.00-9.30 Opetellaan palvelumuotoilun yhteisöllisten
LisätiedotSisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen
Sisällys 6. Metodit Oliot viestivät metodeja kutsuen. Kuormittaminen. Luokkametodit (ja -attribuutit).. Metodien ja muun luokan sisällön järjestäminen. 6.1 6.2 Oliot viestivät metodeja kutsuen Oliot viestivät
LisätiedotYhteentoimivuusalusta: Miten saadaan ihmiset ja koneet ymmärtämään toisiaan paremmin?
Yhteentoimivuusalusta: Miten saadaan ihmiset ja koneet ymmärtämään toisiaan paremmin? Avoin verkkoalusta ihmisen ja koneen ymmärtämien tietomääritysten tekemiseen Riitta Alkula 20.3.2019 Esityksen sisältö
LisätiedotTiedonsiirto- ja rajapintastandardit
Tiedonsiirto- ja rajapintastandardit Viitekehys Julkishallinnon perustietovarantojen rajapinnat (PERA) työryhmän tulokset valmiit syksyllä 2011 Määrittelee teknisen arkkitehtuuriratkaisun tietovarantojen
LisätiedotUML- 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ätiedotKuka on arvokas? Liite: EE2015_kuka on arvokas_tulosteet.pdf tulosta oppilaiden lomakkeet tehtäviin 1 ja 2.
Kuka on arvokas? Jotta voisimme ymmärtää muiden arvon, on meidän ymmärrettävä myös oma arvomme. Jos ei pidä itseään arvokkaana on vaikea myös oppia arvostamaan muita ihmisiä, lähellä tai kaukana olevia.
LisätiedotYhtä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ätiedotELMAS 4 Laitteiden kriittisyysluokittelu 8.2.2012 1/10. Ramentor Oy ELMAS 4. Laitteiden kriittisyysluokittelu. Versio 1.0
1/10 Ramentor Oy ELMAS 4 Laitteiden kriittisyysluokittelu Versio 1.0 2/10 SISÄLTÖ 1 Kuvaus... 3 2 Kriittisyysluokittelu ELMAS-ohjelmistolla... 4 2.1 Kohteen mallinnus... 4 2.2 Kriittisyystekijöiden painoarvojen
LisätiedotAutomaattinen 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ätiedotPysähdy! Nyt on syytä miettiä tämä asia uudelleen. Kiinnitä huomiosi tähän. Hienoa, jatka samaan malliin. Innokylän arviointimittari
Innokylän arviointimittari Innokylän arviointimittari on kehittämistoiminnan itse- ja vertaisarvioinnin työkalu, jonka avulla arvioidaan kehittämisprosessia ja kehittämisen tavoitteiden saavuttamista.
Lisätiedot