Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

Olio-ohjelmoinnin perusteet luento 7

Samankaltaiset esitykset


Esitys aiheesta: "Olio-ohjelmoinnin perusteet luento 7"— Esityksen transkriptio:

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)


Lataa ppt "Olio-ohjelmoinnin perusteet luento 7"

Samankaltaiset esitykset


Iklan oleh Google