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



Samankaltaiset tiedostot
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

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

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

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

Ohjelmistotekniikan menetelmät

Ohjelmistotekniikan menetelmät

Ohjelmistotekniikan menetelmät, luokkamallin laatiminen

Ohjelmistojen mallintaminen Luokkakaaviot Harri Laine 1

UML - unified modeling language

Ohjelmistotekniikan menetelmät, luokkamallin laatiminen

Ohjelmistojen mallintaminen kertausta Harri Laine 1

Ohjelmistojen mallintaminen. Luento 4,

1. Tarkastellaan seuraavaa kaaviota

Olio-ohjelmointi: Luokkien toteuttaminen. Jukka Juslin

Kertausta: Olioperustainen ohjelmistokehitys

UML Luokkakaavio 14:41

UML ja luokkien väliset suhteet

Ohjelmistojen mallintaminen luokkamallin laatiminen

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

Ohjelmistojen mallintaminen luokkamallin laatiminen

UML -mallinnus LUOKKAKAAVIO EERO NOUSIAINEN

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

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

Olioperustaisuus (object oriented)

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

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

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

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

Luokkakohtaiset eli stattiset metodit ja attribuutit

Johdatus sovellussuunnitteluun

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

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

Ohjelmistojen mallintaminen, kertausta

Ohjelmistojen mallintaminen, mallintaminen ja UML

Mikä yhteyssuhde on?

Luokkakaavion laatiminen

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

Ohjelmistotekniikan menetelmät Luokkamallit ohjelmiston mallintamisessa Harri Laine 1

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

Rajapinta (interface)

Luokka- ja oliokaaviot

1. Olio-ohjelmointi 1.1

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

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

Johdatus sovellussuunnitteluun osa 2

2. Olio-ohjelmoinnin perusteita 2.1

2. Olio-ohjelmoinnin perusteita 2.1

Olioiden yhteistyön mallintaminen

Olio-ohjelmointi Javalla

2. Olio-ohjelmoinista lyhyesti 2.1

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

Muutamia peruskäsitteitä

UML -mallinnus TILAKAAVIO

Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja

3. Käsiteanalyysi ja käsitekaavio

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes)

Ohjelmistojen mallintaminen

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

Tietokannan suunnittelu

TIE Ohjelmistojen suunnittelu

Ohjelmistojen mallintaminen viikon 4 laskareiden mallivastauksia

Ohjelmistojen mallintaminen Olioiden yhteistyö Harri Laine 1

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

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

Nimi: Henkilötunnus: {id} {+id}

Tietokantojen perusteet k2004helsingin yliopisto/tktl Tietokantojen perusteet, s 2007 ER-mallin peruskäsitteet.

YHTEYSSUHDE (assosiation)

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

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

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

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

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

Ohjelmistojen mallintaminen. Luento 6,

Ohjelmistojen mallintaminen. Luento 2, 8.11.

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Kertaus: yleistys-erikoistus ja perintä

19/20: Ikkuna olio-ohjelmoinnin maailmaan

Javan perusteita. Janne Käki

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

Ohjelmistojen mallintaminen. Luento 3, 9.11.

UML- mallinnus: Tilakaavio

1 Tehtävän kuvaus ja analysointi

T Ohjelmistojen määrittely- ja suunnittelumenetelmät Harjoitustyöraportti TNT - Tarkistetaan Ne Tentit Analyysimalli

Ohjelmistotekniikan menetelmät, kevät 2008

Tietokannat II -kurssin harjoitustyö

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

UML:n yleiskatsaus. UML:n osat:

MatTaFi projektin HAKA-pilotti

Ohjelmistojen mallintaminen olioiden elinkaaret - tilakaavio Harri Laine 1

CS-A1150 Tietokannat CS-A1150 Tietokannat / 35

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

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

Ohjelmistotekniikan menetelmät, kesä 2008

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

A TIETORAKENTEET JA ALGORITMIT

Taulukot. Jukka Harju, Jukka Juslin

19. Unified Modeling Language (UML)

JHS 162 Paikkatietojen mallintaminen tiedonsiirtoa varten Liite 1 UML-mallinnus

Transkriptio:

DO NOT PRINT THIS DOCUMENT DO NOT PRINT THIS DOCUMENT Olioiden väliset yhteydet Yhteyden nimi Nimen lukusuunta pankkitili 0..10 Omistaja-> 1..3 asiakas <-Tili Yhteydelle voi antaa nimen kumpaankin suuntaan Sille ei tarvise antaa lainkaan nimeä Yhteysnimen asemasta tai lisäksi voidaan käyttää roolinimiä

Olioiden väliset yhteydet Tässä tili ja omistaja ovat roolinimiä, Ohjelmaa kuvattaessa kumppanin roolinimenä voi käyttää olion sisältämän kumppaniin viittaavan muuttujan nimeä pankkitili 0..10 1..3 asiakas Tili Omistaja Tili -muuttuja (tässä tapauksessa taulukko) sisältyy jokaiseen Asiakas-olioon. Sitä ei kuitenkaan suositella esitettäväksi asiakkaan attribuuttina, jotta vältettäisiin tarpeetonta saman asian toistoa. Vastaavasti Omistaja on pankkitiliin sisältyvä taulukkomuuttuja.

Olioiden väliset yhteydet Tärkeää pankkitili 0..10 1..3 asiakas Tili Omistaja Asiakkaaseen kytkettyjen pankkitilien minimija maksimimäärä ilmoitetaan kumppanin (siis pankkitilin) puoleisessa päässä yhteysviivaa

Olioiden väliset yhteydet Yhteysviivan päässä oleva nuolenkärki kuvaa ns. navigointimahdollisuutta eli sitä, että viivan päässä olevan luokan olioista pääsee suoraan nuolella osoitetun luokan olioon (yhteen tai useampaan) - oliossa on siis siirtymän mahdollistava olioarvoinen muuttuja Kurssi 1 0..* Opiskelija_kurssilla Kursin opiskelijoiden ylärajaa ei ole kiinnitetty (*) Kurssista pääsee kurssin_opiskelijaan mutta ei toisinpäin

Olioiden väliset yhteydet Kun kuvauksen abtraktiotasoa nostetaan jätetään navigointimahdollisuus yleensä kuvaamatta. Tällöin yhteysviivan kummassakaan päässä ei ole nuolenkärkeä A B Tämän ei tarkoita sitä, ettei A:sta pääse B:hen ja päinvastoin vaan sitä, että navigointimahdollisuus on jätetty esittämättä. Mahdollisuuden voi ajatella olevan molemminsuuntainen.

Olioiden väliset yhteydet Jos yhteysviivan toisessa päässä kuvataan navigointimahdollisuus se tulkitaan kuvatuksi myös toisessa päässä A B näin esitettynä B-olioista ei ole suoraa pääsyä A-olioihin

Olioiden väliset yhteydet Molemmat yhteyden osapuolina olevat oliot voivat kuulua samaan luokkaan. Työntekijä alainen 0..* esimies 0..1 Työntekijällä voi olla vain yksi välitön esimies Työntekijällä voi olla useita alaisia

Olioiden väliset yhteydet Yhteyteen voidaan liittää järjestysmääre kuvaamaan sitä, että samaan olioon yhteydessä olevien olioiden joukko on jollain perusteella järjestetty Kirja 0..* 1..* tuote Tekijä {ordered} Henkilö Kirjan tekijöiden joukko on järjestetty

Olioiden väliset yhteydet Olioiden maihinnousu 1 2 Fox Mulder Dana Scully Järjestetty joukko

Olioiden väliset yhteydet Jos yhteyden osapuolta voidaan pitää osana toista osapuolta on kyseessä kooste (aggregate). Tällainen yhteyden erikoistapaus voidaan esittää yhteysviivan kokonaisuuden puoleiseen päähän sijoitetun salmiakkisymbolin avulla Pelaaja voi kuulua moneen joukkueeseen joukkue * * jäsen pelaaja Pelkkä * tarkoittaa samaa kuin pari 0..*

Olioiden väliset yhteydet Kooste auttaa hahmottamaan sitä, miten oliot semanttisesti kytkeytyvät toisiinsa. Sillä ei välttämättä ole mitään vaikutusta esimerkiksi navigointimahdollisuuksiin. Yleensä kuitenkin kokonaisuudesta on aina pääsy osiinsa. joukkue * * jäsen pelaaja Pelaajasta on suora pääsy pelaajan joukkuesseen ja joukkueesta sen pelaajiin

Olioiden väliset yhteydet Ohjelman toiminnan kannalta koostetta merkittävämpi yhteys on kompositio-yhteys (composition). Kompositio voidaan ajatella koosteen erikoistapauksena, jossa osan olemassaolo on kytketty kokonaisuuden olemassaoloon - kun kokonaisuus hävitetään häviävät myös sen osat (tavallisen koosteen kohdalla näin ei käy) osa voi sisältyä vain yhteen samantyyppisen kompositioon osa ei voi vaihtaa kompositiota vaan on aina osa samaa kokonaisuutta

Esimerkkejä: Olioiden väliset yhteydet Kurssi * Harjoitusryhmä Rakennus * Huoneisto Kompositio esitetään mustalla salmiakilla kokonaisuuden puoleisessa päässä

Olioiden väliset yhteydet Kompositio on UML:ssä ainoa tapa ilmaista olemassaoloriippuvuus. Olemassaoloriippuvuus on mallintamisessa hyvin tärkeä asia. Tärkeämpi kuin osan ja kokonaisuuden yhteys. Jos olemassaoloriippuvuus pitää kyetä esittämään on kompositiota syytä käyttää vaikka osa - kokonaisuusyhteys ei aivan selvältä näyttäisikään.

Olioiden väliset yhteydet Kompositiota käytetään reaalimaailmassa usein hyväksi olioiden identifioinnissa. Rakennuksen Teollisuuskatu 23 huone B446 pitää sisällään komposition. Perus-UML ei tarjoa keinoa komposition kautta tapahtuvan ulkoisen identifioinnib kuvaamiseen, joten tällä kurssilla otetaan käyttöön yhteydeen osan puolelle liitettävä lisämääre {id} esittämään tätä.

Olioiden väliset yhteydet Rakennus 1..* {id} Huone Huoneen yksikäsitteiseen identifiointiin tarvitaan tieto rakennuksesta, jossa huone sijaitsee

Olioiden väliset yhteydet Ohjelmassa komposition tapauksessa kokonaisuusolio on vastuussa osiensa luonnista ja hävittämisestä. kurssi luoharjoitusryhmä hävitäharjoitusryhmä

Yhteydet ja abstraktiotasot Tarkastellaan tilannetta, jossa kurssin harjoitusryhmät on taulukon asemasta toteutettu RyhmaKokoelma-luokan avulla. Tämä luokka toteuttakoon dynaamisen taulukon (=taulukko, joka laajenee tarvittaessa). Yksityiskohtaisessa kuvauksessa tilanne olisi tällöin: 1 Kurssi RyhmäKokoelma Dynaaminen taulukko * Harjoitusryhmä

Yhteydet ja abstraktiotasot JSS:KURSSI JSS-RYHMÄT: JSS/H1:H.RYHMÄ JSS/21:H.RYHMÄ ilmentymätasolla

Yhteydet ja abstraktiotasot Sama asia voitaisiin toteuttaa myös vaikkapa listarakenteena. Kurssi 1 0..1 first Harjoitusryhmä 0..1 next 1 Näissä kummassakin kuvauksessa, erityisesti ylläolevassa, ratkaisun yksityiskohdat vaikeuttavat oleellisen kokonaisuuden hahmotusta sitä, että kurssiin liittyy useita harjoitusryhmiä, jotka ovat olemassaoloriippuvia kurssista. Kuvauksen abstraktiotasoa on tällöin syytä nostaa häivyttämällä tekninen ratkaisu.

Yhteydet ja abstraktiotasot Kurssi * Harjoitusryhmä Abstrakti kuvaus Kurssi Toteutukset 1 RyhmäKokoelma * Kurssi 1 0..1 first Harjoitusryhmä 0..1 next 1 Harjoitusryhmä

Kokoelman toteutus Tarkastellaan vielä aiempaa esimerkkiä Kurssi 1 RyhmäKokoelma Dynaaminen taulukko * Harjoitusryhmä Tässä ratkaisussa RyhmäKokoelma todennäköisesti toteutettaisiin ohjelmointikielen tarjoamaa valmista dynaamista taulukkoa käyttäen (Javassa Vector) - miten tämä kuvataan UML:llä?

Kokoelman toteutus Kurssi 1 Vector * Harjoitusryhmä On virheellinen, sillä kaikki Vector luokan ilmentymät eivät toki ole olemassaoloriippuvia Kursseista

Kokoelman toteutus Kurssi 1 RyhmäKokoelma katkoviiva Vector * Harjoitusryhmä UML_ssä on mahdollista määritellä riippuuvuuksia luokkien välille, tässä on kyse riippuvuudesta yleiskäyttöisen luokan (Vector) ja sillä toteutetun luokan (RyhmäKokoelma) välillä

Kokoelman toteutus Java ohjelmana edellisen kalvon esimerkki toteutuisi seuraavasti public class Kurssi { Vector RyhmäKokoelma; public void lisääryhmä(harjoitusryhmä h) { } RyhmäKokoelma.addItem(h); Tässä siis luokkaa RyhmäKokoelma ei ole määritelty. On vain Vector luokan ilmentymä, mutta koska Vector on geneerinen yleiskäyttöinen luokka sen ilmentymä voidaan ajatella tarkoitukseen sidotuksi luokaksi

Yhteydet ja abstraktiotasot Henkilö Yhdistys 0..* 0..* Jäsenyys Rooli Tässä esimerkissä jäsenyys olioiden avulla kuvataan henkilön jäsenyyttä yhdistyksessä. Henkilö voi olla rivijäsen, johtokunnassa tai kunniajäsen.

Yhteydet ja abstraktiotasot Ilmentymätasolla HYY:Yhdistys AP-RY Rooli=rivijäsen AP:Henkilö AP-HYY Rooli= johtok. KK-HYY Rooli= rivijäsen KK:Henkilö...

Yhteydet ja abstraktiotasot Tilanne voitaisiin mallintaa myös ns. yhteysluokan (association class) avulla Yhdistys 0..* 0..* Henkilö katkoviiva jäsenyys Rooli Tähän sisältyy implisiittisenä vaatimus siitä, että henkilöllä on enintään yksi jäsenyys kussakin yhdistyksessä

Yhteydet ja abstraktiotasot Yhteysluokkaa käyttäen voidaan kahden olion väliseen kytkentään liittää kytkennän laatua kuvaavia attribuutteja.

Yhteydet UML:ssä on mahdollista kuvata myös useamman kuin kahden olion välisiä kytkentöjä Kurssi Oppikirjana Kirja Opettaja Opettaja käyttää kurssilla tiettyä oppikirjaa

Luokkien väliset suhteet Edellä on tarkasteltu olioiden (ilmentymien) välisiä yhteyksiä. Luokkakaaviossa nämä kuvataan luokkien välillä. UML:ssä voidaan lisäksi esittää luokkien välisiä riippuvuuksia (depency) ja luokkahierarkia

Riippuvuus Luokien välisellä riippuvuudella tarkoitetaan tilannetta, jossa luokan määrittelyissä tapahtuvalla muutoksella voi olla vaikutuksia toisen luokan toimintaan. Riippuvuus kuvataan katkoviivalla, jonka päässä oleva nuolenkärki osoittaa siihen luokkaan josta viivan toisessa päässä oleva on riippuva Käytettävä Käyttäjä (katkoviiva) Käyttäjä on riippuvuussuhteessa käytettävään

Riippuvuus Esimerkki riippuvuudesta on palvelun parametrin aiheuttama riippuvuus, jossa palvelun tarjoava luokka tulee riippuvaksi parametrin luokasta. Class Käyttäjä { } public omapalvelu(käytettävä k) { } k.vieraspalvelu();

Riippuvuus Aiemmin oli jo esillä riippuvuus yleiskäyttöisestä luokasta kokoelman toteutuksessa. Yleinen kokoelma Täsmäkokoelma UML:ssä on nimetty 8 erilaista luokkakaaviossa mahdollista riippuvuutta. Näiden määrittelyt ovat kuitenkin osin varsin epämääräisiä