Systeemityö 2 Olioajattelu, luokkakaavio

Slides:



Advertisements
Samankaltaiset esitykset
Tuloksellinen Java-ohjelmointi Luku 3 Luokkien käyttäminen
Advertisements

18. Abstraktit tietotyypit
Rajapintaluokat Rajapintaluokka luettelee metodit, joille tulee löytyä toteutus asianomaisen rajapinnan toteuttavista luokista. Rajapintaluokka on siis.
– Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä.
19. Unified Modeling Language (UML)
ER-mallista relaatiomalliin
Koostumussuhde Jukka Juslin © Jukka Juslin.
Ohjelmiston tekninen suunnittelu
Olio-ohjelmoinnin perusteet luento 3: Muuttujista ja funktioista Sami Jantunen LTY/Tietotekniikan osasto.
Osion kaksi kertaus Jukka Juslin © Jukka Juslin.
6. Metodit.
@ Leena Lahtinen Helia TIETO JA TIETOKONEOHJELMA  TIETOKONEOHJELMA KÄSITTELEE TIETOJA  TIETOJA VOIDAAN KÄSITELLÄ OHJELMASSA VAIN SALLITUILLA.
© Jukka Harju, Viittausmuuttujat. © Jukka Harju, Viittaukset •Viittausmuuttuja sisältää tiedon siitä missä muistipaikassa olio.
Luokkien väliset koostesuhteet
Luku 5 – Tietojen hakeminen sovelluksiin
Muutamia käsitteitätMyn1 Muutamia käsitteitä •Perintä (inheritance) on luokkien välinen suhde, jossa johdettu luokka (subclass, derived class) perii kantaluokan,
Luokkakaaviot Luokkakaaviot Tekninen suunnittelu.
Tietokanta.
Tapahtumasekvenssit = Käyttötapausten realisointi
Olio-ohjelmointi. Mitä olio-ohjelmointi on ?  Pyritään mallintamaan jotain reaalimaailman kohdetta tietokoneohjelman avulla  Olio on luokan ilmentymä.
Olio-mallinnus Tietojärjestelmien suunnittelu KYAMK, Liiketalous, Kouvola Jarkko Ansamäki, 2002.
Perintä. Yleistä Olio-ohjelmoinnin menetelmä muodostaa uusia luokkia aiemmin määriteltyjen luokkien avulla Luokka saa automaattisesti käyttöönsä kaikki.
OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT. LUOKKA JAVA ohjelma koostuu luokista LUOKKA sisältää metodeja molemmat sisältävät attribuutteja eli muuttujia.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
Olio-ohjelmoinnin perusteet luento 3
Tietojärjestelmät ja Systeemisuunnittelu
Oliomallittaminen ja UML
UML-luokkakaaviot.
9. Periytyminen Javassa.
TAULUKKO YKSIULOTTEINEN TAULUKKO. TAULUKKO  Taulukon tarkoitus Ohjelmassa tarvitaan paljon samantyyppisiä samaan kohdealueeseen kuuluvia muuttujia Näitä.
TIETO JA TIETOKONEOHJELMA TIETOKONEOHJELMA KÄSITTELEE TIETOJA TIETOJA VOIDAAN KÄSITELLÄ OHJELMASSA VAIN SALLITUILLA MENETELMILLÄ.
© Jukka Harju, Jukka Juslin
1 Kertaus koetta varten oleellisista asioista Jukka Juslin.
Luokan määrittely class-määreellä tMyn1 Luokan määrittely class-määreellä Luokan määrittely tarkoittaa luokan tietojäsenten esittelyä ja jäsenfunktioiden.
UML-luokkakaaviot ja Java
Metodit – Arvotyyppi Ellei metodi palauta arvoa, sen arvotyyppi on void Tällöin ”return;”-lauseke ei ole metodissa pakollinen, vaikka sen käyttö on sallittua.
Systeemityö 2 Käyttötapauskaavio Teppo Räisänen, Principal Lecturer
Systeemityö 2 Tilakaavio – State machine diagram
Muunnos luokkakaaviosta relaatiokaavioon
4. Attribuutit 4.1. Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2.
Systeemityö 2 Vesiputousmalli Teppo Räisänen, Principal Lecturer
10. Abstrakti luokka Johdanto Abstrakti luokka (abstract class) poikkeaa konkreettisesta luokasta (ei-abstrakti luokka) siten, että siitä ei.
Johdanto Teppo Räisänen, Principal Lecturer Oulu University of Applied Sciences, School of Business and Information Management
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
Systeemityö 2 Toimintokaavio – Activity diagram
17. Kooste Kooste Kooste (aggregation) on luokkien A ja B välinen suhde, joka tarkoittaa “A on B:n osa” tai “A kuuluu B:hen”. − Koostesuhteessa.
Koostekaavio – Composite Structure Diagram Kinnula – Kellolampi - Lehtosaari.
Mallinnustavat.
Systeemityö 2 Oliokaavio Teppo Räisänen, Principal Lecturer
Jouni Juntunen Oulun seudun ammattikorkeakoulu Liiketalouden yksikkö
FunktiottMyn1 Funktiot Funktiot voidaan jakaa –Kirjastofunktioihin, jotka ovat valmiina kaikkien käytössä. Erikoisempien kirjastofunktioiden käyttöönotto.
Vesa Ollikainen & Outi Grotenfelt
XML Schema Teppo Räisänen Liiketalouden yksikkö.
11. Rajapinnat Sisällys Mitä rajapinnat ovat? Kuinka ne määritellään ja otetaan käyttöön? Moniperiytyminen rajapintojen avulla. Varoituksen.
Monimuotoinen luokka tMyn1 Monimuotoinen luokka Monimuotoinen luokka mahdollistaa saman jäsenfunktion toteutuksen monella tavalla. Tällöin puhutaan virtuaalisesta.
1 © Jukka Juslin Luokat, attribuutit ja metodit Yleistietoa: seuraavalla koulutusviikolla tarkempi käsittely.
8. Periytyminen Sisällys Mitä on periytyminen? Yksittäis- ja moniperiytyminen. Oliot ja perityt luokat. Periytymisen käyttö.
15. Ohjelmoinnin tekniikkaa
Tietojärjestelmät ja Systeemisuunnittelu
UML-luokkakaavio ● Luokkakaavio (class diagram) kuvaa järjestelmän luokkarakennetta ● Mitä luokkia on olemassa ● Minkälaisia luokat ovat ● Luokkien suhteet.
Ohjelmistotekniikan menetelmät, luokkamallin laatiminen
11. Rajapinnat.
UML-mallinnus osana tietotuotemäärittelyä
Rajapintaluokat Rajapintaluokka luettelee metodit, joille tulee löytyä toteutus asianomaisen rajapinnan toteuttavista luokista. Rajapintaluokka on siis.
8. Periytyminen.
– Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä
TIETO JA TIETOKONEOHJELMA
8. Periytyminen.
4. Luokan testaus ja käyttö olion kautta
2. Olio-ohjelmoinnin perusteita
Esityksen transkriptio:

Systeemityö 2 Olioajattelu, luokkakaavio Teppo Räisänen, Principal Lecturer Oulu University of Applied Sciences, School of Business and Information Management teppo.raisanen@oamk.fi, 050 382 6587

Olioajattelu Luokka ja olio Periytyminen Monimuotoisuus Luokkakaavio

Olioajattelu – Luokka ja olio Oliosuuntautuneen mallinnuksen tärkeimmät elementit Luokat, oliot ja niiden väliset suhteet Luokat ja oliot mallintavat kuvattavan järjestelmän sisältöä Luokkien väliset suhteet näyttävät, kuinka ne rakentuvat toisiinsa nähden Kun järjestelmä rakennetaan oliosuuntautuneella ohjelmointikielellä, luokat ja suhteet muuttuvat suoraan lähdekoodiksi koodigeneraattori

Olioajattelu – Luokka ja olio Olio (object) Asia, josta voidaan keskustella ja jota voidaan käsitellä On olemassa oikeassa maailmassa Voi olla osa mitä tahansa järjestelmää, kuten konetta, organisaatiota tai yritystä Luokka (class) Kuvaus olion tyypistä Kuvailee yhden tyypin olioiden ominaisuudet ja käyttäytymisen Kaikki oliot ovat jonkun luokan ilmentymiä (instances) Olioita luodaan luokista, jolloin ne ovat luokkansa mukaisia ilmentymiä

Esimerkki – Luokka ja olio Opettaja T. Räisänen Luokka: opettaja Olio: T. Räisänen Oppilas S. Virtanen Luokka: oppilas Olio: S. Virtanen Oulun seudun ammattikorkeakoulu Luokka: koulu (ammattikorkeakoulu) Olio: OAMK

Luokkakaavio Luokkakaavio on staattinen mallinnustyyppi Kuvaa järjestelmän staattisen eli pysyvän rakenteen luokkien ja niiden välisten suhteiden avulla Luokkakaavion yksi tehtävä on määrittää perusta muille kaavioille Esimerkiksi olioiden tiloja ja olioiden välistä yhteistyötä kuvaaville dynaamisille kaavioille työskentelee opiskelee Opettaja Koulu Oppilas

Luokkakaavio Luokkakaaviota varten luokat on tunnistettava ja kuvattava Luokkakaavio kuvaa sovelluksen Luokat, niiden sisällön ja luokkien väliset suhteet Luokkakaavio on oliomenetelmien keskeisin kuvaustapa, jonka varaan muut oliomallinnuksen kuvaukset pitkälti rakentuvat Oliokaavio Luokkakaavion muunnos, jossa kuvataan olioita

Luokkakaavio Rakennus Huone Huonekalu

Luokkakaavio Rakennus Huone Huonekalu

Olioajattelu – Luokka Luokka on olion malli Sen ohjeiden mukaan luodaan ohjelmaa ajettaessa olioita Luokka on eräänlainen pohjapiirrustus Luokka määrittelee olion piirteet Luokalla on aina nimi ja yleensä attribuutteja ja metodeja

Olioajattelu – Luokka Luokka piirretään suorakulmiona, joka on jaettu kolmeen osastoon Nimiosasto Attribuuttiosasto Operaatio-osasto Nimi keskitettynä ja tummennettuna Luokan nimi johdetaan ongelma-alueelta ja on yksikäsitteinen ilman etu- tai takaliitteitä Nimi Attribuutit Operaatiot

Attribuuttiosasto Luokilla on attribuutteja, jotka kuvaavat olioiden ominaisuuksia Oikein valitut attribuutit sisältävät tiedot, jotka kuvaavat yksittäistä luokan ilmentymää ja erottavat sen muista saman luokan ilmentymistä Vain järjestelmän kannalta kiinnostavat attribuutit tulisi ottaa mukaan Attribuutin määrittelyn muodollinen syntaksi: Visibility name : type multiplicity = default { property string } Näkyvyys nimi : tietotyyppi lukumäärä = alkuarvo { ominaisuus } UML 1.5: nimi ja tietotyyppi pakollisia UML 2.0: nimi pakollinen

Esimerkki Opettaja nimi palkka ikä sotu

Attribuutti Attribuuteilla on tietotyyppi, joka kertoo minkälainen attribuutti on kyseessä Tietotyyppi voi olla mikä tahansa ohjelmointikielissä käytetty tietotyyppi Kokonaisluku (integer) Totuusarvo (boolean) Desimaaliluku (real) Piste (point) Lista (IList) Muu luokka!

Harjoitus: opiskelija-luokka Mitä attribuutteja opiskelija-luokalla pitäisi olla?

Attribuutti Attribuuteilla voi olla erilaisia näkyvyyksiä (visibility) Julkinen (public) merkitään plus-merkillä (eli +) Yksityinen (private) miinusmerki (-) Suojattu (protected) risuaita (#) Jos näkyvyyden määrittelemää merkkiä ei ole, näkyvyys on määrittämätön Työkaluilla on usein oletusarvo (esim. private) /-merkki attribuutin edessä tarkoittaa, että attribuutti voidaan laskea muista attribuuteista Esim. ikä voidaan laskea syntymäajasta

Attribuutti Attribuutilla voi olla oletusarvo, joka sijoitetaan muuttujaan samalla hetkellä, kun luokasta luodaan olio +nimi : String = ”Teppo” -ikä : int = 0 Attribuutti voi olla luokkatason attribuutti (class variable), jolloin attribuutti jaetaan kaikkien luokan olioiden kesken Luokkatason attribuutti alleviivataan Attribuutti voi myös olla arvoaluemääritys (tagged value) Esim. lasku-luokan attribuutti tila: +tila : maksamatta { maksamatta, maksettu } +siviilisaaty : naimaton { naimaton, naimisissa, eronnut, leski }

Esimerkki Opettaja Opettaja nimi palkka ikä sotu +nimi : String -palkka : double =1000 -ikä : int -sotu : String

Esimerkki public class Opettaja { public String nimi; private int palkka = 3000; private int ikä; private String sotu, }

Harjoitus: opiskelija-luokka Miettikää opiskelija-luokan attribuuteille näkyvyys, alkuarvo ja tietotyypit

Operaatio-osasto Operaatioilla Käsitellään attribuutteja Tehdään muita toimenpiteitä Operaatioita kutsutaan myös funktioiksi tai metodeiksi public int function laskePalkka(int perusPalkka, int työvuodet) { public int palkka = 0; palkka = perusPalkka + (työvuodet * 50); return (palkka); }

Operaatio-osasto Operaatiota kutsuttaessa sitä sovelletaan yhteen olioon, eli sitä kutsutaan tälle oliolle Luokan operaatiot kuvaavat mitä luokka voi tehdä

Operaatio-osasto Kun Opettaja-luokasta luodaan olio ”Teppo Räisänen”, ja tälle oliolle kutsutaan operaatiota haeSotu, saadaan tuloksena ”Teppo Räisänen”-olion sotu Opettaja nimi palkka Ikä sotu muutaPalkka haeSotu

Operaatio-osasto Luokalla voi olla myös luokkatason operaatioita Operaatioita voidaan kutsua ilman luokan oliota mutta se voi tällöin käsitellä vain luokkatason muuttujia Luokkatason operaatioilla suoritetaan yleisiä toimenpiteitä, kuten olioiden luomista ja etsimistä

Operaatio-osasto Operaation muodollinen syntaksi: näkyvyys nimi ( parametrilista ) : palautusarvotyyppi { ominaisuus } Visibility name ( parameter-list ) : return-type { property-string } Parametrilista on pilkuilla erotettu lista muodollisia parametreja määriteltynä syntaksilla: Nimi : tietotyyppi = oletusarvo Näkyvyys: + julkinen, - yksityinen Operaatiolla on oltava ainutlaatuinen muoto, eli nimen, palautusarvon ja parametrien yhdistelmä

Operaatio-osasto Opettaja nimi palkka Ikä sotu +muutaPalkka(uusiPalkka: int) +haeSotu()

Harjoitus: opiskelija-luokka Miettikää opiskelija-luokan operaatiot

UML -Luokka Henkilo Luokan nimi Luokan attribuutit Luokan operaatiot Public nimi : String asetaNimi(String) haeNimi()

Esimerkkejä

Luokkien löytäminen Luokkien löytämiseksi tarvitaan ongelma- alueen asiantuntijoita Luokat nimetään oikeassa elämässä vastaavien asioiden mukaan Luokkia voidaan etsiä esimerkiksi kysymysten avulla Onko olemassa tietoa, jota pitäisi tallentaa tai analysoida? Onko olemassa ulkoisia järjestelmiä? Mitä rooleja toimijoilla on? Onko olemassa organisaation osia, jotka liittyvät järjestelmään?

Olioajattelu – Olio Olio tallentaa kuvaamansa ja käsittelemänsä tiedot sisäisiin tietokenttiin, joita kutsutaan attribuuteiksi Attribuuttien arvojen yhdistelmiä kutsutaan olion tiloiksi Olio sisältää lisäksi joukon operaatioita, joilla voidaan käsitellä olion attribuutteja Operaatioita kutsutaan metodeiksi Olion attribuutteja ja metodeita kutsutaan olion piirteiksi Luokka määrittelee olion piirteet

Esimerkki Mustang vuosimalli väri moottori nopeus kiihdytä() jarruta()

Esimerkki Mustang Luokka vuosimalli väri moottori nopeus kiihdytä() jarruta() Olio

Esimerkki Mustang Jokaisella oliolla on -vuosimalli -väri -moottori -nopeus attribuutit. vuosimalli väri moottori nopeus kiihdytä() jarruta()

Esimerkki Mustang vuosimalli väri moottori nopeus kiihdytä() jarruta() Olio voi lisäksi -kiihdyttää -jarruttaa

Periytyminen / yleistys Periytymisellä tarkoitetaan tilannetta, jossa aliluokka perii kaikki yläluokan ominaisuudet Tärkeää koodin uudelleenkäytössä Yläluokka (superclass), alaluokka (subclass) Yläluokkaan tehdyt muutokset periytyvät alaluokkiin

Periytyminen / yleistys Mustang vuosimalli väri moottori nopeus kiihdytä() jarruta()

Periytyminen / yleistys Mustang vuosimalli väri moottori nopeus kiihdytä() jarruta() Coupe Fastback Convertible coupePerä fastbackPerä avoKatto laskeKatto() nostaKatto()

Periytyminen / yleistys Materiaali Tunnus Nimi Tila Kirja Äänite Lehti Tekijä Kustantaja Julkaisuvuosi ISBN Artisti Äänitetyyppi Julkaisuvuosi Vuosikerta Numero Sivumäärä

Periytyminen / yleistys Luokka voi olla sekä yläluokka että alaluokka Jos ohjelma pyytää parametriksi kulkuväline- luokan oliota, sille voidaan antaa parametrinä alaluokan olio function laskeMatkaKustannukset(Kulkuvaline) Arvo = laskeMatkaKustannukset (veneOlio); Arvo = laskeMatkaKustannukset (autoOlio); Arvo = laskeMatkaKustannukset (moottoriveneOlio); Arvo = laskeMatkaKustannukset (soutuveneOlio);

Harjoitus Piirtäkää luokkakaavio, jossa on luokat ihminen, mies, nainen ihminen, mies, nainen, lapsi, nisäkäs, selkärankainen

Luokkien väliset suhteet Suhteet kuvaavat luokkien välistä viestintää Neljää eri tyyppiä Assosiaatio (assocition) Kooste (composition / aggregation) Yleistys (generalization) Riippuvuus (dependency) Tarkennus (refinement) Kirjailija Kirja

Luokkien väliset suhteet Assosiaatio Yhteys kahden luokan välillä, jolloin myös luokkien olioiden välillä on yhteys Oliot tietävät toisistaan Oliot ovat yhteyksissä toisiinsa On yleensä kaksisuuntainen

Luokkien väliset suhteet Tavallinen assosiaatio Rekursiivinen assosiaatio Koostumussuhde Valitsinassosiaatio Tai-assosiaatio Järjestetty assosiaatio Kolmioassosiaatio Assosiatiivinen luokka

Tavallinen assosiaatio Yleisin assosiaatio on pelkkä yhteys luokkien välillä Piirretään yhtenäisenä viivana luokkien välille Assosiaatiolle voi antaa nimen Assosiaatio voi olla yksisuuntainen tai kaksisuuntainen Merkitään nuolella Kirjailija Kirja

Tavallinen assosiaatio Kirjailija Kirja Asiakas Tili Käyttää Tilaus Tilausrivi

Luokkien väliset suhteet Assosiaatio Kooste Riippuvuus Kirjailija Kirja Rakennus Huone Hinta Tarjous

Luokkien väliset suhteet Jaettu (aggregation) ja vahva (composition) kooste Rakennus Huone Joukkue Pelaaja

Luokkien väliset suhteet Kerrannaisuus Kuinka monta objektia esiintyy luokkien välisessä suhteessa Merkitään suhteen molempiin päihin Jos ei ole määritelty, oletusarvo on 1 Esimerkkejä 0..1 0..* 1..* 1..8 Huone Huonekalu 0..1 0..*

Harjoitus 2-3 hengen ryhmissä piirtäkää luokkakaaviot, joissa käytetään seuraavia luokkia henkilöauto, ajoneuvo, rekka-auto, linja-auto, rengas, ovi, moottori, kori opiskelija, opettaja, koulu, yksikkö, opintojakso, pakollinen, valinnainen, suuntautumisvaihtoehto

Perinnän / yleistyksen rajoitukset Päällekkäinen (overlapping) Kaikki aliluokat, jotka perivät tämän perimisen aliluokkia, voivat periä monta luokkaa Erillinen (disjoint) Aliluokkia ei saa periä yhteiseen aliluokkaan Oletus

Perinnän / yleistyksen rajoitukset Täydellinen (complete) Uusia aliluokkia ei saa tehdä Epätäydellinen (incomplete) Uusia aliluokkai voi tehdä

Abstrakti luokka Luokka, josta ei voi tehdä olioita Voidaan vain periä Nimiosastossa nimen alle {abstract} tai kirjoitetaan nimi kursiivilla Luokasta tekee abstraktin myös se, jos sillä on abstrakteja operaatioita Abstraktilla operaatiolla ei ole toteuttavaa metodia, vai muoto tunnetaan

Abstrakti luokka public abstract class Kulkuväline { public abstract function aja(); } public abstract class Vene extends Kulkuväline { public class Soutuvene extends Vene { public function aja() { souda();

Monimuotoisuus Aliluokat voivat muuttaa perittyä ominaisuutta Toiminnallisesti erilaiset metodit samalla nimellä Esimerkiksi Ympyrä- ja Neliö-olioiden pinta-ala lasketaan eri kaavoilla

Monimuotoisuus Mustang Shelby GT 500 vuosimalli väri moottori nopeus kiihdytä() jarruta() Shelby GT 500 remmiahdin kiihdytä()

Korvataan kiihdytä –metodi uudella samannimisellä metodilla Monimuotoisuus Mustang vuosimalli väri moottori nopeus kiihdytä() jarruta() Korvataan kiihdytä –metodi uudella samannimisellä metodilla Shelby GT 500 remmiahdin kiihdytä()

Esimerkki Koodissa assosiaatio ja attribuutit eivät eroa juurikaan toisistaan henkilö auto 0..1 *

Esimerkki Koodissa assosiaatio ja attribuutit eivät eroa juurikaan toisistaan henkilö auto 0..1 * class henkilö { public IList autolista; private String nimi; } class auto { public henkilö omistaja; private Money hinta; }

Esimerkki tilausrivi asiakas tilaus class tilaus { public asiakas tilaaja; public tilausrivi tuotteet; public Date pvm; } class asiakas { public String nimi; Class tilausrivi { public int tuoteId; tilausrivi asiakas tilaus

Esimerkki tilausrivi tilaus tilausrivi tilaukset tilaus

Johdettu assosiaatio Johdettu assosiaatio voidaan laskea muiden assosiaatioiden ja attribuuttien avulla Budjetti kustannus kiinteät kustannus muuttuvat /kustannus kokonaiskustannus

Rekursiivinen assosiaatio Luokka voidaan kytkeä itseensä assosiaatiolla Yhteyden molemmat osapuolet kuuluvat samaan luokkaan Roolinimi Roolinimen käyttäminen välttämätöntä Kertoo mitä roolia luokka esittää assosiaation puitteissa Roolinimi kuuluu assosiaatioon naimisissa mies Henkilö int ikä int sukupuoli vaimo

Riippuvuus, tarkennus Toinen luokka on riippuvainen toisesta Tarkennus Toinen itsenäinen/riippumaton, toinen riippuvainen Muutos itsenäiseen luokkaan vaikuttaa riippuvaiseen luokkaan Tarkennus Kuvataan samaa asiaa eri abstraktiotasoilla Yleiskatsaus ja yksityiskohtainen kaavio

Valitsinassosiaatio Yhden suhde moneen tai monen suhde moneen –assosiaatio Valitsin erottelee moni-päässä olevat oliot toisistaan Toimii valinta-avaimena Piirretään pienenä laatikkona siihen päähän, mistä navigoinnin tulee tapahtua

Tai-assosiaatio Kahden tai useamman assosiaation rajoitin Luokan oliot voivat osallistua korkeintaan yhteen assosiaatioon kerralla

Assosiatiivinen luokka Assosiaatioon voidaan kytkeä luokka Assosiatiivinen luokka antaa lisätietoa yhteydelle Jokainen assosiatiivinen yhteys on yhteydessä assosiatiivisen luokan olioon

Järjestetty assosiaatio Olioiden välisillä assosiaatioilla voi olla tietty järjestys Oletusarvo ”järjestämätön” Merkitään {ordered} assosiaatioviivan viereen järjestettyjen olioiden luokan lähelle {ordered by date}, {ordered by name}

Kolmioassosiaatio Assosiaatioon voi liittyä enemmän kuin kaksi luokkaa Kolmoisassosiaatio liittää kolme luokkaa keskenään Piirretään vinoneliönä

Rajapinnat Luokka voi tarjota rajapinnan Luokka voi vaatio rajapintaa Provides an interface Luokka voi vaatio rajapintaa Requires an interface

UML säännöt Rajoitukset (constraints) Johteet (derivations) Säännöt Rajoittavat mallia Tai-assosiaatio, järjestetyt assosiaatiot, perimisrajoitukset Johteet (derivations) Sääntöjä asioiden johtamiselle Johdettu attribuutti / assosiaatio Säännöt Kaikille mallinnuselementeille Aaltosulkujen sisällä mallinnuselementin lähellä

UML-Mallin laatimisen vaiheet Kartoita luokkaehdokkaita Osallistujat, toiminnan kohteet, tapahtumat, materiaalit, tuotteet, tiedot Pohjana vapaamuotoinen tekstikuvaus Karsi ehdokkaita Liittyykö ehdokkaaseen/ilmiöön tietosisältöä, joka on järjestelmän kannalta välttämätön Onko asia riittävän tärkeä kohdealueen kannalta Iteratiivinen prosessi: kartoita <-> karsi Tunnista olioiden väliset yhteydet Onko yhteys järjestelmän kannalta välttämätön Täsmennä luokkakuvauksia määrittelemällä attribuutit Vapaamuotoisesta kuvauksesta Selvitys mihin/miksi attribuuttia tarvitaan Määrittele yhteyksiin liittyvät osallistumisrajoitteet Määrittele luokkien operaatiot/palvelut Varmista operaatioiden/palveluiden ja tietosisällön yhteensopivuus

Harjoitus Etsikää mahdollisia luokkia annetusta materiaalista Koettakaa käyttää periytymistä Miettikää kerrannaisuuksia Mallintakaa Windows-käyttöjärjestelmän ikkuna Käyttäkää periytymistä ja koostetta

Lähteet Fowler, Martin. 2003. UML distilled : a brief guide to the standard object modeling language. Boston : Addison-Wesley. Eriksson, Hans-Erik. 2004. UML 2 toolkit. Indianapolis, Ind. : Wiley. http://www.okol.org/verkkokurssit/datanomi/tietojarjestelmien_kaytto_ja_ke hittaminen/johdatus_tietojarjestelmiin/oliomallinnuksen_perusteet/oliomalli nnuksen_perusteet_asia.htm