Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

Systeemityö 2 Olioajattelu, luokkakaavio

Samankaltaiset esitykset


Esitys aiheesta: "Systeemityö 2 Olioajattelu, luokkakaavio"— Esityksen transkriptio:

1 Systeemityö 2 Olioajattelu, luokkakaavio
Teppo Räisänen, Principal Lecturer Oulu University of Applied Sciences, School of Business and Information Management

2 Olioajattelu Luokka ja olio Periytyminen Monimuotoisuus Luokkakaavio

3 Olioajattelu – Luokka ja olio
Oliosuuntautuneen mallinnuksen tärkeimmät elementit Luokat, oliot ja niiden väliset suhteet Luokat ja oliot mallintavat kuvattavan järjestelmän sisältöä Luokkien väliset suhteet näyttävät, kuinka ne rakentuvat toisiinsa nähden Kun järjestelmä rakennetaan oliosuuntautuneella ohjelmointikielellä, luokat ja suhteet muuttuvat suoraan lähdekoodiksi koodigeneraattori

4 Olioajattelu – Luokka ja olio
Olio (object) Asia, josta voidaan keskustella ja jota voidaan käsitellä On olemassa oikeassa maailmassa Voi olla osa mitä tahansa järjestelmää, kuten konetta, organisaatiota tai yritystä Luokka (class) Kuvaus olion tyypistä Kuvailee yhden tyypin olioiden ominaisuudet ja käyttäytymisen Kaikki oliot ovat jonkun luokan ilmentymiä (instances) Olioita luodaan luokista, jolloin ne ovat luokkansa mukaisia ilmentymiä

5 Esimerkki – Luokka ja olio
Opettaja T. Räisänen Luokka: opettaja Olio: T. Räisänen Oppilas S. Virtanen Luokka: oppilas Olio: S. Virtanen Oulun seudun ammattikorkeakoulu Luokka: koulu (ammattikorkeakoulu) Olio: OAMK

6 Luokkakaavio Luokkakaavio on staattinen mallinnustyyppi
Kuvaa järjestelmän staattisen eli pysyvän rakenteen luokkien ja niiden välisten suhteiden avulla Luokkakaavion yksi tehtävä on määrittää perusta muille kaavioille Esimerkiksi olioiden tiloja ja olioiden välistä yhteistyötä kuvaaville dynaamisille kaavioille työskentelee opiskelee Opettaja Koulu Oppilas

7 Luokkakaavio Luokkakaaviota varten luokat on tunnistettava ja kuvattava Luokkakaavio kuvaa sovelluksen Luokat, niiden sisällön ja luokkien väliset suhteet Luokkakaavio on oliomenetelmien keskeisin kuvaustapa, jonka varaan muut oliomallinnuksen kuvaukset pitkälti rakentuvat Oliokaavio Luokkakaavion muunnos, jossa kuvataan olioita

8 Luokkakaavio Rakennus Huone Huonekalu

9 Luokkakaavio Rakennus Huone Huonekalu

10 Olioajattelu – Luokka Luokka on olion malli
Sen ohjeiden mukaan luodaan ohjelmaa ajettaessa olioita Luokka on eräänlainen pohjapiirrustus Luokka määrittelee olion piirteet Luokalla on aina nimi ja yleensä attribuutteja ja metodeja

11 Olioajattelu – Luokka Luokka piirretään suorakulmiona, joka on jaettu kolmeen osastoon Nimiosasto Attribuuttiosasto Operaatio-osasto Nimi keskitettynä ja tummennettuna Luokan nimi johdetaan ongelma-alueelta ja on yksikäsitteinen ilman etu- tai takaliitteitä Nimi Attribuutit Operaatiot

12 Attribuuttiosasto Luokilla on attribuutteja, jotka kuvaavat olioiden ominaisuuksia Oikein valitut attribuutit sisältävät tiedot, jotka kuvaavat yksittäistä luokan ilmentymää ja erottavat sen muista saman luokan ilmentymistä Vain järjestelmän kannalta kiinnostavat attribuutit tulisi ottaa mukaan Attribuutin määrittelyn muodollinen syntaksi: Visibility name : type multiplicity = default { property string } Näkyvyys nimi : tietotyyppi lukumäärä = alkuarvo { ominaisuus } UML 1.5: nimi ja tietotyyppi pakollisia UML 2.0: nimi pakollinen

13 Esimerkki Opettaja nimi palkka ikä sotu

14 Attribuutti Attribuuteilla on tietotyyppi, joka kertoo minkälainen attribuutti on kyseessä Tietotyyppi voi olla mikä tahansa ohjelmointikielissä käytetty tietotyyppi Kokonaisluku (integer) Totuusarvo (boolean) Desimaaliluku (real) Piste (point) Lista (IList) Muu luokka!

15 Harjoitus: opiskelija-luokka
Mitä attribuutteja opiskelija-luokalla pitäisi olla?

16 Attribuutti Attribuuteilla voi olla erilaisia näkyvyyksiä (visibility)
Julkinen (public) merkitään plus-merkillä (eli +) Yksityinen (private) miinusmerki (-) Suojattu (protected) risuaita (#) Jos näkyvyyden määrittelemää merkkiä ei ole, näkyvyys on määrittämätön Työkaluilla on usein oletusarvo (esim. private) /-merkki attribuutin edessä tarkoittaa, että attribuutti voidaan laskea muista attribuuteista Esim. ikä voidaan laskea syntymäajasta

17 Attribuutti Attribuutilla voi olla oletusarvo, joka sijoitetaan muuttujaan samalla hetkellä, kun luokasta luodaan olio +nimi : String = ”Teppo” -ikä : int = 0 Attribuutti voi olla luokkatason attribuutti (class variable), jolloin attribuutti jaetaan kaikkien luokan olioiden kesken Luokkatason attribuutti alleviivataan Attribuutti voi myös olla arvoaluemääritys (tagged value) Esim. lasku-luokan attribuutti tila: +tila : maksamatta { maksamatta, maksettu } +siviilisaaty : naimaton { naimaton, naimisissa, eronnut, leski }

18 Esimerkki Opettaja Opettaja nimi palkka ikä sotu +nimi : String
-palkka : double =1000 -ikä : int -sotu : String

19 Esimerkki public class Opettaja { public String nimi;
private int palkka = 3000; private int ikä; private String sotu, }

20 Harjoitus: opiskelija-luokka
Miettikää opiskelija-luokan attribuuteille näkyvyys, alkuarvo ja tietotyypit

21 Operaatio-osasto Operaatioilla
Käsitellään attribuutteja Tehdään muita toimenpiteitä Operaatioita kutsutaan myös funktioiksi tai metodeiksi public int function laskePalkka(int perusPalkka, int työvuodet) { public int palkka = 0; palkka = perusPalkka + (työvuodet * 50); return (palkka); }

22 Operaatio-osasto Operaatiota kutsuttaessa sitä sovelletaan yhteen olioon, eli sitä kutsutaan tälle oliolle Luokan operaatiot kuvaavat mitä luokka voi tehdä

23 Operaatio-osasto Kun Opettaja-luokasta luodaan olio ”Teppo Räisänen”, ja tälle oliolle kutsutaan operaatiota haeSotu, saadaan tuloksena ”Teppo Räisänen”-olion sotu Opettaja nimi palkka Ikä sotu muutaPalkka haeSotu

24 Operaatio-osasto Luokalla voi olla myös luokkatason operaatioita
Operaatioita voidaan kutsua ilman luokan oliota mutta se voi tällöin käsitellä vain luokkatason muuttujia Luokkatason operaatioilla suoritetaan yleisiä toimenpiteitä, kuten olioiden luomista ja etsimistä

25 Operaatio-osasto Operaation muodollinen syntaksi:
näkyvyys nimi ( parametrilista ) : palautusarvotyyppi { ominaisuus } Visibility name ( parameter-list ) : return-type { property-string } Parametrilista on pilkuilla erotettu lista muodollisia parametreja määriteltynä syntaksilla: Nimi : tietotyyppi = oletusarvo Näkyvyys: + julkinen, - yksityinen Operaatiolla on oltava ainutlaatuinen muoto, eli nimen, palautusarvon ja parametrien yhdistelmä

26 Operaatio-osasto Opettaja nimi palkka Ikä sotu
+muutaPalkka(uusiPalkka: int) +haeSotu()

27 Harjoitus: opiskelija-luokka
Miettikää opiskelija-luokan operaatiot

28 UML -Luokka Henkilo Luokan nimi Luokan attribuutit
Luokan operaatiot Public nimi : String asetaNimi(String) haeNimi()

29 Esimerkkejä

30 Luokkien löytäminen Luokkien löytämiseksi tarvitaan ongelma- alueen asiantuntijoita Luokat nimetään oikeassa elämässä vastaavien asioiden mukaan Luokkia voidaan etsiä esimerkiksi kysymysten avulla Onko olemassa tietoa, jota pitäisi tallentaa tai analysoida? Onko olemassa ulkoisia järjestelmiä? Mitä rooleja toimijoilla on? Onko olemassa organisaation osia, jotka liittyvät järjestelmään?

31 Olioajattelu – Olio Olio tallentaa kuvaamansa ja käsittelemänsä tiedot sisäisiin tietokenttiin, joita kutsutaan attribuuteiksi Attribuuttien arvojen yhdistelmiä kutsutaan olion tiloiksi Olio sisältää lisäksi joukon operaatioita, joilla voidaan käsitellä olion attribuutteja Operaatioita kutsutaan metodeiksi Olion attribuutteja ja metodeita kutsutaan olion piirteiksi Luokka määrittelee olion piirteet

32 Esimerkki Mustang vuosimalli väri moottori nopeus kiihdytä() jarruta()

33 Esimerkki Mustang Luokka vuosimalli väri moottori nopeus kiihdytä()
jarruta() Olio

34 Esimerkki Mustang Jokaisella oliolla on -vuosimalli -väri -moottori
-nopeus attribuutit. vuosimalli väri moottori nopeus kiihdytä() jarruta()

35 Esimerkki Mustang vuosimalli väri moottori nopeus kiihdytä() jarruta()
Olio voi lisäksi -kiihdyttää -jarruttaa

36 Periytyminen / yleistys
Periytymisellä tarkoitetaan tilannetta, jossa aliluokka perii kaikki yläluokan ominaisuudet Tärkeää koodin uudelleenkäytössä Yläluokka (superclass), alaluokka (subclass) Yläluokkaan tehdyt muutokset periytyvät alaluokkiin

37 Periytyminen / yleistys
Mustang vuosimalli väri moottori nopeus kiihdytä() jarruta()

38 Periytyminen / yleistys
Mustang vuosimalli väri moottori nopeus kiihdytä() jarruta() Coupe Fastback Convertible coupePerä fastbackPerä avoKatto laskeKatto() nostaKatto()

39 Periytyminen / yleistys
Materiaali Tunnus Nimi Tila Kirja Äänite Lehti Tekijä Kustantaja Julkaisuvuosi ISBN Artisti Äänitetyyppi Julkaisuvuosi Vuosikerta Numero Sivumäärä

40 Periytyminen / yleistys
Luokka voi olla sekä yläluokka että alaluokka Jos ohjelma pyytää parametriksi kulkuväline- luokan oliota, sille voidaan antaa parametrinä alaluokan olio function laskeMatkaKustannukset(Kulkuvaline) Arvo = laskeMatkaKustannukset (veneOlio); Arvo = laskeMatkaKustannukset (autoOlio); Arvo = laskeMatkaKustannukset (moottoriveneOlio); Arvo = laskeMatkaKustannukset (soutuveneOlio);

41 Harjoitus Piirtäkää luokkakaavio, jossa on luokat
ihminen, mies, nainen ihminen, mies, nainen, lapsi, nisäkäs, selkärankainen

42 Luokkien väliset suhteet
Suhteet kuvaavat luokkien välistä viestintää Neljää eri tyyppiä Assosiaatio (assocition) Kooste (composition / aggregation) Yleistys (generalization) Riippuvuus (dependency) Tarkennus (refinement) Kirjailija Kirja

43 Luokkien väliset suhteet
Assosiaatio Yhteys kahden luokan välillä, jolloin myös luokkien olioiden välillä on yhteys Oliot tietävät toisistaan Oliot ovat yhteyksissä toisiinsa On yleensä kaksisuuntainen

44 Luokkien väliset suhteet
Tavallinen assosiaatio Rekursiivinen assosiaatio Koostumussuhde Valitsinassosiaatio Tai-assosiaatio Järjestetty assosiaatio Kolmioassosiaatio Assosiatiivinen luokka

45 Tavallinen assosiaatio
Yleisin assosiaatio on pelkkä yhteys luokkien välillä Piirretään yhtenäisenä viivana luokkien välille Assosiaatiolle voi antaa nimen Assosiaatio voi olla yksisuuntainen tai kaksisuuntainen Merkitään nuolella Kirjailija Kirja

46 Tavallinen assosiaatio
Kirjailija Kirja Asiakas Tili Käyttää Tilaus Tilausrivi

47 Luokkien väliset suhteet
Assosiaatio Kooste Riippuvuus Kirjailija Kirja Rakennus Huone Hinta Tarjous

48 Luokkien väliset suhteet
Jaettu (aggregation) ja vahva (composition) kooste Rakennus Huone Joukkue Pelaaja

49 Luokkien väliset suhteet
Kerrannaisuus Kuinka monta objektia esiintyy luokkien välisessä suhteessa Merkitään suhteen molempiin päihin Jos ei ole määritelty, oletusarvo on 1 Esimerkkejä * 1..* 1..8 Huone Huonekalu 0..1 0..*

50 Harjoitus 2-3 hengen ryhmissä piirtäkää luokkakaaviot, joissa käytetään seuraavia luokkia henkilöauto, ajoneuvo, rekka-auto, linja-auto, rengas, ovi, moottori, kori opiskelija, opettaja, koulu, yksikkö, opintojakso, pakollinen, valinnainen, suuntautumisvaihtoehto

51 Perinnän / yleistyksen rajoitukset
Päällekkäinen (overlapping) Kaikki aliluokat, jotka perivät tämän perimisen aliluokkia, voivat periä monta luokkaa Erillinen (disjoint) Aliluokkia ei saa periä yhteiseen aliluokkaan Oletus

52 Perinnän / yleistyksen rajoitukset
Täydellinen (complete) Uusia aliluokkia ei saa tehdä Epätäydellinen (incomplete) Uusia aliluokkai voi tehdä

53 Abstrakti luokka Luokka, josta ei voi tehdä olioita
Voidaan vain periä Nimiosastossa nimen alle {abstract} tai kirjoitetaan nimi kursiivilla Luokasta tekee abstraktin myös se, jos sillä on abstrakteja operaatioita Abstraktilla operaatiolla ei ole toteuttavaa metodia, vai muoto tunnetaan

54 Abstrakti luokka public abstract class Kulkuväline { public abstract function aja(); } public abstract class Vene extends Kulkuväline { public class Soutuvene extends Vene { public function aja() { souda();

55 Monimuotoisuus Aliluokat voivat muuttaa perittyä ominaisuutta
Toiminnallisesti erilaiset metodit samalla nimellä Esimerkiksi Ympyrä- ja Neliö-olioiden pinta-ala lasketaan eri kaavoilla

56 Monimuotoisuus Mustang Shelby GT 500 vuosimalli väri moottori nopeus
kiihdytä() jarruta() Shelby GT 500 remmiahdin kiihdytä()

57 Korvataan kiihdytä –metodi uudella samannimisellä metodilla
Monimuotoisuus Mustang vuosimalli väri moottori nopeus kiihdytä() jarruta() Korvataan kiihdytä –metodi uudella samannimisellä metodilla Shelby GT 500 remmiahdin kiihdytä()

58 Esimerkki Koodissa assosiaatio ja attribuutit eivät eroa juurikaan toisistaan henkilö auto 0..1 *

59 Esimerkki Koodissa assosiaatio ja attribuutit eivät eroa juurikaan toisistaan henkilö auto 0..1 * class henkilö { public IList autolista; private String nimi; } class auto { public henkilö omistaja; private Money hinta; }

60 Esimerkki tilausrivi asiakas tilaus
class tilaus { public asiakas tilaaja; public tilausrivi tuotteet; public Date pvm; } class asiakas { public String nimi; Class tilausrivi { public int tuoteId; tilausrivi asiakas tilaus

61 Esimerkki tilausrivi tilaus tilausrivi tilaukset tilaus

62 Johdettu assosiaatio Johdettu assosiaatio voidaan laskea muiden assosiaatioiden ja attribuuttien avulla Budjetti kustannus kiinteät kustannus muuttuvat /kustannus kokonaiskustannus

63 Rekursiivinen assosiaatio
Luokka voidaan kytkeä itseensä assosiaatiolla Yhteyden molemmat osapuolet kuuluvat samaan luokkaan Roolinimi Roolinimen käyttäminen välttämätöntä Kertoo mitä roolia luokka esittää assosiaation puitteissa Roolinimi kuuluu assosiaatioon naimisissa mies Henkilö int ikä int sukupuoli vaimo

64 Riippuvuus, tarkennus Toinen luokka on riippuvainen toisesta Tarkennus
Toinen itsenäinen/riippumaton, toinen riippuvainen Muutos itsenäiseen luokkaan vaikuttaa riippuvaiseen luokkaan Tarkennus Kuvataan samaa asiaa eri abstraktiotasoilla Yleiskatsaus ja yksityiskohtainen kaavio

65 Valitsinassosiaatio Yhden suhde moneen tai monen suhde moneen –assosiaatio Valitsin erottelee moni-päässä olevat oliot toisistaan Toimii valinta-avaimena Piirretään pienenä laatikkona siihen päähän, mistä navigoinnin tulee tapahtua

66 Tai-assosiaatio Kahden tai useamman assosiaation rajoitin
Luokan oliot voivat osallistua korkeintaan yhteen assosiaatioon kerralla

67 Assosiatiivinen luokka
Assosiaatioon voidaan kytkeä luokka Assosiatiivinen luokka antaa lisätietoa yhteydelle Jokainen assosiatiivinen yhteys on yhteydessä assosiatiivisen luokan olioon

68 Järjestetty assosiaatio
Olioiden välisillä assosiaatioilla voi olla tietty järjestys Oletusarvo ”järjestämätön” Merkitään {ordered} assosiaatioviivan viereen järjestettyjen olioiden luokan lähelle {ordered by date}, {ordered by name}

69 Kolmioassosiaatio Assosiaatioon voi liittyä enemmän kuin kaksi luokkaa
Kolmoisassosiaatio liittää kolme luokkaa keskenään Piirretään vinoneliönä

70 Rajapinnat Luokka voi tarjota rajapinnan Luokka voi vaatio rajapintaa
Provides an interface Luokka voi vaatio rajapintaa Requires an interface

71 UML säännöt Rajoitukset (constraints) Johteet (derivations) Säännöt
Rajoittavat mallia Tai-assosiaatio, järjestetyt assosiaatiot, perimisrajoitukset Johteet (derivations) Sääntöjä asioiden johtamiselle Johdettu attribuutti / assosiaatio Säännöt Kaikille mallinnuselementeille Aaltosulkujen sisällä mallinnuselementin lähellä

72 UML-Mallin laatimisen vaiheet
Kartoita luokkaehdokkaita Osallistujat, toiminnan kohteet, tapahtumat, materiaalit, tuotteet, tiedot Pohjana vapaamuotoinen tekstikuvaus Karsi ehdokkaita Liittyykö ehdokkaaseen/ilmiöön tietosisältöä, joka on järjestelmän kannalta välttämätön Onko asia riittävän tärkeä kohdealueen kannalta Iteratiivinen prosessi: kartoita <-> karsi Tunnista olioiden väliset yhteydet Onko yhteys järjestelmän kannalta välttämätön Täsmennä luokkakuvauksia määrittelemällä attribuutit Vapaamuotoisesta kuvauksesta Selvitys mihin/miksi attribuuttia tarvitaan Määrittele yhteyksiin liittyvät osallistumisrajoitteet Määrittele luokkien operaatiot/palvelut Varmista operaatioiden/palveluiden ja tietosisällön yhteensopivuus

73 Harjoitus Etsikää mahdollisia luokkia annetusta materiaalista
Koettakaa käyttää periytymistä Miettikää kerrannaisuuksia Mallintakaa Windows-käyttöjärjestelmän ikkuna Käyttäkää periytymistä ja koostetta

74 Lähteet Fowler, Martin UML distilled : a brief guide to the standard object modeling language. Boston : Addison-Wesley. Eriksson, Hans-Erik UML 2 toolkit. Indianapolis, Ind. : Wiley. hittaminen/johdatus_tietojarjestelmiin/oliomallinnuksen_perusteet/oliomalli nnuksen_perusteet_asia.htm


Lataa ppt "Systeemityö 2 Olioajattelu, luokkakaavio"

Samankaltaiset esitykset


Iklan oleh Google