Luokka- ja oliokaaviot

Samankaltaiset tiedostot
käyttötapaukset mod. testaus

Tilakaaviot, sekvenssikaaviot (Haikala, Märijärvi ss , )

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

19. Unified Modeling Language (UML)

UML - unified modeling language

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

Ohjelmistotekniikan menetelmät, UML

Ohjelmistojen mallintaminen Unified Modeling Language (UML)

POLKU LUOKKAKAAVIOISTA TAULUJEN TOTEUTUKSEEN

Ohjelmistojen mallintaminen Luokkakaaviot Harri Laine 1

UML Luokkakaavio 14:41

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

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

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

Olioperustaisuus (object oriented)

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

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

UML:n yleiskatsaus. UML:n osat:

2. Olio-ohjelmoinnin perusteita 2.1

Johdatus sovellussuunnitteluun, s99, osa2 Helsingin yliopisto;/tktl Harri Laine 1. Olioperustainen ohjelmistokehitys

UML-kielen formalisointi Object-Z:lla

Luokka- ja oliokaaviot

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

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

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

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

Mitä on periytyminen?

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

Ohjelmistojen mallintaminen kertausta Harri Laine 1

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

UML -mallinnus LUOKKAKAAVIO EERO NOUSIAINEN

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

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

9. Periytyminen Javassa 9.1

2. Olio-ohjelmoinnin perusteita 2.1

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

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

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

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

9. Periytyminen Javassa 9.1

UML- mallinnus: Tilakaavio

Ohjelmistotekniikan menetelmät, kesä 2008

Ohjelmistojen mallintaminen, kesä 2010

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

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

Ohjelmistojen mallintaminen, kesä 2009

Ohjelmistotekniikan menetelmät, luokkamallin laatiminen

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

Johdatus sovellussuunnitteluun, s2000, osa4 Helsingin yliopisto;/tktl. Harri Laine 1. Luokka- ja oliokaaviot. Luokka- ja oliokaaviot

18. Abstraktit tietotyypit 18.1

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

Olio-ohjelmointi Javalla

12. Monimuotoisuus 12.1

Määrittelyvaihe. Projektinhallinta

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

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

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

Sisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto

UML ja luokkien väliset suhteet

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

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

Ohjelmistotekniikan menetelmät, kevät 2008

16. Javan omat luokat 16.1

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

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

Ohjelmistotekniikan menetelmät

Mikä yhteyssuhde on?

Ohjelmistojen mallintaminen. Luento 3, 9.11.

Luokkakaavion laatiminen

Ohjelmistotekniikan menetelmät

Ohjelmistotekniikan menetelmät, luokkamallin laatiminen

Johdatus sovellussuunnitteluun, s2001, osa 4a Helsingin yliopisto / TKTL Harri Laine / Inkeri Verkamo 1. Luokka- ja oliokaaviot

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

TIE = JOTU. VH5 - MagicDraw

HELIA 1 (14) Outi Virkki Käyttöliittymät ja ohjlmiston suunnittelu

Ohjelmistotuotanto, kuvaustekniikat Syksy Kuvaustekniikat. Miksi kuvaustekniikoita? Abstraktiotasot. Abstrahointi UML

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

Sisällys. JAVA-OHJELMOINTI Osa 6: Periytyminen ja näkyvyys. Luokkahierarkia. Periytyminen (inheritance)

Ohjelmistojen mallintaminen. Luento 4,

3. Käsiteanalyysi ja käsitekaavio

Ohjelmistojen mallintaminen viikon 4 laskareiden mallivastauksia

Kertaus: yleistys-erikoistus ja perintä

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

2. Olio-ohjelmoinista lyhyesti 2.1

Tietokantojen suunnittelu, relaatiokantojen perusteita

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

YHTEYSSUHDE (assosiation)

Antti-Jussi Lakanen Ohjelmointi 1, C# / kevät 2011

Luokat ja oliot. Ville Sundberg

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

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

KOHDELUOKAN MÄÄRITTELY

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op

Kooste. Esim. Ympyrän keskipiste voidaan ajatella ympyrän osaksi.

UML-MALLINNUS MICROSOFT VISIOLLA JOUNI HUOTARI

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

4. Luokan testaus ja käyttö olion kautta 4.1

VH5, JOTU, MagicDraw:n käyttö

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

Transkriptio:

Luokka- ja oliokaaviot Jari Ojasti Nokia email : jari.ojasti@nokia.com puh : 040 5926 32 Miten toteuttaisin softalla... Procedure for determining employee holidays, (Pressman, p. 620): Executive order 0358 provided in the case of an employee whose work week varied from the normal Monday through Friday work week, that Labor Day and Thanksgiving Day each were to be observed on the next succeeding workday when the holiday fell on a day outside the employee s regular basic work week. Now, when Labor Day, Thanksgiving Day or any of the new Monday holidays are outside an employee s basic workweek, the immediately preceding workday will be his holiday when the non-workday on which the holiday falls is the second non-workday or the nonworkday designated as the employee s day off in lieu of Saturday. When the non-workday on which the holiday falls is the first nonworkday or the non-workday designated as the employee s day off in lieu of Sunday, the holiday observance is moved to the next succeeding workday. So what happens when a payday is on a holiday?

Kartta hyväksyntä määrittely suunnittelu suunnittelu mod. testaus integrointi sys. testaus Ylläpito koodaus (toteutus) tuotteenhallinta dokumentointi koulutus menetelmät projektinhallinta, laatujärjestelmä vaatimustenhallinta työkalut Sisältö luokka- ja oliokaavio osana UML:ia käsitteitä luokkakaavio luokkakaaviot olionäkökulmasta notaatio esimerkkejä luokkakaavioista ja eri yhteystyypeistä assosiaatio periytyminen koostuminen liittymistyypit roolit oliokaavio harjoituksia 2

UML kaavioesitystavat staattinen ja dynaaminen rakenne oliokaaviot, luokkakaaviot Käyttötapauskaaviot järjestelmän korkean tason toiminnallisuus Sijoittelukaaviot Oliokaaviot Sekvenssikaaviot Yhteistyökaaviot Komponenttikaaviot Luokkakaaviot Tilakaaviot Aktiviteettikaaviot staattinen ja dynaaminen rakenne dynaaminen käyttäytyminen Käsitteitä Olio (object) on ohjelman jäsentelyn perusyksikkö, tietojen ja palveluiden kokonaisuus. Oliolla on viite (reference), yksilöivä tunniste. Kahdella eri oliolla on eri viite, vaikka ne olisivat toistensa kopioita. Ohjelman suoritusaikana olio on keskusmuistista tehty tilanvaraus (jolla on sisäinen pysyvä viite, yksilöllinen numero eli object-id, joka toisissa ohjelmointikielissä on olion muistiosoite, Javassa tyyppiä viite). Luokka (class) on olioiden tyyppi. Attribuutti (attribute) on luokassa määritelty olion ominaisuutta esittävä tieto. Attribuuttien arvojen yhdistelmää kutsutaan olion tilaksi (state). Palvelun suoritus voi muuttaa olion tilaa. Ohjelman toteutuksen kannalta attribuutti on luokassa määritelty kenttä. Luokan attribuutten ja palveluiden kokoelmaa kutsutaan luokan piirteiksi 3

Luokkakaavio kuvaa järjestelmän luokat ja niiden väliset suhteet käytetään staattisen rakenteen kuvaamiseen luokat sekä niiden väliset suhteet assosiaatio periytyminen koostuminen roolit yhdestä moneen, monesta yhteen Luokkakaaviot olionäkökulmasta olioiden piirteet määritellään olion luokassa (class) jokaisella oliolla on yksikäsitteinen luokka, jonka mukaan olio on luotu olio on siis luokan ilmentymä (instance) luokka kertoo, mitä attribuutteja ja operaatioita sen ilmentymillä on: jokaisella luokan ilmentymällä on samat attribuutit ja operaatiot, vain arvot vaihtelevat 4

Luokkakaavion piirrosmerkit Elementit Suhteet Luokka Nimi Riippuvuus Assosiaatio rooli 0.. Kommentti Kooste Yleistys (Periytyminen) Toteutus Copyright Kai Koskimies 2000 Luokka tarkemmin Ihminen Si lm ienvari HiustenVari Pituus Paino AnnaPituus () AnnaPaino() Luokan nimi Luokan attribuutit Luokan operaatiot 5

Notaatio luokat niiden väliset yhteydet luokan atribuutit operaatiot asiakas nimi osoite uusi tilaatuote() tekee 0.. tilaus yhteyksiin liittyviä lukumääräsuhteita Luokkakaavioesimerkkejä Kurssi.. Opettaja Ohjain Kohde palauta() varaa() otakäyttöön() hallinnoi KohdeHallinto palautakohde(kohde, Varasto) varaakohde(kohde) otakäyttöönkohde(kohde) Varasto HenkilöAuto rekisterinumero huolla(int km) palauta() Talleta huoltoinformaatio (palauta kutsuu) ParkkiAlue Copyright Kai Koskimies 2000 6

Assosiaatio eli liittyminen assosiaatio kuvaa olioiden välistä pysyvää linkkiä assosiaation nimi kirjoitetaan yhteyden päälle oliot, jotka osallistuvat assosiaatioon, voivat osallistua siihen tietyissä rooleissa. Roolit kerrotaan luokkasymboolin yhteydessä Luokka +rooli2 yhteyden nimi +rooli Luokka2 0.. As ia kas +tilaaja omistaa +tilattava Tilaus 0.. Assosiaatioiden tyypit Luok ka Luokka3 Luokka5 Luokka7 Luokka9.... 0..0 0.. 0.. Luok ka2 Luokka4 Luokka6 Luokka8 Luokka0 Luokan olioon voi liittyä ainoastaan yksi luokan 2 olio. Luokan 3 olioon voi liittyä yksi tai useampia luokan 4 olioita. Luokan 5 olioon ei voi liittyä yhtään luokkaan 6 kuuluvaa oliota. Luokan 7 olioon voi liittyä nolla tai yksi luokkaan 8 kuuluva olio. Luokan 9 olioon voi liittyä nolla tai useampia luokan 0 olioita. 7

Luokkakaavioesimerkkejä (2) yritys osasto 0.... henkilö korttikasa sijaintipöydällä lisääpäälle() otaalta() otapäältä() kortti arvo maa kuvapuolinäkyvissä 0.. käännä() pöytäpakka käännäpäältä() otaalta() käsipakka sekoita() käsi korttejaaluksi lajittele() Copyright I. Haikala 2000 Aggregaatti eli koostuminen avoin salmiakki kuvastaa koosterakennetta. Avoin koosterakenne voi kuitenkin purkautua hajoittamatta rakennetta. musta salmiakki kuvastaa koosterakennetta, joka on hyvin tiivis. Osilla on sama elinaika kuin kokonaisuudella. Aggregaattiyhteys valitaan, jos pääluokka ei voi olla olemassa ilman aggregaattiluokkaa Jääkaappi tilavuus Ovi Sähköjohto 8

Periytyminen Periytyminen tarkoittaa luokan A piirteiden siirtymistä jollekin toiselle luokalle B. Tällöin sanotaan, että: A on B:n yliluokka Hen kilö B on A:n aliluokka A Mies Nainen B Luokkakaavioesimerkkejä (3) Nappula 0.. käyttää 0.. Pelaaja omistaa 0.. 0.. Aarre sijaitsee {ordered} pelaa Noppa kuuluu Peli Erikoispaikka peittää 0.. 2 päättyy Paikka koostuu Kartta Lappu Lentoreitti seuraa Copyright Kai Koskimies 2000 9

Nappula Pelaaja väri: Integer käyttää 0.. siirry(p: Paikka) 0.. vaikuta(p: Pelaaja) annapaikka(): Paikka 0.. Noppa heitä(): Integer sijaitsee nimi: String rahat: Integer onkolentopaikalla(): Boolean onkorahaa(): Boolean annapaikka(): Paikka siirry(p: Paikka) onkovoittaja(): Boolean onkoaarre(): Boolean luovutaaarre(): Aarre otaaarre(a: Aarre) maksu() vuorossa omistaa 0.. 0.. {indexed} Aarre vaikuta (p: Pelaaja) <<interface>> Nappula Rosvo vaikuta (p: Pelaaja) Jalokivi arvo: Integer vaikuta (p: Pelaaja) <<interface>> Liikenne annakohteet(p: Paikka): Set<Paikka> {abstract} hinta(p, p2: Paikka): Integer {abstract} Lentoliikenne annakohteet(p: Paikka): Set<Paikka> {abstract} hinta(p, p2: Paikka): Integer {abstract} paikan nro päättyy {indexed} Set<Erikoispaikka> peittää Peli alusta() lisääpelaaja(n: String) nopanheitto() siirräpelaaja(p: Paikka) käännälappu(p: Paikka) päätä() Paikka onkolappu():boolean käännälappu() Erikoispaikka lappunäkyy: Boolean onkolappu():boolean käännälappu() pelaa Normaalipaikka Copyright Kai Koskimies 2000 Peliseurue lisääpelaaja(n: String) seuraavapelaaja(): Pelaaja aarrepelaaja(p: Paikka): Pelaaja Set<paikka> {indexed} paikan nro, askelmäärä Kartta annaviereiset(p: Paikka, n: Integer): set<paikka> Oliokaavio Kuvaa järjestelmän oliot sekä niiden väliset suhteet jokaisella oliolla on yksikäsitteinen luokka, jonka mukaan olio on luotu olio on siis luokan ilmentymä (instance) kuvataan kuten luokkakaaviot lisäyksenä atribuutit kirjoitetaan kuten luokka, mutta alleviivattuna auto : Henkilöauto 0

Olioluokkien tunnistaminen fyysiset oliot (auto, venttiili, talo, hevonen, auto) asiakirjat ja dokumentit (tilaus, aikataulu) roolit (myyjä, käyttäjä, työntekijä, operaattori) tapahtumat, joista tallennetaan tietoa (keskeytys, hälytys, varaus) paikat (kauppa, internetportaali, toimisto, valvomo) organisaatiot (pankki, koulu) käsitteet (maksuaikatalu, juna-aikataulu) Etsi siis substantiiveja! Älä ole liian kriittinen! Kaavioiden laatiminen Luokan jäsenillä on 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. (Vrt. vaikkapa suorakaide ja neliö.) Ei toistuvia kenttiä Ei tarpeetonta redundanssia (sama tieto monessa paikassa). Ei puuttuvia kenttiä Ei turhia yhteyksiä Toteutusvaiheessa näistä vaatimuksista voidaan tehokkuussyistä joutua tinkimään. Copyright I. Haikala 2000