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



Samankaltaiset tiedostot
TIE Ohjelmistojen suunnittelu

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

UML - unified modeling language

UML -mallinnus LUOKKAKAAVIO EERO NOUSIAINEN

UML-kielen formalisointi Object-Z:lla

UML Luokkakaavio 14:41

Ohjelmistotekniikan menetelmät, UML

TIE Ohjelmistojen suunnittelu

Ohjelmistojen mallintaminen, mallintaminen ja UML

Ohjelmistojen mallintaminen Unified Modeling Language (UML)

19. Unified Modeling Language (UML)

UML ja luokkien väliset suhteet

Olioperustaisuus (object oriented)

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

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

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

Rajapinta (interface)

Ohjelmistojen mallintaminen. Luento 4,

TIE Ohjelmistojen suunnittelu

UML työvälineenä ja tutkimuskohteena

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

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

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

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

UML:n yleiskatsaus. UML:n osat:

Paikkatiedon mallinnus Dokumentoinnin ymmärtäminen. Lassi Lehto

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. VII Suunnittelumallit Adapter ja Composite

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)

Ohjelmistotekniikan menetelmät

TIE Ohjelmistojen suunnittelu

Ohjelmistotekniikan menetelmät

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. VIII Suunnittelumallit Observer ja State

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

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

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

9. Periytyminen Javassa 9.1

TIE = JOTU. VH5 - MagicDraw

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

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

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

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

Ohjelmistojen mallintaminen

2 Ohjelmistoarkkitehtuurien kuvaus

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

Malliperustainen ohjelmistokehitys - MDE Pasi Lehtimäki

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

Ohjelmistojen suunnittelu

Mallinnus UML-yleiskatsaus

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton

Kertaus: yleistys-erikoistus ja perintä

Muutamia peruskäsitteitä

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

UML- mallinnus: Tilakaavio

Unified Modeling Language

Luokka- ja oliokaaviot

Tällä harjoituskerralla on tarkoituksena harjoitella käyttötapaus-, luokka- ja tapahtumasekvenssikaavioiden luontia.

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

Kertausta: Olioperustainen ohjelmistokehitys

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

TIE Ohjelmistojen suunnittelu

Ohjelmoinnin jatkokurssi, kurssikoe

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

Javan perusteita. Janne Käki

UML metamallina. Seminaariesitelmä Minna Majuri HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

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

JHS 162 Paikkatietojen mallintaminen tiedonsiirtoa varten Liite 1 UML-mallinnus

Ohjelmistojen mallintaminen. Luento 3, 9.11.

Ohjelmistojen mallintaminen. Luento 7,

Olio-ohjelmointi Johdanto olio-ohjelmointiin

Mikä yhteyssuhde on?

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

1. Olio-ohjelmointi 1.1

1 Tehtävän kuvaus ja analysointi

Ohjelmistotekniikan menetelmät, luokkamallin laatiminen

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

UML-MALLINNUSKIELI JA SEN HYÖDYNTÄMINEN OHJELMISTOKEHITYKSESSÄ

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

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

Attribuutit. Copyright IT Press Tämän e-kirjan kopiointi, tulostaminen ja jakeleminen eteenpäin luvatta on kielletty.

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

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

2. Olio-ohjelmoinista lyhyesti 2.1

Palvelusuuntautunut ohjelmistotuotanto Luento 6: Malliperustaisen ohjelmistotuotannon perusteet; palvelutuotannon mallit Toni Ruokolainen, 5.2.

Olio-ohjelmointi Suunnittelumallit Adapter ja Composite. 1. Adapter

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

18. Abstraktit tietotyypit 18.1

3. Komponentit ja rajapinnat

Ohjelmistojen mallintaminen kertausta Harri Laine 1

Arkkitehtuuripankki. Mallintamisen metamalli ja notaatiot

15. Ohjelmoinnin tekniikkaa 15.1

SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T

Metodien tekeminen Javalla

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Pakkaukset ja määreet

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

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

JReleaser Yksikkötestaus ja JUnit. Mikko Mäkelä

Transkriptio:

Lyhyt UML-opas UML -pikaesittely

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

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)

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

Luokkakaavio: perusjutut Yleisin kaaviotyyppi, käytetään vaikka mihin näkyvyys: (+) public (-) private (#) protected -attribute : Type <<stereotype>> Class +operation1() : ReturnValueType +operation2() : int stereotyyppi Luokan nimi Jäsenmuuttujat/attribuutit Jäsenfunktiot/operaatiot

UML ja suhteet Dependency/riippuvuus: heikoin suhde (esim. A käyttää B:tä jossakin jäsenfunktiossaan) Assosiaatio, vahvempi suhde kuin edellinen (määrittelemätön assosiaatio) Assosiaatio (yksisuuntainen) A tarvitsee B:tä, mutta B:n ei tarvitse tietää mitään A:sta. Assosiaatio (kaksisuuntainen). A tarvitsee B:tä ja päinvastoin. 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. TIE-20200 Samuel Lahtinen

Assosiaatiot ja nuolet Ruksilla kerrotaan yksisuuntaisuudesta 7

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_; };

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

Periytymiseen liittyvät suhteet

Abstrakti kantaluokka & virtuaalifunktiot Abstrakti kantaluokka: nimi italics/kursiivilla tai kertomalla luokalle abstract classifier Rajapinnan (interface) voi dokumentoida samoin Puhtaasti virtuaaliset/abstraktit funktiot: kursiivilla

tapahtumasekvenssikaaviot TIE-20200 Samuel Lahtinen

Korjaa tää TIE-20200 Samuel Lahtinen

Tilakaaviot 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?

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 voidaan piirrustella (samaan tapaan puhtaissa oliokielissä on metataso) MOF, metamalli, luokkakaavio ja oliotaso Miten näkyy oliokielissä? (luokkataso vs. oliotaso) metamalli (metataso) malli (mallitaso) oliot (hetki Ohjelman ajon aikana) M3: MOF (metametataso) M2: metamalli (metataso) M1: malli (mallinnus) M0: runtime (todelliset oliot)

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

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

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?

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

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