21
TIE-20200 Samuel Lahtinen Lyhyt UML-opas UML -pikaesittely

OHJ-1400 Olio-ohjelmoinnin peruskurssiohjsuun/luennot/2015/UMLpikaopas.pdf · UML, Unified Modeling Language • Standardoitu, yleiskäyttöinen mallinnuskieli, jota ylläpitää/hallitsee

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: OHJ-1400 Olio-ohjelmoinnin peruskurssiohjsuun/luennot/2015/UMLpikaopas.pdf · UML, Unified Modeling Language • Standardoitu, yleiskäyttöinen mallinnuskieli, jota ylläpitää/hallitsee

TIE-20200 Samuel Lahtinen

Lyhyt UML-opas

UML -pikaesittely

Page 2: OHJ-1400 Olio-ohjelmoinnin peruskurssiohjsuun/luennot/2015/UMLpikaopas.pdf · UML, Unified Modeling Language • Standardoitu, yleiskäyttöinen mallinnuskieli, jota ylläpitää/hallitsee

TIE-20200 Samuel Lahtinen

UML, Unified Modeling

Language

• Standardoitu, yleiskäyttöinen mallinnuskieli, jota ylläpitää/hallitsee (Object Management Group) OMG

• Historiaa: 90-luvulla oli paljon kilpailevia mallinnuskieliä, ”kolmen kaveruksen” (”Three amigos” Jacobson, Booth, Rumbauch) johdolla päästiin yksimielisyyteen ja päätettiin tuottaa UML…

• Ideana kieli, joka ei ole riippuvainen mallinnusohjelmiston jne. toimittajasta

• 1997 UML 1.0, 1.1

• ISO/IEC standardi UML 1.4.2

• 2005 UML 2.0

• Uusin versio 2.5

Page 3: OHJ-1400 Olio-ohjelmoinnin peruskurssiohjsuun/luennot/2015/UMLpikaopas.pdf · UML, Unified Modeling Language • Standardoitu, yleiskäyttöinen mallinnuskieli, jota ylläpitää/hallitsee

TIE-20200 Samuel Lahtinen

UML

• Yhdistelmä erilaisia mallinnusmenetelmiä/mallinnuskieliä

• Standardoidut kaavioiden tuhrustustekniikat, määritelty ulkonäkö eri komponenteille, tiedon siirto mallien välillä

• Levinnyt laajalle

• Ohjelmointikieli- ja ohjelmointiprosessiriippumaton

• Eri kielet/mallit soveltuvat eri tarkoituksiin:– Rakenne: luokka-, olio-, paketti-, komponentti- (kaaviot)

– Käyttäytyminen/toiminnallisuus: tila-, sekvenssi-, käyttötapaus-, aktiviteetti-(kaaviot)

• UML antaa säännöt mallien rakentelulle ja tarjoaa mahdollisuuden laajentaa ja muokata perus-UML:ää(profiilit, metamallit)

Page 4: OHJ-1400 Olio-ohjelmoinnin peruskurssiohjsuun/luennot/2015/UMLpikaopas.pdf · UML, Unified Modeling Language • Standardoitu, yleiskäyttöinen mallinnuskieli, jota ylläpitää/hallitsee

TIE-20200 Samuel Lahtinen

Eri kaaviotyypit

http://www.uml-diagrams.org/uml-25-diagrams.html

Page 5: OHJ-1400 Olio-ohjelmoinnin peruskurssiohjsuun/luennot/2015/UMLpikaopas.pdf · UML, Unified Modeling Language • Standardoitu, yleiskäyttöinen mallinnuskieli, jota ylläpitää/hallitsee

TIE-20200 Samuel Lahtinen

Luokkakaavio: perusjutut

• Yleisin kaaviotyyppi, käytetään vaikka

mihin…

<<stereotype>>

Class

+operation1() : ReturnValueType

+operation2() : int

-attribute : Type

Luokan nimi

stereotyyppi

Jäsenmuuttujat/attribuutit

Jäsenfunktiot/operaatiot

näkyvyys:

(+) public

(-) private

(#) protected

Page 6: OHJ-1400 Olio-ohjelmoinnin peruskurssiohjsuun/luennot/2015/UMLpikaopas.pdf · UML, Unified Modeling Language • Standardoitu, yleiskäyttöinen mallinnuskieli, jota ylläpitää/hallitsee

TIE-20200 Samuel Lahtinen

UML ja suhteet

• Dependency/riippuvuus: heikoin suhde (esim. A käyttää

B:tä jossakin jäsenfunktiossaan)

• Assosiaatio (kaksisuuntainen). A tarvitsee B:tä ja

päinvastoin.

• Assosiaatio (yksisuuntainen) A tarvitsee B:tä, mutta B:n

ei tarvitse tietää mitään A:sta.

• Kooste(aggregation): Esimerkiksi joukkue koostuu pelaajista (tietty minimi- ja maksimimäärä, pelaaja voi vaihtaa joukkueesta toiseen.

• Muodoste (composition): rakennus-kerros, jäsenoliot

(esim. henkilö ja syntymäaika)

• Koosteet, muodosteet, assosiaatiot voivat olla

yksisuuntaisia tai kaksisuuntaisia.

• Assosiaatio, vahvempi suhde kuin edellinen (määrittelemätön assosiaatio)

Page 7: OHJ-1400 Olio-ohjelmoinnin peruskurssiohjsuun/luennot/2015/UMLpikaopas.pdf · UML, Unified Modeling Language • Standardoitu, yleiskäyttöinen mallinnuskieli, jota ylläpitää/hallitsee

TIE-20200 Samuel Lahtinen

Assosiaatiot ja nuolet

7

Ruksilla kerrotaan

yksisuuntaisuudesta

Page 8: OHJ-1400 Olio-ohjelmoinnin peruskurssiohjsuun/luennot/2015/UMLpikaopas.pdf · UML, Unified Modeling Language • Standardoitu, yleiskäyttöinen mallinnuskieli, jota ylläpitää/hallitsee

TIE-20200 Samuel Lahtinen

Kooste, aggregation ja koodi

class Team{public:

Team( string name ): name_( name ),players_(){}~Team(){};void print();void addPlayer( Player p );

private:string name_;vector<Player*> players_;

};

class Player{public:

Player(string name,unsigned int age,unsigned int number);~Player();void print() const;void setName( string name );

private:string name_;unsigned int age_;unsigned int number_;

};

Page 9: OHJ-1400 Olio-ohjelmoinnin peruskurssiohjsuun/luennot/2015/UMLpikaopas.pdf · UML, Unified Modeling Language • Standardoitu, yleiskäyttöinen mallinnuskieli, jota ylläpitää/hallitsee

TIE-20200 Samuel Lahtinen

Lukumääräsuhteet

• Assosiaatiolla, koosteilla, muodostumisilla

lukumääräsuhteet

• Kiinteä lukumääräsuhde kertoo vakiona

pysyvästä suhteesta (esim. shakkilaudan

ruudut, pelaajien määrä shakissa)

• Vaihtelevat lukumääräsuhteet, vaihteluväli

– esim. joukkueella pitää olla 11-20 pelaajaa. Pelaaja

voi olla joko ilman joukkuetta tai kuulua yhteen

joukkueeseen.

• Assosiaatioilla voi olla nimi

• Assosiaation päähän voi liittyä roolinimi

Page 10: OHJ-1400 Olio-ohjelmoinnin peruskurssiohjsuun/luennot/2015/UMLpikaopas.pdf · UML, Unified Modeling Language • Standardoitu, yleiskäyttöinen mallinnuskieli, jota ylläpitää/hallitsee

TIE-20200 Samuel Lahtinen

Periytymiseen liittyvät

suhteet

Page 11: OHJ-1400 Olio-ohjelmoinnin peruskurssiohjsuun/luennot/2015/UMLpikaopas.pdf · UML, Unified Modeling Language • Standardoitu, yleiskäyttöinen mallinnuskieli, jota ylläpitää/hallitsee

TIE-20200 Samuel Lahtinen

Abstrakti kantaluokka &

virtuaalifunktiot

• Abstrakti kantaluokka: nimi italics/kursiivilla tai

kertomalla luokalle ”abstract” classifier

• Rajapinnan (interface) voi dokumentoida samoin

• Puhtaasti virtuaaliset/abstraktit funktiot: kursiivilla

Page 12: OHJ-1400 Olio-ohjelmoinnin peruskurssiohjsuun/luennot/2015/UMLpikaopas.pdf · UML, Unified Modeling Language • Standardoitu, yleiskäyttöinen mallinnuskieli, jota ylläpitää/hallitsee

TIE-20200 Samuel Lahtinen

tapahtumasekvenssikaaviot

Page 13: OHJ-1400 Olio-ohjelmoinnin peruskurssiohjsuun/luennot/2015/UMLpikaopas.pdf · UML, Unified Modeling Language • Standardoitu, yleiskäyttöinen mallinnuskieli, jota ylläpitää/hallitsee

TIE-20200 Samuel Lahtinen

Korjaa tää

Page 14: OHJ-1400 Olio-ohjelmoinnin peruskurssiohjsuun/luennot/2015/UMLpikaopas.pdf · UML, Unified Modeling Language • Standardoitu, yleiskäyttöinen mallinnuskieli, jota ylläpitää/hallitsee

TIE-20200 Samuel Lahtinen

Tilakaaviot

Page 15: OHJ-1400 Olio-ohjelmoinnin peruskurssiohjsuun/luennot/2015/UMLpikaopas.pdf · UML, Unified Modeling Language • Standardoitu, yleiskäyttöinen mallinnuskieli, jota ylläpitää/hallitsee

TIE-20200 Samuel Lahtinen

Luokkakaavio, oliokaavio

• Oliokaavio on luokkakaavion yksi ilmentymä…• Luokkakaavio kertoo rajoitteet, joita olikaavion täytyy noudattaa.(Luokkakaavio kertoo suunnittelun suuntaviivat, jonka mukaan ohjelma

toteutetaan->ohjelma noudattaa luokkakaavion sääntöjä)

• Oliokaavion elementtejä ovat oliot ja linkit

Onko alla esitetty oliokaavio laillinen?

Page 16: OHJ-1400 Olio-ohjelmoinnin peruskurssiohjsuun/luennot/2015/UMLpikaopas.pdf · UML, Unified Modeling Language • Standardoitu, yleiskäyttöinen mallinnuskieli, jota ylläpitää/hallitsee

TIE-20200 Samuel Lahtinen

Metamallit, mitä ihmettä…?

• Meta, tietoa tiedosta…

• Missä määritellään säännöt luokkakaaviolle? Mitä saa piirtää, miten elementit liittyvät toisiinsa jne.?

• UML:n metamalli kertoo, mitä kussakin mallissa voidaanpiirrustella (samaan tapaan puhtaissa oliokielissä on metataso)

• MOF, metamalli , luokkakaavio ja oliotaso

• Miten näkyy oliokielissä? (luokkataso vs. oliotaso)

malli

(mallitaso)

oliot

(hetki

Ohjelman ajon

aikana)

metamalli

(metataso)

M3: MOF

(metametataso)

M2: metamalli

(metataso)

M1: malli

(mallinnus)

M0: runtime

(todelliset

oliot)

Page 17: OHJ-1400 Olio-ohjelmoinnin peruskurssiohjsuun/luennot/2015/UMLpikaopas.pdf · UML, Unified Modeling Language • Standardoitu, yleiskäyttöinen mallinnuskieli, jota ylläpitää/hallitsee

TIE-20200 Samuel Lahtinen

Rajoitteet sun muut

lisäkikat

OCL (Object Constraint Language ) (OMG:n standardi) :• Formaali kieli, määritelty semantiikka+syntaksi• Osa OMG:n laajaa standardikokoelmaa• Kohtuullisen helposti luettavissa ja ymmärrettävissä• Voidaan määritellä tarkempia sääntöjä ja rajoituksia

• Mopolla saa ajella vain 15 vuotta täyttäneet:• context: Moped• inv: self.driver.age >= 15

• Markun mopon täytyy olla pinkki:• context: Person• inv: self.name = ”Markku” implies self.vehicle.color = Pink

Page 18: OHJ-1400 Olio-ohjelmoinnin peruskurssiohjsuun/luennot/2015/UMLpikaopas.pdf · UML, Unified Modeling Language • Standardoitu, yleiskäyttöinen mallinnuskieli, jota ylläpitää/hallitsee

TIE-20200 Samuel Lahtinen

TYökaluja

• Magic Draw UML, Otupk/OTM:n sivuilta lisätietoja http://www.cs.tut.fi/software/win32/MagicDraw

• Harkkatyön kaaviot piirtää käsin tai netissä: – https://www.draw.io/

– http://alexdp.free.fr/violetumleditor/page.php

– http://www.gliffy.com/

• StarUML http://staruml.sourceforge.net/en/

• Umbrello http://uml.sourceforge.net/

• Software Ideas Modeler http://www.softwareideas.net/en/Default.aspx

Page 19: OHJ-1400 Olio-ohjelmoinnin peruskurssiohjsuun/luennot/2015/UMLpikaopas.pdf · UML, Unified Modeling Language • Standardoitu, yleiskäyttöinen mallinnuskieli, jota ylläpitää/hallitsee

TIE-20200 Samuel Lahtinen

Ohjelman suunnittelu

• Ohjelman suunnittelu projektin vaikein osuus

(toteuttaminen vaatii lopulta vain

suoraviivaista työtä, huono suunnitelma,

paljon työtä)

• Miten löytää oikeat oliot ja luokat?

• Miten muodostaa hyvästä yleisen tason

oliorakenteesta järkeviä rajapintoja?

• Miten varmistua, että toteutettava ohjelma

vastaa suunnitelmaa?

Page 20: OHJ-1400 Olio-ohjelmoinnin peruskurssiohjsuun/luennot/2015/UMLpikaopas.pdf · UML, Unified Modeling Language • Standardoitu, yleiskäyttöinen mallinnuskieli, jota ylläpitää/hallitsee

TIE-20200 Samuel Lahtinen

Oliomäärittelyä

• Asiakasvaatimusten havainnollistaminen ja selvittely– Käyttötapaukset (yksi käyttötapaus sisältää usein useita toimintoja)

– Sama toiminto voi esiintyä useassa käyttötapauksessa

– yhdistellään ja jaotellaan toimintoja

• Etsitään järjestelmän oliot, mietitään mihin mikäkin toiminto kuuluu

• Mietitään olioiden väliset yhteydet

• Olioista luokiksi, tehdään oliomäärittelystä jossa vastuita/toiminnallisuutta jne. luokkakaavio, joka konkretisoi em. Vastuut

• Mietitään yhteydet, tarkastellaan yhteisiä toiminnallisuuksia, lisätään perintää, hajotetaan isompia kokonaisuuksia osiin / päinvastoin

• Määritellään luokkien rajapinnat

• Toteutetaan rajapinnat

Page 21: OHJ-1400 Olio-ohjelmoinnin peruskurssiohjsuun/luennot/2015/UMLpikaopas.pdf · UML, Unified Modeling Language • Standardoitu, yleiskäyttöinen mallinnuskieli, jota ylläpitää/hallitsee

TIE-20200 Samuel Lahtinen

Yhteenveto

• UML sopii ohjelmien dokumentointiin,

suunnitelmien konkretisointiin,

suunnitteluvaiheessa kannattaa käyttää jotain

abstraktimpaa (tekniikkaa/tapaa)

• UML:n luokkakaavio lähellä kooditasoa, koodin

tuottaminen jne. mahdollista kaavion pohjalta

(samoin sekvenssikaavioiden tuottaminen

koodista/ohjelman ajosta jne onnistuu)

• Käsitteistöä, metaluokka, luokka, oliot