1. Käyttötapalähtöinen suunnittelu. Ohjelmistotuotanto. Käyttötapalähtöinen suunnittelu. Käyttötapalähtöinen suunnittelu

Koko: px
Aloita esitys sivulta:

Download "1. Käyttötapalähtöinen suunnittelu. Ohjelmistotuotanto. Käyttötapalähtöinen suunnittelu. Käyttötapalähtöinen suunnittelu"

Transkriptio

1 Ohjelmistotuotanto Ohjelmistosuunnittelu 2 1. Käyttötapalähtöinen suunnittelu Lähtökohdat: käyttötapamalli (käyttötapaukset, use cases), määrittelytason luokkakaavio Tehtävät: 1. Käyttöliittymän periaatesuunnittelu Mitkä käyttötapaukset hoidetaan saman käyttöliittymän kautta? Ulkoasu, look and feel Periaateratkaisu käyttöliittymän ja sovelluslogiikan suhteista miten käyttöliittymä erotetaan sisältöluokista arkkitehtuuri (MVC / komennot /.) Käytettävä liittymäkirjasto Syntyy liittymäluokkia, jotka vastaanottavat syötteitä ja välittävät tuloksia 1 Harri Laine, Jukka Paakki 2 Käyttötapalähtöinen suunnittelu 2. Tietojen säilytykseen liittyvät periaateratkaisut tiedostot, tietokannat, ohjelman ja tietokannan kommunikointi -kerrostus, eristäminen kirjastot sisältöluokat määrittelytason luokkien pohjalta 3. Hajautukseen ja tietoliikenteeseen liittyvät periaateratkaisut sanomanvälitys, kirjastot Käyttötapalähtöinen suunnittelu 4. Käyttötapausten läpikäynti: 4.1. Ratkaise, miten käyttötapaus hoituu käyttäjän kannalta 4.2. Ratkaise käyttötapauksen kulku järjestelmän kannalta osallistuvat oliot, luokat, palvelut, attribuutit olioiden yhteistyö - mitä palveluja käytetään lisää tarvittaessa palveluita, luokkia ja attribuutteja, jotta saat yhteistyön sujumaan simuloi käyttötapausta luokkamallin suhteen Harri Laine, Jukka Paakki 3 Harri Laine, Jukka Paakki 4 Käyttötapalähtöinen suunnittelu Pitäisi saada aikaan tietty toiminto Minkä olion vastuulla toiminto on? luokka, olio; lisää tarvittaessa Onko luokalla jo tarvittava palvelu? lisää tarvittaessa Onko oliolla tarpeellinen tietosisältö palvelun hoitamiseksi? lisää tarvittaessa attribuutteja, yhteydet muihin olioihin Hoitaako olio palvelun yksinään vai tarvitaanko yhteistyötä? mahdollista yhteistyö; vain tunnettujen olioiden palveluita voi käyttää Käyttötapalähtöinen suunnittelu 4.3. Tehdyt muutokset voivat vaikuttaa aiemmin tehtyihin ratkaisuihin - iteroi 5. Täsmällinen kuvaus luokista, attribuuteista ja palveluista 6. Pakkausten, osajärjestelmien yms. määrittely Hyödynnä standardoituja ratkaisumalleja ja olemassa olevia kirjastoluokkia Harri Laine, Jukka Paakki 5 Harri Laine, Jukka Paakki 6 1

2 (UML): Sekvenssikaavio (yhteistyöpolut) (sequence diagram) Keskitytään erityisesti kuvaamaan operaatioiden tapahtumajärjestystä ja toimintaan liittyvien viestien kulkua. Sekvenssikaavion toinen ulottuvuus on aika. Yhteistyörakennekaavio (collaboration diagram) Keskitytään kuvaamaan sitä, miten yhteistyö hyödyntää olioiden välisiä kytkentöjä. Viestien ajallinen kulku merkittävä kaavioon erikseen. Sekvenssikaavio Kuvaa, miten kontrolli ajallisesti etenee oliolta toiselle jotain toimintoa (esim. käyttötapausta) suoritettaessa mitä olioita palvelun suoritukseen osallistuu ja mitä näiden palveluja käytetään missä järjestyksessä olioiden palveluita käytetään Harri Laine, Jukka Paakki 7 Harri Laine, Jukka Paakki 8 operaatio / palvelu palkin pituus kuvaa palvelun kestoa olio1:luokka [ehto] viesti (parametrit) olio2:luokka nimeää käytettävän palvelun aika Viestit ovat yleensä palvelujen kutsuja (palvelupyyntöjä) palvelun nimi (ja parametrit) käytännössä metodikutsu olio-ohjelmassa ehto ei ole välttämätön palveluun liittyvä paluunuoli jätetään yleensä piirtämättä, vaikka palaute saataisiinkin (kaavio tulee näin yksinkertaisemmaksi) Harri Laine, Jukka Paakki 9 Harri Laine, Jukka Paakki 10 class A { B oliob; C olioc; D oliod; public int doit() { oliob.assist1(); olioc.assist2(oliod); class D {. public serviced { class B { E olioe; public void assist1() { olioe.dosomething(); class C {. public void assist2(d od){ od.serviced() doit olioa:a oliob:b olioe:e olioc:c oliod:d assist1() dosomething assist2(oliod); serviced Harri Laine, Jukka Paakki 11 Harri Laine, Jukka Paakki 12 2

3 Luonti ja tuhoaminen SILMUKAT Palvelua pyydetään useilta olioilta use create :Apuluokka Saman palvelujonon toisto olio1 olio2 olio3 * palvelu delete * koottu Harri Laine, Jukka Paakki 13 Harri Laine, Jukka Paakki 14 Yhteistyöketjuja käytetään havainnollistamaan oliorakenteen toimintaa ei kannata laatia jokaiselle palvelulle / käyttötapaukselle, vaikka jokaisen kohdalla yhteistyö on mietittävä laaditaan keskeisille palveluille ja tilanteisiin, joissa kaavioiden käyttö edistää suunnitelman ymmärtämistä 3-4 viestiä pidemmät ketjutpikemminkin sotkevat kuin havainnollistavat 2. Hyvä oliorakenne Oliorakennetta suunniteltaessa pitäisi pyrkiä minimoimaan olioiden välisiä yhteyksiä (kytkentää) olio 'tuntee' mahdollisimman vähän muita olioita ja näiden luokkia olion tarvitsee käyttää mahdollisimman vähän muiden olioiden palveluja (kiinteys, cohesion) palvelujen käyttöön liittyvät sanomat ovat mahdollisimman yksinkertaisia Harri Laine, Jukka Paakki 15 Harri Laine, Jukka Paakki 16 Hyvä oliorakenne? Hyvä oliorakenne postinkantaja kuljetaposti (posti, paikka) opettaja posti paikka omavahtimestari postinkantaja kuljetaposti (posti, paikka) opettaja posti paikka omavahtimestari lähetä (posti, paikka) lähetä (posti, paikka) vahtimestari postimies vahtimestari postimies getpostimies( ) postinkantaja getpostimies () { return postimies; lähetä (posti,paikka) { postinkantaja kantaja; kantaja = omavahtimestari.getpostimies; kantaja.kuljetaposti(posti,paikka); toimitaposti (posti, paikka) toimitaposti () { postimies.kuljetaposti(posti,paikka); lähetä (posti,paikka) { omavahtimestari.toimitaposti(posti,paikka); Löyhä paikallinen kytkentä: tämä on parempi! Harri Laine, Jukka Paakki 17 Harri Laine, Jukka Paakki 18 3

4 Hyvä oliorakenne Hyvä oliorakenne vaihtoehto 1 opettaja vahtimestari postinkantaja getpostimies kuljetaposti 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ää laajentaminen edellyttää luokan Kuvio muuttamista vaihtoehto 2 toimitaposti kuljetaposti Kuvio Tyyppi Piirrä if Tyyppi= ympyrä then piirrä_ympyrä(.) else if Tyyppi= suorakaide then piirrä_suorakaide(.) else. Harri Laine, Jukka Paakki 19 Harri Laine, Jukka Paakki 20 Hyvä oliorakenne Perintää ja syrjäyttämistä hyödyntävä. Uusia muotoja voidaan lisätä helposti. Kuvion muoto määräytyy luonnin yhteydessä. Ympyrä Piirrä Kuvio Piirrä: abstract Suorakaide Piirrä Uusimuoto Piirrä Hyvä oliorakenne Erillinen algoritmi, jolle toiminta ohjataan: muotoa voidaan vaihtaa dynaamisesti lennossa Kuvio piirtotapa piirrä Piirtotapa piirtele ympyrä suorakaide piirrä_ympyrä piirrä_suorakaide uusitapa piirtotapa.piirtele() uusitapa Harri Laine, Jukka Paakki 21 Harri Laine, Jukka Paakki Ratkaisumallit Edellisellä kalvolla oli esimerkki suunnittelutason ratkaisumallista (Strategy), joka lisää joustavuutta ja muunneltavuutta järjestelmään. Esim. UML-kaavioiden laatimisohjelma, jossa käyttäjä saisi määritellä omat kuvasymbolinsa, voisi käyttää tätä ratkaisumallia (tai jotain vielä paremmin soveltuvaa). Ratkaisumallit Ratkaisumallit (patterns) ovat systemaattisia hyviksi havaittuja tapoja ratkaista tietty usein esiintyvä ongelma taitotiedon, kokemuksen dokumentti yleiskäyttöisiä ratkaisumalleja sovellusaluekohtaisia ratkaisumalleja Ratkaisumalleja voi liittyä kehittämisprosessiin (process pattern) määrittelyvaiheen ongelmiin (analysis pattern) suunnitteluvaiheen ongelmiin (design pattern) ohjelmointitason ongelmiin (idiom) Harri Laine, Jukka Paakki 23 Harri Laine, Jukka Paakki 24 4

5 Ratkaisumallit Analyysimallit (analysis patterns) Kuinka jäsentäisi ongelman, jotta saavutettaisiin joustavuutta/muunneltavuutta/.? Suunnittelumallit (design patterns) Kuinka ongelma olisi hyvä ratkaista teknisesti, jotta saavutettaisiin joustavuutta / muunneltavuutta / ylläpidettävyyttä / tilansäästöä / toimivuutta / siirrettävyyttä Idiomit (idioms) Kuinka asia pitäisi ratkaista esim. Javalla Ratkaisumallit Parantelumallit eli anti-mallit (anti-patterns) Normaalisti ratkaisumalleissa kuvataan ongelma ja esitetään siihen ratkaisutapa. Parantelumalleissa lähtötilanteena on se, että jotain on jo tehty tavalla, joka aiheuttaa ongelmia. Mallit esittävät ratkaisutavan, jolla päästään nykyistä parempaan ratkaisuun. Parantelumalli = huono ratkaisu usein esiintyvään ongelmaan + ohjeet huonon ratkaisun muuttamiseksi hyväksi (esim. ratkaisumallin mukaiseksi) Harri Laine, Jukka Paakki 25 Harri Laine, Jukka Paakki 26 Ratkaisumallit Tunnetuin lähde: E. Gamma, R. Helm, R. Johnson, J. Vlissides: Design Patterns - Elements of Reusable Object- Oriented Software, Addison-Wesley, 1995 esittelee 23 ohjelmista etsittyä olioperustaista suunnittelumallia Seuraavaksi käydään läpi muutama esimerkki yllä mainitun lähteen ratkaisumalleista Ratkaisumallit Kooste (Composite) Tarkoitus: Kokonaisuuden ja sen osien käsitteleminen samalla tavalla Esimerkki: piirto-ohjelmassa kuvio voi koostua hierarkkisesti pienemmistä osakuvioista, ja halutaan piirtää kaikki kuvioelementit samalla tavoin (ts. samannimisellä operaatiolla hyödyntäen olioohjelmoinnin monimuotoisuutta ja dynaamista sidontaa) Harri Laine, Jukka Paakki 27 Harri Laine, Jukka Paakki 28 Ratkaisumallit Kooste (Composite) Client Leaf Operation( ) foreachc in children c.operation Component Operation () : abstract Add (Component) Remove (Component) GetChild (int) * Composite children Operation () Add (Component) Remove (Component) GetChild (int) Harri Laine, Jukka Paakki 29 Ratkaisumallit Kooste (Composite) Määritellään abstrakti luokka, jonka konkreettisina aliluokkina(siis sellaisina, joilla on ilmentymiä) ovat alkeisluokat ja kokoelmat. Palvelut määritellään abstraktin luokan tasolla. Palvelut jakautuvat kokoelman hallintapalveluihin ja varsinaisiin palveluihin. Kokoelman varsinaiset palvelut suoritetaan välittämällä pyyntö kokoelman osille. Esimerkiksi abstrakti luokka voisi olla kuvio ja sen aliluokat olisivat alkeiskuvio ja koottu_kuvio. Varsinainen palvelu olisi piirrä. Kootun kuvion piirrä -palvelu toteutetaan kutsumalla kunkin sen osan piirrä -palvelua. Harri Laine, Jukka Paakki 30 5

6 Ratkaisumallit Kooste (Composite) Ratkaisumallit Kooste (Composite) Leaf1 Composite1 Composite2 Leaf2 Composite1.children Ratkaisun etunaon se, että asiakas pystyy käsittelemään myös koosteoliota missä tahansa yhteydessä, jossa se käsittelee alkeisoliota Haittana on se, että kaikki koosteoliot ovat rakenteeltaan samanlaisia (ei voi olla eri tavoin käsiteltäviä, täysin erilaatuisia osia) Leaf3 Leaf4 Leaf5 Composite2.children Harri Laine, Jukka Paakki 31 Harri Laine, Jukka Paakki 32 Ratkaisumallit Tarkkailija (Observer) Ratkaisumallit Tarkkailija (Observer) Tarkkailija (Observer) esittää tavan välittää olion tilan muuttuminen tästä riippuville olioille ilman, että olioiden välillä olisi kumpaankin suuntaan vahvaa kytkentää. Kaksi roolia, kohde ja tarkkailija. Tarkkailija (Observer) rekisteröityy tarkkailemaan kohdetta (Subject). Kohde tiedottaa muutoksesta kaikille rekisteröityneille tarkkailijoilleen. Saatuaan ilmoituksen tarkkailija selvittää kohteen tilan. Abstract Subject Observers[] Join() Detach() Notify() Concrete Subject State getstate() setstate() Heikko kytkentä forall Observers update() Observer update() Concrete Observer subject update() Harri Laine, Jukka Paakki 33 Vahva kytkentä subject.getstate Harri Laine, Jukka Paakki 34 Ratkaisumallit Tarkkailija (Observer) Rekisteröityminen Ratkaisumallit Tarkkailija (Observer) Observer Join() Subject Subject setstate Observer Notify * update getstate Harri Laine, Jukka Paakki 35 Vahva kytkentä Harri Laine, Jukka Paakki 36 6

7 Ratkaisumallit Tarkkailija (Observer) Ratkaisumallit Tarkkailija (Observer) Käyttötilanteita käyttöliittymän näkymä - kohde taulukon (taulukkolaskimen) johdettu alkio - perusalkio Laskentataulukko: viewa A B C=A+B cella Nuolet osoittavat tarkkailtavaan viewb cellb viewc cellc Harri Laine, Jukka Paakki 37 Harri Laine, Jukka Paakki 38 Ratkaisumallit Tarkkailija (Observer) Vaaroja: Tarkkailija saa useita ilmoituksia saman kohteen muutoksista - turhia päivityksiä esim. jos kohdeluokan erikoistamiseen ei ole varauduttu, voi malli aiheuttaa useita ilmoituksia kohde muutos uusikohde muutos do_it(); notify() super.muutos(); omat_hommat(); notify() Ilmoitetaan keskeneräisestä tilasta Ratkaisumalli Tehtaat (Factory-mallit) Olioiden luominen on oliomalleissa ongelmallinen tehtävä olion toiminnallisuus määräytyy sille luontihetkellä annetun konkreettisen luokan perusteella konkreettiset luokat eivät ole tiedossa kirjastoa laadittaessa - miten siis kirjaston pitäisi huomioida luonti? erityiset luontiluokat, joilla abstraktit luontipalvelut luontipalvelut konkretisoidaan luontiluokkien aliluokissa Harri Laine, Jukka Paakki 39 Harri Laine, Jukka Paakki 40 Ratkaisumalli Abstrakti tehdas (Abstract Factory) Abstract Factory: olioiden luontiin liittyvä olioiden välisiä suhteita hyödyntävä malli Tarkoitus: malli esittää tavan luoda tietyn luokan jälkeläisluokkien ilmentymiä tuntematta näitä luokkia Esimerkki: yleiskäyttöinen käyttöliittymäkirjasto Käyttöliittymäkontrolli Windowskontrolli Motifkontrolli. kontrollit erilaisia eri ympäristöissä; kirjaston pitäisi olla yleinen, mutta miten voidaan yleisellä tasolla luoda ilmentymiä ympäristökohtaisille luokille? Harri Laine, Jukka Paakki 41 Ratkaisumalli Abstrakti tehdas (Abstract Factory) Client ConcreteFactory1 CreateProductA( ) CreateProductB( ) AbstractFactory CreateProductA (...) : abstract CreateProductB (...) : abstract ConcreteProductA1 ConcreteFactory2 CreateProductA( ) CreateProductB( ) creates ConcreteProductB1 AbstractProductA ConcreteProductA2 AbstractProductB creates ConcreteProductB2 Harri Laine, Jukka Paakki 42 7

8 Ratkaisumalli Abstrakti tehdas (Abstract Factory) Ratkaisumalli Abstrakti tehdas (Abstract Factory) Client (siis hyödyntävä ohjelma) tuntee abstraktin tehtaan ja abstraktit tuotteet ja kutsuu näiden tarjoamia palveluja. Abstraktin tehtaan palvelukutsu ohjautuu konkreettisen tehtaan vastaavaan luontipalveluun, joka siis luo ilmentymän kyseisen tyyppiselle tuotteelle Esim. Windows-kontrollitehtaan LuoNappi-palvelu luo ilmentymän winnappi-luokkaan. Client KontrolliTehdas LuoNappi (...) : abstract LuoLiuku (...) : abstract winnappi creates winliuku Nappi motifnappi Liuku motifliuku KontrolliTehdasWin LuoNappi( ) LuoLiuku( ) KontrolliTehdasMotif LuoNappi( ) LuoLiuku( ) Harri Laine, Jukka Paakki 43 Harri Laine, Jukka Paakki 44 Ratkaisumalli Abstrakti tehdas (Abstract Factory) Mallilla eristetään konkreettiset tehtaat asiakkaasta Tuoteperhe voidaan helposti vaihtaa toiseksi Asiakkaan on tunnettava tuotetyypit, joten uusia tuotetyyppejä ei voida lisätä pelkästään aliluokkia lisäämällä, vaan tällöin on muutettava asiakkaan koodia ja abstraktin tehtaan koodia esim. kilistimen lisäys käyttöliittymäkontrolleihin Komento (Command) -suunnittelumalli soveltuu tilanteisiin, joissa operaation käynnistämiseen on erilaisia vaihtoehtoja, mutta lopputuloksen pitäisi kuitenkin olla sama järjestelmään pitäisi pystyä helposti liittämään uusia operaatioita puuttumatta järjestelmän perusrakenteisiin operaatioita pitäisi pystyä perumaan ja uudelleensuorittamaan Suunnittelumallissa varsinainen toiminta eristetään toimintapyynnöstä muodostamalla pyynnöstä erillinen komento -olio Kaikilla komennoilla on yhteinen rajapinta, joka pitää sisällään vähintään palvelun suorita (do, execute) Harri Laine, Jukka Paakki 45 Harri Laine, Jukka Paakki 46 Komennon rajapintaan voi lisäksi kuulua peruutus (undo) toimiakseen peruutus saattaa edellyttää edeltäneen tilan kirjaamista komennon tietorakenteisiin esim. kun teksti korvataan toisella, on peruutusta varten taltioitava korvattu teksti sen alkukohta ja korvaavan tekstin pituus uudelleensuoritus (redo) edellyttää myös tilatietojen tallennusta Komentojen suorituksen ohjausta voidaan hallita erityisen komentokäsittelijän (command processor) avulla komentokäsittelijä ei ole aina välttämätön, mutta se on tarpeen esimerkiksi peruutusten yhteydessä komentokäsittelijä ottaa vastaan komentoja (addcommand) ja tallentaa ne tyypillisesti komentojonoksi done previous next To do add Harri Laine, Jukka Paakki 47 Harri Laine, Jukka Paakki 48 8

9 Peruskuvio 1: Kun aiheuttaja (client, controller) haluaa saada aikaan toiminnon, se luo komennon ja joko aktivoi luomansa komennon suorituksen tai luovuttaa sen komentokäsittelijälle aktivoitavaksi Peruskuvio 2: Aiheuttaja reagoi käyttäjän toimenpiteeseen aktivoimalla siihen ennalta kytketyn komennon suorituksen Client (esim. pääohjelma) luo konkreettisen komennon (esim. OpenFile). Se kytketään jotenkin aiheuttajaan Invoker (esim. MenuVaihtoehto - mainmenu. additem( Open, new OpenFile()) Harri Laine, Jukka Paakki 49 Harri Laine, Jukka Paakki 50 controller command processor receiver create addcommand (d) execute() d: delete command getselection() deletetext undo() undo() appendtext( stored, position) Harri Laine, Jukka Paakki 51 Harri Laine, Jukka Paakki 52 Yleensä on järkevää mahdollistaa myös komennot, jotka kootaan alkeellisemmista komennoista tällöin koottu komento (makro) on syytä toteuttaa koosteen (Composite) mukaisesti: command execute() * part Komentoja on suhteellisen helppo lisätä määritellään uusi komentoluokka Sama toiminto on kytkettävissä eri käynnistystapoihin Suuren komentomäärän välttämiseksi komentoja kannattaa yleistää ja parametroida macrocommand execute() for each part {part.execute() Harri Laine, Jukka Paakki 53 Harri Laine, Jukka Paakki 54 9

10 Ratkaisumalli Vierailija (Visitor) Vierailija (Visitor) soveltuu käytettäväksi kun erilaiset liittymät ja rakenteet omaaville kohteille halutaan suorittaa toimenpiteitä, jotka riippuvat konkreettisista luokista yhteenliittyvää operaatiokokonaisuutta ei haluta sirotella luokkiin eri käyttötilanteisiin liittyvän tilannekohtaisen koodin mukanaolo luokissa ei edistä uuskäyttöä rakenne on staattinen mutta operaatiot dynaamisia Ratkaisumalli Vierailija (Visitor) Ratkaisumallissa kootaan luokkakohtaiset palvelut vierailijan metodeiksi. Vierailijalla on kutakin luokkaa kohti oma erityismetodinsa. Oliot rekisteröivät vierailijan ja suorittavat palvelunsa kutsumalla vierailijan luokkakohtaista metodia. Vierailijan vaihtaminen vaihtaa palvelun. Vierailijan abstraktissa määrittelyssä on otettava huomioon kaikki konkreettiset luokat, joissa vierailija voi käydä => rakenne on ylläpidon kannata hankala. Harri Laine, Jukka Paakki 55 Harri Laine, Jukka Paakki 56 Ratkaisumalli Vierailija (Visitor) client ObjectStructure AbstractElement accept(visitor) visita() visitb() Visitor1 AbstractVisitor visita() visitb() Visitor2 visita() visitb() Ratkaisumalli Vierailija (Visitor) objectstructure elementa elementb visitor1 accept(visitor1) visita(elementa) operationa accept(visitor1) visitb(elementb) operationb v.visita(this); ElementA ElementB v.visitb(this); accept(visitor v) accept(visitor v) Harri Laine, Jukka Paakki 57 Harri Laine, Jukka Paakki 58 Ratkaisumalli Vierailija (Visitor) Toiminnallisia kokonaisuuksia saa lisättyä laatimalla uuden konkreettisen vierailijan Elementeissä voidaan aina varautua vierailijoihin Vierailija erottaa toiminnan ja tietorakenteen Tiukka kytkentä vierailijasta vierailtavaan. Vierailtavan muutos aiheuttaa yleensä aina muutoksen myös vierailijaan Epäsuora suoritusaikainen kytkentä käynnistyvään toimintaan normaalisti (C++, Java) olion luokka ja palvelun nimi määräävät toiminnon, ratkaisumallia käytettessä mukaan tulee lisäksi vierailija Suunnittelumallit (Gamma) Luonti Abstract Factory : samankaltaisten olioiden abstrakti luonti Factory Method: virtuaalinen luontioperaatio Builder : olion rakenteen eristäminen sen luonnista Prototype: kloonattavissa olevan prototyyppi-olion luonti Singleton: yhden ainokaisen luokkailmentymän luonti Harri Laine, Jukka Paakki 59 Harri Laine, Jukka Paakki 60 10

11 Suunnittelumallit (Gamma) Rakenne Adapter : luokan rajapinnan muuntaminen Bridge: abstraktin luokan ja konkreettisen luokan eristäminen toisistaan Composite: hierarkkisen rakenteen yhdenmukainen käsittely Decorator: olion toiminnallisuuden laajentaminen dynaamisesti Facade: yhtenäisen rajapinnan luominen erityyppisille luokille Suunnittelumallit (Gamma) Rakenne Flyweight: yleiskäyttöiset, jaetut oliot Proxy: olion edustaminen erillisellä valvojalla Harri Laine, Jukka Paakki 61 Harri Laine, Jukka Paakki 62 Suunnittelumallit (Gamma) Toiminta Chain of Responsibility: palvelupyynnön delegointi olioketjua pitkin Command: komento oliona Interpreter : kielen kielioppipohjainen tulkki Iterator: rakenteen osissa vierailu Mediator: olioiden välisen vahvan kytkennän muuttaminen löyhäksi Memento: olion tilan tallentaminen Suunnittelumallit (Gamma) Toiminta Observer : olion tilamuutosten valvonta State: olion toiminnallisuuden muuttaminen tilamuutoksen yhteydessä Strategy: algoritmiperheen toteutus Template Method: algoritmin luuranko Visitor: rakenteen osien käsittely järjestyksessä Harri Laine, Jukka Paakki 63 Harri Laine, Jukka Paakki Arkkitehtuurimallit 4. Arkkitehtuurimallit Tasot (Layers ) F. Buschmann et al.: Pattern-Oriented Software Architecture A System of Patterns. John Wiley, 1996 arkkitehtuuritason ratkaisumalleja myös suunnittelumalleja ja idiomeja kuvaustapa vähemmän systemaattinen kuin Gamman kirjassa mallit eivät välttämättä olioperustaisia Client Layer N Layer N-1 Layer 1 Harri Laine, Jukka Paakki 65 Harri Laine, Jukka Paakki 66 11

12 Etsintä 5. Arkkitehtuurin mittaaminen Maisa Arkkitehtuurin mittaaminen Maisa CallPartsFactory CreateSignaling() CreateSubscriber() TerminalPartsFactory TrunkPartsFactory CreateSignaling() CreateSignaling() CreateSubscriber() CreateSubscriber() <<create>> Charging Start() TrunkSignaling Stop() Phase1() Status Phase2() SS7-ISUP Call A-Subscriber B-Subscriber Start() HangUp() <<>> Signaling Status LocalSubscriber DialNumber() Answer() Data Terminate() TerminalSignaling TerminalSignaling Status ISDN-BRI Q.931 Hyvä vai huono? Subscriber Data Signaling ExternSubscriber Data TrunkSignaling Maisa : Laitoksen tutkimusprojekti (Metrics for Analysis and Improvement of Software Architectures) Hypoteesi : (anti-)suunnittelumallit ilmentävät arkkitehtuurin laatua Hypoteesi : arkkitehtoniset mallit ennustavat ohjelmiston laatua Malleja voi löytää arkkitehtuurista automaattisesti Arkkitehtuuria voi mitata (lisäksi perinteisin ohjelmistomittarein) <<create>> Harri Laine, Jukka Paakki 67 Harri Laine, Jukka Paakki 68 Ulkoinen reverse engineering -työkalu Ohjelmakoodi Arkkitehtoninen löydös Abstract Factory Ohjelmisto - arkkitehtuuri Mallikirjasto Sisäinen esitysmuoto Ulkoinen CASE-työkalu Maisa Mittaus- ja etsintä - konfiguraatio Mittaus- ja etsintä - tulokset, ennusteet Visualisointi CallPartsFactory CreateSignaling() CreateSubscriber() TerminalPartsFactory TrunkPartsFactory CreateSignaling() CreateSignaling() CreateSubscriber() CreateSubscriber() <<create> > Charging Start() TrunkSignaling Stop() Phase1() Status Phase2() SS7-ISUP <<create>> Call A-Subscriber B-Subscriber Start() HangUp() <<>> Subscriber Data Signaling Signaling Status LocalSubscriber ExternSubscriber DialNumber() Answer() Data Data Terminate() TerminalSignaling TrunkSignaling TerminalSignaling Status ISDN-BRI Q.931 Harri Laine, Jukka Paakki 69 Harri Laine, Jukka Paakki 70 Maisa - Perinteisiä suunnittelumittareita Koko : 11 luokkaa, 8 attribuuttia, 13 operaatiota Mutkikkuus : syvyys 2, leveys 2, kytkentä 4, McCabe 5 Suoritusaika : best-case 500, worst-case 1000, average-case 725 Lasketaan UML:n luokka-, tila-, aktiviteetti- ja sekvenssikaavioista Malliesiintymät toistaiseksi vain luokkakaavioista Harri Laine, Jukka Paakki 71 12

Ohjelmistotuotanto, s

Ohjelmistotuotanto, s Ohjelmistotuotanto Suunnittelu 3 Kuvion piirtotavan erottaminen omaksi piirtoalgoritmin toteuttavaksi olioksi on esimerkki (strategy) suunnittelutason ratkaisumallista, joka lisää joustavuutta ja muunnettavuutta

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

Ohjelmistojen mallintaminen Olioiden yhteistyö. 18.11.2008 Harri Laine 1

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

Lisätiedot

Ohjelmistojen mallintaminen, sekvenssikaaviot

Ohjelmistojen mallintaminen, sekvenssikaaviot 582104 - Ohjelmistojen mallintaminen, sekvenssikaaviot 1 Vuorovaikutussuunnittelu Oliojärjestelmän toiminta perustuu olioiden vuorovaikutukseen ja yhteistyöhön Olioiden yhteistyö toteutuu operaatioiden

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

Luokkakaavion laatiminen

Luokkakaavion laatiminen Luokkakaavion laatiminen Kartoita luokkaehdokkaita Karsi ehdokkaita Tunnista olioiden väliset yhteydet Täsmennä luokkakuvauksia määrittelemällä attribuutit Määrittele yhteyksiin liittyvät osallistumisrajoitteet.

Lisätiedot

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

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

Johdatus sovellussuunnitteluun, s2000, osa5 Helsingin yliopisto;/tktl. Harri Laine 1. Luokkakaavion tarkoitus. Luokkakaavion tarkoitus

Johdatus sovellussuunnitteluun, s2000, osa5 Helsingin yliopisto;/tktl. Harri Laine 1. Luokkakaavion tarkoitus. Luokkakaavion tarkoitus Luokkakaavion tarkoitus Järjestelmän tietosisällön kuvaaminen tiedot ja niiden väliset kytkennät järjestelmän tiedot kuvaavat kohdealueiden ilmiöitä, joten luokkakaavion tulisi määrittellä kohdealueen

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

Johdatus sovellussuunnitteluun

Johdatus sovellussuunnitteluun Harri Laine Johdatus sovellussuunnitteluun Osa 3 Helsingin yliopisto Tietojenkäsittelytieteen laitos 2000 Sisältö: 5. OLIOIDEN YHTEISTYÖ JA PALVELUIDEN MÄÄRITTELY... 1 5.1 SEKVENSSIKAAVIO... 1 5.2 YHTEISTYÖRAKENNEKAAVIO...

Lisätiedot

Johdatus sovellussuunnitteluun, s99, osa5 Helsingin yliopisto;/tktl DO NOT PRINT THIS DOCUMENT. Harri Laine 1. Olioiden yhteistoiminta

Johdatus sovellussuunnitteluun, s99, osa5 Helsingin yliopisto;/tktl DO NOT PRINT THIS DOCUMENT. Harri Laine 1. Olioiden yhteistoiminta Olioiden yhteistoiminta Oliojärjestelmän toiminta perustuu olioiden yhteistyöhön. Olioiden yhteistyön selvittäminen on kiinteästi sidoksissa olioiden palveluiden määrittelyyn, sillä yhteistyö toteutuu

Lisätiedot

Ohjelmistojen mallintaminen, suunnittelumalleja

Ohjelmistojen mallintaminen, suunnittelumalleja 582104 Ohjelmistojen mallintaminen, suunnittelumalleja 1 Suunnittelumallit (design patterns) Kuvaus sellaisesta luokkarakenteesta & olioiden vuorovaikutuksesta, joka ratkaisee tietyn yleisen ongelman tiettyjen

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

Johdatus sovellussuunnitteluun

Johdatus sovellussuunnitteluun Harri Laine Johdatus sovellussuunnitteluun Osa 3 Helsingin yliopisto Tietojenkäsittelytieteen laitos 2002 Sisältö: 5. OLIOIDEN YHTEISTYÖ JA PALVELUIDEN MÄÄRITTELY...1 5.1 SEKVENSSIKAAVIO...1 5.1 YHTEISTYÖRAKENNEKAAVIO...6

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

Johdatus sovellussuunnitteluun, s99, osa5 Helsingin yliopisto;/tktl DO NOT PRINT THIS DOCUMENT. Harri Laine 1. Olioiden yhteistoiminta

Johdatus sovellussuunnitteluun, s99, osa5 Helsingin yliopisto;/tktl DO NOT PRINT THIS DOCUMENT. Harri Laine 1. Olioiden yhteistoiminta Olioiden yhteistoiminta Oliojärjestelmän toiminta perustuu olioiden yhteistyöhön. Olioiden yhteistyön selvittäminen on kiinteästi sidoksissa olioiden palveluiden määrittelyyn, sillä yhteistyö toteutuu

Lisätiedot

Ohjelmistojen mallintaminen Ohjelmiston suunnittelu Model driven development Harri Laine 1

Ohjelmistojen mallintaminen Ohjelmiston suunnittelu Model driven development Harri Laine 1 Ohjelmistojen mallintaminen Ohjelmiston suunnittelu Model driven development 2.12.2008 Harri Laine 1 Jacobson jakaa ohjelmiston oliot kolmeen tyyppiin liittymäolioiksi (interface objects, boundary objects)

Lisätiedot

Olioiden yhteistoiminta

Olioiden yhteistoiminta Olioiden yhteistoiminta Oliojärjestelmän toiminta perustuu olioiden yhteistyöhön. Olioiden yhteistyön selvittäminen on kiinteästi sidoksissa olioiden palveluiden määrittelyyn, sillä yhteistyö toteutuu

Lisätiedot

Suunnittelumalleja, MVC. Juha Järvensivu 2008

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

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

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

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

Ohjelmistotekniikan menetelmät, UML

Ohjelmistotekniikan menetelmät, UML 582101 - Ohjelmistotekniikan menetelmät, UML 1 Sisältö DFD- ja sidosryhmäkaavioiden kertaus Oliomallinnus UML:än kaaviotyypit 2 Tietovuokaaviot Data flow diagrams, DFD Historiallisesti käytetyin kuvaustekniikka

Lisätiedot

Ohjelmistojen mallinnus Ohjelmistoarkkitehtuuri Harri Laine 1

Ohjelmistojen mallinnus Ohjelmistoarkkitehtuuri Harri Laine 1 Ohjelmistojen mallinnus Ohjelmistoarkkitehtuuri 2 28.11.2008 Harri Laine 1 Ohjelmistoarkkitehtuuri Rajapinta UML:ssä piirteiden (attribuuttien ja operaatioiden) kokoelma, josta ei voi suoraan luoda ilmentymiä

Lisätiedot

5. Suunnittelumallit. TTY Ohjelmistotekniikka

5. Suunnittelumallit.     TTY Ohjelmistotekniikka 5. Suunnittelumallit Suunnittelumallin käsite Suunnittelumallien hyötyjä Suunnittelumallien kuvaaminen Antisuunnittelumallit Esimerkki: Rekursiokooste Suunnittelumallit ja kehykset Suunnittelumallit ja

Lisätiedot

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

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

Lisätiedot

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

Ohjelmistojen mallintaminen Unified Modeling Language (UML)

Ohjelmistojen mallintaminen Unified Modeling Language (UML) 582104 Ohjelmistojen mallintaminen Unified Modeling Language (UML) 1 Olioperustaisuus Olio toimii mallinnuksen perusyksikkönä eri abstraktiotasoilla Järjestelmän rajaus, suunnittelu, ohjelmointi, suoritus..

Lisätiedot

5. Suunnittelumallit. TTY Ohjelmistotekniikka

5. Suunnittelumallit.   TTY Ohjelmistotekniikka 5. Suunnittelumallit Suunnittelumallin käsite Suunnittelumallien hyötyjä Suunnittelumallien kuvaaminen Antisuunnittelumallit Esimerkki: Rekursiokooste Suunnittelumallit ja kehykset Suunnittelumallit ja

Lisätiedot

Sisällys. Ratkaisumallien historia. Ratkaisumalli. Ratkaisumalli [2] Esimerkki: Composite [2] Esimerkki: Composite. Jaakko Vuolasto 25.1.

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

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. VI Johdanto suunnittelumalleihin

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. VI Johdanto suunnittelumalleihin 2015 syksy 2. vsk VI Johdanto suunnittelumalleihin Sisältö 1. Taustaa 2. Model View - Controller 3. Suunnittelumallin kuvaamisesta 4. Tavoitteita 5. Suunnitteluongelmien suhde malleihin 6. Suunnittelumallien

Lisätiedot

Tietorakennepohjaiset menetelmät

Tietorakennepohjaiset menetelmät Tietorakennepohjaiset menetelmät Käsiteltävän tiedon rakenne määrää ohjelmiston rakenteen: peräkkäisyys, ehdollisuus, toisto hierarkkisuus Lähtökohtana tulosteiden, syötteiden, tietokannan, kyselyn, tapahtuman

Lisätiedot

Olioiden yhteistyön mallintaminen

Olioiden yhteistyön mallintaminen Olioiden yhteistyön mallintaminen Luokkakaaviosta käy hyvin esille ohjelman rakenne minkälaisia luokkia on olemassa miten luokat liittyvät toisiinsa Entä ohjelman toiminta? Luokkakaaviossa voi olla metodien

Lisätiedot

Muusta kuin vesisioista

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,

Lisätiedot

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

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

Lisätiedot

Sunnittelumallit Harjoitustehtävät syksy 2015 / Simo Silander

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

Lisätiedot

SEPA - Design Patterns

SEPA - Design Patterns SEPA - Design Patterns Kimmo Karlsson, 51066R & Antti Pirinen, 51406N 15. maaliskuuta 2005 1 Sisältö 1. Sisältö 2. Johdanto 3. Käyttöönotto 4. Käyttökokemukset 2 Johdanto Valitsemamme ohjelmistonkehityskäytäntö

Lisätiedot

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio Analyysi Tarkentaa ja jäsentää vaatimusmäärittelyä, vastaa kysymykseen MITÄ järjestelmän tulisi tehdä. Suoritetaan seuraavia

Lisätiedot

T Henkilökohtainen harjoitus: FASTAXON

T Henkilökohtainen harjoitus: FASTAXON T-76.115 Henkilökohtainen harjoitus: FASTAXON Suunnittelumallit Group: Muuntaja Pentti Vänskä 52572W 2 1. Toteutus Tämä henkilökohtainen harjoitustyö käsitteli suunnittelumallien (Design Patterns) käyttöä

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

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio Analyysi Tarkentaa ja jäsentää vaatimusmäärittelyä, vastaa kysymykseen MITÄ järjestelmän tulisi tehdä. Suoritetaan seuraavia

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

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

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

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

12. Kehysarkkitehtuurit

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

Lisätiedot

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

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

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

Lisätiedot

Helsingin yliopisto, Tietojenkäsittelytieteen laitos Ohjelmistotuotanto, kurssikoe , H. Laine Arvostelu

Helsingin yliopisto, Tietojenkäsittelytieteen laitos Ohjelmistotuotanto, kurssikoe , H. Laine Arvostelu Helsingin yliopisto, Tietojenkäsittelytieteen laitos Ohjelmistotuotanto, kurssikoe 15.11.2002, H. Laine Arvostelu Arvostelu kannattaa tehdä siten että maksimipistemäärä on 6 pistettä. On sitä helpompaa

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

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

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

UML - unified modeling language

UML - unified modeling language UML - unified modeling language Lähtökohtana: Booch, Rumbaugh, Jacobsson Tavoitteena Unified Method - syntyykö? Kehittäjänä: Rational Inc. Standardointi: Object Management Group (OMG) - vaiheessa Lähteet:

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

Yhteydelle voi antaa nimen kumpaankin suuntaan Sille ei tarvise antaa lainkaan nimeä Yhteysnimen asemasta tai lisäksi voidaan käyttää roolinimiä

Yhteydelle voi antaa nimen kumpaankin suuntaan Sille ei tarvise antaa lainkaan nimeä Yhteysnimen asemasta tai lisäksi voidaan käyttää roolinimiä DO NOT PRINT THIS DOCUMENT DO NOT PRINT THIS DOCUMENT Olioiden väliset yhteydet Yhteyden nimi Nimen lukusuunta pankkitili 0..10 Omistaja-> 1..3 asiakas

Lisätiedot

Viestinvälitysarkkitehtuurit

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

Lisätiedot

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

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

Lisätiedot

Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja

Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja 582104 Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja 1 Arkkitehtuurisuunnittelu Ohjelmistoarkkitehtuurin määritelmä & arkkitehtuurisuunnittelun lähtökohta ja tavoitteet Kerrosarkkitehtuuri

Lisätiedot

812341A Olio-ohjelmointi, IX Olioiden välisistä yhteyksistä

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

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

Ohjelmistotuotanto. Luento 9 23.4.2012

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

Lisätiedot

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio Analyysi Tarkentaa ja jäsentää vaatimusmäärittelyä, vastaa kysymykseen MITÄ järjestelmän tulisi tehdä. Suoritetaan seuraavia tehtäviä:

Lisätiedot

UML -mallinnus LUOKKAKAAVIO EERO NOUSIAINEN

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

Lisätiedot

Johdatus sovellussuunnitteluun, s99, osa3 Helsingin yliopisto;/tktl Harri Laine 1. Olioiden väliset yhteydet. Olioiden väliset yhteydet

Johdatus sovellussuunnitteluun, s99, osa3 Helsingin yliopisto;/tktl Harri Laine 1. Olioiden väliset yhteydet. Olioiden väliset yhteydet ..999 DO NOT PRINT THIS DOCUMENT DO NOT PRINT THIS DOCUMENT Yhteyden nimi Nimen lukusuunta pankkitili asiakas 0..0 Omistaja->..3

Lisätiedot

Graafisen käyttöliittymän ohjelmointi Syksy 2013

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

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

Viestinvälitysarkkitehtuurit Lähtökohta:

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

Lisätiedot

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

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä Ohjelmoinnin peruskurssien laaja oppimäärä Luento 7: Olio-ohjelmointia: UML ja suunnittelumallit Riku Saikkonen (osa kalvoista on suoraan ei-laajan kurssin luennoista) 14. 3. 2012 Sisältö 1 UML-luokkakaaviot

Lisätiedot

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio Analyysi Tarkentaa ja jäsentää vaatimusmäärittelyä, vastaa kysymykseen MITÄ järjestelmän tulisi tehdä. Suoritetaan seuraavia tehtäviä:

Lisätiedot

Kehyspohjainen ohjelmistokehitys

Kehyspohjainen ohjelmistokehitys Kehyspohjainen ohjelmistokehitys Sovellusalueen käsitemalli, piirremalli Yhteiset vaatimukset Kehyksen suunnittelu Suunnittelumallit Vaatimusmäärittely Muunneltavuusvaatimukset Kehysarkkitehtuuri Erikoistamisrajapinta

Lisätiedot

UML:n yleiskatsaus. UML:n osat:

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

Lisätiedot

Johdatus sovellussuunnitteluun, s99, osa3 Helsingin yliopisto;/tktl Harri Laine 1. Olioiden väliset yhteydet. Olioiden väliset yhteydet

Johdatus sovellussuunnitteluun, s99, osa3 Helsingin yliopisto;/tktl Harri Laine 1. Olioiden väliset yhteydet. Olioiden väliset yhteydet DO NOT PRINT THIS DOCUMENT DO NOT PRINT THIS DOCUMENT Yhteyden nimi Nimen lukusuunta pankkitili 0..0 Omistaja->..3 asiakas

Lisätiedot

Ohjelmistotekniikan menetelmät Luokkamallit ohjelmiston mallintamisessa Harri Laine 1

Ohjelmistotekniikan menetelmät Luokkamallit ohjelmiston mallintamisessa Harri Laine 1 Ohjelmistotekniikan menetelmät Luokkamallit ohjelmiston mallintamisessa 14.11.2008 Harri Laine 1 Oliot ohjelmiston mallinnuksessa käyttötapaus käyttää Käyttämämme oliokeskeinen perusmalli ohjelmistojen

Lisätiedot

Ohjelmistotuotanto, suunnittelu Syksy Suunnittelu. Suunnittelun tulos. Suunnitteluprosessin työvaiheet. Suunnitteluprosessi.

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.

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

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

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

6. Suunnittelu. Suunnittelun tulos

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

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

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

Tällä harjoituskerralla on tarkoituksena harjoitella käyttötapaus-, luokka- ja tapahtumasekvenssikaavioiden luontia.

Tällä harjoituskerralla on tarkoituksena harjoitella käyttötapaus-, luokka- ja tapahtumasekvenssikaavioiden luontia. MagicDraw-pikaohje Tällä harjoituskerralla on tarkoituksena harjoitella käyttötapaus-, luokka- ja tapahtumasekvenssikaavioiden luontia. Alkuvalmistelut Windows (sali TC205) 1) Kirjaudu sisään TTY:n intra-tunnuksella.

Lisätiedot

Ohjelmistojen mallintaminen, kesä 2009

Ohjelmistojen mallintaminen, kesä 2009 582104 Ohjelmistojen mallintaminen, kesä 2009 1 Ohjelmistojen mallintaminen Software Modeling Perusopintojen pakollinen opintojakso, 4 op Esitietoina edellytetään oliokäsitteistön tuntemus Ohjelmoinnin

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

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

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

Sisällys. Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2

Sisällys. Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2 6. Metodit 6.1 Sisällys Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2 Oliot viestivät metodeja kutsuen Olio-ohjelmoinnissa ohjelma

Lisätiedot

Ohjelmistojen mallintaminen Luokkakaaviot Harri Laine 1

Ohjelmistojen mallintaminen Luokkakaaviot Harri Laine 1 Ohjelmistojen mallintaminen Luokkakaaviot 5.12.2008 Harri Laine 1 Olioiden palvelut Palvelun kuvauksessa annettavat tiedot näkyvyys (kuten attribuuttien kohdalla) nimi (ainoa välttämätön osa) parametrit

Lisätiedot

Ohjelmistojen mallintaminen. Luento 3, 9.11.

Ohjelmistojen mallintaminen. Luento 3, 9.11. Ohjelmistojen mallintaminen Luento 3, 9.11. Kertausta: Ohjelmistotuotantoprosessin vaiheet Vaatimusanalyysi- ja määrittely Mitä halutaan? Suunnittelu Miten tehdään? Toteutus Ohjelmointi Testaus Varmistetaan

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

OSAII: Käytännön rutiinit. Ohjelmiston suunnittelu

OSAII: Käytännön rutiinit. Ohjelmiston suunnittelu OSAII: Käytännön rutiinit Projektin hallinta Ohjelmiston vaatimusten määrittely Ohjelmiston suunnittelu Ohjelmointi Testaus ja laadunvarmistus Ylläpito Ohjelmiston suunnittelu Ohjelmiston suunnittelun

Lisätiedot

Ohjelmistotekniikan menetelmät, kesä 2008

Ohjelmistotekniikan menetelmät, kesä 2008 582101 - Ohjelmistotekniikan menetelmät, kesä 2008 1 Ohjelmistotekniikan menetelmät Methods for Software Engineering Perusopintojen pakollinen opintojakso, 4 op Esitietoina edellytetään oliokäsitteistön

Lisätiedot

Olio-ohjelmointi Suunnittelumallit Observer ja State. 1. Observer (Tarkkailija)

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

Lisätiedot

UML Luokkakaavio 14:41

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,

Lisätiedot

Ohjelmistotekniikan menetelmät

Ohjelmistotekniikan menetelmät Ohjelmistotekniikan menetelmät Luokat ja oliot Luokka- ja oliokaavio 7.11.2008 Harri Laine 1 Luokat ja oliot käyttötapaus Käyttötapaus käyttää järjestelmän palveluja käyttää Käytettävät palvelut saadaan

Lisätiedot

A274101 TIETORAKENTEET JA ALGORITMIT

A274101 TIETORAKENTEET JA ALGORITMIT A274101 TIETORAKENTEET JA ALGORITMIT PERUSTIETORAKENTEET LISTA, PINO, JONO, PAKKA ABSTRAKTI TIETOTYYPPI Tietotyyppi on abstrakti, kun se on määritelty (esim. matemaattisesti) ottamatta kantaa varsinaiseen

Lisätiedot

Ohjelmistotekniikan menetelmät

Ohjelmistotekniikan menetelmät Ohjelmistotekniikan menetelmät Luokat ja oliot Luokka- ja oliokaavio 7.11.2008 Harri Laine 1 Luokat ja oliot käyttötapaus Käyttötapaus käyttää järjestelmän palveluja käyttää Käytettävät palvelut saadaan

Lisätiedot

Ohjelmistojen mallintaminen kertausta Harri Laine 1

Ohjelmistojen 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ä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