ohj-1400 olio-ohjelmoinnin peruskurssiohjsuun/luennot/2015/umlpikaopas.pdf · uml, unified modeling...
TRANSCRIPT
![Page 1: OHJ-1400 Olio-ohjelmoinnin peruskurssiohjsuun/luennot/2015/UMLpikaopas.pdf · UML, Unified Modeling Language • Standardoitu, yleiskäyttöinen mallinnuskieli, jota ylläpitää/hallitsee](https://reader034.vdocuments.mx/reader034/viewer/2022042209/5eacf1da9c21cb7776698213/html5/thumbnails/1.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042209/5eacf1da9c21cb7776698213/html5/thumbnails/2.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042209/5eacf1da9c21cb7776698213/html5/thumbnails/3.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042209/5eacf1da9c21cb7776698213/html5/thumbnails/4.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042209/5eacf1da9c21cb7776698213/html5/thumbnails/5.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042209/5eacf1da9c21cb7776698213/html5/thumbnails/6.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042209/5eacf1da9c21cb7776698213/html5/thumbnails/7.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042209/5eacf1da9c21cb7776698213/html5/thumbnails/8.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042209/5eacf1da9c21cb7776698213/html5/thumbnails/9.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042209/5eacf1da9c21cb7776698213/html5/thumbnails/10.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042209/5eacf1da9c21cb7776698213/html5/thumbnails/11.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042209/5eacf1da9c21cb7776698213/html5/thumbnails/12.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042209/5eacf1da9c21cb7776698213/html5/thumbnails/13.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042209/5eacf1da9c21cb7776698213/html5/thumbnails/14.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042209/5eacf1da9c21cb7776698213/html5/thumbnails/15.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042209/5eacf1da9c21cb7776698213/html5/thumbnails/16.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042209/5eacf1da9c21cb7776698213/html5/thumbnails/17.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042209/5eacf1da9c21cb7776698213/html5/thumbnails/18.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042209/5eacf1da9c21cb7776698213/html5/thumbnails/19.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042209/5eacf1da9c21cb7776698213/html5/thumbnails/20.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042209/5eacf1da9c21cb7776698213/html5/thumbnails/21.jpg)
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