Ohjelmistotekniikan menetelmät, luokkamallin laatiminen

Samankaltaiset tiedostot
Ohjelmistojen mallintaminen luokkamallin laatiminen

Ohjelmistojen mallintaminen luokkamallin laatiminen

Ohjelmistotekniikan menetelmät

Ohjelmistotekniikan menetelmät

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

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

Olioperustaisuus (object oriented)

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

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

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

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

Ohjelmistojen mallintaminen Luokkakaaviot Harri Laine 1

UML Luokkakaavio 14:41

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

Olio-ohjelmointi Javalla

UML - unified modeling language

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

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

Ohjelmistotekniikan menetelmät, luokkamallin laatiminen

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

Ohjelmistotekniikan menetelmät, luokkamallin laatiminen

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

9. Periytyminen Javassa 9.1

Olio-ohjelmointi: Luokkien toteuttaminen. Jukka Juslin

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

UML ja luokkien väliset suhteet

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

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

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

Metodien tekeminen Javalla

UML -mallinnus LUOKKAKAAVIO EERO NOUSIAINEN

Mikä yhteyssuhde on?

Ohjelmistojen mallintaminen. Luento 3, 9.11.

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

Luokka- ja oliokaaviot

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

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

Ohjelmistotekniikan menetelmät, UML

Luokkakaavion laatiminen

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Ohjelmistojen mallintaminen kertausta Harri Laine 1

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

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

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

Ohjelmistojen mallintaminen, sekvenssikaaviot

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

Ohjelmistotekniikan menetelmät Luokkamallit ohjelmiston mallintamisessa Harri Laine 1

19. Unified Modeling Language (UML)

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

Oliot viestivät metodeja kutsuen

9. Periytyminen Javassa 9.1

3. Käsiteanalyysi ja käsitekaavio

Paikkatiedon mallinnus Dokumentoinnin ymmärtäminen. Lassi Lehto

KOHDELUOKAN MÄÄRITTELY

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

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

Sisällys. JAVA-OHJELMOINTI Osa 6: Periytyminen ja näkyvyys. Luokkahierarkia. Periytyminen (inheritance)

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

POLKU LUOKKAKAAVIOISTA TAULUJEN TOTEUTUKSEEN

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

Luokat ja oliot. Ville Sundberg

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004

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

2. Olio-ohjelmoinnin perusteita 2.1

Ohjelmistojen mallintaminen Unified Modeling Language (UML)

Johdatus sovellussuunnitteluun osa 2

2. Olio-ohjelmoinnin perusteita 2.1

Luokkakohtaiset eli stattiset metodit ja attribuutit

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

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

Periytyminen (inheritance)

Javan perusteita. Janne Käki

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

YHTEYSSUHDE (assosiation)

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

Johdatus sovellussuunnitteluun

Ohjelmistojen mallintaminen, kesä 2010

Ohjelmistotekniikan menetelmät, kesä 2008

Ohjelmistotekniikan menetelmät, käyttötapauksiin perustuva vaatimusmäärittely

Hakemistojen sisällöt säilötään linkitetyille listalle.

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

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

Ohjelmistotekniikan menetelmät, koe

Ohjelmistojen mallintaminen, kertausta

Jouni Huotari & Ari Hovi. Käsitemallinnuksesta relaatiokantaan KÄSITEMALLI. LOOGINEN MALLI: tietomalli valittu. FYYSINEN MALLI: DBMS valittu

public static void main (String [] args)

Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op

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

Ohjelmistotekniikan menetelmät, kevät 2008

Ohjelmistojen mallintaminen Olioiden yhteistyö Harri Laine 1

HELIA 1 (17) Outi Virkki Tiedonhallinta

15. Ohjelmoinnin tekniikkaa 15.1

Mitä on periytyminen?

17. Javan omat luokat 17.1

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

Transkriptio:

582101 - Ohjelmistotekniikan menetelmät, luokkamallin laatiminen 1

Perussanasto Luettelo organisaation toiminnan kannalta keskeisistä käsitteistä ja niiden määritelmistä Voidaan esittää Koko organisaatiolle liiketoimintatason sanasto Kullekin kohdealueelle tarkemmin ja liiketoimintatason sanastoa laajentaen Auttaa luokkamallin laatimisessa Olioiden, olioiden välisten suhteiden ja olioluokkien löytäminen 2

Liiketoimintatason luokkamalli Liiketoiminnalliset oliot (business entity) Vain organisaation päätoiminnallisuus ja peruskäsitteet Ei sisällä suunnittelu- eikä toteutustason käsitteitä (esim. käyttöliittymä- tai tietokantayhteysluokkia) Olioiden väliset yhteydet (association) Osallistumisrajoitteet (multiplicity) Koosteisuus (aggregation, composition) Yleistyssuhteet (generalizations) eli periytymishierarkia Ns. POJO-malli (Plain Ordinary Java Objects) 3

Luokkakaaviot UML:ssä Luokkakaavioilla kuvataan Ohjelmiston tai muun järjestelmän rakenne Olioiden tietosisältö Olioiden ja olioluokkien väliset suhteet Olioiden tarjoamat palvelut 4

Yhteysviivatyypeistä Erilaisia viivatyyppejä käytetään merkitsemään erilaisia asioita Assosiaatio, riippuvuus, yleistys Yhteystyypin valinta kertoo painotuksesta Kaavioiden tehtävä nä on parantaa ihmisten välistä kommunikaatiota 5

Luokkasymbolin osat 6

Luokan ilmentymän kuvaaminen Ilmentymäviitteessä esitetään alleviivattuna joko Ilmentymän nimi/tunniste Luokan nimi Molemmat Alemmassa osassa annetaan ilmentymän attribuuttien arvot Ilmentymiä käytetään yleensä vain esimerkkeinä 7

Kirahvi (Giraffa camelopardalis) Korkein maanisäkäs. Uroksen korkeus on 4,8 5,5 metriä ja paino jopa 900 kiloa. Kaulanikamia on seitsemän kuten muillakin nisäkkäillä ja niiden pituus on noin 40 cm. Kirahvin turkissa on vaalealla pohjalla eri kokoisia ja muotoisia läiskiä, joiden väri vaihtelee oranssista lähes mustaan. Jokaisen yksilön kuviointi on erilainen. Kirahvi voi elää luonnossa noin 25vuotiaaksi, tavallisesti elämänkaaren pituus on noin 15 20 vuotta. [Wikipedia] 8

Luokan attribuutit Kuvaavat olioiden tietosisällön muodon Attribuutista voidaan esittää Nimi (välttämätön) Tietotyyppi (String, Date, int, Kirahvi). Arvojen lukumäärä (multiplicity) Oletusarvona 1, epämääräisen monta = * Annetaan hakasuluissa, [5..*] Näkyvyys (visibility) Oletusarvo Muita määreitä 9

Attribuutin tyyppi ja arvo Attribuutin arvolla on tyyppi Tyyppi erotetaan attribuutin nimestä kaksoispisteellä (vrt. ilmentymän esittäminen) pvm: Date tai merkki: char Arvo voi olla perustietotyypin arvo, vaikkapa int UML ei rajoita perustietotyyppejä Olio, jolloin tietotyyppinä on olion luokka Olioarvoiset attribuutit esitetään tässä yhteydessä vain, jos olion luokka on perustietotyyppimäinen. String, Date, Color, Point Muutoin kyseessä on yhteys (association) 10

Attribuuttilajit ja lisämääreet Attribuutit ovat yleensä ilmentymäattribuutteja (instance attribute) Jokaisella luokan ilmentymällä on oma arvonsa UML:ssä myös luokka-attribuutteja (class attribute) Attribuutilla luokkakohtainen arvo Ilmaistaan alleviivaamalla attribuutin nimi Esim. Eläinten lukumäärän laskeminen Attribuutille voi antaa kaarisulkeissa { } lisämääreitä UML:ssä valmiina, esim. Frozen Mallintaja voi ottaa käyttöön omia 11

Näkyvyysmääreet Tekniikka attribuutin tai operaation käytön rajoittamiseen Merkitään erikoismerkillä tai ikonilla nimen eteen Vaihtoehdot: Private (-) sallii käytön vain luokan omissa operaatioissa Protected (#) sallii käytön myös luokan aliluokissa määriteltävissä operaatioissa Package (~) sallii käytön myös muissa saman paketin luokissa määriteltävissä operaatioissa Public (+) sallii käytön kaikkialla Käytetään usein vain ohjelmointiläheisessä kuvauksessa 12

Esimerkki: erilaisia attribuutteja Luokka-attribuutti seurvapaanro Näkyvyyssäännöt Private (-) Protected (#) Package (~) Public (+) Tietotyypit Int, String, decimal, Date Lisämääreet {frozen} 13

Esimerkki: erilaisia attribuutteja Luokkakohtainen seurvapaanro kertoo seuraavan vapaan tilinumeron Protected-määreet ovat käytettävissä tämän luokan ja aliluokkien operaatioissa Tilinumero:a ei voi muuttaa olion luonnin jälkeen 14

Esimerkki: erilaisia attribuutteja Tapahtumat on moniarvoinen attribuutti, tyyppi jätetty määrittelemättä Attribuutteihin tapahtumat ja saldo voi viitata vain luokan omissa operaatioissa Attribuuttiin valuuttakoodi voi viitata kaikissa niissä luokissa, jotka sijaitsevassa samassa pakkauksessa kuin tämä luokka 15

Attribuutit: UML ja Java UML-luokka vastaa Javan luokkaa Javan staattiset kentät (static field) vastaavat luokka-attribuutteja Muut Java-luokassa määritellyt kentät vastaavat ilmentymäattribuutteja UML:n näkyvyysmääreet vastaavat varsin hyvin Javan modifier-määreitä UML:n lisämääreet ({frozen}) saatetaan joutua toteuttamaan itse Javasta löytyy määreitä, jotka jäävät UML:ssä mallintajan kirjoitettavaksi (synchronized, strictfp) 16

Yhteydet (association) Yhteydet merkitään luokkakaavioon luokkien välisinä viivoina tai nuolina Yhteys merkitsee kyseisten luokkien ilmentymien välistä suhdetta Olioiden väliset yhteydet toteutetaan ohjelmakoodissa olioarvoisena attribuuttina.. Tai jotain muuta epäsuoraa, mutta pysyväisluonteista viittausta käyttäen 17

Moniarvoisuusmääreet (multiplicity) Kertoo, moniko yhteysluokan ilmentymä yhteyteen liittyy Esim. 1, *, 0..1 tai 1..* Alaraja 0 kertoo yhteyden olevan valinnainen Yläraja * kertoo yhteyksiä voivan olevan määrittelemätötömästi Lyhennysmerkinnät 1=1..1 ja * = 0..* 18

Esimerkki moniarvoisuusmääreestä Määritellään Java-ohjelmassa Pankkitili-luokan omistus-attribuutti seuraavasti Asiakas[] omitus = new Asiakas[3]; Tarkoittaen, että pankkitilillä voi olla korkeintaan kolme omistajaa Vaaditaan lisäksi, että pankkitilillä on oltava vähintään yksi omistaja Tämä ilmaistaan UML:llä näin: 19

Yhteyden navigoituvuus Yhteyskuvauksiin liitetty nuoli ilmaisee, että kyseessä on suunnattu yhteys Pankkitili tuntee omistajansa, mutta omistaja ei muista tilejään Tarvittaessa yhteydet voidaan suunnata molemminsuuntaisiksi 20

Esimerkki oliokaaviona 21

Yhteyksien yhdistäminen ja nimeäminen Ilmentymätasolla navigoitavat yhteydet ovat aina kaksisuuntaisia. Tällöin yhteydet voidaan yhdistää: Yhteydelle voi antaa nimen molempiin suuntiin Yhteyttä ei ole pakollista nimetä Nuoli yhteyden nimessä merkitsee lukusuunnan 22

Roolinimet Roolinimiä voidaan käyttää yhteysnimien lisäksi Esim. tili, omistaja Roolinimi voidaan [joskus] johtaa ohjelmakoodista, yhteyden toteuttavan kentän nimestä Roolinimi merkitään yhteyden kohteen päähän 23

Yhteyksien kuvaaminen eri abstraktiotasoilla Luokkia korkealla abstraktion tasolla kuvattaessa voimme jättää attribuutit ja/tai operaatiot merkitsemättä Vastaavasti, navigointimahdollisuus voidaan pudottaa pois Yhteysviivan kummassakaan päässä ei merkitä nuolenkärkeä 24

Yhteyksien kuvaamisen abstrahointi Navigointimahdollisuus jätetty esittämättä: Tämä tarkoittaa, että navigoiminen on mahdollista kumpaankin suuntaan Nuolenpää omistajasta suuntaan pankkitili Tämä kuvaa sveitsiläistä pankkitiliä omistaja tietää tilinsä, mutta tili ei omistajaansa. 25

Yhteys samaan luokkaan Molemmat yhteyden osapuolina olevat oliot voivat kuulua samaan luokkaan Esimerkki: työntekijällä on vain yksi välitön esimies Esimiehellä taas n alaista Ylimmällä päälliköllä ei ole esimiestä 26

Esimies-alainen suhde oliokaaviona 27

Ilmentymien järjestys Yhteyteen voidaan liittää järjestysmääre ilmaisemaan, että olioon yhteydessä olevien olioiden joukko on jollain perusteella järjestetty Esimerkki: kirjan kirjoittajat on järjestetty 28

Operaatioiden määritteleminen UML:ssä Operaatioille annettavat tiedot Näkyvyys (kuten attribuuteille) Nimi (ainut pakollinen osa) Parametrit Paluuarvon tyyppi Muut määreet Syntaksi (hakasuluilla merkitään optionaalinen osuus) [näkyvyys] nimi [(parametrit)] [: paluuarvon tyyppi] [{muut määreet}] l parametrimäärittelyn muoto on l[suunta] nimi: tyyppi [= oletusarvo] 29

Henkilötunnus-luokan attribuutit ja operaatiot Henkilötunnusta mallintavalla luokalla on neljä julkista operaatiota Yksi operaatioista on konstruktori Operaatio getbirthdate palauttaa Date-tyyppisen olion Konstruktorille annetaan parametrina henkilötunnus merkkijonona 30

Kysymyksiä? 31