Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

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

Samankaltaiset esitykset


Esitys aiheesta: "Luokka- eli ER- eli käsitekaaviot (Luku 6)"— Esityksen transkriptio:

1 Luokka- eli ER- eli käsitekaaviot (Luku 6)
Tämä luku on muuttunut melkoisesti siirryttäessä painoksesta 6 painokseen 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 /ijh

2 Kaaviot 7.10.2003/ijh Käyttötapaus Käsittele puu Kuljettaja
Sahaa tukki /ijh

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

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

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

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? /ijh

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…). /ijh

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. /ijh

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

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

11 Periyttäminen (kuva 6.4) yleistäminen erikoistaminen /ijh

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

13 Rajapinnat 2 (kuva 6.7) /ijh

14 Lisukkeet: Luokka Instantiation: Template WinType parameter
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) /ijh

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

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ä. /ijh

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? /ijh

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ä. /ijh

19 Esimerkki ilmaisuvoimasta (2, kuva 6.9a)
/ijh

20 Esimerkki ilmaisuvoimasta (3, kuva 6.8b)
/ijh

21 Esimerkki ilmaisuvoimasta (4, kuva 6.9b)
/ijh

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). /ijh

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. /ijh

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 /ijh

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. /ijh

26 Puuttuvia kenttiä (ei kirjassa)
/ijh

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

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

29 Muut notaatiot: Chenin notaatio (kuva 6.11)
/ijh

30 Muut notaatiot: Martinin kohdekaaviot (kuva 6.12)
/ijh

31 Muut notaatiot: OMT (ei kirjassa)
/ijh

32 Muut notaatiot: Booch (ei kirjassa)
/ijh


Lataa ppt "Luokka- eli ER- eli käsitekaaviot (Luku 6)"

Samankaltaiset esitykset


Iklan oleh Google