Lataa esitys
Esittely latautuu. Ole hyvä ja odota
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
Samankaltaiset esitykset
© 2024 SlidePlayer.fi Inc.
All rights reserved.