Suunnittelumallien käyttö ohjelmistosuunnittelussa
|
|
- Jussi Kokkonen
- 9 vuotta sitten
- Katselukertoja:
Transkriptio
1 Suunnittelumallien käyttö ohjelmistosuunnittelussa Mika Rantakeisu Rovaniemen ammattikorkeakoulu Avoin ammattikorkeakoulu Tiivistelmä Tämä on selvitys suunnittelumallien käytöstä ohjelmiston kehitysprosessissa. Esittelen useita käytössä olevia suunnittelumalleja ja sovellan niitä käytännössä ohjelman sovellusarkkitehtuurin luomiseen. Käsittelen myös suunnittelumallien yleistä merkitystä ohjelmistokehitykselle ja niiden hyötyjä ja haittoja ohjelmiston arkkitehtuurin luomisessa. Esittelen uusimpia ohjelmoinnin periaatteita ja sovellan niitä suunnittelumallien kanssa ohjelmistokehitysprosessissa. Näytän aikaisemmin tekemäni ohjelman sovellusarkkitehtuurin ja luon suunnittelumalleja käyttäen uuden version tämän ohjelman arkkitehtuurista. Lopuksi esittelen käyttämiäni suunnitteluratkaisuja ja analysoin näiden ratkaisujen hyötyjä ja haittoja verrattuna alkuperäiseen ohjelmaan. Suunnittelumallit ja ohjelmat esitellään tekstikuvauksena sekä UMLkaaviona. Sisällysluettelo JOHDANTO 1.0 Mitä suunnittelumallit ovat? 1.1 Suunnittelumallien hyödyt 1.2 Suunnittelumallien haitat 1.3 Ohjelmisto alan käsitteitä 2.0 SUUNNITTELUMALLIEN ESITTELYJÄ 2.1 Tila suunnittelumalli 2.2 Tarkkailija suunnittelumalli 2.3 Tehdasmetodi suunnittelumalli 2.4 Kehysmetodi suunnittelumalli 3.0 ALKUPERÄINEN OHJELMA 3.1 Mikä on Boulder Dash? 3.2 Lopputulos 3.3 Ajatus uuden version kehitystyöhön 4.0 OHJELMAN UUDELLEENKEHITYS KÄYTTÄEN SUUNNITTELUMALLEJA 4.1 Uuden sovellusarkkitehtuurin rakenne 5.0 LOPPUTULOKSET 5.1 Suunnittelumallien vaikutus ohjelmointiprosessiin 5.2 Suunnittelumallien vaikutus arkkitehtuurin suunnitteluun. 5.3 Johtopäätökset LÄHTEET JOHDANTO Suunnittelumallit ovat valmiita ratkaisuja niihin ongelmiin, joita ohjelmoija kohtaa koostaessaan tietokoneohjelman eri osia. Ne ovat loistava tapa ohjelmoijien siirtää tietoa muille ohjelmoijille suullisesti tai dokumentaation kautta. Käytän tässä julkaisussa ohjelman tilalla synonyymia sovellus. Esittelen aikaisemmin tekemäni sovellusarkkitehtuurin ja kuvaan sovelluksen toimintaa ja kuinka se on tehty. Käytän suunnittelumalleja sen sovellusarkkitehtuurin uudistamiseen ja analysoin uuden arkkitehtuurin hyötyjä sekä haittoja. Lopuksi kerron tämän prosessin aikana tekemiäni havaintoja suunnittelumallien vaikutuksesta siihen mitä ohjelmistokehitysprosessin eri vaiheissa tapahtuu. 1.0 MITA SUUNNITTELUMALLIT OVAT? Suunnittelumallit ovat tärkeä osa ohjelmistokehitysprojektia. Niitä voisi kuvata kokeneiden ohjelmoijien kansanperinteeksi, joka tarjoaa valmiita suunnitteluratkaisuja moniin toistuviin ongelmiin, joita ohjelmoija kohtaa koostaessaan tietokoneohjelman komponenttia arkkitehtuurisuunnittelussa ennalta määrättyyn tarkoitukseen vastaamaan parhaan mukaan sovelluksen spesifikaatiossa määriteltyjä toiminnallisuus- ja laatuvaatimuksia. Erilaisia suunnittelumalleja on satoja ja ne jakaantuvat käyttökontekstinsa mukaan toiminta-, rakenne- ja luontimalleihin. Rakennemalleissa määritellään miten komponentin luokat rakennetaan. Luontimalleissa määritellään miten komponentin oliot luodaan. Toimintamalleissa kuvataan miten komponentin oliot toimivat. 1.1 Suunnittelumallien hyödyt Tuntemalla suunnittelumalleja ohjelmoijat voivat siirtää keskenään paljon tietoa sovellus-spesifeihin ratkaisuihin liittyen. Päätös käyttää jotain suunnittelumallia sovelluksen komponentin tekemiseen määrittelee pitkälti sen, miten se rakennetaan ja toimii. Periaatteessa suunnittelumallia voi verrata talon rakennuspiirustuksiin, jotka määrittelevät talon rakenteen ja rakennustavan. Samoin kuin rakentajalla tehtäväksi jää talon rakentaminen rakennuspiirustusten mukaisiksi, niin ohjelmoija pyrkii ohjelmoimaan komponentin mahdollisimman pitkälle suunnittelumallin määritelmässä viitekehyksessä.
2 Suunnittelumallien kautta voidaan toteuttaa modernin ohjelmistokehityksen käytäntöjä, joita suositellaan sovellettavaksi sovellusarkkitehtuurin suunnittelussa. Nämä käytännöt ovat: [3, s608] 1. Suosi koostamista yli perimisen 2. Luokkien pitää olla avoimia laajennettavuutta varten, suljettuja muokkausta varten 3. Pyri löyhästi sidottuun ratkaisuun komponenttien rajapintojen ja toteutuksen välillä 4. Komponentin sisäiset ratkaisut eivät saa näkyä rajapinnan ulkopuolella 5. Suosi rajapintojen muokkausta/lisäämistä, metodien toteutuksen muuttamisen sijaan 6. Kapseloi se mikä muuttuu 7. Oliot ovat suoraan yhteydessä ainoastaan vierekkäisen arkkitehtuurikerroksen olioiden kanssa 8. Ohjelmoi rajapintoja vastaa älä toteutuksia Lisäksi modernin Java-ohjelmistokehityksen paradigma on pyrkiä siihen että, ohjelman toiminta määräytyy dynaamisesti ohjelman ajovaiheessa, ennenmin kuin se tapahtuisi staattisesti ohjelman kääntämisvaiheessa. [3, s69] 1.2 Suunnittelumallien haitat Suunnittelumallit monimutkaistavat ohjelmaa ja lisäävät erilaisten luokkien ja metodien sekä koodin määrää. Lisäksi ne luovat rajoituksia ohjelman kehitykseen. 1.3 Ohjelmisto alan käsitteitä Suunnittelumallien käyttöön liittyy monia sovellusarkkitehtuuriin liittyviä käsitteitä, jotka kannattaa ymmärtää ainakin yleisellä tasolla. Luokkaa käytetään ohjelmistosuunnittelussa mallittamaan, jonkun abstraktin tai reaalimaailman käsitteen ilmentymää ohjelmistossa. Käytännossä luokassa määritellään tietty loogiseen kokonaisuuteen kuuluva algoritmi ja mitä tietoa siihen talletetaan. Olio on luokan ilmentymä ohjelmaa ajettaessa. Ohjelman toiminnan aikana se toimii algoritmiensa mukaan, joilloin siihen kapseloidaan tietoa sekä se on yhteydessä muihin luokista toteutettuihin olioihin. Rajapinta tarkoittaa tapaa jolla oliot ovat yhteydessä toisiinsa. Kaikki olioiden väliset yhteydet eivät tapahtu rajapintojen kautta, mutta komponenttien, kerroksien ja myös moduuleilla on omia rajapintoja, joilla niihin pitää olla yhteydessä. Periaatteessa rajapinta antaa komponenttia käyttävälle asiakkaalle tietyn rajatun näkymän komponentin tietoihin ja toimintoihin. Yleensä tämä tarkoittaa vain niitä tietoja ja toimintoja, joita kyseisen asiakkaan arkkitehtuuri suunnittelun perusteella tarvitsee käyttää. Ohjelmistoprosessissa sanalla komponentti voi olla monta merkitystä. Se voi tarkoittaa luokkaa, olioden kokonaisuutta tai vain yhtä oliota. Komponentti joka tapauksessa toteuttaa tiettyjä toimintoja, joita sille on asetettu arkkitehtuurisuunnittelussa ja yhteydet komponenttiin tapahtuvat sen rajapintojen kautta näin se on helposti uudelleen käyttävissä muissa ohjelmissa kuin se jossa on määritelty. Monet ohjelmointikielet tarjoavat valmiita komponentteja, jotka on suoraan käytettävissä ohjelmassa. Moduuli voidaan määritellä luokaksi, paketiksi, komponentiksi. Moduuli on yleensä koodin hallinnallinen kokonaisuus. Ohjelma kannattaa jakaa monitasomallin mukaisiin kerroksiin. Kerros käsittää kaikki tiettyyn loogiseen kokonaisuuteen tarkoitetut oliot. Kerrokset ovat yhteydessä toisiinsa rajapintojen kautta vain monitasomallin vierekkäisten kerrosten välillä. Eri kerrokset saattavat sijaita eri tietokoneilla. Yleisin tapa jakaa sovellus kerroksiin on niin sanottu kolme kerrosarkkitehtuuri, jossa on käytössä käyttöliittymä-, toimintalogiikka-, ja infrastruktuurikerrokset. Arkkitehtuuri tarkoittaa perustaa, jonka varaan kaikki sovelluksen myöhemmät suunnittelu- ja toteutusratkaisut rakennetaan. Arkkitehtuurikuvaus toimii järjestelmän yleisrakenteen dokumentaationa.[2] 2 SUUNNITTELUMALLIEN ESITTELYJÄ Erilaisia suunnittelumalleja satoja ja ne jakaantuvat sen ongelma kontekstinsa mukaan, jonka ne ensisijaisesti ratkaisevat rakenne-, luonti-, ja käyttäytymismalleihin. Yleensä tarvitsee osata joitakin keskeisiä suunnittelumalleja. [3] 2.1 Tila suunnittelumalli Tila-suunnittelumallissa (State Pattern) määritellään rajapinta, jolla voidaan samalle oliolle määritellä monia toteutuksia niistä luokista, jotka toteuttavat rajapinnan. Tilasiirtymät voivat tapahtua ohjelman sisäisesti olion tilan mukaan tai ulkoisesti. Tila-suunnittelumalli ei ota kantaa siihen mikä muuttaa olioiden tilaa. Toteutuksessa on määriteltävä miten tila oliot luodaan ja tuhotaan.[3, s22] Käytännössä suunnittelumalli voidaan toteuttaa seuraavasti (UML luokkakaavio kuva[1]). Määritellään rajapinta (State) ja rajapinnan toteuttavia luokkia (ConcreteState1, ConcreteState2). Rajapintaa käyttävässä asiakas (Context) luokassa on jäsen muuttuja jonka tyyppi on rajapinta State. Sekä jäsenmuuttujat, jotka viittaavat State liittymän toteuttaviin ConcreteState1 ja ConcreteState2 luokkiin. Myös ConcreteState1 ja ConcreteState2 luokissa on jäsenmuuttuja joka viittaa samaan Context luokkaan. Tilojen vaihto tapahtuu niin että Context luokka asettaa State muuttujan viittaamaan milloin esimerkiksi ConcreteState1 luokkaan tai ConcreteState2 muuttujaan, näiden omien setstate(state : State) metodien kautta. [3]
3 tapa toteuttaa Tehdasmetodi-suunnittelumalli (virtual constructor) on seuraava (kuva[3]). Suunnittelumallissa on yliluokka (Object), josta määritellään aliluokkia (ConcreteObject1, ConcreteObject2). Suunnittelumallissa on FactoryMethod-niminen luokka, jossa on factory niminen metodi. Tämä metodi luo oliota Object yliluokan aliluokista, Joita on esimerkiksi ConcreteObject1 ja ConcreteObject2.[3] kuva[1] Tila-suunnittelumalli sopii ohjelmiin, joissa olion käyttäytyminen riippuu tilasta ja olion on vaihdettava käyttäytymistään ajon aikana. Esimerkki tällaisesta on TCP-yhteys, jossa kolme tilaa jotka ovat suljettu, muodostettu ja kuuntelee.[1] 2.2 Tarkkailija suunnittelumalli Tarkkailija-suunnittelumallissa (Observer-pattern) määritellään Subject rajapinnan toteutta olio (kuva[2]) (ConcreteSubject) sekä ConcreteObserver oliota, jotka toteuttavat Observer rajapinnan. ConcreteSubject oliossa on viittaus ConcreteObserver oliohin (yleensä jonkinlainen lista). Ja samoin ConcreteObserver oliossa on viittaus samaan ConcreteSubject olioon. [3, s52] Tarkkailijan toiminta tapahtuu niin että Concrete- Observer rekisteröi itsensä ConcreteSubject olion tarkkailijaksi (lisää itsensä listaan). Jos Concrete-Subject olion tila muuttuu niin se ilmoittaa siitä kaikille Tarkkailijoilleen (ConcreteObserver oliot listassa), jotka muuttavat omaa toimintaansa. ConcreteSubject tilan mukaan. Jokainen ConcreteObserver olio voi lisätä ja poistaa itsensä listasta koska tahansa.[3] kuva[3] Tehdasmetodi suunnittelumallia käytetään sovelluksissa, joissa ei tiedetä mitä eri oliota milloinkin käytetään eri tilanteissa sovelluksen ajon aikana.[1] 2.4 Kehysmetodi suunnittelumalli Kehysmetodi-suunnittelumalli (kuva[4]) on perussuunnittelumalleja. Siinä määritellään yliluokka, jonka aliluokat perivät laajentaen ja muuttaen yliluokan toimintaa. kuva[4] Kehysmetodia käytetään laajasti ohjelmoinnissa. Itse asiassa tavallinen luokanperintä toteuttaa kehysmetodisuunnittelumallin. kuva[2] Tarkkailija suunnittelumalli sopii hyvin järjestelmiin, joissa järjestelmän tietyn olion tilan muuttuessa halutaan tiedottaa siitä järjestelmän muihin olioihin ilman että tarvitsee tietää minkälainen tämä olio on. Olion tarvitsee vain toteuttaa vaaditut Subject ja Observer rajapinnat. Tarkkailija on kaikkein yleisimmin käytetty suunnittelumalli. 2.3 Tehdasmetodi suunnittelumalli Tehdasmetodi suunnittelumallissa luodaan halutun yliluokan toteuttavia olioita algoritmin mukaan. Yksi 3 ALKUPERÄINEN OHJELMA Tein alkuperäisen ohjelman heinä-elokuussa Halusin kehittää ohjelmointitaitojani ja etsin siihen sopivaa haastetta. Keksin että voisin tehdä oman version klassisen Commotore 64 pelistä nimeltään Boulder Dash. Kyseinen peli tuntui sopivalta haasteelta kehittää ohjelmointitaitojani.
4 3.1 Mikä on Boulder Dash? kuva[5] Boulder Dash (kuva[5] ja kuva[6]) on kaksiulotteinen toiminnallinen pulmanratkontapeli, jossa pelaaja kaivautuu kentän läpi keräten tietyn määrän timantteja päästäkseen seuraavaan kenttään. 3.2 Lopputulos Ohjelmoin Boulder Dash pelin Java-ohjelmointikielellä. Tuolloin en varsinaisesti suunnitellut ohjelmaa, vaan koostin sen askel askeleelta kehittäen siihen vaadittuja ominaisuuksia, joita olin siihen määritellyt vaatimusmäärittelyssä. Tuloksena oli vaatimusmäärittelyn toiminnallisenmäärittelyn kohtuudella täyttävä, mutta laatuvaatimukset huonosti toteuttava ohjelma, jonka koodia ulkopuolisten oli vaikea ymmärtää. Sovelluksen koodissa ei juurikaan ollut mitään rakennetta, enkä käyttänyt edes olio-ohjelmoinnin yleisiä perusperiaatteita, joita on esimerkiksi periminen ja kapselointi sekä saman olion käyttö useassa kohteessa. Vaan loin jokaista toiminnallisuutta varten oman olion, joka oli hyvin monesti hyvin samanlainen jo toteuttamieni olioiden kanssa. Myös sellaiset käsitteet kuin komponentti ja rajapinta olivat minulle tuntemattomia. Kuitenkin huonoin sovellusarkkitehtuurin (kuva[7]) ratkaisu oli se että, suurin osa koodista sijaitsi yhdessä luokassa nimeltään Peli. Tämä teki Peli-luokasta todella suuren ja vaikeasti ymmärrettävän. Arkkitehtuuri kannalta sovelluksen luokat olivat tiukasti sidottu toisiinsa (vertaa periaate 3). Eikä sen koodia voinut siksi käyttää muissa ohjelmissa. Koodi oli muutenkin epäjohdonmukaista ja huonosti suunniteltua. Alkuperäisen ohjelman sovellus-arkkitehtuuri on kuvassa 7. kuva[6] kuva[7] 3.3 Ajatus uudenversion kehitystyöhön Ajatus uuden version tekemiseen syntyi, kun aloin perehtymään sellaisiin ohjelmoinnissa keskeisiin käsitteisiin kuin monisäikeisyys, rajapinta, komponentti ja ennen kaikkea suunnittelumallit. Opin myös monia
5 yleisiä ohjelmoinnin periaatteita, joita kannattaa soveltaa ohjelmien kehityksessä. Ymmärsin pystyisin tekemään ohjelmasta laatuvaatimukset paremmin toteuttavan version. 4 OHJELMAN UUDELLEENKEHITYS KÄYTTÄEN SUUNNITTELUMALLEJA Vaatimusmäärittelyn pohjalta tein arkkitehtuurisuunnitelman, jossa päädyin käyttämään seuraavia suunnittelumalleja Tehdasmetodi, Tila, Kehysmetodi sekä Tarkkailija. Käytän myös modernin ohjelmistokehityksen yleisiä periaatteita ohjelman toteutuksessa. Myös Java Code Conventions tyylioppisääntöjä käyttäminen muuttujien ja luokkien nimeämiseen on tärkeää saadakseni ohjelmasta enemmän standartien ja käytäntöjen mukaiseksi, tämä tekee ohjelmasta ymmärrettävämmän. Ohjelman suoritus tulee myös jakaantumaan usealle säikeelle. Uudistettu sovellusarkkitehtuuri näkyy kuvassa Uuden sovellusarkkitehtuurin rakenne Uudessa arkkitehtuurissa (kuva[8]) on toteutettu Tarkkailija-suunnittelumallia Peli-luokan ja KäyttoLiittyma -luokan välillä, joka nimensä mukaisesti toimii käyttöliittymänä peliin. Peli luokka toteuttaa Subject-rajapinnan ja KayttoLiittyma-luokka toteuttaa Observer rajapinnan. Tämän suunnittelun suurin hyöty on se että Peli luokalla voi olla lukuisia erilaisia käyttöliittymiä, joita voidaan käyttää ja vaihtaa dynaamisesti ohjelman ajon aikana. Peli luokalla voi olla jopa useita käyttöliittymiä yhtä aikaa. Mutta on epäselvää onko tästä hyötyä tässä vaiheessa. kuva[8] KeyListener rajapinta (Interface) ja NappainKuuntelija luokka toteuttavat Kehysmetodi-suunnittelumallia. KeyListener rajapinnan toimintaa laajennetaan ja muutetaan NappainKuuntelija luokassa. Haamu ja TuliKarpanen luokissa on jäsenmuuttujina Liikkuminen niminen rajapinta tyyppinen jäsenmuuttuja sekä Liikkuminen liittymän toteuttaviin LiikkuuVasempaan ja LiikkuuOikeaan luokkiin viittaavia jäsenmuuttujia. Haamu ja TuliKarpanen vaihtavat Liikkuminen tyyppisen muuttujan viittaamaan ajon aikana dynaamisesti, joko LiikkuuVasempaan tai LiikkuuOikeaan luokasta muodostettuun olioon. Nämä luokat toteuttavat yhdessä Tila-suunnittelumallin. TehdasMetodi luokka toteuttaa luonnollisesti TehdasMetodi-suunnittelumallin. TehdasMetodiluokalla luodaan ohjelman ajon aikana dynaamisesti abstraktin PeliHahmo-luokan toteuttavia oliota (esimerkiksi Kivi, Haamu, TuliKarpanen). Sovelluksessa on nyt määritelty komponentteja, joita voi käyttää muissa ohjelmissa. Komponentti 1 on samalla käyttöliittymäkerros. Siinä on kaikki sovelluksen käyttöliittymään osat. Siihen ollaan yhteydessä tarkkailija-suunnittelumallin Observerrajapinnan kautta. Komponentti 2 taas tarjoaa rajapinnan kuunnella näppäin komentoja. Komponenttiin ollaan yhteydessä KeyListener rajapinnan kautta. Komponentti 3 tarjoaa erilaisia algoritmi ratkaisuja näytön komponenttien liikkumiseen. Sovellus voidaan myös jakaa eri kerroksiin monikerrosmallin mukaisesti. Yleisimmin käytetään kolme kerron arkkitehtuuria (three tier architecture), jossa sovellus on jaettu käyttöliittymä-, toimintalogiikka- ja infrastruktuuri kerroksiin. Tässä tapauksessa voidaan nähdä että sovellus on jakaantunut käyttöliittymä kerrokseen ja toimintalogiikka kerrokseen. Käyttöliittymä kerrokseen kuuluu KayttoLiittyma ja Observer luokat. Kaikkien muiden luokkien kuuluessa toimintalogiikka-kerrokseen. Kyseessä on kaksi kerros arkkitehtuuri. PeliHahmojenKasittely-luokka perii Runnable-luokan, joka mahdollistaa sen että metodien kutsut PeliHahmojenKasittely luokassa voidaan suorittaa omassa säikeessään käyttämällä run()-metodia. Sovelluksen suoritus on näin jaettu monelle säikeelle. 5 LOPPUTULOKSET Suunnittelumalleista oli hyötyä sekä ohjelman suunnittelussa ja sekä ohjelmoinnissa. 5.1 Suunnittelumallien vaikutus ohjelmointiprosessiin Suunnittelumallien hyöty sovelluksen kehityksessä tuli esiin jo sovelluksen arkkitehtuurin suunnittelu vaiheessa. Päätös käyttää jotain suunnittelumallia sovelluksen komponentin tekemiseen määrittelee pitkälti sen miten se rakennetaan ja toimii. Suunnittelumallien kautta voidaankin suullisesti ja dokumentaation kautta jakaa sellaista tietoa ohjelmointiprosessista, jota muuten on vaikea siirtää.
6 Itse sovelluksen ohjelmointiprosessin suunnittelumallin käyttäminen teki johdonmukaisen tavoitetietoisen tapahtuman, koska suunnittelumallin käyttö tietyn komponentin tekemiseen antaa viitekehyksen miten se rakennetaan. Kun komponentti rakennetaan ennalta määrätyllä tavalla vastaamaan toiminnallisuus vaatimuksia on eri suunnitteluratkaisujen vaikutus lopputulokseen paremmin ennakoitavissa. Eikä ohjelmoijan enää tarvitse ratkoa miten komponentti on parhainta rakentaa, näin säästetään paljon aikaa sovelluksen kehityksessä ja vähennetään mahdollisuutta ennalta odottamien ongelmien syntymiseen ohjelmaa kehitettäessä. 6 LÄHTEET [1]Immonen Mirja, Suunnittelumallit Kuopion yliopisto [2]Helsingin yliopisto, Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja ma_08-arkkitehtuurisuunnittelua.pdf [3]Eric Freeman, Elisabeth Robson, Bert Bates, Kathy Sierra 2004 Head First Design Patterns: O'Reilly Media 5.2 Suunnittelumallien vaikutus arkkitehtuurinsuunnitteluun Ohjelmointikontekstista katsottuna uusi arkkitehtuurisuunnittelu tekee ohjelmointiprosessista enemmän rajapintoja vastaan ohjelmointia ja on komponentteihin perustuvaa. Näin on toteutettu monia modernin ohjelmistokehityksen periaatteita, joita on esimerkiksi pyri löyhään sidontaan rajapintojen ja toteutusten välillä (periaate 3) sekä komponenttien sisäiset ratkaisut eivät näy rajapinnan ulkopuolelle (periaate 2). Lisäksi toiminnallisuutta voidaan tulevaisuudessa laajentaa tai muuttaa rajapintoja muokkaamalla. Ennemmin kuin muutettaisiin metodien toteutuksia (periaatteet 4, 5). Ohjelma on helpommin skaalattavissa ja sen komponentteja voidaan uudelleen käyttää muissa ohjelmissa, joissain tapauksissa eri ohjelmat voivat jopa jakaa saman komponentin. Ohjelmasta tulee paremmin tarkoitukseen sopiva, johdonmukaisempi, helpommin muiden ymmärrettävä. Lisäksi ohjelmistokehitysprojektissa sovelluksen kehitys voidaan jakaan komponentteihin, jonka kukin ohjelmoija voi tehdä itsenäisesti. Ohjelmoijan tarvitsee tietää vain komponenttien rajapinnat (periaate 8). Koostamalla (periaate 1) on voitu kapseloida se mikä eri luokissa muuttuu omiin luokkiinsa (periaate 6) näin on myös toteutettu modernin Java-ohjelmisto-kehityksen paradigma eli toiminnallisuuden määrittely (luokkien liittäminen toisiinsa) tapahtuu nyt ennemmin dynaamisesti ohjelman ajon aikana kuin staattisesti perimällä. Ohjelman sovellusarkkitehtuuri voidaan nyt myös jakaa toimintalogiikka- ja käyttöliittymäkerroksiin. Käyttöliittymäkerros ja toimintalogiikka kerrokset ovat yhteydessä keskenään Tarkkailija-suunnittelumallin rajapintojen kautta, näin sovellus täyttää periaatteen 7 ohjelmistokehitykseen liittyen. 5.3 Johtopäätökset Suunnittelumalleista oli paljon hyötyä ohjelman kehityksessä eri ohjelmistokehityksen eri vaiheissa ja arkkitehtuurin suunnittelussa.
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.
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
Sokkelon sisältö säilötään linkitetyille listalle ja tekstitiedostoon. Työ tehdään itsenäisesti yhden hengen ryhmissä. Ideoita voi vaihtaa koodia ei.
Harjoitustyö 1 Harjoitustyö Tehtävä: ohjelmoi olioperustainen sokkeloseikkailu peli Javakielellä. Sokkelon sisältö säilötään linkitetyille listalle ja tekstitiedostoon. Työ tehdään itsenäisesti yhden hengen
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
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
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.
Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja
582104 Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja 1 Arkkitehtuurisuunnittelu Ohjelmistoarkkitehtuurin määritelmä & arkkitehtuurisuunnittelun lähtökohta ja tavoitteet Kerrosarkkitehtuuri
Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14
Arkkitehtuurikuvaus Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy Ryhmä 14 Muutoshistoria Versio Pvm Päivittäjä Muutos 0.4 1.11.2007 Matti Eerola 0.3 18.10.2007 Matti Eerola 0.2
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
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,
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.
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
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,
Ohjelmistotekniikan menetelmät, suunnittelumalleja
582101 - Ohjelmistotekniikan menetelmät, suunnittelumalleja 1 Suunnittelumallit (design patterns) Kuvaus sellaisesta luokkarakenteesta & olioiden vuorovaikutuksesta, joka ratkaisee tietyn yleisen ongelman
Aalto Yliopisto T-106.2001 Informaatioverkostot: Studio 1. Oliot ja luokat Javaohjelmoinnissa
Aalto Yliopisto T-106.2001 Informaatioverkostot: Studio 1 Oliot ja luokat Javaohjelmoinnissa Vesa Laakso 22.9.2012 Sisällysluettelo Sisällysluettelo... 1 Johdanto... 2 1. Luokka... 2 2. Olio... 2 3. Luokan
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
Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki
Sisällys JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta Abstrakti luokka ja metodi Rajapintamäärittely (interface) Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto 13.10.2000 E.
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
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ä
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
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
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,
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ä
Ohjelmistotuotanto. Luento 9 23.4.2012
Ohjelmistotuotanto Luento 9 23.4.2012 Lisää suunnittelumalleja Olion rikastaminen dekoraattorilla Joskus eteen tulee tarve lisätä olioon jotain ekstraominaisuuksia, pitäen kuitenkin olio sellaisena että
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ä
FiSMA 1.1 Toiminnallisen laajuuden mittausmenetelmä Ohje monikerrosarkkitehtuurin mittaamiseen
FiSMA 1.1 Monikerrosarkkitehtuuri 1 (6) FiSMA 1.1 Toiminnallisen laajuuden mittausmenetelmä Ohje monikerrosarkkitehtuurin mittaamiseen 1. Yleiset periaatteet FiSMA 1.1 -menetelmässä mitataan sovellusperiaatteen
UML:n yleiskatsaus. UML:n osat:
UML:n yleiskatsaus - voidaan hyödyntää hyvin laajasti. - sopii liiketoimintamallinnukseen, ohjelmistomallinnukseen sen jokaiseen vaiheeseen tai minkä tahansa pysyviä ja muuttuvia ominaisuuksia sisältävän
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
Muusta kuin vesisioista
Muusta kuin vesisioista Janne Käki 8.12.2006 Metodin kuormittaminen (overloading) Samannimisestä metodista on määritelty samassa luokassa (tai samassa yli- ja aliluokkien jatkumossa) useita versioita,
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
Concurrency - 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...
Rajapinta (interface)
1 Rajapinta (interface) Mikä rajapinta on? Rajapinta ja siitä toteutettu luokka Monimuotoisuus ja dynaaminen sidonta Rajapinta vs periytyminen 1 Mikä rajapinta on? Rajapintoja käytetään, kun halutaan määritellä
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ö
FiSMA 1.1 Toiminnallisen laajuuden mittausmenetelmä Ohje monikerrosarkkitehtuurin mittaamiseen
FiSMA 1.1 Monikerrosarkkitehtuuri 1 (7) FiSMA 1.1 Toiminnallisen laajuuden mittausmenetelmä Ohje monikerrosarkkitehtuurin mittaamiseen 1. Yleiset periaatteet FiSMA 1.1 -menetelmässä mitataan sovellusperiaatteen
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
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
UML -mallinnus TILAKAAVIO
UML -mallinnus TILAKAAVIO SISÄLLYS 3. Tilakaavio 3.1 Tilakaavion alku- ja lopputilat 3.2 Tilan nimi, muuttujat ja toiminnot 3.3 Tilasiirtymä 3.4 Tilasiirtymän vai tilan toiminnot 3.5 Tilasiirtymän tapahtumat
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
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,
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
Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja
582104 Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja 1 Arkkitehtuurisuunnittelu Ohjelmistoarkkitehtuurin määritelmä & arkkitehtuurisuunnittelun lähtökohta ja tavoitteet Kerrosarkkitehtuuri
TIE-20200 Samuel Lahtinen. Lyhyt UML-opas. UML -pikaesittely
Lyhyt UML-opas UML -pikaesittely UML, Unified Modeling Language Standardoitu, yleiskäyttöinen mallinnuskieli, jota ylläpitää/hallitsee (Object Management Group) OMG Historiaa: 90-luvulla oli paljon kilpailevia
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
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
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen Taulukot: Array Taulukko Javassa pitää aina perustaa (new) Yksinkertaisessa tilanteessa taulukon koko tiedetään etukäteen ja
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
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
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
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ä
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ä
SEPA 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
TIE-20200 Ohjelmistojen suunnittelu. Luento 8..9: moniperintä
TIE-20200 Ohjelmistojen suunnittelu Luento 8..9: moniperintä 1 Ajankohtaista Harjoitustyön suunnittelusessiot pidetty, työt jatkuvat, välivaiheen esittely seuraavana Viimeinen viikkoharjoituskerta, palataan
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
Ohjelmistotuotanto vs. muut insinööritieteet. (Usein näennäinen) luotettavuus ja edullisuus
Yhteenveto Ohjelmistotuotanto vs. muut insinööritieteet Monimutkaisuus Näkymättömyys (Usein näennäinen) luotettavuus ja edullisuus Muunnettavuus Epäjatkuvuus virhetilanteissa Skaalautumattomuus Copyright
Java kahdessa tunnissa. Jyry Suvilehto
Java kahdessa tunnissa Jyry Suvilehto Ohjelma Ohjelmointiasioita alkeista nippelitietoon n. 45 min Tauko 10 min Oliot, luokat ja muut kummajaiset n. 45 min Kysykää Sisältöä ei oikeasti ole 2x45 min täytteeksi,
12. Kehysarkkitehtuurit
12. Kehysarkkitehtuurit Johdanto Kehystyypit Kehysten osittaminen Kehykset ja suunnittelumallit Kehysten etuja ja ongelmia Yhteenvetoa Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 1 Johdanto
Olio-ohjelmointi Suunnittelumallit Observer ja State. 1. Observer (Tarkkailija)
Olio-ohjelmointi Suunnittelumallit Observer ja State Käyttäytymismallien päätarkoitus on algoritmien toteuttaminen ja vastuiden jakaminen olioiden välillä. Näin ollen käyttäytymismallit kuvaavat luokkien
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ää
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ää
Rajapinnat ja olioiden välittäminen
Rajapinnat ja olioiden välittäminen Moduulit/oliot kutsuvat toisiaan kapseloitujen rajapintojen läpi Kutsuissa välitetään usein olioita paikasta toiseen Jos olion omistus (= tuhoamisvastuu) säilyy koko
Graafisen käyttöliittymän ohjelmointi Syksy 2013
TIE-11300 Tietotekniikan vaihtuva-alainen kurssi Graafisen käyttöliittymän ohjelmointi Syksy 2013 Luento 8 Suunnittelumallit käyttöliittymäohjelmoinnissa Juha-Matti Vanhatupa Yleistä Suunnittelumalli on
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
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
Suunnittelumalleja, MVC. Juha Järvensivu 2008
Suunnittelumalleja, MVC Juha Järvensivu juha.jarvensivu@tut.fi 2008 Sisältö Tarkkailija Strategia Rekursiokooste Tehdas-metodi MVC Tarkkailija suunnittelumalli Tarkkailijamalli (Observer) Määrittelee olioiden
A) on käytännöllinen ohjelmointitekniikka. = laajennetaan aikaisemmin tehtyjä luokkia (uudelleenkäytettävyys)
1(37) PERIYTYMINEN (inheritance) YLILUOKKA (superclass) ALILUOKKA (subclass) A) on käytännöllinen ohjelmointitekniikka = laajennetaan aikaisemmin tehtyjä luokkia (uudelleenkäytettävyys) B) on käsitteiden
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
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
Ohjelmistotuotanto, suunnittelu Syksy Suunnittelu. Suunnittelun tulos. Suunnitteluprosessin työvaiheet. Suunnitteluprosessi.
6. Suunnittelu Suunnittelun tulos Vaatimusanalyysin jälkeen seuraava työvaihe on suunnittelu. Siinä vaatimusanalyysin korkean abstraktiotason malleja käyttämällä luodaan alempien abstraktiotasojen malleja.
UML -mallinnus LUOKKAKAAVIO EERO NOUSIAINEN
UML -mallinnus LUOKKAKAAVIO EERO NOUSIAINEN SISÄLLYS 3. Luokkakaavio UML -mallinnuskielessä 3.1 Luokkakaavion luokan rakenteet 3.2 Luokan kuvauksesta C++ ohjelmakoodiksi 3.3 Luokkakaavion luokkien yhteystyypit
15. Ohjelmoinnin tekniikkaa 15.1
15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Geneerinen ohjelmointi. Lueteltu tyyppi enum. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien silmukoimiseen:
Mitä 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ä
Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.
Malli-näkym kymä-ohjain arkkitehtuurit (Model-View View-Controller, MVC) Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta. Lähtökohdat: Sovelluksen
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
2. Olio-ohjelmoinnin perusteita 2.1
2. Olio-ohjelmoinnin perusteita 2.1 Sisällys Esitellään peruskäsitteitä yleisellä tasolla: Luokat ja oliot. Käsitteet, luokat ja oliot. Attribuutit, olion tila ja identiteetti. Metodit ja viestit. Olioperustainen
Vaatimusmäärittely Ohjelma-ajanvälitys komponentti
Teknillinen korkeakoulu 51 Vaatimusmäärittely Ohjelma-ajanvälitys komponentti Versio Päiväys Tekijä Kuvaus 0.1 21.11.01 Oskari Pirttikoski Ensimmäinen versio 0.2 27.11.01 Oskari Pirttikoski Lisätty termit
Ylläpitodokumentti. Boa Open Access. Helsinki 2.5.2006 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos
Ylläpitodokumentti Boa Open Access Helsinki 2.5.2006 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Ilmari
6. Suunnittelu. Suunnittelun tulos
6. Suunnittelu Vaatimusanalyysin jälkeen seuraava työvaihe on suunnittelu. Siinä vaatimusanalyysin korkean abstraktiotason malleja käyttämällä luodaan alempien abstraktiotasojen malleja. Tavoitteena on
Suunnittelun tulos. 6. Suunnittelu. Suunnitteluprosessin työvaiheet. Suunnitteluprosessi. 6.1 Arkkitehtuurisuunnittelu.
6. Suunnittelu Suunnittelun tulos Vaatimusanalyysin jälkeen seuraava työvaihe on suunnittelu. Siinä vaatimusanalyysin korkean abstraktiotason malleja käyttämällä luodaan alempien abstraktiotasojen malleja.
JavaRMI 1 JAVA RMI. Rinnakkaisohjelmoinnin projekti 1 osa C Tekijät: Taru Itäpelto-Hu Jaakko Nissi Mikko Ikävalko
JavaRMI 1 JAVA RMI Rinnakkaisohjelmoinnin projekti 1 osa C Tekijät: Taru Itäpelto-Hu Jaakko Nissi Mikko Ikävalko JavaRMI 2 Table of Contents...1 JAVA RMI...1 Yleistä...4 Arkkitehtuuri...5 Java RMI kerrosarkkitehtuuri...5
Sisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto
Sisällys 18. bstraktit tietotyypit Johdanto abstrakteihin tietotyyppeihin. Pino ja jono. Linkitetty lista. Pino linkitetyllä listalla toteutettuna. 18.1 18.2 Johdanto Javan omat tietotyypit ovat jo tuttuja:
Luokka- ja oliokaaviot
Luokka- ja oliokaaviot - tärkeimmät mallinnuselementit : luokat, oliot ja niiden väliset suhteet - luokat ja oliot mallintavat kuvattavan järjestelmän sisältöä ja niiden väliset suhteet näyttävät, kuinka
TIE 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
Tarjolla 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
Linkitetystä listasta perittyä omaa listaa käytetään muun muassa viestiin liittyvien vastausten säilömiseen.
Harjoitustyö 1 Harjoitustyö Tehtävä: ohjelmoi Java-kielellä keskustelualuetta simuloiva olioperustainen ohjelma (Simple Oope Board, S.O.B). Linkitetystä listasta perittyä omaa listaa käytetään muun muassa
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..........................................
Juhani Gurney Teknologiajohtaja. Peppi-projekti ja ESP (Eduix SOA Platform)
Juhani Gurney Teknologiajohtaja Peppi-projekti ja ESP (Eduix SOA Platform) Peppi-projekti Projekti aloitettu keväällä 2010 Projektin tehtävänä on määritellä, suunnitella ja toteuttaa uusi koulutuksen suunnittelutyökalujen
Helia Ohjelmointitaito 14.3.2005 Tuomas Kaipainen Mermit Business Applications Oy. 2005 Mermit Business Applications
Helia Ohjelmointitaito 14.3.2005 Tuomas Kaipainen Mermit Business Applications Oy Esityksen sisältö Mermit yrityksenä Perustiedot Toimintamalli Mermit työpaikkana ohjelmistoinsinöörille Esimerkkiprojekti
P e d a c o d e ohjelmointikoulutus verkossa
P e d a c o d e ohjelmointikoulutus verkossa Java-kielen jatkokurssi Teoria ja ohjelmointitehtävät Java-kielen jatkokurssi 3 YLEISKATSAUS KURSSIN SISÄLTÖIHIN... 8 JAVA-KIELEN JATKOKURSSI... 8 OPISKELUN
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ää
Suunnittelumallit. OULUN YLIOPISTO Tietojenkäsittelytieteiden laitos Oliosuuntautunut analyysi ja -suunnittelu 27. joulukuuta 2003
Suunnittelumallit OULUN YLIOPISTO Tietojenkäsittelytieteiden laitos Oliosuuntautunut analyysi ja -suunnittelu 27. joulukuuta 2003 Mikael Kujanpää mahead@ee.oulu.fi LuTK / TOL -03 Tiivistelmä Suunnittelumallit
Soveltuvuustutkimus Lifebelt-ohjelman ideologian käytettävyydestä olioorientoituneeseen
Soveltuvuustutkimus Lifebelt-ohjelman ideologian käytettävyydestä olioorientoituneeseen ohjelmointiin Jukka Talvitie Valvoja: Professori Jorma Jormakka Paikka: TietoEnator oyj Ongelma Ideologia Lifebelt
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
812341A Olio-ohjelmointi, IX Olioiden välisistä yhteyksistä
2016 IX Olioiden välisistä yhteyksistä Sisältö 1. Johdanto 2. Kytkentä 3. Koheesio 4. Näkyvyydestä 2 Johdanto n Ohjelmassa syntyy kytkentöjä olioiden välille Toivottuja ja epätoivottuja n Näkyvyys vaikuttaa
UML Luokkakaavio 14:41
UML Luokkakaavio UML Olio-ohjelman luokkien pääpiirteet voidaan kätevähkösti esittää ns. UML-luokkakaaviona. Näin usein tehdäänkin esim. suunniteltaessa, millaisia luokkia ohjelmaan on tarkoitus laatia,
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
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,
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..........................................
Esimerkkiprojekti. Mallivastauksen löydät Wroxin www-sivuilta. Kenttä Tyyppi Max.pituus Rajoitukset/Kommentit
Liite E - Esimerkkiprojekti E Esimerkkiprojekti Olet lukenut koko kirjan. Olet sulattanut kaiken tekstin, Nyt on aika soveltaa oppimiasi uusia asioita pienen, mutta täydellisesti muotoiltuun, projektiin.
Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys
Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys Tällä kurssilla on tutustuttu ohjelmistojen mallintamiseen oliomenetelmiä ja UML:ää käyttäen Samaan aikaan järjestetyllä kurssilla on käsitelty
12. Monimuotoisuus 12.1
12. Monimuotoisuus 12.1 Sisällys Johdanto. Periytymismekanismi määrittää alityypityksen. Viitteiden sijoitus ja vertailu. Staattinen ja dynaaminen luokka. Myöhäinen ja aikainen sidonta. Parametrinvälitys