Sisällys. Luokkakaaviot 2



Samankaltaiset tiedostot
Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

TIE Samuel Lahtinen. Lyhyt UML-opas. UML -pikaesittely

Jouni Huotari & Ari Hovi. Käsitemallinnuksesta relaatiokantaan KÄSITEMALLI. LOOGINEN MALLI: tietomalli valittu. FYYSINEN MALLI: DBMS valittu

3. Käsiteanalyysi ja käsitekaavio

Sisällys. 19. Unified Modeling Language (UML) Johdanto. Johdanto. Johdanto. Luokkakaavio:

Tietokantojen suunnittelu, relaatiokantojen perusteita

POLKU LUOKKAKAAVIOISTA TAULUJEN TOTEUTUKSEEN

UML ja luokkien väliset suhteet

Yhteydelle voi antaa nimen kumpaankin suuntaan Sille ei tarvise antaa lainkaan nimeä Yhteysnimen asemasta tai lisäksi voidaan käyttää roolinimiä

Rajapinnasta ei voida muodostaa olioita. Voidaan käyttää tunnuksen tyyppinä. Rajapinta on kuitenkin abstraktia luokkaa selvästi abstraktimpi tyyppi.

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

Muutamia peruskäsitteitä

TIEDONHALLINTA - SYKSY Luento 7. Pasi Ranne /10/17 Helsinki Metropolia University of Applied Sciences

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

Luokka- ja oliokaaviot

UML -mallinnus LUOKKAKAAVIO EERO NOUSIAINEN

Olio-ohjelmoinnissa luokat voidaan järjestää siten, että ne pystyvät jakamaan yhteisiä tietoja ja aliohjelmia.

Tietokantasuunnittelun pääperiaatteena on tiedon toiston välttäminen. Tiedon toistumiseen liittyy monenlaisia ongelmia.

UML - unified modeling language

Johdanto. Olio (Object) Luokka (Class) Olion kuvaaminen

Johdatus sovellussuunnitteluun, s99, osa3 Helsingin yliopisto;/tktl Harri Laine 1. Olioiden väliset yhteydet. Olioiden väliset yhteydet

Ohjelmistojen mallintaminen kertausta Harri Laine 1

Rajapinta (interface)

Johdatus sovellussuunnitteluun, s99, osa3 Helsingin yliopisto;/tktl Harri Laine 1. Olioiden väliset yhteydet. Olioiden väliset yhteydet

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

Sisällys. Mitä on periytyminen? Yksittäis- ja moniperiytyminen. Oliot ja perityt luokat. Periytymisen käyttö. 8.2

Ohjelmistojen kehittämisessä tarvitaan kaaviotekniikoita

Mitä on periytyminen?

Joskus yleistäminen voi tapahtua monen ominaisuuden pohjalta. Myös tällöin voi tulla moniperintätilanteita.

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

2. Käsiteanalyysi ja relaatiomalli

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op

OHJ-3010 Ohjelmistotuotannon perusteet, kesä 2012

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat

UML- mallinnus: Tilakaavio

UML:n yleiskatsaus. UML:n osat:

Nimi: Henkilötunnus: {id} {+id}

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki

9. Periytyminen Javassa 9.1

UML Luokkakaavio 14:41

19. Unified Modeling Language (UML)

Tietokannan suunnittelu

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton

Ohjelmistotekniikan menetelmät, UML

Olio-ohjelmointi: Luokkien toteuttaminen. Jukka Juslin

2. Olio-ohjelmoinnin perusteita 2.1

Luokkamalli LUOKKAKAAVIO. Tämän osan sisältö. Luokkamalli. Luokka ja olio. Luokkakaavio (class diagram)

9. Periytyminen Javassa 9.1

2. Olio-ohjelmoinnin perusteita 2.1

Kertaus: yleistys-erikoistus ja perintä

Ohjelmistojen mallintaminen, mallintaminen ja UML

A) on käytännöllinen ohjelmointitekniikka. = laajennetaan aikaisemmin tehtyjä luokkia (uudelleenkäytettävyys)

Olio-ohjelmointi Javalla

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä

Tämän lisäksi listataan ranskalaisin viivoin järjestelmän tarjoama toiminnallisuus:

Luokka- ja oliokaaviot

Ohjelmistotekniikan menetelmät, luokkamallin laatiminen

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Ohjelmistojen suunnittelu

Ohjelmistojen mallintaminen Luokkakaaviot Harri Laine 1

Periytyminen (inheritance)

Ohjelmistojen mallintaminen viikon 4 laskareiden mallivastauksia

Luento 3 Tietokannan tietosisällön suunnittelu

T Olio-ohjelmointi Osa 5: Periytyminen ja polymorfismi Jukka Jauhiainen OAMK Tekniikan yksikkö 2010

Ohjelmistotekniikan menetelmät

käyttötapaukset mod. testaus

HELIA 1 (20) Outi Virkki Tiedonhallinta

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Tällä harjoituskerralla on tarkoituksena harjoitella käyttötapaus-, luokka- ja tapahtumasekvenssikaavioiden luontia.

CS-A1150 Tietokannat CS-A1150 Tietokannat / 35

Perusarkkitehtuurin ja vuorovaikutuksen mallintamisen perusteita.

Ohjelmistojen mallintaminen Unified Modeling Language (UML)

Ohjelmistotekniikan menetelmät

Ohjelmistojen mallintaminen, mallinnustekniikat käytännössä

Luokka (class) esitetään suorakulmion avulla, jonka sisälle kirjoitetaan luokan nimi (vahvennettuna).

UML -mallinnus TILAKAAVIO

Ohjelmistotuotanto vs. muut insinööritieteet. (Usein näennäinen) luotettavuus ja edullisuus

Ohjelmistotekniikan menetelmät Luokkamallit ohjelmiston mallintamisessa Harri Laine 1

TyontekijaOhjelma. +main() (käyttää) + = public - = private

VH5, JOTU, MagicDraw:n käyttö

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. II Johdanto olio-ohjelmointiin

Olioperustaisuus (object oriented)

on ohjelmoijan itse tekemä tietotyyppi, joka kuvaa käsitettä

Johdatus sovellussuunnitteluun, s99, osa2 Helsingin yliopisto;/tktl Harri Laine 1. Olioperustaisuus (object oriented)

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen

Ohjelmistotekniikan menetelmät, luokkamallin laatiminen

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

18. Abstraktit tietotyypit 18.1

Ohjelmistotekniikan menetelmät, luokkamallin laatiminen

Ohjelmistojen mallintaminen Olioiden yhteistyö Harri Laine 1

Aalto Yliopisto T Informaatioverkostot: Studio 1. Oliot ja luokat Javaohjelmoinnissa

Ohjelmistojen mallintaminen, kesä 2010

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

Ohjelmistojen mallintaminen, kesä 2009

Kaaviotekniikoista (erityisesti UML)

TIEDONHALLINTA - SYKSY Luento 2. Pasi Ranne /8/17 Helsinki Metropolia University of Applied Sciences

Transkriptio:

Luokkakaaviot Luokkakaaviot ovat keskeinen väline etsittäessä järjestelmän kannalta keskeisiä käsitteitä ja niiden välisiä riippuvuuksia. Perinteisesti tässä on käytetty erilaisia käitekaaviotekniikoita. Oliosuuntautuneen lähestymistavan myötä käyttöön ovat tulleet erilaiset luokkakaaviokuvaukset, jotka korostavat tietorakenteen ja tietoja käsittelevien operaatioiden yhteenkuuluvuutta. Käsittely kattaa luokkakaavioiden yleisperiaatteet ja olioteknisten piirteiden (periytymis- ja koostemekanismit) käytön kuvauksissa, sekä kaavioiden ilmaisuvoimaa ja täsmällisyyttä koskevaa pohdintaa. UML:n mukaisen luokkakaaviokuvauksen rinnalle esitellään myös käsitekaavioiden kuvaustekniikoina sekä Chenin että Martinin käsitekaaviot. Exit

Sisällys Luokkakaaviot UML luokkakaaviot: notaatio Luokkakaavioiden rooli kehitystyössä Luokat, yhteydet, attribuutit, metodit Luokkakaavion komponentit Oliot ja linkit Luokka, olio Luokkien etsintä Attribuutit Lukumääräsuhteet Luokkakaavio ja tietokantarakenne Rakenneominaisuudet Yleistys, erikoistaminen,periytyminen Fyysinen ilmentymä vs. looginen rakenne Periytyminen Koostuminen/komponentti(us) Periytyminen ja koostuminen Muodoste Rajapintojen kuvaaminen Rajapinta, toteutussuhte Stereotyypit ja ikoonit Rajapinnat, ikonit: esimerkki Pakkaukset Kaavioiden ilmaisuvoima Kaavioiden laatiminen Kaavioiden muokkaaminen Muita notaatioita Esimerkki: kirjasto Esimerkki: maalausrobotti Kertauskysymykset Luokkakaaviot 2

Luokkakaaviot luokkakaaviot: järjestelmän keskeiset käsitteet ja niiden keskinäiset suhteet oliopohjaisen mallinnuksen väline; luokka on yleistys samanlaisista olioista luokkaan kuuluvalla oliolla on tila (attribuuttien arvot), jota sen metodit muuttavat perustana käsitekaaviot (tietokantasuunnittelu) relaatiotietokantojen suunnittelun perusta kaavion jalostaminen (normalisoiduksi) tietokantakuvaukseksi tässä yhteydessä UML:n luokkakaavio Chenin ja Martinin käsitekaavionotaatiot OMT, Booch rakenne luokkakaavio: muutokset tilaan luokan sisältä palvelukutsun toteutuksen seurauksena käsitekaavio: käsittely ja tietorakenne rakentuvat yleensä erillään Seuraavat Seuraavat kalvot: kalvot: UML-luokkakaavioiden UML-luokkakaavioiden notaatio. notaatio. Aiheen yksityiskohtainen Aiheen yksityiskohtainen esittely esittely alkaa alkaa niiden niiden jälkeen jälkeen Luokkakaaviot 3

UML luokkakaaviot: notaatio Geneerisen luokan ilmentymä: Window<Xwindow> Attribuuttilista (valinn.) Operaatiolista (valinn.) + = public - = private # = protected = unknown Window {abstract, author = KK status = tested} +size #visibility: Boolean = false -xptr: WinType WinType +display() hide() +create() -attachxwindow(xwin: WinType*) Geneerinen parametri Malliparametriluettelo (valinn.) Luokkaoperaatio (staattinen) (attribuutti ja operaatio voidaan antaa pelkällä nimelläkin) Lähde: K.Koskimies (2000) Luokkakaaviot 4

UML luokkakaaviot: notaatio Riippuvuus (esim. kutsu) Parser Scanner Assosiaatio Person owns Car Yleistys Car Vehicle Toteutus Car <<interface>> Vehicle Aito kooste ( ei olemassa ilman ) Ministeri 15..* Valtioneuvosto Kooste Workstation 1..* Network Lähde: K.Koskimies (2000) Luokkakaaviot 5

UML luokkakaaviot: notaatio Vaihteleva määrä ilmentymiä alaraja yläraja C1 n1..n2 C2 ** = ei eiylärajaa ** = 0..* 0..* Kiinteä määrä ilmentymiä C1 5 C2 Lähde: K.Koskimies (2000) Luokkakaaviot 6

esimerkki UML luokkakaaviot: esimerkki Car 4 Wheel UserGroup * belongs * User Kurssi * 1..* Opettaja Lähde: K.Koskimies (2000) Luokkakaaviot 7

esimerkki UML luokkakaaviot: esimerkki Oliokaavio Oliokaavio :Instructor :Course :Instructor :Course :Course :Instructor :Instructor :Course Luokkakaavio Luokkakaavio Instructor * * Course Lähde: K.Koskimies (2000) Luokkakaaviot 8

esimerkki UML luokkakaaviot: esimerkki University name: Name address: String phone: Number 1..* Department name: Name addcourse() removecourse() 1..* * Course name: Name id: Number adddepartments() adddepartment() removedepartment() getdepartment() getalldepartments() LabCourse LectureCourse labid: Number roomreqs: Number Lähde: K.Koskimies (2000) Luokkakaaviot 9

UML luokkakaaviot: notaatio Navigaatio Person has AccessRight Kvalifiointi Bank accountnr * Client Rooli Yritys työnantaja työntekijä :IWorker Henkilö Lähde: K.Koskimies (2000) Luokkakaaviot 10

UML luokkakaaviot: notaatio Luokkien Luokkien rajoitteet rajoitteet Transaction value {value > 0} Transaction value constraints: {value > 0} Lähde: K.Koskimies (2000) Luokkakaaviot 11

UML luokkakaaviot: notaatio Assosiaatioiden Assosiaatioiden rajoitteet rajoitteet Person * member-of {subset} * Committee 1 chair-of * worker * 0..1 boss Person employee employer * 0..1 Company {Person.employer = Person.boss.employer} Lähde: K.Koskimies (2000) Luokkakaaviot 12

UML luokkakaaviot: notaatio Rajapinnat: Rajapinnat: Strategia Strategiasuunnittelumalli: Context contextinfo() <<interface>> Strategy algorithm() MethodA algorithm() MethodB algorithm() Lähde: K.Koskimies (2000) Luokkakaaviot 13

UML luokkakaaviot: notaatio Rajapinnat Rajapinnat (supistettu (supistettu muoto) muoto) Strategy Context contextinfo() MethodA algorithm() MethodB algorithm() Lähde: K.Koskimies (2000) Luokkakaaviot 14

UML luokkakaaviot: notaatio Aktiiviset Aktiiviset luokat luokat Paksumpi rajaviiva <<controller>> DeviceController currentconfiguration Mahdollinen stereotyyppi Signaalilohko (olio tunnistaa nämä signaalit) Signals deviceinterrupt userinterrupt seriousflaw Aktiivinen olio (aktiivisen luokan ilmentymä): olio, joka omistaa prosessin/säikeen, ja joka reagoi sille lähettetyihin signaaleihin. Käyttäytyminen kuvataan usein tilakaaviolla Lähde: K.Koskimies (2000) Luokkakaaviot 15

Luokkakaavioiden rooli kehitystyössä luokkakaavioilla (käsite-) on keskeinen rooli kehitystyössä hahmottelu tietosisällön määrittely: lähtee liikkeelle todellisten tilanteiden tarkastelulla (oliot, todelliset olioiden väliset tilanteet) -> esimerkit (kuvataan oliokaavioina) tietojen kuvaus: oliokaavioita laadittaessa hahmotetaan niitä kuvaavat attribuutit ja niiden rakenne (tietohakemistokuvaus tukee ja kokoaa) oliokaavioista yleistetään luokkakaavio (yhteiset ominaisuudet ja yhteyksien lukumääräsuhde) toiminnallisuuden kuvaus:» lähtee käyttötapauksista, joita kuvataan olioiden välisenä vuorovaikutuksena (tapahtumasekvenssit) -> esimerkkitilanteet» vuorovaikutukseen liityvien olioiden sisäinen käyttäytyminen kuvataan toimintokuvauksina (tilakaavioina); esim. tsk:n olioiden toiminnallisuus Luokkakaaviot 16

Esimerkeistä yleistykseksi Esimerkki oliokaavio Lopullinen kuvaus luokkakaavio tapahtumas.kaavio (nuolet) tapahtumas.kaavio (oliot) operaatiokuvaukset (luonnollinen kieli) jne. vuorovaikutuskuvaus toimintokuvaukset toimintokuvaukset jne. Luokkakaaviot 17

Kuvauskannan rakentuminen hlö1:asiakas tavara1:tilaus Asiakas hlö2:asiakas tavara2:tilaus tavara3:tilaus Tuotetilaus Käyttötapauskuvaus: Nimi: xxxxxxxx Suorittajat: xxxxxxxxxx.. Asiakas Tilaus Tuote 1 0..* 0..* 0..* hlö1: Asiakas hlö2:asiakas Operaatiokuvaukset Tietohakemisto: tilaus = tno + asno + tno =.. Tietokantakuvaus Toimintokuvaukset Kuvauskanta Luokkakaaviot 18

Luokat, yhteydet, attribuutit, metodit keskeisiä termejä luokat: järjestelmässä mallinnettavat kohteet yhteydet: kohteiden välinen riippuvuus» suuntamerkintä» lukumääräsuhteet attribuutit: luokan ominaisuudet (tila) metodit: attribuutteja muuttavat toiminnot lisäpiirteitä: merkkiarvot (tag), stereotyypit ilmentymät» luokka olio» yhteys - linkki Luokkakaaviot 19

Luokkakaavion komponentit (1) luokka merkkiarvo attribuutit asiakas {persistent} nimi osoite uusi tilaatuote() lukumääräsuhde 1 tekee 0..* tilaus {persistent} yhteys operaatiot Luokkakaaviot 20

Oliot ja linkit ahto simakuutio : asiakas tilaus 1 : tilaus tilaus 2 : tilaus Oliokaaviot Oliokaaviot teemu teekkari : asiakas tilaus 3 : tilaus outi opiskelija : asiakas asiakas 0..* tilaus Luokkakaavio Luokkakaavio saadaan saadaan yleistämällä yleistämällä oliokaavion oliokaavion mukaisia mukaisia tilanteita tilanteita Luokkakaaviot 21

Luokka,, olio luokka edustaa kuvauksessa koko luokkaa [opiskelija, opettaja, tentti, suoritus, kurssi, opintojakso] samoja ominaisuuksia omaavien olioiden luokka sovelluksen kannalta merkityksellinen voi sisältää ominaisuuksia kuvaavia attribuutteja ja toimintoja kuvaavia metodeja» esimerkiksi: asiakas, tuote (konkreettisia reaalimaailman olioita); aikataulu, suunnitelma (abstrakteja reaalimaailman olioita) olio (luokan ilmentymä) on yksittäinen luokan edustaja konkreettinen luokkaan kuuluva olio» esimerkiksi: asiakas - Jaakkola Hannu Luokkakaaviot 22

Luokkakaavion komponentit (2) Assosiaatioluokka Opiskelija nimi op.nro osoite ilmoittaudu( ) 0..* suoritus arvosana ov-määrä pvm osallistuu 1..* 0..* suorittaa kurssi kurssitunnus periodit lukukausi 1 kuuluu 0..* 0..* tentti 0..* 1 opintojakso kuvaus opettaja nimi osoite henkilönro Luokkakaaviot 23 0..* <kuvaa luennoi riippuvuusviiva (ei lukumääräsuhdetta!) 0..1 Huom! Huom! kuusi kuusi luokkaa, luokkaa, suhteellisen suhteellisen suuri suuri tietojärjestelmä tietojärjestelmä Järjestelmän Järjestelmän tarkoitus tarkoitus ja ja tavoitteet: tavoitteet: KURREK-järjestelmä KURREK-järjestelmä sisältää sisältää kuvaukset kuvaukset TTKK:n TTKK:n opintojaksoista, opintojaksoista, opettajista opettajista ja ja opintosuorituksista. opintosuorituksista. Järjestelmä Järjestelmä tuottaa tuottaa kurssien kurssien osallistujalistoja, osallistujalistoja, tenttien tenttien tuloslistoja tuloslistoja ja ja opintosuoritusrekisteriotteita. opintosuoritusrekisteriotteita. Opettajat Opettajat kirjaavat kirjaavat järjestelmän järjestelmän avulla avulla opintosuorituksen opintosuorituksen rekisteriin. rekisteriin. Opiskelijat Opiskelijat ilmoittautuvat ilmoittautuvat järjestelmän järjestelmän avulla avulla kursseille kursseille ja ja voivat voivat tutkia tutkia omia omia suoritustietojaan. suoritustietojaan.

Luokkakaavion komponentit (3) yhteys edustaa luokkien välistä riippuvuutta [osallistuu, suorittaa, kuuluu, luennoi] yhteys on yleensä kaksisuuntainen; yksisuuntaisuus voidaan osoittaa suuntaa kuvaavalla nuolenkärjellä (kurssi - opiskelija) yhteyden kuvaukseen voi liittyä suunta (opintojakso-kurssi) yhteyteen voi liittyä tarkentava rooli (tarvittaessa molempiin päihin; ks. on esimies jäljempänä) yhteyteen voi liittyä lukumääräsuhde (ks. jäljempänä) yhteys voi olla myös useamman kuin kahden käsitteen välinen (ei ole suositeltavaa; kuvaus on purettavissa kahden välisiksi yhteyksiksi) myös muunlaisia yhteyksiä: kooste, riippuvuus, muodoste, erikoistaminen,... [tarkastellaan esimerkkien avulla jäljempänä] linkki on todellinen yhteys (ilmentymä) kahden olion välillä Luokkakaaviot 24

Luokkien etsintä järjestelmään sisältyvät luokat ja yhteydet löytyvät määrittelyn yhteydessä tarkasteltaessa järjestelmän toimintaa Hannu Jaakkola luennoi OTP-kurssin (opettaja) (yhteys) (kurssi) tässä: predikaatti kuvaa yhteyttä ja substantiivi luokkaa Luokkakaaviot 25

Attribuutit attribuutit: luokkaa kuvaavat ominaisuudet (arvot muodostavat luokan (olion) tilan) nimi, opiskelijanumero, osoite, puhelinnumero,. attribuuttien sijoittelu luokkiin ei ole selvää esim. opintoviikot (voi olla kurssi tai opintojakso) attribuutit eivät saa olla toistuvia attribuuttien sijoittelu luokkiin saattaa vaikuttaa myös kaavion rakenteeseen edellä tarvitaan assosiatiivinen luokka suoritus (attribuutit arvosana, suorituspäivä), koska sen attribuutteja ei ole mahdollista sijoittaa yhteyden luokkiin (assosiatiiviluokka)» attribuutit liittyvät tässä tapauksessa yhteyden olemassaoloon eli niitä ei ole (tai niillä ei ole arvoa) jos yhteyttä ei ole olemassa Luokkakaaviot 26

Lukumääräsuhteet yhteyden luonnetta kuvaavat lukumääräsuhteet 1-1 (yksi yhteen): jokaista oliota A vastaa vain yksi olio B ja päinvastoin 1-N (yksi moneen): jokaista oliota A vastaa monta oliota B ja oliota B vastaa täsmälleen 1 olio A N-M (monta moneen) jokaista oliota A vastaa monta oliota B ja päinvastoin lukumääräsuhteen lukumääräalue (kardinaliteetti) voi olla mm. 1 täsmälleen yksi 0..1 nolla tai yksi 1..* monta, vähintään 1 0..* monta, ei välttämättä yhtään... Luokkakaaviot 27

lukumääräsuhteet lukumääräsuhteet kaaviossa esitetään todellista tilannetta kuvaavat ala- ja ylärajat vaikuttaa tietokannan rakenteeseen!» huolehdittava siitä, että lukumääräsuhde on oikea» korjaaminen (etenkin monimutkaisempaan suuntaan) on tietokannan rakenteellisten ratkaisuiden kiinnittämisen jälkeen vaikeaa» suhde 1 suhteeksi N - mitä vaikuttaa tietokannan rakenteessa?) Luokkakaaviot 28

lukumääräsuhteet Lukumääräsuhteen vaikutus tietorakenteen toteutukseen aina yksi kurssi opettaja kurssi opettaja opettaja kurssi kurssi1 kurssi2 kurssi3 nolla tai yksi kurssia nolla... monta kurssia (lukumääräsuhteen vaikutus toteutukseen: tietorakenne ja käsittelytapa muuttuu) Luokkakaaviot 29

lukumääräsuhteet Opiskelija nimi op.nro osoite ilmoittaudu() 0..* kurssi osallistuu kurssitunnus periodit 1..* 0..* lukukausi suorittaa 1 kuuluu 0..* 0..* tentti 0..* 1 0..* <kuvaa opintojakso kuvaus luennoi opettaja 0..1 nimi osoite henkilönro suoritus arvosana ov-määrä pvm mitä edellinen kuvaus kertoo kuvausta vastaavasta reaalimaailmasta? kurssilla on vähintään yksi osallistuja opiskelija osallistuu nollaan tai useampaan kurssiin kurssi vastaa täsmälleen yhtä tiettyä opintojaksoa kaaviota voidaan testata sovittamalla siihen todellisia tapauksia Luokkakaaviot 30

Luokkakaavio ja tietokantarakenne käsitekaavionäkökulma luokkakaavio vastaa perinteistä käsitekaaviota» luokka ~ käsite käsitekaavio kuvaa relaatiotietokannan rakennetta (yhteyksien normalisoinnin jälkeen)» käsitteet (luokat) vastaavat tauluja» attribuutit vastaavat taulun sarakkeita» yhteydet vastaavat viiteavaimien avulla rakentuvia liityntöjä taulujen välillä» metodit vastaavat toimintokuvauksessa esiintyviä operaatioita automaattinen tietokantakuvauksen generointi käsitekaaviosta (luokkakaaviosta) Luokkakaaviot 31

Rakenneominaisuudet luokkakaaviot ovat kehittyneet osana oliotekniikoiden kypsymistä; oliopiirteitä ovat mm. yleistys / erikoistaminen koostuminen / komponenttius rajapintaoperaatiot» interface-rakenteet yleistys / erikoistaminen - periytymismekanismi luokat poikkeavat toisistaan vain muutaman attribuutin osalta» yhteiset piirteet isäluokan (yliluokan) tasolla» erikoistetut piirteet lapsiluokassa (aliluokassa)» ylimäärittely virtuaalimetodit: mahdollistaa suunnittelutason joustavat ratkaisut ja pakottaa toteutuksen noudattamaan sovittua rajapintaa kun luokkaa vastaava ilmentymä tietojärjestelmässä syntyy, se ei voi elinaikanaan muuttua toiseksi alityypiksi (ks. seuraava kuva) Luokkakaaviot 32

Yleistys, erikoistaminen, periytyminen yliluokka on abstrakti luokka, jota vastaavaa oliota ei tietojärjestelmässä ole todelliset oliot (ilmentymät) kuuluvat johonkin aliluokkaan (koko elinaikansa) aliluokka perii yliluokan ominaisuudet (attribuutit ja metodit) ylimäärittely voi uudelleenmääritellä perityn ominaisuuden aliluokan tasolla erikoistamismekanismi mahdollistaa luokan käyttämisen kehitystyössä, vaikka sen tarkaa sisältöä ei tunneta ja se tarkentuu vasta sunnittelutyön edetessä erikoistaminen ja ylimäärittely eivät muuta yliluokan tasolla sovittua rajapintasopimusta yliluokan ominaisuudet ovat suunnittelutyössä käytetettävissä vaikka lopullista aliluokan rakennetta ei kaikkien ykstyiskohtien osalta tunneta myöhemminb määräytyviä yksityiskohtia ei luonnollisesti voi käyttää (ennekuin ne tunnetaan) Luokkakaaviot 33

yleistys, erikoistaminen, periytyminen H-auto a L-auto e c f d g b K-auto Auto a,b,c,d,e,f,g Iso Iso massiivinen massiivinen luokka luokka Kaksi Kaksi ratkaisua: ratkaisua: yksi yksi luokka, luokka, jossa jossa on on kaikkien kaikkien kolmen kolmen erityyppisen erityyppisen olion olion ominaisuudet ominaisuudet TAI TAI erikoistamisrakenne, erikoistamisrakenne, jossa jossa on on yhteiset yhteiset (ja (ja mahdollisesti mahdollisesti erikoistettavat) erikoistettavat) ominaisuudet ominaisuudet erikoistettujen erikoistettujen ominaisuuksien ominaisuuksien sijaitessa sijaitessa aliluokissa. aliluokissa. Tarve Tarve ratkaisee. ratkaisee. Tehottomuus! Tehottomuus! H-auto a L-auto e c f d g b K-auto d periytyy periytyy a,b,c a,b,c luokkaspesifejä luokkaspesifejä e,f,g e,f,g ylimääritelty ylimääritelty (yksi (yksi tarpeeton!) tarpeeton!) H-auto d, a, e,f(,g) Auto d, e,f,g K-auto d, b, f,g(,e) L-auto d, c e,g(,f) Luokkakaaviot 34

Fyysinen ilmentymä vs. looginen rakenne Kun Kun luokkaa luokkaa vastaava vastaava olio olio syntyy syntyy tietojärjestelmässä, tietojärjestelmässä, määräytyy määräytyy sen sen tyyppi tyyppi (lapsiluokan (lapsiluokan tasolla). tasolla). Olio Olio edustaa edustaa tätä tätä luokkaa luokkaa koko koko olemassaolonsa olemassaolonsa ajan ajan ei ei siis siis voi voi muuttua muuttua toisen toisen lapsiluokan lapsiluokan jäseneksi jäseneksi ( henkilöautosta ( henkilöautosta ei ei voi voi tulla tulla kuorma-autoa ). kuorma-autoa ). Luokkakaaviot 35

Yleistys / erikoistaminen: esimerkki tili tilinro saldo otto() pano() saldokysely() tili tilinro saldo otto() pano() saldokysely() 1 {xor} 1 luotollinen tili luottoraja 0..1 0..1 käyttötili luotollinen tili luottoraja otto() käyttötili otto() rajoite TAI: tilinro saldo tili otto() pano() saldokysely() luotollinen tili luottoraja käyttötili otto() Luokkakaaviot 36

Yleistys / erikoistaminen: esimerkki luotollinen tili tilinro saldo luottoraja otto() pano() saldokysely() TAI käyttötili tilinro saldo otto() pano() saldokysely() Edellisestä luokkakaaviosta realisoituvat luokat luokat Luokkakaaviot 37

Periytyminen aliluokka perii yliluokan attribuutit ja operaatiot aliluokka voi määritellä myös omia attribuuttejaan ja operaatioitaan myös ylimäärittely (attribuutti tai operaatio määritellään uudelleen aliluokssa) on mahdollinen käytetään periytymiseen pohjautuvassa uudelleenkäytössä) mahdollistaa suunnittelutason joustavat ratkaisut ja pakottaa toteutuksen noudattamaan sovittua rajapintaa» virtuaalifunktiot» joustavuus, uudelleenkäyttö Luokkakaaviot 38

Koostuminen / komponentti(us) koostumisella ilmaistaan luokan olevan toisen komponentti (tai päinvastoin) olion kiinteä riippuvuus toisesta osana koosterakennetta ilmaistaan muodosteen (composition) avulla koosteeseen kuuluvien olioiden välillä on elinikäriippuvuus kuvataan tummennetulla koostesymbolilla komponentti voi olla muodostesuhteessa vain yhteen isäntäolioon kerrallaan Luokkakaaviot 39

Periytyminen ja koostuminen: esimerkki korttikasa kortti erikoistaminen sijaintipöydällä lisääpäälle() otaalta() otapäältä() Kooste Kooste 0..* arvo maa kuvapuolinäkyvissä käännä() yleistäminen pöytäpakka käännäpäältä() otaalta() käsipakka sekoita() käsi korttejaaluksi lajittele() Pöytäpakka, Pöytäpakka, käsipakka käsipakka ja ja käsi käsi ovat ovat (erikoistettuja) (erikoistettuja) korttikasoja. korttikasoja. Korttikasa Korttikasa koostuu koostuu korteista korteista (0 (0... n). n). Luokkakaaviot 40

periytyminen ja koostuminen: esimerkki pöytäpakka otapäältä() lisääpäälle() käännäpäältä() otaalta() 0..* kortti arvo maa kuvapuolinäkyvissä käännä() Yksi Yksi edellisestä edellisestä kuvauksesta kuvauksesta realisoituva realisoituva luokka luokka on on pöytäpakka, pöytäpakka, joka joka perii perii osan osan ominaisuuksistaan, ominaisuuksistaan, ylimäärittelee ylimäärittelee osan osan ja ja määrittelee määrittelee joitain joitain omia omia ominaisuuksiaan. ominaisuuksiaan. Luokkakaaviot 41

Muodoste: esimerkki yritys osasto henkilö 0..* 1..* Yritys Yritys muodostuu muodostuu osastoista osastoista (0..n). (0..n). Osastoa Osastoa ei ei ole ole olemassa olemassa jos jos ei ei ole ole yritystä. yritystä. Osasto Osasto koostuu koostuu henkilöistä, henkilöistä, mutta mutta voi voi olla olla olemassa olemassa vaikka vaikka siihen siihen ei ei olekaan olekaan liittyneenä liittyneenä yhtään yhtään henkilöä. henkilöä. Luokkakaaviot 42

Rajapintojen kuvaaminen rajapintojen suunnittelu on yksi ohjelmistosuunnittelun keskeisimpiä tehtäviä (moduulirakenne, kotelointi) luokkien operaatiot muodostuvat vasta suunnitteluvaiheessa, alustava luokkarakenne on määrittelyn tulos (eriaikainen ratkaisun sitominen) tämän takia rajapintoja on tarkoituksenmukaista käsitellä erillään niiden toteutuksesta rajapinta määritellään luokkana, joka sisältää rajapinnan operaatioiden määrittelyt nämä periytetään (realization; toteutus) rajapinnat toteuttaviin luokkiin mekanismi mahdollistaa rajapinnan käytön suunnittelussa, vaikka rajapintaa ei ole määritelty yksi luokka voi toteuttaa useita rajapintoja Luokkakaaviot 43

Rajapinta, toteutussuhde: notaatio ja esimerkki rajapinta realization <<Interface>> varoitin varoita() veturi varoita() void kaynnista() { while (1) {... if (kattilapaine > maxpaine) { vptr->varoita("kohta pamahtaa") }... <<Interface>> ohjaus kaynnista() sammuta() asetanopeus() <<uses>> <<thread>> höyrykone kaynnista() sammuta() asetanopeus() <<Interface>> huolto lisäävettä() poistatuhka() <<thread>> polttomoottori realization rajapinta Kaikkien Kaikkien moottoreiden moottoreiden (polttomoottori, (polttomoottori, höyrykone, höyrykone, ) ) on on toteutettava toteutettava rajapinta rajapinta ohjaus. ohjaus. Kaikkien Kaikkien höyrykonetta höyrykonetta käyttävien käyttävien laitteiden laitteiden on on toteutettava(<<uses>>) rajapinta rajapinta varoitin varoitin (riippuvuus; (riippuvuus; tarjoaa tarjoaa operaation, operaation, jolla jolla varoitetaan varoitetaan liian liian korkeasta korkeasta höyrynpaineesta). höyrynpaineesta). Rajapintaluokat Rajapintaluokat periytetään periytetään rajapinnat rajapinnat toteuttaviin toteuttaviin luokkiin luokkiin (realization). (realization). Yksi Yksi luokka luokka voi voi toteuttaa toteuttaa useita useita eri eri rajapintoja rajapintoja (ks. (ks. höyrykone). höyrykone). Luokkakaaviot 44

Stereotyypit ja ikonit stereotyypit esitetään kaksoisväkästen (guillements) välissä toimivat komponenttia täsmentävänä lisämääreenä voivat esiintyä missä useissa eri komponenttityypeissä sekä yhteyksissä standardeja: <<interface>>, <<thread>>, <<uses>> voidaan määritellä itse lisää ikonit korvaa tiettyä stereotyyppiä kuvaavan luokkasymbolin ja stereotyyppimääreen kuvaustekniikassa on valmiita ikoneita; käyttäjä voi laajentaa menetelmää omilla ikoneilla Luokkakaaviot 45

Rajapinnat, ikonit: esimerkki Rajapinta, Rajapinta, supistettu supistettu muoto. muoto. Veturi Veturi toteuttaa toteuttaa rajapinnan rajapinnan varoitin. varoitin. varoitin Moottori Moottori toteuttaa toteuttaa (käyttää) (käyttää) rajapinnan rajapinnan varoitin varoitin Veturit Mootorit ohjaus Kaikki Kaikki moottorit moottorit toteuttavat toteuttavat rajapinnan rajapinnan ohjaus ohjaus Luokkakaaviot 46

Pakkaukset pakkaus on väline mallin elementtein ryhmittelyyn sisältää luokkia, toisia pakkauksia, komponentteja, (kuvauksen tarpeen mukaan) voidaan käyttää myös käyttötapausten ryhmittelyyn rajapintoja voidaan liittää luokkiin ja komponentteihin rajapintaikoni pakkauksessa: pakkauksen sisällä on luokkia tai kopmponentteja, jotka toteuttavat rajapinnan Luokkakaaviot 47

Kaavioiden ilmaisuvoima kaavion oikeellisuutta voi testata todellisilla tilanteilla ja kysymyksillä, joihin sen pitäisi kyetä sopia (tilanteet todellisesta ympäristöstä; oliot ja linkit) ilmaisuvoima ei aina ole riittävä sisältää rakenteellista väljyyttä rajoitukset mahdollistavat tiukentamisen» esim. edellä tili voi olla samanaikaisesti luotollinen ja käyttötili mikäli tätä mahdollisuutta ei rajoiteta erillisellä lisämääreellä (tekstimuotoinen selitys) kaikkien sallittujen (todellisuudessa esiintyvien) tilanteiden on oltava kaaviossa mukana Luokkakaaviot 48

kaavioiden ilmaisuvoima 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? piirtämisessä ero luokka ja olio» olio = luokkasymboli, jossa ilmentymän identifikaatio ja luokan nimi alleviivataan Luokkakaaviot 49

kaavioiden ilmaisuvoima henkilö nimi osoite puh autonmerkki vuosimalli rekisterinumero 0..1 pomo Henkilö ei saa olla oma esimiehensä esimies Ahto Simakuutio : henkilö pomo jaospäällikkö : vakanssi konsultti : vakanssi Aikon Oyj : yritys alainen 0..* työskentelee 0..* alainen vakanssi Teemu Teekkari : henkilö testaaja : vakanssi 0..* yritys Henkilö Henkilö työskentelee työskentelee yrityksessä yrityksessä ja ja (henkilö) (henkilö) on on pomona pomona tietyille tietyille vakansseille. vakansseille. Kysymys 1: missä yrityksissä A.S. on töissä? Kysymys 2: kuka on T.T.:n esimies, kun hän on Aikonilla työssä? Kysymys 3: mikä on A.S.:n vakanssi näissä työsuhteissa EI: Kysymys 4: mikä on T.T.:n esimehen titteli kohdan 2 kysymyksessä. Luokkakaaviot 50

kaavioiden ilmaisuvoima henkilö nimi osoite puh autonmerkki vuosimalli rekisterinumero Ahto Simakuutio : henkilö jaospäällikkö : vakanssi pomo Aikon Oyj : yritys 0..* työskentelee 0..* yritys vakanssi pomo 0..1 alainen 0..* esimies Teemu Teekkari : henkilö konsultti : vakanssi alainen testaaja : vakanssi Henkilö Henkilö työskentelee työskentelee yrityksessä yrityksessä Työsuhteeseen Työsuhteeseen liittyy liittyy vakanssi. vakanssi. Vakanssien Vakanssien välillä välillä on on määritelty määritelty esimies-alainen esimies-alainen suhde. suhde. Kysymys 4: mikä on T.T.:n esimehen titteli kohdan 2 kysymyksessä. Luokkakaaviot 51

Kaavioiden laatiminen 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 Luokkakaaviot 52

kaavioiden laatiminen kaavio kertoo, millaiset tilanteet ovat mahdollisia kaavio ohjaa kysymään oikeita kysymyksiä yleisiä periaatteita luokan jäsenillä on aina samat attribuutit ja sama käyttäytyminen (metodit) luokkajako perustuu pysyviin ominaisuuksiin ei esimerkiksi olion väliaikaiseen tilaan periytyminen on is-a -suhde: kaikkialla, missä on mielekästä käyttää isäluokan oliota, pitää olla mielekästä käyttää lapsiluokkien olioita. Luokkakaaviot 53

kaavioiden laatiminen menettely: laaditaan alustava kaavio : oma asiantuntemus, haastattelut,... kaavioiden analysointi» luokkien ja yhteyksien poistaminen» luokkien ja yhteyksien lisääminen» lukumääräsuhteiden tarkennus» attribuuttien (ja metodien) sijoittelu luokkiin kaavion testaaminen ja kokeilu erilaisilla esimerkeillä muokkaus kokeilun tulosten perusteella varautuminen tulevaisuuden muutoksiin attribuuttien sijoittelu tilankäytön kannalta epäedulliseen kohteeseen lukumääräsuhteen yläraja 1 korvataan ylärajalla * Luokkakaaviot 54

Kaavioiden muokkaaminen: esimerkki Vaatimus: luokissa ei saa olla toistuvia attribuutteja Toimenpide: lisätään uusi luokka opiskelija suorittaa tentti tentti suoritus toistuvat toistuvatattribuutit attribuutit omaan omaanluokkaan Luokkakaaviot 55

kaavioiden muokkaaminen: esimerkki toistuvat toistuvatattribuutit attribuutit omaan omaanluokkaan työntekijä lapsi työntekijä on huoltaja > lapsi» Vaatimus: luokissa ei saa olla toistuvia attribuutteja» Toimenpide: lisätään uusi luokka Luokkakaaviot 56

kaavioiden muokkaaminen tarpeetonta redundanssia (tiedon toistuminen monessa paikassa) ei saa esiintyä eikä tieto saa olla pääteltävissä muista tiedoista; redundanssi tieto poistetaan ja korvataan luokalla ja yhteyksillä (luokka suoritus opintosuoritusrekisteriä koskevassa esimerkissä) luokalla on vain yksi attribuutti (voidaan yhdistää muuhun luokkaan) Luokkakaaviot 57

kaavioiden muokkaaminen: esimerkki Tilanne: osa attribuuteista on olemassa vain osalle luokan ilmentymistä Muutos: lisätään uusi luokka, joka sisältää nämä attribuutit, ja yhteys alkuperäisestä uuteen henkilö henkilö autonrno henkilö henkilö omistaa auto auto rno rno Luokkakaaviot 58

kaavioiden muokkaaminen: esimerkki Tilanne: kahdella luokalla on yhteisiä attribuutteja Muutos: lisätään uusi luokka, joka sisältää nämä attribuutit ja yhteys alkuperäisestä uuteen saattaa olla ratkaistavissa myös yleistys/erikoistamis -mekanismin avulla - huom! ilmentymän tyypin muuttumattomuus) henkilö henkilö opiskelija opettaja opiskelija 1 0..1 1 0..1 opettaja Luokkakaaviot 59

kaavioiden muokkaaminen: esimerkki henkilö Vaihtoehtoiset Vaihtoehtoiset tavat tavat opettajan opettajan ja ja opiskelijan opiskelijan luokkakaavioksi. luokkakaavioksi. opiskelija opettaja opettavaopiskelija henkilö Eo. Eo. kaavioiden kaavioiden mahdollistamat mahdollistamat todellisten todellisten olioiden olioiden rakenteet rakenteet ovat ovat erilaisia. erilaisia. Minkälaisia? Minkälaisia? opiskelija 1 0..1 1 0..1 opettaja Luokkakaaviot 60

kaavioiden muokkaaminen: esimerkki Tilanne: osa luokan attribuuteista on olemassa vain osan ilmentymän eliniästä Muutos: uusi luokka asiakas lainatiedot asiakas omaa lainatiedot Luokkakaaviot 61

kaavioiden muokkaaminen: esimerkki Tilanne:luokkien ilmentymien elinikä on sama ja niitä yhdistää 1-1 -yhteys Muutos: luokat voidaan yhdistää opettaja 1 1 palkka määräytyy palkkaus peruste opettaja palkkausper. Luokkakaaviot 62

kaavioiden muokkaaminen: esimerkki Tilanne: yhteys on pääteltävissä toisista yhteyksistä Muutos: yhteys voidaan poistaa opiskelija? suorittaa kurssi kurssi osallistuu tentti tentti Luokkakaaviot 63

kaavioiden muokkaaminen: esimerkki Tilanne: luokassa on vain yksi olio Muutos: luokka poistetaan työntekijä on naimisissa aviopuoliso työntekijä aviopuoliso. Luokkakaaviot 64

kaavioiden muokkaaminen Laadintaa koskevista yleisperiaatteista joudutaan käytännössä toisinaan luopumaan toteutukseen liittyvistä syistä (redundanssin lisääminen, yhteyksien lisääminen, toistuvien kenttien salliminen, käsitteiden yhdistely). Tietokannan normalisointi saattaa muuttaa myös rakennetta Luokkakaaviot 65

Muita notaatioita luokkakaavioiden notaation perusta on käsitekaavioissa Chenin käsitekaaviot sisältää luokkakaavioiden perusilmaisuvoiman» käsitteet, attribuutit, yhteydet» myös yli- ja aliluokka Martinin käsitekaavio graafiset yhteysmerkinnät OMT-luokkakaavio Boochin luokkakaavio Luokkakaaviot 66

Chenin käsitekaavio Huom: lukusuuntaa kuvaava nuoli opiskelija 0:N kurssi 0:N <-kuvaa 1:1 1:N osallistuu opintojakso 0:N 1:1 0:N 0:N 0:N suorittaa tentti kuuluu luennoi 0:1 suoritus opettaja assosiatiivinen käsite (yhteyteen liittyvät attribuutit) Luokkakaaviot 67

Martinin käsitekaavio opiskelija suoritus 1:n 0:n 0:N 1:1 osallistuu kurssi kuvaa 0:N 1:1 luennoi 0:1 kuuluu tentti opintojakso opettaja opiskelija 1:N osallistuu 0:N kurssi 0:N <-kuvaa 1:1 opintojakso 0:N 1:1 0:N 0:N suorittaa tentti 0:N kuuluu luennoi 0:1 suoritus opettaja Luokkakaaviot 68

OMT-luokkakaavio Opiskelija nimi op.nro osoite 1+ osallistuu Kurssi kurssitunnus periodi lukukausi <-kuvaa Opintojakso kuvaus ilmoittaudu() kuuluu luennoi suorittaa Suoritus arvosana ov-määrä Tentti pvm Opettaja nimi osoite henkilönro Luokkakaaviot 69

Boochin luokkakaavio Opiskelija nimi op.nro osoite ilmoittaudu() osallistuu 1..n 0..n Kurssi kurssitunnus periodi lukukausi <-kuvaa 0..n 1 Opintojakso kuvaus 0..n kuuluu 0..n luennoi suorittaa Suoritus 0..n Tentti pvm 0..1 Opettaja nimi osoite henkilönro arvosana ov-määrä Luokkakaaviot 70

Esimerkki: kirjasto Kirjaan liittyy nimi, kirjoittajat, ISBN-numero, kustantaja, painovuosi, sivumäärä. 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ä luokkakaavio. Luokkakaaviot 71

esimerkki: kirjasto Lainaus Kirja 0..n lainaus edustaa 0..n 1 Nimike 0..n k irjoittaa Tarpeellisuus? Tarpeellisuus? Käsittelytarve Käsittelytarve ratkaisee! ratkaisee! 0..1 Lainaaja 0..1 Tekijä Luokkakaaviot 72

Esimerkki: maalausrobotti. Tarkastellaan maalausrobotin tuotannonohjausta. Robotilla maalataan useita eri tuotteita. Asiakas tilaa tuotteita ja määrää tuotteiden värityksen. Maalarit tallettavat järjestelmään maalausohjelmia, joista asiakas valitsee värityksen. Järjestelmä pitää kirjaa myös tilausten toteutumisesta. Luokkakaaviot 73

esimerkki: maalausrobotti Tarpeellisuus? Tarpeellisuus? Käsittelytarve Käsittelytarve ratkaisee! ratkaisee! Maalari Robotti maalaa Tuote 1 1 0..n Kaavion Kaavion luokkien luokkien (käsitteiden) (käsitteiden) relevanssi relevanssi riippuu riippuu tarpeesta. tarpeesta. Olennaisen Olennaisen erottaminen erottaminen epäolennaisesta: epäolennaisesta: esim. esim. tilausjärjestelmän tilausjärjestelmän kannalta kannalta robotti robotti ja ja malari malari ovat ovat tarpeettomia; tarpeettomia; väritys väritys voi voi olla olla osa osa tuotteen tuotteen ominaisuutta. ominaisuutta. Laatujärjestelmän Laatujärjestelmän kannalta kannalta robotti robotti ja ja maalari maalari taas taas voivat voivat olla olla tarpeellisia tarpeellisia tietoja. tietoja. 0..n tilaa 1 Asiakas tallettaa 0..n Väritysoh jelma Tarpeellisuus? Tarpeellisuus? Käsittelytarve Käsittelytarve ratkaisee! ratkaisee! Luokkakaaviot 74

Kertauskysymykset Mitä eroa on koosteella ja aidolla koosteella (muodoste). Mitä tarkoitetaan aktiivisella oliolla ja miten se esitetään luokkakaaviossa. Järjestelmän kuvaustyössä osa kuvauksista kuvaa esimerkinomaisesti reaalimaailmassa tapahtuvia toimintoja tai sen rakenteita, osa taas mallintamisen näkökulmasta antaa kattavan kuvauksen joko mallinnettavan kohteen rakenteesta tai sen käyttäytymisestä. Mikä on tällaisten esimerkki-kuvausten rooli laadittaessa järjestelmän kattavaa kuvausta. Mitkä kuvausmenetelmät ovat luonnehdiottavissa esimerkkikuvauksiksi ja mitkä kattaviksi kuvauksiksi. Minkälaisen prosessin tuloksena rakennetta / toimintaa koskevat kattavat kuvaukset saadaan. Kuvaa luokkakavioiden, tapahtumasekvenssikavioiden ja tilakaavioiden välinen yhteys tietojärjestelmän kuvaamisessa. Mitä eroa on yhteydellä ja linkillä. Selitä kurssimateriaalissa oleva kurssien suoritusten hallintaa kuvaava luokkakaavio. Mitä kuvaa luokkakaavion yhteysviivassa oleva lukumääräsuhde. Mitä kuvaa oliokavion yhteysviivassa oleva lukumääräsuhde. Millä eri keinoilla voi luokkakaaviokuvauksessa tarkentaa yhteyden luonnetta. Mitä tarkoitetaan luokkakaaviossa yleistämisellä ja erikoistamisella. Mitä tarkoitetaan periytymisellä. Mitä periytymismekanismissa tarkoitetaan ylimäärittelyllä. Miksi tällaista tarvitaan. Periytyminen on yksi uudelleenkäyttöä tukeva ratkaisu. Mitä hyötyä periytymismekanismin käyttömahdollisuudesta on uudelleenkäytön näkökulmasta. Kurssimateriaalissa on esitetty pankkitilien eri muotoja koskeva luokkakaavio. Toisessa kaaviossa asia ilmaistaan perinteisen yhteysrakenteen muodossa ja toisessa hyödyntämällä erikoistamismekanismia. Mitä eroa loogisesta näkökulmasta on näillä ilmaisuilla kun tarkastellaan asiaa syntyvän tietokantaratkaisun näkökulmasta. Mikä on virtuaalifunktio (-metodi). Selitä kurssimaterialissa oleva korttikasan rakennetta kuvaava luokkakaavio. Luokkakaaviot 75

kertauskysymykset Kuvaa erillisinä luokkakuvauksina kaikki em. luokkakaavioista synnytettävissä olevat luokat. Mikä merkitys on rajapintakuvauksella UMLluokkakaavioissa. Mihin niitä tarvitaan. Selitä kurssimateriaaliin sisältyvä rajapintoja käsittelevä luokkakaavio (juna, mottorit,...). Miksi rajapintakuvausten käyttö on tässä yhteydessä tarpeellista. Mitä ovat stereotyypit ja ikonit UMLssä. Mihin niitä voi käyttää. Selitä kurssimateriaalissa olevan kahden työsuhteen ja esimiesaseman kuvaamiseen liittyvän luokkakaavion ilmaisuvoiman eroavuudet. KUrssimateriaalissa esitellään kolme eri luokkakaaviota opiskelijan ja opettajan kuvaamiseksi tietojärjestelmässä. Kuvaustapoina on yhteysrakenteen kautta tehtävä määrittely, periytymismekanismilla tehty määrittely ja moniperitymistä hyödyntävä malli. Mitä eroa näillä kuvauksilla on tietojärjestelmään syntyvien olioiden näkökulmasta. Anna luokkakaavio sairaalan henkilökunta- ja potilasrekisterisovellusta varten. Harjoitustehtäviä kirjasta Koskimies, Oliokirja. Kurssimateriaalin (tämän osion) lopussa on käsitelty yksinkertaisen kirjastojärjestelmän toimintaa esimerkkinä luokkakaavion laatimisesta. Selitä järjestelmän luokkakaavioratkaisu ottaen erityisesti kantaa siihen, minkälaisia ilmaisumahdollisuuksia eri kaaviovaihtoehdot antavat. Kurssimateriaalin (tämän osion) lopussa on käsitelty maalausrobotin avulla maalattavien tuotteiden tilausjärjestelmän toimintaa. Selitä järjestelmän luokkakaavioratkaisu ottaen erityisesti kantaa siihen, minkälaisia ilmaisumahdollisuuksia eri kaaviovaihtoehdot antavat. Anna luokkakaavio, jossa on vähintään 10 suhdetta (assosiaatio, kooste, yleistys/erikoistus) seuraavien luokkien kesken. Nimeä assosiaatiot. Voit tarvittaessa lisätä muita luokkia. Luokat: koulu, pelikenttä, rehtori, johtokunta, luokkahuone, kirja, oppilas, opettaja, kahvila, tietokone, pöytä, tuoli, ovi, luokanvalvoja, järjestäjä Luokkakaaviot 76

kertauskysymykset Anna aterioivien filosofien ongelman luokkakaavio. Ongelman asetelma on seuraava: Viisi filosofia istuu pyöreässä pöydässä, jokaisessa välissä on yksi haarukka, jonka vieressä olevat filosofit jakavat. Kukin filosofi tarvitsee kahta haarukkaa syödäkseen: jokainen haarukka on siten joko pöydällä tai filosofin kädessä. Filosofi joko ajattelee tai syö. Anna luokkakaavio kirjaston tiedonhallintajärjestelmälle. Kirjastoon sisältyvät mm. seuraavat käsitteet: kirja, lehti, cd-levy, videonauha, lainattava teos, ei-lainattava teos, lainaaja-asiakas, lainauskortin numero, osoite, osasto, hylly, tekijä(t), kirjan nimi, julkaisupaikka- ja vuosi, lainausaika, lainauspaikka, kirjastoauto, kirjastotalo. Järjestelmässä on pystyttävä toteuttamaan mm. kyselyt: "kenellä on lainassa kohde x?", "missä on sijoitettuna kohde x?", "mitä kohteita on lainassa henkilöllä x?", "koska kohde x vapautuu lainasta?". Voit täydentää tehtävää tarpeen mukaan. Luokkakaaviot 77