UML ja luokkien väliset suhteet

Samankaltaiset tiedostot
Mikä yhteyssuhde on?

YHTEYSSUHDE (assosiation)

Vahva koostumussuhde (Composition)

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

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

UML -mallinnus LUOKKAKAAVIO EERO NOUSIAINEN

Luokan muodostimet (Constructors)

Olio-ohjelmointi Javalla

KOHDELUOKAN MÄÄRITTELY

on ohjelmoijan itse tekemä tietotyyppi, joka kuvaa käsitettä

Kooste. Esim. Ympyrän keskipiste voidaan ajatella ympyrän osaksi.

Listarakenne (ArrayList-luokka)

T Olio-ohjelmointi Osa 3: Luokka, muodostin ja hajotin, this-osoitin Jukka Jauhiainen OAMK Tekniikan yksikkö 2010

Periytyminen (inheritance)

Luokan sisällä on lista

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

2. Olio-ohjelmoinista lyhyesti 2.1

15. Ohjelmoinnin tekniikkaa 15.1

Metodien tekeminen Javalla

Java kahdessa tunnissa. Jyry Suvilehto

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

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

Osion kaksi kertaus. Jukka Juslin. Jukka Juslin

Ohjelmistotekniikan menetelmät, koe

public static void main (String [] args)

UML Luokkakaavio 14:41

15. Ohjelmoinnin tekniikkaa 15.1

Rajapinta (interface)

Lista luokan sisällä

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

1 Tehtävän kuvaus ja analysointi

Sisältö. 22. Taulukot. Yleistä. Yleistä

Ohjelmoinnin jatkokurssi, kurssikoe

Yksikkötestaus. Kattava testaus. Moduulitestaus. Ohjelman testaus. yksikkotestaus/ Seija Lahtinen

4. Olio-ohjelmoinista lyhyesti 4.1

Taulukot. Taulukon määrittely ja käyttö. Taulukko metodin parametrina. Taulukon sisällön kopiointi toiseen taulukkoon. Taulukon lajittelu

Olio-ohjelmointi Syntaksikokoelma

Javan perusteita. Janne Käki

Sisältö. 2. Taulukot. Yleistä. Yleistä

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Luokat ja oliot. Ville Sundberg

TyontekijaOhjelma. +main() (käyttää) + = public - = private

Tehtävä 1. Tehtävä 2. Arvosteluperusteet Koherentti selitys Koherentti esimerkki

Ohjelmointi 2 / 2008 Välikoe / Pöytätestaa seuraava ohjelma.

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

Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen

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

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

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

Ohjelmointi 2, välikoe

19. Olio-ohjelmointia Javalla 19.1

Sisällys. 19. Olio-ohjelmointia Javalla. Yleistä. Olioiden esittely ja alustus

Ohjelmointi 2 / 2010 Välikoe / 26.3

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

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

1. Olio-ohjelmointi 1.1

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

1. Omat operaatiot 1.1

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

Interaktiivinen tarinankerronta

18. Abstraktit tietotyypit 18.1

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

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

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista.

9. Periytyminen Javassa 9.1

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

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

4. Luokan testaus ja käyttö olion kautta 4.1

ict02d Osio2- luento 3 Olio-ohjelmointi: Luokkien kirjoittaminen

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

Taulukot. Jukka Harju, Jukka Juslin

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen

Ohjelmoinnin perusteet, kurssikoe

Sisällys. Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

Oliot viestivät metodeja kutsuen

Ohjelmistojen mallintaminen. Luento 3, 9.11.

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Tietorakenneluokkia 2: HashMap, TreeMap

Tietokannat II -kurssin harjoitustyö

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

List-luokan soveltamista. Listaan lisääminen Listan läpikäynti Listasta etsiminen Listan sisällön muuttaminen Listasta poistaminen Listan kopioiminen

2. Käsiteanalyysi ja relaatiomalli

16. Javan omat luokat 16.1

Olio-ohjelmointi: Luokkien toteuttaminen. Jukka Juslin

Osio2: Taulukot Jukka Juslin

Ohjelmistotekniikan menetelmät, luokkamallin laatiminen

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

TIETORAKENTEET JA ALGORITMIT

1. Kun käyttäjä antaa nollan, niin ei tulosteta enää tuloa 2. Hyväksy käyttäjältä luku vain joltain tietyltä väliltä (esim tai )

13 Operaattoreiden ylimäärittelyjä

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

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

9. Periytyminen Javassa 9.1

1. Mitä tehdään ensiksi?

Metodien tekeminen Javalla

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

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

Olioperustaisuus (object oriented)

Toisessa viikkoharjoituksessa on tavoitteena tutustua JUnit:lla testaukseen Eclipse-ympäristössä.

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

Transkriptio:

UML ja luokkien väliset suhteet -Luokan kuvaaminen UML-tekniikalla -Yhteyssuhde ja koostumussuhde 1

Luokan kuvaaminen UML-tekniikalla : Luokka - attribuutti1 : tietotyyppi # attribuutti2 : tietotyyppi + attribuutti3 : tietotyyppi - metodinnimi (param1:tietotyyppi... param9:tietotyyppi) : paluuarvon_tietotyyppi # metodinnimi (param1:tietotyyppi... param9:tietotyyppi) : paluuarvon_tietotyyppi + metodinnimi (param1:tietotyyppi... param9:tietotyyppi) :paluuarvon_tietotyyppi - private, # protected, + public 2

Esim. Aika-luokka : Aika - tunnit : int - minuutit : int - sekunnit : int + Aika() + Aika(tunti: int, minuutti: int, sekunti: int) + Aika (tunti: int) + Aika (aika: Aika) + settunnit(tunnit: int): void + setminutit (m: int): void + setsekunnit (s: int): void + gettunnit(): int + getminuutit(): int + getsekunnit(): int + tostring () : String 3

Miten toteutan luokkien väliset suhteet? Esim. Opintojakso -tunnus : String -nimi : String -laajuus : int 1 * Toteutus -numero : int 1 Toteutuksen aloituspvm 1 GregorianCalendar 1 -Toteutuksen lopetuspvm 1 Yhteyssuhde Vahva koostumussuhde 4

Yhteyssuhde (association) Yhteyssuhde kuvaa kahden olion välistä suhdetta: yhteyssuhdetta kutsutaan yksinkertaiseksi, jos toinen olioista osallistuu enintään kerran suhteeseen Opiskelija Suoritus 1 * yhteyssuhdetta kutsutaan moninkertaiseksi, jos kummatkin oliot osallistuvat useasti suhteeseen Opiskelija Kurssi * * 5

Yhteyssuhde (association) jatkuu Yksinkertainen yhteyssuhde toteutetaan yleensä siten, että siihen luokkaan, jossa on nolla tai yksi yhteyttä toiseen olioon, lisätään attribuutti, joka viittaa yhteydessä olevaan olioon. Moninkertainen yhteyssuhde toteuttaa yleensä siten, että sijoitetaan siihen luokkaan, jonka kautta käytetään suhteessa olevia olioita useammin kuin päinvastoin, tietorakenne, johon tallettetaan viittaukset suhteessa oleviin olioihin esim. ArrayList 6

Yhteyssuhde (association) jatkuu Esim. yksinkertainen yhteyssuhde: Opiskelija Suoritus public class Suoritus private Opiskelija opiskelija;... 1 * Esim. moninkertainen yhteyssuhde: Tilaus Tuote public class Tilaus * * private ArrayList<Tuote> tuotteet;... 7

Esimerkin luokkakaavio 8

Yhteyssuhteen toteuttaminen Toteutus-luokassa public class Toteutus private int numero; private Opintojakso opintojakso; viittaus opintojaksoon, kertoo minkä opintojakson toteutuksesta on kyse private //oletusmuodostin public Toteutus()... opintojakso = null; 9

Toteutus-luokka ja yhteyssuhde jatkuu //parametrillinen muodostin public Toteutus ( Opintojakso op, int numero, )... setopintojakso (op); //kopiointimuodostin public Toteutus(Toteutus toteutus) this(); // oletusmuodostinmen kutsu if (toteutus!= null)... opintojakso = toteutus.opintojakso; 10

Toteutus-luokka ja yhteyssuhde jatkuu public Opintojakso getopintojakso() return opintojakso; public void setopintojakso(opintojakso opintojakso) this.opintojakso = opintojakso; public String tostring() String paluu=null; if (opintojakso!= null) paluu = opintojakso.gettunnus()+"-" + numero +" " + opintojakso.getnimi() + " " ; else paluu = numero + " ";... return paluu; 11

Koostumussuhde Koostumussuhteita on kaksi: 1. Heikko koostumussuhde (Aggregation) ja 2. Vahva koostumussuhde (Composition) Koostumussuhde esittää suhteen on osa tai kuuluu olioiden välillä Esim. henkilökunta kuuluu yritykseen". koostuminen on aina yhdensuuntaista eli edellisessä esimerkissä ei voida ajatella että yritys kuuluu henkilökuntaan. 12

Heikko koostumussuhde (aggregation) Heikko koostumussuhde (aggregate) toteutetaan usein kuten yhteyssuhde Esim. heikko koostumussuhde, jossa tilaus muodostuu tilausriveistä Tilaus Tilausrivi -tilattu_maara : 1 * int * 1 Tuote public class Tilaus private ArrayList<Tilausrivi> rivi; 13

Aito/Vahva koostumussuhde (composition) Tarkoittaa koostumussuhdetta, jossa osaolio riippuu isäntäoliostaan kahdella tavalla: Osa ei ole olemassa ilman isäntää Osa voi olla vain yhden isännän osa isännän tulee huolehtia osan luomisesta ja tuhoamisesta Esim. Ministeri voi olla olemassa vain tietyssä valtioneuvostossa. 1 * Ks. Tuntiharjoitus 1 public class Valtioneuvosto private Ministeri ministeri; Valtioneuvosto Ministeri 14

Esimerkin luokkakaavio 15

Vahva koostumussuhteen toteuttaminen Toteutus-luokassa public class Toteutus private int numero; private Opintojakso opintojakso; private GregorianCalendar aloituspvm ; private GregorianCalendar lopetuspvm; //oletusmuodostin public Toteutus() numero = 0; opintojakso = null; // osa-olio luodaan samaan aikaan kuin isäntä aloituspvm = new GregorianCalendar(); lopetuspvm = new GregorianCalendar(); 16

Toteutus-luokka ja vahva koostumussuhde jatkuu //parametrillinen muodostin public Toteutus ( Opintojakso op,int numero, GregorianCalendar alku, GregorianCalendar loppu) this(); // oletusmuodostimen kutsu... setaloituspvm(alku); setlopetuspvm(loppu); //kopiointimuodostin public Toteutus(Toteutus toteutus) this(); // oletusmuodostinmen kutsu if (toteutus!= null) muutaaloituspvm(toteutus.aloituspvm); muutalopetuspvm(toteutus.lopetuspvm);... 17

Toteutus-luokka ja vahva koostumussuhde jatkuu private void muutaaloituspvm(gregoriancalendar pvm) if ( pvm!= null) aloituspvm.set( pvm.get(calendar.year), pvm.get(calendar.month), pvm.get(calendar.date)); private void muutalopetuspvm(gregoriancalendar pvm) if ( pvm!= null) lopetuspvm.set( pvm.get(calendar.year), pvm.get(calendar.month), pvm.get(calendar.date)); 18

Toteutus-luokka ja vahva koostumussuhde jatkuu public void setaloituspvm(gregoriancalendar aloituspvm) muutaaloituspvm(aloituspvm); public void setlopetuspvm(gregoriancalendar lopetuspvm) muutalopetuspvm (lopetuspvm); 19

Toteutus-luokka ja vahva koostumussuhde jatkuu private GregorianCalendar teekopio(gregoriancalendar pvm) GregorianCalendar paluu = null; if ( pvm!= null) paluu= new GregorianCalendar( pvm.get(calendar.year), pvm.get(calendar.month), pvm.get(calendar.date)); return paluu; 20

Toteutus-luokka ja vahva koostumussuhde jatkuu public GregorianCalendar getaloituspvm() GregorianCalendar pvm = null; pvm = teekopio(aloituspvm); return pvm; public GregorianCalendar getlopetuspvm() GregorianCalendar pvm = null; pvm = teekopio(lopetuspvm); return pvm; 21

Toteutus-luokka ja vahva koostumussuhde jatkuu public String tostring() String paluu=null; if (opintojakso!= null) paluu = opintojakso.gettunnus()+"-" + numero +" " + opintojakso.getnimi() + " " ; else paluu = numero + " "; paluu = paluu + aloituspvm.get(calendar.date) +"." + (aloituspvm.get(calendar.month)+1) +"." + aloituspvm.get(calendar.year) ; paluu = paluu + "-" + lopetuspvm.get(calendar.date) +"." + (lopetuspvm.get(calendar.month)+1) +". + lopetuspvm.get(calendar.year) ; return paluu; // ks. Tuntiharjoitus 2 22