1 / 32

Luokka- eli ER- eli käsitekaaviot (Luku 6)

Luokka- eli ER- eli käsitekaaviot (Luku 6). Tämä luku on muuttunut melkoisesti siirryttäessä painoksesta 6 painokseen 7. - Kalvomateriaali on kurssin www-sivuilla ja luku on kirjan www-sivuilla pdf-muodossa. Peruskomponentit Esimerkki Pieni harjoitus

ayasha
Download Presentation

Luokka- eli ER- eli käsitekaaviot (Luku 6)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Luokka- eli ER- eli käsitekaaviot (Luku 6) Tämä luku on muuttunut melkoisesti siirryttäessä painoksesta 6 painokseen 7.- Kalvomateriaali on kurssin www-sivuilla ja luku on kirjan www-sivuilla pdf-muodossa. Peruskomponentit Esimerkki Pieni harjoitus Sivuhyppäys: ohjelmistojen oliokeskeisyys (OO, Object Orientation), oliot ja luokat Koostuminen Yli/alityypit (eli periyttäminen eli erikoistaminen) Rajapintojen määrittely Lisukkeita, jotka eivät ole tällä kurssilla tärkeitä Kaavioiden käyttötavoista ja ilmaisuvoimasta Kaavioiden laatimisohjeita ja esimerkkejä Muita kaavionotaatioita vaatimukset

  2. Kaaviot Käyttötapaus Käsittele puu Kuljettaja Sahaa tukki

  3. Luokka (käsite, kohde) ja yhteys (vastaa kuvaa 6.1) Olio?

  4. Oliot, lukumääräsuhteet (kuva ei kirjassa)

  5. Esimerkki (kuva 6.2) lukusuunta navigointisuunta assosiatioluokka UML 2.0? 30.9

  6. University lab library • The students and personnel borrow books • An ID card with barcode is used to identify the clients. • There is a maximum amount of books that can be borrowed by one client. • There is a maximum time for a loan. • Books can be reserved. • … • Use cases? • Class diagram?

  7. Sivuhyppäys: ohjelmistojen oliokeskeisyys (OO, Object Orientation) • Oliomenetelmät ovat 1980-luvun loppupuolelta lähtien vallanneet alaa ja ovat nyt “valtavirta” -- toisaalta ohjelmistot kehitetään käytännössä useimmiten ilman sen juhlallisempia menetelmiä. • Perusajatuksena on sovellusalueen mallintaminen ohjelmassa luomalla ohjelmaan todellisuutta vastaavat oliot (tilaus, kuorma-auto, anturi, jne.) • luokittelu (abstraktiot) • olioiden väliset yhteydet • olioiden koostuminen toisista olioista • OOA: Object Oriented Analysis, oliomäärittely. • OOD: Object Oriented Design, oliosuunnittelu • OOP: Object Oriented Programming, olio-ohjelmointi. • Oleellisinta olio-ajattelussa on ajattelutapa, ei toteutustekniikka (C, C++ -luokka, Java, COM-komponentti, Corba, Java-papu jne…).

  8. …ohjelmistojen oliokeskeisyys • Oliokeskeisessä ajattelussa lähes mitä hyvänsä voi ajatella oliona: • bitti, merkki, merkkijono, kokonaisluku, tiedosto, palvelin, kuorma-auto, pankkiyhteys, varasto, pankkitili … • Oliolla on tila • olion ”muisti” • tila voi koostua toisista olioista, esimerkiksi pvm voi koostua päivästä, kuukaudesta ja vuodesta • olion tila on ”kapseloitu” olion sisälle: sitä voi kysellä oliolta ja sitä voi muuttaa kutsumalla olion metodeita • Oliolla on rajapinta • joukko toimintoja, joilla oliota hallitaan, operaatiot, julkiset jäsenfunktiot, palvelut, metodit... • Oliokeskeinen ohjelma koostuu joukosta keskenään kommunikoivia oliota. Oliot kommunikoivat lähettämällä toisilleen sanomia, ts. kutsumalla toistensa rajapintojen määrittelemiä. • Luokka: oliot, joilla on sama käyttäytyminen (metodit) ja samat attribuutit, ovat instansseja eli ilmentymiä samasta olioluokasta.

  9. Muodostuminen (kuva 6.5) ja koostuminen muodoste (composition) kooste (aggregation) assosiaation erikoistapauksia

  10. TAI: Periyttäminen, yleistäminen, erikoistaminen (kuva 6.3) rajoite voisi vielä havainnollistaa henkilöesimerkillä 7.10

  11. yleistäminen erikoistaminen Periyttäminen (kuva 6.4)

  12. heikko riippuvuus <<Interface>> ohjaus <<thread>> polttomoottori <<Interface>> kaynnista() varoitin sammuta() asetaNopeus() varoita() <<uses>> <<thread>> realization höyrykone veturi kaynnista() varoita() sammuta() asetaNopeus() void kaynnista() { while (1) { .... if (kattilapaine > maxPaine) { vPtr->varoita("kohta pamahtaa") } .... Rajapinnat, toteutus-suhde (kuva 6.6, vrt. periytyminen)

  13. Rajapinnat 2 (kuva 6.7)

  14. Lisukkeet: Luokka Instantiation: Template parameter WinType Window<Xwindow> Window {abstract, author = KK status = tested} Property list (optional) Attribute list (optional) +size #visibility: Boolean = false -xptr: WinType Operation list (optional) +display() hide() +create() -attachXWindow(xwin: WinType*) + = public - = private # = protected = unknown Class operation (static) (simple name is enough for an attribute and operation, too)

  15. Lisukkeet: Yhteyksien erityispiirteitä has * Person AccessRight Navigointi * Kvalifiointi Client Bank accountnr 1..* * Company Person Roolien nimet employer employee

  16. Kaavioiden käyttötavoista • Kaavioita voidaan käyttää esitutkimuksessa, määrittelyssä ja suunnittelussa. • Esitutkimus ja määrittely: sovellusalueen käsitteet (domain object model), järjestelmän rajaus, analysis object model, järjestelmän tietosisällön määrittely (käsitekaavio, conceptual model), usein myös tietokannan rakenne. • Suunnittelu: ohjelman rakenne (design object model), tietokannan rakenne (esimerkiksi relaatiokannan graafinen esitys). • Kaavio dokumentoi "sanaston", jolla asioista voi keskustella. • Kaavio kertoo, millaiset tilanteet ovat mahdollisia. • Kaavio ohjaa kysymään oikeita kysymyksiä.

  17. Kaavioiden ilmaisuvoimasta • Kaikkien sallittujen tilanteiden on oltava kaaviossa mukana. • Kaikkia rajoituksia ei aina pysty ilmaisemaan => Lisätään rajoitteita ja kommentteja. • Kaavioita voi testata hakemalla siita vastauksia kysymyksiin ja piirtelemällä kuvia esimerkkitilanteista. • Mahtavatkohan asiakkaat ymmärtää kaavioita?

  18. Esimerkki ilmaisuvoimasta (1, kuva 6.8a) (Korjattu, UML-std:n mukaan kuvan 6.9 esimerkkitilanne olisi mahdoton (?), jos käytettäisiin assosiaatioluokkaa) Kysymys 1: missä firmoissa A.S. on töissä? Kysymys 2: kuka on A.S.:n esimies, kun hän on Aikonilla hommissa? Kysymys 3: mikä on A.S.:n esimiehen titteli kohdan 2 kysymyksessä.

  19. Esimerkki ilmaisuvoimasta (2, kuva 6.9a)

  20. Esimerkki ilmaisuvoimasta (3, kuva 6.8b)

  21. Esimerkki ilmaisuvoimasta (4, kuva 6.9b)

  22. Kaavioiden laatiminen: Luokat (1) • Luokan jäsenillä on samat attribuutit ja sama käyttäytyminen (metodit). • Tyypillisiä luokkia • ”Konseptuaaliset” luokat: sovellusalueen käsitteet (toinen tapa sanoa lähes sama: käsitteet, jotka ovat mukana jokaisessa ajateltavissa olevassa ratkaisussa) • itse keksityt metaforat yms, ”pure fabrication”: luokat, jotka keksitään ”tyhjästä” helpottamaan keskustelua sovelluksesta (määrittely- tai suunnittelutasolla) • Suunnittelun MVC-malli (Model-View-Controller): Model-luokat sisältävät datan (usein konseptuaalinen luokka). View-luokka näkyy käyttöliittymässä. Controller-luokka sisältää käyttöliittymälogiikan. • ... • Luokkajako perustuu pysyviin ominaisuuksiin ei esimerkiksi olion väliaikaiseen tilaan. Esimerkki. • Toiminnallisuuden jakaminen: ei mahtiluokkia (God class), jotka "osaavat" ja "tietävät" kaiken (muut luokat toimivat vain tiedon säilytyspaikkoina).

  23. Kaavioiden laatiminen: Luokat (2) • Metodit • saantimetodit (accessors) palauttavat tietoa olion tilasta • muuttajametodit (mutators) muuttavat olion tilaa • perussääntö: laita metodit sinne, missä tietokin on • Attribuutit • primitiivityypit esitetään attribuutteina • abstraktit tietotyypit ja joskus muutkin oliot voivat esiintyä myös attribuutteina (vrt. muodoste ♦ ) • assosiaatiot toteuttavia ”attribuutteja” ei yleensä esitetä attribuutteina kaavioissa • Ei toistuvia kenttiä (ks. opiskelijarekisteri). • Ei tarpeetonta redundanssia (sama tieto monessa paikassa, ov opiskelijarekisterissä). • Ei puuttuvia kenttiä (Esimerkki). • Ei turhia luokkia.

  24. Kaavioiden laatiminen: Yhteydet • Olion A ja B voi yhdistää esimerkiksi seuraavanlainen suhde • A on osa tai kuuluu B:n • A sisältää tai omistaa B:n • A kuvaa B:n • A kommunikoi B:n kanssa • A on tapahtuma, joka liittyy B:n • A on fyysisesti B:n vieressä • A käyttää B:tä • A hallinnoi B:tä... • Minimoi yhteydet luokkien välillä, ei redundantteja yhteyksiä (ks. opiskelijarekisteri). • ”need-to-know”-periaate: jos olio A tarvitsee toiminnassan oliota B, siihen on päästävä jotenkin käsiksi, eli A:lla on oltava ”näkyvyys” (visibility) olioon B • Assosiaatiot kuvaavat yleensä tilannetta, jossa näkyvyys on pysyväisluontoista, siis koko ajan olemassa • Muissa tapauksissa käytetään riippuvuusnuolia, esim. • olio B välitetään parametrina olion A operaatiolle • olio B on väliaikainen, A:n metodi luo olion, käyttää sitä ja tuhoaa sen lopuksi • Täysin staattisessa tilanteessa, esimerkiksi globaali objekti, jota kaikki käyttävät, yhteys jätetään usein kokonaan pois

  25. Kaavioiden laatiminen: Ohjeiden soveltamisesta • Ehdottomia sääntöjä ei ole. • Toteutusvaiheessa näistä peukalosäännöistä voidaan tehokkuussyistä joutua tinkimään. • Periytymiseen liittyviin sääntöihin palataan OTM-kurssilla.

  26. Puuttuvia kenttiä (ei kirjassa)

  27. Periyttäminen (ei kirjassa, lähinnä kuva 6.10)

  28. Esimerkki • Kirjaan liittyy • nimi, • ISBN-numero, • kustantaja, painovuosi, • sivumäärä ja kirjoittajat. • Lisäksi kussakin kirjassa on yksikäsitteinen numerotunnus. • Lainaajilla on • nimi, • osoite ja • puhelinnumero. • Järjestelmä ylläpitää tietoja lainauksista: kuka lainasi ja milloin. Piirrä ER-kaavio.

  29. Muut notaatiot: Chenin notaatio (kuva 6.11)

  30. Muut notaatiot: Martinin kohdekaaviot (kuva 6.12)

  31. Muut notaatiot: OMT (ei kirjassa)

  32. Muut notaatiot: Booch (ei kirjassa)

More Related