Lataa esitys
Esittely latautuu. Ole hyvä ja odota
1
Olio-ohjelmoinnin perusteet luento 7
Päivi Ovaska LTY/Tietotekniikan osasto
2
Sisältö Mallinnusmenetelmät ( UML notaatio UML kaaviotyypit
Pakkaukset ja laajennusmekanismit Luokkien löytäminen Suunnitteluesimerkki Harjoituksissa käydään läpi konkreettinen ongelma liittyen taskulaskimeen, sen suunnittelu ja toteutus
3
Oliopohjaiset mallinnusmenetelmät
Olioperustaisuus antaa mahdollisuuden systemaattiseen ohjelmistokehitykseen alkaen vaatimusmäärittelystä ja päätyen suoritettavaan koodiin Menetelmien antina on lähinnä se muoto, jossa analyysin ja suunnittelun tulokset esitetään Vähemmän selkeämpi ja vakiintunut on se prosessi, jolla nämä tulokset syntyvät Menetelmiä kannattaa käyttää soveltavasti ja harkiten, ei orjallisesti noudattaen
4
Oliopohjaiset mallinnusmenetelmät
Kymmeniä erilaisia oliopohjaisia analyysi ja suunnittelumenetelmiä Tärkeämpää, kuin osata tietty menetelmä on ymmärtää oliomenetelmien yleiset periaatteet Tässä esitetty materiaali (lähteenä Kai Koskimies: Oliokirja) perustuu UML kuvauskieleen ja siihen on vaikuttanut seuraavat yleiset menetelmät: Rumbaughet al.: OMT(ObjectModeling Technique) Nokia/Jaaksi: OMT++ Jacobson: OOSE(Object-Oriented Software Engineering) Booch, Rumbaugh, Jacobson: UnifiedModeling Language (UML) –Nykyisin OMG:n (Object Management Group) kehittämä standardoitu mallinnuskieli –The Unified Software Development Process
5
UML:n kaaviotyypit Korkean tason toiminnalisuus Ohjelmisto- kehitys
Rakenne Käyttö- tapauskaaviot Käyttäytyminen Esimerkkejä Oliokaaviot Sekvenssi- kaaviot Yhteistyö- kaaviot Sijoittelu- kaaviot Luokka- kaaviot Tilakaaviot Aktiviteetti- kaaviot Komponentti- kaaviot
6
UML kaaviotyypit Korkean tason toiminnallisuus
käyttötapauskaaviot Järjestelmän staattinen ja dynaaminen rakenne oliokaaviot luokkakaaviot sijoittelukaaviot komponenttikaaviot Järjestelmän dynaaminen käyttäytyminen sekvenssikaaviot yhteistyökaaviot tilakaaviot aktiviteettikaaviot Kaikki kaaviotyypit esitellään tässä käyttäen esimerkkinä autojen vuokrausjärjestelmää tai pelisovellusta Tällä opintojaksolla lähinnä painopiste järjestelmän staattisella ja dynaamisella rakenteella ja käyttäytymisellä
7
UML kaavioiden peruselementtejä ja suhteita
Kaaviot koostuvat peruselementeistä ja niiden välisistä suhteista. Elementit ovat geometrisia kuvioita. –Elementeillä usein myös sisäinen rakenne (esimerkiksi luokan attribuutit ja operaatiot) Suhteet ovat elementtejä yhdistäviä viivoja. –Suhteisiin voidaan liittää tarkempaa informaatiota (assosiaation nimi, kertautuminen, roolit) UML:n graafinen ulkoasu ei ole tarkasti määrätty.
8
UML kaavioiden peruselementtejä ja suhteita
Elementit Suhteet Nimi Luokka Riippuvuus * 0..1 Assosiaatio rooli Tila Nimi Kooste Pakkaus Nimi Yleistys (Periytyminen) Kommentti Teksti Toteutus jne. jne.
9
Käyttötapauskaavio Käyttötapaus (usecase) on kuvaus järjestelmän ja sen käyttäjien välisestä vuorovaikutuksesta tietyn, käyttäjän kannalta mielekkään tuloksen aikaansaamiseksi. –Kuvaus annetaan usein tavallisena tekstinä, joka tarkennetaan sekvenssikaavioiksi –Esimerkkejä käyttötapauksista: luottotarkistus, lainahakemus, valmistelu Käyttötapauksista lisää Ohjelmistotuotanto (Ohjelmistotekniikka) ja Ohjelmistotuotannon menetelmät (Tietojärjestelmät ja systeemisuunnittelu) opintojaksoilla
10
Luokkakaavio Luokkakaavio (class diagram, static structure diagram) kuvaa järjestelmään kuuluvia luokkia ja niiden välisiä suhteita. –luokkakaaviota käytetään järjestelmän staattisen rakenteen kuvaukseen Luokkakaaviolla mallinnetaan eri ohjelmistokehityksen eri vaiheissa eri abstraktiotasolla olevia asioita: määrittelyvaiheessa luokkakaavio on käsitemalli (conceptual model) ko. sovellusalueesta arkkitehtuurisuunnitteluvaiheessa luokkakaavio kuvaa järjestelmän moduulirakennetta ja uudelleenkäytettävyyden rakenteita (esim. suunnittelumallit) moduulisuunnitteluvaiheessa (yksityiskohtainen suunnittelu) mukana jo toteutusluokkia ohjelmointivaiheessa toteutusluokkia
11
Esimerkki käsitetason luokkakaaviosta: lautapeli
käyttää Nappula Pelaaja omistaa Aarre 0..1 0..1 0..1 0..1 * * {ordered} sijaitsee pelaa 1 Noppa kuuluu Peli Erikoispaikka 1 1 1 2 peittää päättyy 0..1 1 * Paikka koostuu Lentoreitti Kartta Lappu * 1 * * seuraa
12
Esimerkki arkkitehtuuritason luokkakaaviosta: lautapeli
Subjekti {abstract} tarkkailee * Tarkkailija {abstract} päivitä() {abstract} liitä(x: Tarkkailija) poista(x: Tarkkailija) ilmoita() for all g in tarkkailee { g.päivitä() } rekisteröityy KonkrSubjekti KonkrTarkkailija {abstract} päivitä()
13
Esimerkki suunnittelutason luokkakaaviosta: lautapeli
14
Oliokaavio Oliokaavio(object diagram) kuvaa olioita ja niiden välisiä suhteita. –luokkakaavion mahdollinen ajoaikainen ilmenemismuoto –oliokaavio antaa esimerkin järjestelmän dynaamisesta rakenteesta tietyllä hetkellä
15
Esimerkki oliokaaviosta: autonvuokraus
: KohdeHallinto auto1: HenkilöAuto auto2 : HenkilöAuto rekisterinumero = XYZ-999 rekisterinumero = ABC-123
16
Sekvenssikaavio Sekvenssikaavio (sequence diagram) koostuu tiettyyn vuorovaikutukseen liittyvistä olioista ja niiden välisistä sanomista (message). sekvenssikaaviota käytetään kuvaamaan oliojoukon välistä vuorovaikutusta tietyssä tilanteessa aika kulkee ylhäältä alas vuorovaikutustapahtumat ovat vaakasuuntaisia nuolia osallistujat kuvataan pystyviivoina kuvaa usein olioiden vuorovaikutuksen tietyn käyttötapauksen yhteydessä
17
Sekvenssikaavio esimerkki: autonvuokraus
: KohdeHallinto auto: HenkilöAuto palauta() UI palauta(auto, parkki) parkki: ParkkiAlue varastoi(auto)
18
Sekvenssikaavion käyttö
Sekvenssikaaviot eri abstraktiotasoilla Käyttötapauksen skenaarioiden tekeminen (määrittelyvaihe) miten käyttötapauksen toiminnallisuus jakautuu järjestelmän eri luokkien (käsitteellisiä luokkia) välille auttaa järjestelmän eri osien (moduuleiden, komponenttien) vastuiden määrittelyssä auttaa järjestelmän eri osien (moduuleiden, komponenttien) rajapintojen määrittelyssä Luokkien operaatioiden määrittelyn apuna suunnitteluvaiheessa auttaa luokkien vastuiden ja operaatioiden löytämisessä auttaa luokkien rajapintojen löytämisessä
19
Yhteistyökaavio Yhteistyökaavio (collaboration diagram) kuvaa olioiden välistä vuorovaikutusta. aikaa ei edusta mikään tietty suunta olioiden yhteydet kuvataan symbolien välisinä viivoina sijoittelua voidaan käyttää ilmaisemaan loogisesti yhteen kuuluvia olioita kontrollin kulun suunta voidaan ilmaista nuolella sanomien ajallinen järjestys voidaan antaa sanomiin liitettyinä numeroina monitasoinen numerointi: sisäkkäiset operaatiokutsut
20
Yhteistyökaavio esimerkki: autonvuokraus
1.1: palauta() auto: Henkilöauto : KohdeHallinto 1: palauta(auto,parkki) parkki: ParkkiAlue 1.2: varastoi(auto) UI
21
Vuorovaikutuskaaviot
Sekvenssikaaviot ja yhteistyökaaviot kuvaavat molemmat olioiden välistä vuorovaikutusta. Niitä kutsutaan yhteisesti vuorovaikutuskaavioiksi.
22
Tilakaaviot Tilakaavio (statechart diagram) kuvaa tietyn luokan ilmentymien reagoimisen ulkoisiin tapahtumiin (message). käytetään tyypillisesti aktiivisten olioiden ajoaikaisen käyttäytymisen spesifiointiin voidaan antaa tarvittaessa myös muille olioille, joiden käyttäytyminen voidaan ymmärtää tilojen vaihtumisena koostuu tiloista(attribuuttien arvojen yhdistelmä tietyllä hetkellä) ja niiden välisistä siirtymistä tilat pyöristettyjä suorakaiteita, siirtymät nuolia luokan ilmentymä on aina jossakin luokan tiloista voi sisältää alku-ja lopputilan
23
Tilakaaviot esimerkki: autonvuokraus
palauta/ lopeta ajan lasku Käytettävissä Käytössä otaKäyttöön/ aloita ajan lasku valmis huolla Huollossa Varattu exit/huoltoilmoitus varaa
24
Aktiviteettikaavio Aktiviteettikaavio(activity diagram) kuvaa tietyn tehtävän sisäisen logiikan muodollisesti tilakaavion erikoistapaus esimerkiksi yksittäinen operaatio jokin korkeamman tason tehtävä (yksi tai useampi käyttötapaus), johon osallistuu useita suorittajia kaavio voidaan jakaa sarakkeisiin, jotka vastaavat kutakin suorittajaa koostuu toimenpidetiloista (sivureunat täysin pyöristettyjä, ei nimiä) sekä niitä yhdistävistä ilman tapahtumaa olevista siirtymistä
25
Aktiviteettikaaviot –kaavioon voidaan liittää päätössymboleja (vinoneliö) kuvaamaan kontrollin haarautumista jonkin ehdon perusteella –kaaviolla voidaan myös kuvata rinnakkaisten suoritussäikeiden haarautumista ja yhdistymistä –kaavioon voidaan lisätä tietoalkioita (toiminnan kohteita) olioina –muistuttaa täydellisessä muodossaan läheisesti muissa kuvausmenetelmissä käytettyjä tietovuokaaviota (data flow diagram) •tietovuokaaviot eivät sinänsä kuulu UML:ään
26
Aktiviteettikaavio esimerkki: autonvuokraus
27
Komponenttikaaviot Komponenttikaavio (component diagram) kuvaa komponentit ja niiden väliset suhteet Komponentti(UML:kaavioissa) voi olla: lähdekielinen tai binäärimuotoinen rajapinnan toteuttava ohjelmayksikkö, mutta myös esimerkiksi datatiedosto, ohjelmatiedosto (mm. exetai dll), html-sivu, dokumentti, kirjasto tai jokin muu osa yleisesti UML:n komponentti on lähes mikä tahansa ohjelmistojärjestelmästä selkeästi erotettavissa ja korvattavissa oleva osa (”fyysinen”, ei vain käsitteellinen) voidaan käsitellä kaavioissa luokan tavoin (assosiaatiot, yleistyssuhteet, attribuutit, ...)
28
Esimerkki komponenttikaaviosta: autonvuokraus
29
Sijoittelukaaviot Sijoittelukaavio(deployment diagram) kuvaa prosessointia suorittavat laiteyksiköt, niiden yhteydet ja ohjelmistojen osien sijoittumisen niihin. tarvitaan vain silloin kun järjestelmään liittyy useita laiteyksiköitä prosessointiyksiköt (node) esitetään kuutioina ja niiden väliset suhteet assosiaatioina prosessointiyksiköille voidaan antaa luokkien tapaan yleistyssuhteita, niillä voi olla attribuutteja ja ilmentymiä ja ne voivat olla osallistujina vuorovaikutuskaavioissa
30
Sijoittelukaavio esimerkki: autonvuokraus
31
Kaavioille yhteisiä piirteitä
Pakkaukset Laajennosmekanismit, joilla voidaan määritellä lisäominaisuuksia UML:n perusosille esim. stereotyypit (stereotype)
32
Pakkaukset Pakkaus(package) on UML:n yleinen ryhmittely-ja kokoamisväline, jota voidaan käyttää kaikissa kaaviotyypeissä. piirretään suorakaiteena, jonka ylälaidassa on nimiuloke voi kuvata loogisen kokonaisuuden, alijärjestelmän, konfiguraation, ... hakemiston vastine, voi sisältää myös toisia pakkauksia pakkaus edustaa nimiavaruutta
33
Pakkauksen käyttö Ohjain Kohteet Tuki Kohde Varasto KohdeHallinto
1 Kohde 1 Varasto palauta() varaa() otaKäyttöön() hallinnoi KohdeHallinto * 1 palautaKohde(Kohde, Varasto) varaaKohde(Kohde) otaKäyttöönKohde(Kohde) HenkilöAuto ParkkiAlue rekisterinumero huolla(int km) palauta()
34
Pakkaukset suljetussa muodossa
Tuki Tietokanta <<import>>
35
Stereotyypit Stereotyypillä varustetulla perusosalla on oma laajennettu merkitys täysin epäformaali tai esimerkiksi rajoitteilla määritelty stereotyypille voidaan antaa oma kuvake, joka esiintyy perusosan symbolin yhteydessä tai korvaa sen hyödyllisiä hyvin yleisten UML-symbolien kohdalla: varsinkin komponentit ja prosessointiyksiköt mekanismi sovelluskohtaisten notaatioiden tekemiseen
36
Stereotyypillä varustettu luokka
<<exception>> Overflow
37
Luokkien löytäminen Jos järjestelmä on suuri, jaa järjestelmä osiin, löydä luokat osissa ja muodosta näistä kokonaisuus Kartoita luokkaehdokkaita tarkasteltavan ilmiön kannalta keskeiset kohteet ja ilmiöt (osallistujat, toiminnan kohteet, toimintaan liittyvät tapahtumat, materiaalit, tuotteet, toiminnalle edellytyksiä luovat asiat) Kartoituksen pohjana voi käyttää vapaamuotoista tekstikuvausta, josta luokkaehdokkaat löytyvät etsimällä substantiiveja Karsi ehdokkaita Tunnista olioiden väliset yhteydet Määrittele attribuutit Liitä luokkiin palvelut (luokkien välinen vuorovaikutus) Varmista palvelujen ja tietosisällön yhteensopivuus (luokkien vastuut)
38
Suunnitteluesimerkki
Ohjelmisto muodostaa tekstitiedostosta hakusanaston Hakusanasto sisältää dokumentissa esiintyneet sanat aakkosjärjestyksessä Jokaisesta sanasta tulostetaan sen esiintymisrivit tiedostossa Hakusanasto on muotoa: akku 4 akussa 5,10 alku 1,7
39
Luokkien löytäminen Luokkaehdokkaita: sana, rivi, rivinumero, tiedosto, sanasto Rivi tarpeeton, rivinumero pelkkä kokonaisluku Hakusanasto: sanaston muodostamista ohjaava luokka
40
Tapahtuma- sekvenssikaavio hakusanaston muodostamisesta
41
Esimerkkiohjelman luokkakaavio
42
Esimerkkiohjelman rajapintamäärittelyt
43
Sanaston moduulisuunnittelu
Sanastoa voidaan säilyttää järjestyspuussa, jonka solmuissa kaksi ominaisuutta: sana ja linkitetty lista rivinumeroita -> löytyvät C++ standardikirjastoista
44
Moduulien näkyvyys (UML komponenttikaavio)
Samankaltaiset esitykset
© 2024 SlidePlayer.fi Inc.
All rights reserved.