UML Luokkakaavio 14:41



Samankaltaiset tiedostot
Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä

UML -mallinnus LUOKKAKAAVIO EERO NOUSIAINEN

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

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

UML ja luokkien väliset suhteet

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Ohjelmistotekniikan menetelmät, luokkamallin laatiminen

Luento 4. T Ohjelmoinnin jatkokurssi T1 & T Ohjelmoinnin jatkokurssi L1. Luennoitsija: Otto Seppälä

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

Olioperustaisuus (object oriented)

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

19. Unified Modeling Language (UML)

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

UML - unified modeling language

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

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

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

Mikä yhteyssuhde on?

Ohjelmistojen mallintaminen Olioiden yhteistyö Harri Laine 1

Java kahdessa tunnissa. Jyry Suvilehto

Muutamia peruskäsitteitä

YHTEYSSUHDE (assosiation)

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

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

Ohjelmistojen mallintaminen Luokkakaaviot Harri Laine 1

Olio-ohjelmointi: Luokkien toteuttaminen. Jukka Juslin

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

2. Olio-ohjelmoinnin perusteita 2.1

Kertaus: yleistys-erikoistus ja perintä

Ohjelmoinnin perusteet Y Python

Ohjelmistojen mallintaminen, mallintaminen ja UML

Luokka- ja oliokaaviot

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

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

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op

9. Periytyminen Javassa 9.1

Ohjelmoinnin jatkokurssi, kurssikoe

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

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

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

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

UML-kielen formalisointi Object-Z:lla

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Olioiden yhteistoiminta

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

Ohjelmistotekniikan menetelmät, UML

Ohjelmistotekniikan menetelmät

Kompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma

Javan perusteita. Janne Käki

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

Ohjelmistotekniikan menetelmät

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

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

Ohjelmistojen mallintaminen Unified Modeling Language (UML)

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

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

Java-API, rajapinnat, poikkeukset, UML,...

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

18. Abstraktit tietotyypit 18.1

Ohjelmistojen mallintaminen

1 Tehtävän kuvaus ja analysointi

2. Olio-ohjelmoinista lyhyesti 2.1

Ohjelmistojen mallintaminen. Luento 3, 9.11.

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

ict02d Osio2- luento 3 Olio-ohjelmointi: Luokkien kirjoittaminen

Ohjelmoinnin perusteet Y Python

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

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

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

POLKU LUOKKAKAAVIOISTA TAULUJEN TOTEUTUKSEEN

1. Olio-ohjelmointi 1.1

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

2. Olio-ohjelmoinnin perusteita 2.1

Olio-ohjelmointi Johdanto olio-ohjelmointiin

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

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

TIE = JOTU. VH5 - MagicDraw

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2

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

9. Periytyminen Javassa 9.1

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

812341A Olio-ohjelmointi, IX Olioiden välisistä yhteyksistä

UML:n yleiskatsaus. UML:n osat:

Olio-ohjelmointi Javalla

JUnit ja EasyMock (TilaustenKäsittely)

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

12 Mallit (Templates)

14. Poikkeukset 14.1

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

KOHDELUOKAN MÄÄRITTELY

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

Luokat ja oliot. Ville Sundberg

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

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

16. Javan omat luokat 16.1

Ohjelmistojen mallinnus Ohjelmistoarkkitehtuuri Harri Laine 1

Transkriptio:

UML Luokkakaavio

UML Olio-ohjelman luokkien pääpiirteet voidaan kätevähkösti esittää ns. UML-luokkakaaviona. Näin usein tehdäänkin esim. suunniteltaessa, millaisia luokkia ohjelmaan on tarkoitus laatia, ennen ohjelmakoodin kirjoittamista. UML, Unified Modeling Language, on kokoelma erilaisia ohjelmistojen tuottamisprosesseihin liittyviä merkintätapoja. Tämä luokkakaavionotaatio on yksi yleisimmin käytetyistä UML:n osista. Kokeile piirtää luokkakaavio tekniseen suunnitelmaasi Kun olet piirtänyt kaavion, pohdi kuinka jotkin ohjelmasi ominaisuudet toimivat: Kuinka luokkien metodit kutsuvat toisiaan kun jotain ominaisuutta käytetään. Onko kaaviossa kaikki tarvittu?

UML-mallinnuskieli UML UML-kieli luotiin 90-luvun puolivälissä korvaamaan joukko erilaisia mallinnuskieliä, joilla oli paljon yhteistä mutta myös paljon pikku eroja. Mallinnuskielen avulla on helppo suunnitella suurempia järjestelmiä, esittää tietoa nopeasti ja pienessä tilassa, selittää asioita muillekin kuin ohjelmoijille jne. jne. Parhaan kuvan mallinnuskielestä saa kokeilemalla sitä itse joten pitemmittä puheitta... Tutustutaan luokkakaavioon

UML luokkakaavio class (object): def init (self, yl,... self.yla_laita = yl self.ala_laita = al self.vasen_laita = vl self.oikea_laita = ol def laske_pinta_ala(self):... def aseta_vari(self, c):...

UML luokkakaavio +laske_pinta_ala() : int +aseta_vari(c: väri): class (object): def init (self, yl,... self.yla_laita = yl self.ala_laita = al self.vasen_laita = vl self.oikea_laita = ol def laske_pinta_ala(self):... def aseta_vari(self, c):...

UML luokkakaavio -yla_laita -ala_laita -vasen_laita -oikea_laita :Viiva :Viiva :Viiva :Viiva +laske_pinta_ala() : int +aseta_vari(c:väri): class (object): def init (self, yl,... self.yla_laita = yl self.ala_laita = al self.vasen_laita = vl self.oikea_laita = ol def laske_pinta_ala(self):... def aseta_vari(self, c):...

UML luokkadiagrammi -ylalaita -alalaita -vasenlaita -oikealaita :Viiva :Viiva :Viiva :Viiva +laske_pinta_ala() : int +aseta_vari(c:väri):void näkyvyysmääreet + public - private # protected default class (object): def init (self, yl,... _self.yla_laita = yl _self.ala_laita = al _self.vasen_laita = vl _self.oikea_laita = ol def laske_pinta_ala(self):... def aseta_vari(self, c):... muuttujan, parametrin tai paluuarvon tyyppi kaksoispisteen jälkeen

Yhteyssuhde (assosiation) Viiva class (object): Suhteen suunta def init (self,yl, al, vl, ol): self.yla_laita = yl self.ala_laita = al self.vasen_laita = vl self.oikea_laita = ol

Yhteyssuhde 1..2 4 Viiva class (object): def init (self,yl, al, vl, ol): self.yla_laita = yl self.ala_laita = al self.vasen_laita = vl self.oikea_laita = ol Multiplicity (kerrannaisuus) Kertoo kuinka moneen toisen luokan olioon jokin luokan olio on yhteydessä 3 tarkalleen kolme kpl 0..5 nollasta viiteen kpl 2..* vähintään kaksi kpl * Vapaavalintainen määrä Esimerkissämme yhteen neliöön kuuluu aina tasan 4 viivaa, mutta yksi viiva voi kuulua joko yhteen tai kahteen neliöön

Yhteyssuhde reunat 4 Viiva class (object): Rooli Karkeasti: kertoo mikä tämän suhteen pään merkitys on toiselle def init (self,yl, al, vl, ol): self.yla_laita = yl self.ala_laita = al self.vasen_laita = vl self.oikea_laita = ol päälle Viivan merkitys neliölle on, että se toimii neliön reunana.

Suhteen suunta reunat 4 Viiva Viivan kentissä ei välttämättä ole viittauksia Neliö-luokan olioihin Neliön kentissä on jollain tavalla tallessa viittauksia Viiva-olioihin class (object): def init (self,yl, al, vl, ol): self.yla_laita = yl self.ala_laita = al self.vasen_laita = vl self.oikea_laita = ol

Vahva ja löyhä kooste kuvaavat, että jokin koostuu pienemmistä osasista. Jos pääolioon kohdistetaan operaatioita, ne kohdistuvat jollain tavoin myös sen osasiin. Vahva kooste on jyrkempi kuin löyhä. Vahva kooste (composition) reunat 4 Viiva Neliö koostuu viivoista, jos neliö poistetaan viivatkin häviävät Löyhä kooste (aggregation) Pari 2 Yksilo Pari koostuu yksilöistä, jos pari purkautuu, yksilöt säilyvät silti

Riippuvuus reunat 4 Viiva +laske_pinta_ala() : int +aseta_vari(c:väri): Riippuvuus Karkeasti: Luokka käyttää toisen luokan olioita tai niiden metodeja (esim. parametreina) mutta ei säilytä viittauksia sen olioihin Väri

Perintä Kuvio Perintä Luokka perii toisen luokan ominaisuudet, ja sen olioon voidaan viitata yläluokan tyyppisen muuttujan kautta. reunat 4 Viiva

Esimerkki 2 vanhemmat Ihminen lapset * Rekursiivinen assosiaatio Luokan oliot voivat tietenkin viitata toisiin saman luokan olioihin. Esim Ihminen-luokassa voi olla viittaus muihin Ihminen-luokan olioihin.

Esimerkki Pankki Monta assosiaatiota Kahden luokan olioiden välillä saa olla myös useampia assosiaatioita, mutta tällöin kannattaa selittää mitä eri suhteet kuvaavat. 1 * Asiakas 1 omistaja * Pankkitili * * käyttöoikeus

Abstrakti luokka <<abstract>> Työntekijä Abstrakti luokka Abstrakti luokka on luokka, joka toteuttaa joitakin metodeja, mutta osan metodeista kohdalla se ainoastaan toteaa että ne täytyy jonkun muun luokan toteuttaa. Abstrakti luokka on puolivalmis luokka, joka antaa vapaat kädet puuttuvien metodien toteutukselle. Kokki Poliisi