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

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

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

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,

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

Johdatus sovellussuunnitteluun

1. Tarkastellaan seuraavaa kaaviota

Olioperustaisuus (object oriented)

Kertausta: Olioperustainen ohjelmistokehitys

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

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

Ohjelmistojen mallintaminen luokkamallin laatiminen

Ohjelmistojen mallintaminen luokkamallin laatiminen

UML ja luokkien väliset suhteet

Johdatus sovellussuunnitteluun osa 2

UML Luokkakaavio 14:41

UML -mallinnus LUOKKAKAAVIO EERO NOUSIAINEN

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

Ohjelmistotekniikan menetelmät Luokkamallit ohjelmiston mallintamisessa Harri Laine 1

Luokkakohtaiset eli stattiset metodit ja attribuutit

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

Olio-ohjelmointi: Luokkien toteuttaminen. Jukka Juslin

Ohjelmistojen mallintaminen, kertausta

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

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

Luokkakaavion laatiminen

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

2. Olio-ohjelmoinnin perusteita 2.1

2. Olio-ohjelmoinnin perusteita 2.1

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

Ohjelmistojen mallintaminen

Ohjelmistojen mallintaminen, mallintaminen ja UML

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

Luokka- ja oliokaaviot

Mikä yhteyssuhde on?

Olioiden yhteistyön mallintaminen

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

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

3. Käsiteanalyysi ja käsitekaavio

Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja

1. Olio-ohjelmointi 1.1

Olio-ohjelmointi Javalla

Ohjelmistojen mallintaminen Olioiden yhteistyö Harri Laine 1

Rajapinta (interface)

Ohjelmistojen mallintaminen viikon 4 laskareiden mallivastauksia

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

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

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

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

Ohjelmistojen mallintaminen. Luento 2, 8.11.

Johdatus sovellussuunnitteluun, s2000, osa5 Helsingin yliopisto;/tktl. Harri Laine 1. Luokkakaavion tarkoitus. Luokkakaavion tarkoitus

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

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

Kertaus: yleistys-erikoistus ja perintä

Ohjelmistojen mallintaminen, kesä 2010

Tietokannan suunnittelu

TIE Ohjelmistojen suunnittelu

Javan perusteita. Janne Käki

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

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

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

Ohjelmistojen mallintaminen. Luento 3, 9.11.

Ohjelmistojen mallintaminen olioiden elinkaaret - tilakaavio Harri Laine 1

UML:n yleiskatsaus. UML:n osat:

Ohjelmistotekniikan menetelmät, kevät 2008

UML -mallinnus TILAKAAVIO

Luento 3 Tietokannan tietosisällön suunnittelu

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

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

Ohjelmistotekniikan menetelmät, kesä 2008

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

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

19. Unified Modeling Language (UML)

JHS 162 Paikkatietojen mallintaminen tiedonsiirtoa varten Liite 1 UML-mallinnus

2. Olio-ohjelmoinista lyhyesti 2.1

FoA5 Tilastollisen analyysin perusteet puheentutkimuksessa. Luentokuulustelujen esimerkkivastauksia. Pertti Palo. 30.

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

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

Ohjelmistotekniikan menetelmät, UML

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

Tietokantojen perusteet k2004helsingin yliopisto/tktl Tietokantojen perusteet, k 2006 relaatioalgebra. Harri Laine 1

Ohjelmistojen mallinnus Ohjelmistoarkkitehtuuri Harri Laine 1

Muutamia peruskäsitteitä

MatTaFi projektin HAKA-pilotti

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

TIEDONHALLINTA - SYKSY Luento 7. Pasi Ranne /10/17 Helsinki Metropolia University of Applied Sciences

Helsingin yliopisto, TKTL Tietokantojen perusteet, k 2000 Tietokannan suunnittelusta Harri Laine 1

Johdatus sovellussuunnitteluun, s 2001, osa 4b Helsingin yliopisto / TKTL Harri Laine / Inkeri Verkamo 1. Luokkakaavion tarkoitus

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

Transkriptio:

..999 DO NOT PRINT THIS DOCUMENT DO NOT PRINT THIS DOCUMENT Yhteyden nimi Nimen lukusuunta pankkitili asiakas 0..0 Omistaja->..3 <-Tili 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..0 Tili..3 Omistaja asiakas Yhteydelle voi antaa nimen kumpaankin suuntaan Sille ei tarvise antaa lainkaan nimeä Yhteysnimen asemasta tai lisäksi voidaan käyttää roolinimiä 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. pankkitili Tärkeää 0..0..3 Tili Omistaja asiakas 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 Asiakkaaseen kytkettyjen pankkitilien minimija maksimimäärä ilmoitetaan kumppanin (siis pankkitilin) puoleisessa päässä yhteysviivaa Kursin opiskelijoiden ylärajaa ei ole kiinnitetty () 0.. Opiskelija_kurssilla sta pääsee kurssin_opiskelijaan mutta ei toisinpäin Kun kuvauksen abtraktiotasoa nostetaan jätetään navigointimahdollisuus yleensä kuvaamatta. Tällöin yhteysviivan kummassakaan päässä ei ole nuolenkärkeä Jos yhteysviivan toisessa päässä kuvataan navigointimahdollisuus se tulkitaan kuvatuksi myös toisessa päässä A B 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. näin esitettynä B-olioista ei ole suoraa pääsyä A-olioihin Harri Laine

..999 Molemmat yhteyden osapuolina olevat oliot voivat kuulua samaan luokkaan. Työntekijä alainen 0.. esimies 0.. Työntekijällä voi olla vain yksi välitön esimies Työntekijällä voi olla useita alaisia Yhteyteen voidaan liittää järjestysmääre kuvaamaan sitä, että samaan olioon yhteydessä olevien olioiden joukko on jollain perusteella järjestetty Kirja 0.... tuote Tekijä {ordered} Henkilö Kirjan tekijöiden joukko on järjestetty Olioiden maihinnousu 2 Fox Mulder Dana Scully Järjestetty joukko 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 joukkue Pelaaja voi kuulua moneen joukkueeseen jäsen pelaaja Pelkkä tarkoittaa samaa kuin pari 0.. 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 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 Harri Laine 2

..999 Esimerkkejä: Rakennus Huoneisto Kompositio esitetään mustalla salmiakilla kokonaisuuden puoleisessa päässä 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. 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ä. Rakennus.. {id} Huone Huoneen yksikäsitteiseen identifiointiin tarvitaan tieto rakennuksesta, jossa huone sijaitsee Ohjelmassa komposition tapauksessa kokonaisuusolio on vastuussa osiensa luonnista ja hävittämisestä. Tarkastellaan tilannetta, jossa kurssin harjoitusryhmät on taulukon asemasta toteutettu RyhmaKokoelma-luokan avulla. Tämä luokka toteuttakoon dynaamisen taulukon (=taulukko, joka laajenee tarvittaessa). kurssi luo hävitä Yksityiskohtaisessa kuvauksessa tilanne olisi tällöin: Dynaaminen taulukko Harri Laine 3

..999 Sama asia voitaisiin toteuttaa myös vaikkapa listarakenteena. JSS:KURSSI JSS-RYHMÄT: 0.. first 0.. next JSS/H:H.RYHMÄ ilmentymätasolla JSS/2:H.RYHMÄ 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. Tarkastellaan vielä aiempaa esimerkkiä Abstrakti kuvaus Dynaaminen taulukko Toteutukset 0.. first 0.. next Tässä ratkaisussa todennäköisesti toteutettaisiin ohjelmointikielen tarjoamaa valmista dynaamista taulukkoa käyttäen (Javassa Vector) - miten tämä kuvataan UML:llä? Vector katkoviiva Vector On virheellinen, sillä kaikki Vector luokan ilmentymät eivät toki ole olemassaoloriippuvia Kursseista UML_ssä on mahdollista määritellä riippuuvuuksia luokkien välille, tässä on kyse riippuvuudesta yleiskäyttöisen luokan (Vector) ja sillä toteutetun luokan () välillä Harri Laine 4

..999 Java ohjelmana edellisen kalvon esimerkki toteutuisi seuraavasti Henkilö Yhdistys public class { Vector ; public void lisääryhmä(harjoitusryhmä h) {.additem(h); } 0.. Jäsenyys Rooli 0.. Tässä siis luokkaa 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 Tässä esimerkissä jäsenyys olioiden avulla kuvataan henkilön jäsenyyttä yhdistyksessä. Henkilö voi olla rivijäsen, johtokunnassa tai kunniajäsen. Ilmentymätasolla HYY:Yhdistys AP-RY Rooli=rivijäsen AP:Henkilö Tilanne voitaisiin mallintaa myös ns. yhteysluokan (association class) avulla AP-HYY Yhdistys 0.. 0.. Henkilö Rooli= johtok. KK-HYY Rooli= rivijäsen KK:Henkilö katkoviiva jäsenyys Rooli Tähän sisältyy implisiittisenä vaatimus siitä, että henkilöllä on enintään yksi jäsenyys kussakin yhdistyksessä... 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ä Oppikirjana Kirja Opettaja Opettaja käyttää kurssilla tiettyä oppikirjaa Harri Laine 5

..999 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. Riippuvuus Aiemmin oli jo esillä riippuvuus yleiskäyttöisestä luokasta kokoelman toteutuksessa. Class Käyttäjä { Yleinen kokoelma Täsmäkokoelma public omapalvelu(käytettävä k) { k.vieraspalvelu(); } } UML:ssä on nimetty 8 erilaista luokkakaaviossa mahdollista riippuvuutta. Näiden määrittelyt ovat kuitenkin osin varsin epämääräisiä Harri Laine 6