Sisällys. Luokkakaaviot 2

Koko: px
Aloita esitys sivulta:

Download "Sisällys. Luokkakaaviot 2"

Transkriptio

1 Luokkakaaviot Luokkakaaviot ovat keskeinen väline etsittäessä järjestelmän kannalta keskeisiä käsitteitä ja niiden välisiä riippuvuuksia. Perinteisesti tässä on käytetty erilaisia käitekaaviotekniikoita. Oliosuuntautuneen lähestymistavan myötä käyttöön ovat tulleet erilaiset luokkakaaviokuvaukset, jotka korostavat tietorakenteen ja tietoja käsittelevien operaatioiden yhteenkuuluvuutta. Käsittely kattaa luokkakaavioiden yleisperiaatteet ja olioteknisten piirteiden (periytymis- ja koostemekanismit) käytön kuvauksissa, sekä kaavioiden ilmaisuvoimaa ja täsmällisyyttä koskevaa pohdintaa. UML:n mukaisen luokkakaaviokuvauksen rinnalle esitellään myös käsitekaavioiden kuvaustekniikoina sekä Chenin että Martinin käsitekaaviot. Exit

2 Sisällys Luokkakaaviot UML luokkakaaviot: notaatio Luokkakaavioiden rooli kehitystyössä Luokat, yhteydet, attribuutit, metodit Luokkakaavion komponentit Oliot ja linkit Luokka, olio Luokkien etsintä Attribuutit Lukumääräsuhteet Luokkakaavio ja tietokantarakenne Rakenneominaisuudet Yleistys, erikoistaminen,periytyminen Fyysinen ilmentymä vs. looginen rakenne Periytyminen Koostuminen/komponentti(us) Periytyminen ja koostuminen Muodoste Rajapintojen kuvaaminen Rajapinta, toteutussuhte Stereotyypit ja ikoonit Rajapinnat, ikonit: esimerkki Pakkaukset Kaavioiden ilmaisuvoima Kaavioiden laatiminen Kaavioiden muokkaaminen Muita notaatioita Esimerkki: kirjasto Esimerkki: maalausrobotti Kertauskysymykset Luokkakaaviot 2

3 Luokkakaaviot luokkakaaviot: järjestelmän keskeiset käsitteet ja niiden keskinäiset suhteet oliopohjaisen mallinnuksen väline; luokka on yleistys samanlaisista olioista luokkaan kuuluvalla oliolla on tila (attribuuttien arvot), jota sen metodit muuttavat perustana käsitekaaviot (tietokantasuunnittelu) relaatiotietokantojen suunnittelun perusta kaavion jalostaminen (normalisoiduksi) tietokantakuvaukseksi tässä yhteydessä UML:n luokkakaavio Chenin ja Martinin käsitekaavionotaatiot OMT, Booch rakenne luokkakaavio: muutokset tilaan luokan sisältä palvelukutsun toteutuksen seurauksena käsitekaavio: käsittely ja tietorakenne rakentuvat yleensä erillään Seuraavat Seuraavat kalvot: kalvot: UML-luokkakaavioiden UML-luokkakaavioiden notaatio. notaatio. Aiheen yksityiskohtainen Aiheen yksityiskohtainen esittely esittely alkaa alkaa niiden niiden jälkeen jälkeen Luokkakaaviot 3

4 UML luokkakaaviot: notaatio Geneerisen luokan ilmentymä: Window<Xwindow> Attribuuttilista (valinn.) Operaatiolista (valinn.) + = public - = private # = protected = unknown Window {abstract, author = KK status = tested} +size #visibility: Boolean = false -xptr: WinType WinType +display() hide() +create() -attachxwindow(xwin: WinType*) Geneerinen parametri Malliparametriluettelo (valinn.) Luokkaoperaatio (staattinen) (attribuutti ja operaatio voidaan antaa pelkällä nimelläkin) Lähde: K.Koskimies (2000) Luokkakaaviot 4

5 UML luokkakaaviot: notaatio Riippuvuus (esim. kutsu) Parser Scanner Assosiaatio Person owns Car Yleistys Car Vehicle Toteutus Car <<interface>> Vehicle Aito kooste ( ei olemassa ilman ) Ministeri 15..* Valtioneuvosto Kooste Workstation 1..* Network Lähde: K.Koskimies (2000) Luokkakaaviot 5

6 UML luokkakaaviot: notaatio Vaihteleva määrä ilmentymiä alaraja yläraja C1 n1..n2 C2 ** = ei eiylärajaa ** = 0..* 0..* Kiinteä määrä ilmentymiä C1 5 C2 Lähde: K.Koskimies (2000) Luokkakaaviot 6

7 esimerkki UML luokkakaaviot: esimerkki Car 4 Wheel UserGroup * belongs * User Kurssi * 1..* Opettaja Lähde: K.Koskimies (2000) Luokkakaaviot 7

8 esimerkki UML luokkakaaviot: esimerkki Oliokaavio Oliokaavio :Instructor :Course :Instructor :Course :Course :Instructor :Instructor :Course Luokkakaavio Luokkakaavio Instructor * * Course Lähde: K.Koskimies (2000) Luokkakaaviot 8

9 esimerkki UML luokkakaaviot: esimerkki University name: Name address: String phone: Number 1..* Department name: Name addcourse() removecourse() 1..* * Course name: Name id: Number adddepartments() adddepartment() removedepartment() getdepartment() getalldepartments() LabCourse LectureCourse labid: Number roomreqs: Number Lähde: K.Koskimies (2000) Luokkakaaviot 9

10 UML luokkakaaviot: notaatio Navigaatio Person has AccessRight Kvalifiointi Bank accountnr * Client Rooli Yritys työnantaja työntekijä :IWorker Henkilö Lähde: K.Koskimies (2000) Luokkakaaviot 10

11 UML luokkakaaviot: notaatio Luokkien Luokkien rajoitteet rajoitteet Transaction value {value > 0} Transaction value constraints: {value > 0} Lähde: K.Koskimies (2000) Luokkakaaviot 11

12 UML luokkakaaviot: notaatio Assosiaatioiden Assosiaatioiden rajoitteet rajoitteet Person * member-of {subset} * Committee 1 chair-of * worker * 0..1 boss Person employee employer * 0..1 Company {Person.employer = Person.boss.employer} Lähde: K.Koskimies (2000) Luokkakaaviot 12

13 UML luokkakaaviot: notaatio Rajapinnat: Rajapinnat: Strategia Strategiasuunnittelumalli: Context contextinfo() <<interface>> Strategy algorithm() MethodA algorithm() MethodB algorithm() Lähde: K.Koskimies (2000) Luokkakaaviot 13

14 UML luokkakaaviot: notaatio Rajapinnat Rajapinnat (supistettu (supistettu muoto) muoto) Strategy Context contextinfo() MethodA algorithm() MethodB algorithm() Lähde: K.Koskimies (2000) Luokkakaaviot 14

15 UML luokkakaaviot: notaatio Aktiiviset Aktiiviset luokat luokat Paksumpi rajaviiva <<controller>> DeviceController currentconfiguration Mahdollinen stereotyyppi Signaalilohko (olio tunnistaa nämä signaalit) Signals deviceinterrupt userinterrupt seriousflaw Aktiivinen olio (aktiivisen luokan ilmentymä): olio, joka omistaa prosessin/säikeen, ja joka reagoi sille lähettetyihin signaaleihin. Käyttäytyminen kuvataan usein tilakaaviolla Lähde: K.Koskimies (2000) Luokkakaaviot 15

16 Luokkakaavioiden rooli kehitystyössä luokkakaavioilla (käsite-) on keskeinen rooli kehitystyössä hahmottelu tietosisällön määrittely: lähtee liikkeelle todellisten tilanteiden tarkastelulla (oliot, todelliset olioiden väliset tilanteet) -> esimerkit (kuvataan oliokaavioina) tietojen kuvaus: oliokaavioita laadittaessa hahmotetaan niitä kuvaavat attribuutit ja niiden rakenne (tietohakemistokuvaus tukee ja kokoaa) oliokaavioista yleistetään luokkakaavio (yhteiset ominaisuudet ja yhteyksien lukumääräsuhde) toiminnallisuuden kuvaus:» lähtee käyttötapauksista, joita kuvataan olioiden välisenä vuorovaikutuksena (tapahtumasekvenssit) -> esimerkkitilanteet» vuorovaikutukseen liityvien olioiden sisäinen käyttäytyminen kuvataan toimintokuvauksina (tilakaavioina); esim. tsk:n olioiden toiminnallisuus Luokkakaaviot 16

17 Esimerkeistä yleistykseksi Esimerkki oliokaavio Lopullinen kuvaus luokkakaavio tapahtumas.kaavio (nuolet) tapahtumas.kaavio (oliot) operaatiokuvaukset (luonnollinen kieli) jne. vuorovaikutuskuvaus toimintokuvaukset toimintokuvaukset jne. Luokkakaaviot 17

18 Kuvauskannan rakentuminen hlö1:asiakas tavara1:tilaus Asiakas hlö2:asiakas tavara2:tilaus tavara3:tilaus Tuotetilaus Käyttötapauskuvaus: Nimi: xxxxxxxx Suorittajat: xxxxxxxxxx.. Asiakas Tilaus Tuote 1 0..* 0..* 0..* hlö1: Asiakas hlö2:asiakas Operaatiokuvaukset Tietohakemisto: tilaus = tno + asno + tno =.. Tietokantakuvaus Toimintokuvaukset Kuvauskanta Luokkakaaviot 18

19 Luokat, yhteydet, attribuutit, metodit keskeisiä termejä luokat: järjestelmässä mallinnettavat kohteet yhteydet: kohteiden välinen riippuvuus» suuntamerkintä» lukumääräsuhteet attribuutit: luokan ominaisuudet (tila) metodit: attribuutteja muuttavat toiminnot lisäpiirteitä: merkkiarvot (tag), stereotyypit ilmentymät» luokka olio» yhteys - linkki Luokkakaaviot 19

20 Luokkakaavion komponentit (1) luokka merkkiarvo attribuutit asiakas {persistent} nimi osoite uusi tilaatuote() lukumääräsuhde 1 tekee 0..* tilaus {persistent} yhteys operaatiot Luokkakaaviot 20

21 Oliot ja linkit ahto simakuutio : asiakas tilaus 1 : tilaus tilaus 2 : tilaus Oliokaaviot Oliokaaviot teemu teekkari : asiakas tilaus 3 : tilaus outi opiskelija : asiakas asiakas 0..* tilaus Luokkakaavio Luokkakaavio saadaan saadaan yleistämällä yleistämällä oliokaavion oliokaavion mukaisia mukaisia tilanteita tilanteita Luokkakaaviot 21

22 Luokka,, olio luokka edustaa kuvauksessa koko luokkaa [opiskelija, opettaja, tentti, suoritus, kurssi, opintojakso] samoja ominaisuuksia omaavien olioiden luokka sovelluksen kannalta merkityksellinen voi sisältää ominaisuuksia kuvaavia attribuutteja ja toimintoja kuvaavia metodeja» esimerkiksi: asiakas, tuote (konkreettisia reaalimaailman olioita); aikataulu, suunnitelma (abstrakteja reaalimaailman olioita) olio (luokan ilmentymä) on yksittäinen luokan edustaja konkreettinen luokkaan kuuluva olio» esimerkiksi: asiakas - Jaakkola Hannu Luokkakaaviot 22

23 Luokkakaavion komponentit (2) Assosiaatioluokka Opiskelija nimi op.nro osoite ilmoittaudu( ) 0..* suoritus arvosana ov-määrä pvm osallistuu 1..* 0..* suorittaa kurssi kurssitunnus periodit lukukausi 1 kuuluu 0..* 0..* tentti 0..* 1 opintojakso kuvaus opettaja nimi osoite henkilönro Luokkakaaviot * <kuvaa luennoi riippuvuusviiva (ei lukumääräsuhdetta!) 0..1 Huom! Huom! kuusi kuusi luokkaa, luokkaa, suhteellisen suhteellisen suuri suuri tietojärjestelmä tietojärjestelmä Järjestelmän Järjestelmän tarkoitus tarkoitus ja ja tavoitteet: tavoitteet: KURREK-järjestelmä KURREK-järjestelmä sisältää sisältää kuvaukset kuvaukset TTKK:n TTKK:n opintojaksoista, opintojaksoista, opettajista opettajista ja ja opintosuorituksista. opintosuorituksista. Järjestelmä Järjestelmä tuottaa tuottaa kurssien kurssien osallistujalistoja, osallistujalistoja, tenttien tenttien tuloslistoja tuloslistoja ja ja opintosuoritusrekisteriotteita. opintosuoritusrekisteriotteita. Opettajat Opettajat kirjaavat kirjaavat järjestelmän järjestelmän avulla avulla opintosuorituksen opintosuorituksen rekisteriin. rekisteriin. Opiskelijat Opiskelijat ilmoittautuvat ilmoittautuvat järjestelmän järjestelmän avulla avulla kursseille kursseille ja ja voivat voivat tutkia tutkia omia omia suoritustietojaan. suoritustietojaan.

24 Luokkakaavion komponentit (3) yhteys edustaa luokkien välistä riippuvuutta [osallistuu, suorittaa, kuuluu, luennoi] yhteys on yleensä kaksisuuntainen; yksisuuntaisuus voidaan osoittaa suuntaa kuvaavalla nuolenkärjellä (kurssi - opiskelija) yhteyden kuvaukseen voi liittyä suunta (opintojakso-kurssi) yhteyteen voi liittyä tarkentava rooli (tarvittaessa molempiin päihin; ks. on esimies jäljempänä) yhteyteen voi liittyä lukumääräsuhde (ks. jäljempänä) yhteys voi olla myös useamman kuin kahden käsitteen välinen (ei ole suositeltavaa; kuvaus on purettavissa kahden välisiksi yhteyksiksi) myös muunlaisia yhteyksiä: kooste, riippuvuus, muodoste, erikoistaminen,... [tarkastellaan esimerkkien avulla jäljempänä] linkki on todellinen yhteys (ilmentymä) kahden olion välillä Luokkakaaviot 24

25 Luokkien etsintä järjestelmään sisältyvät luokat ja yhteydet löytyvät määrittelyn yhteydessä tarkasteltaessa järjestelmän toimintaa Hannu Jaakkola luennoi OTP-kurssin (opettaja) (yhteys) (kurssi) tässä: predikaatti kuvaa yhteyttä ja substantiivi luokkaa Luokkakaaviot 25

26 Attribuutit attribuutit: luokkaa kuvaavat ominaisuudet (arvot muodostavat luokan (olion) tilan) nimi, opiskelijanumero, osoite, puhelinnumero,. attribuuttien sijoittelu luokkiin ei ole selvää esim. opintoviikot (voi olla kurssi tai opintojakso) attribuutit eivät saa olla toistuvia attribuuttien sijoittelu luokkiin saattaa vaikuttaa myös kaavion rakenteeseen edellä tarvitaan assosiatiivinen luokka suoritus (attribuutit arvosana, suorituspäivä), koska sen attribuutteja ei ole mahdollista sijoittaa yhteyden luokkiin (assosiatiiviluokka)» attribuutit liittyvät tässä tapauksessa yhteyden olemassaoloon eli niitä ei ole (tai niillä ei ole arvoa) jos yhteyttä ei ole olemassa Luokkakaaviot 26

27 Lukumääräsuhteet yhteyden luonnetta kuvaavat lukumääräsuhteet 1-1 (yksi yhteen): jokaista oliota A vastaa vain yksi olio B ja päinvastoin 1-N (yksi moneen): jokaista oliota A vastaa monta oliota B ja oliota B vastaa täsmälleen 1 olio A N-M (monta moneen) jokaista oliota A vastaa monta oliota B ja päinvastoin lukumääräsuhteen lukumääräalue (kardinaliteetti) voi olla mm. 1 täsmälleen yksi 0..1 nolla tai yksi 1..* monta, vähintään 1 0..* monta, ei välttämättä yhtään... Luokkakaaviot 27

28 lukumääräsuhteet lukumääräsuhteet kaaviossa esitetään todellista tilannetta kuvaavat ala- ja ylärajat vaikuttaa tietokannan rakenteeseen!» huolehdittava siitä, että lukumääräsuhde on oikea» korjaaminen (etenkin monimutkaisempaan suuntaan) on tietokannan rakenteellisten ratkaisuiden kiinnittämisen jälkeen vaikeaa» suhde 1 suhteeksi N - mitä vaikuttaa tietokannan rakenteessa?) Luokkakaaviot 28

29 lukumääräsuhteet Lukumääräsuhteen vaikutus tietorakenteen toteutukseen aina yksi kurssi opettaja kurssi opettaja opettaja kurssi kurssi1 kurssi2 kurssi3 nolla tai yksi kurssia nolla... monta kurssia (lukumääräsuhteen vaikutus toteutukseen: tietorakenne ja käsittelytapa muuttuu) Luokkakaaviot 29

30 lukumääräsuhteet Opiskelija nimi op.nro osoite ilmoittaudu() 0..* kurssi osallistuu kurssitunnus periodit 1..* 0..* lukukausi suorittaa 1 kuuluu 0..* 0..* tentti 0..* 1 0..* <kuvaa opintojakso kuvaus luennoi opettaja 0..1 nimi osoite henkilönro suoritus arvosana ov-määrä pvm mitä edellinen kuvaus kertoo kuvausta vastaavasta reaalimaailmasta? kurssilla on vähintään yksi osallistuja opiskelija osallistuu nollaan tai useampaan kurssiin kurssi vastaa täsmälleen yhtä tiettyä opintojaksoa kaaviota voidaan testata sovittamalla siihen todellisia tapauksia Luokkakaaviot 30

31 Luokkakaavio ja tietokantarakenne käsitekaavionäkökulma luokkakaavio vastaa perinteistä käsitekaaviota» luokka ~ käsite käsitekaavio kuvaa relaatiotietokannan rakennetta (yhteyksien normalisoinnin jälkeen)» käsitteet (luokat) vastaavat tauluja» attribuutit vastaavat taulun sarakkeita» yhteydet vastaavat viiteavaimien avulla rakentuvia liityntöjä taulujen välillä» metodit vastaavat toimintokuvauksessa esiintyviä operaatioita automaattinen tietokantakuvauksen generointi käsitekaaviosta (luokkakaaviosta) Luokkakaaviot 31

32 Rakenneominaisuudet luokkakaaviot ovat kehittyneet osana oliotekniikoiden kypsymistä; oliopiirteitä ovat mm. yleistys / erikoistaminen koostuminen / komponenttius rajapintaoperaatiot» interface-rakenteet yleistys / erikoistaminen - periytymismekanismi luokat poikkeavat toisistaan vain muutaman attribuutin osalta» yhteiset piirteet isäluokan (yliluokan) tasolla» erikoistetut piirteet lapsiluokassa (aliluokassa)» ylimäärittely virtuaalimetodit: mahdollistaa suunnittelutason joustavat ratkaisut ja pakottaa toteutuksen noudattamaan sovittua rajapintaa kun luokkaa vastaava ilmentymä tietojärjestelmässä syntyy, se ei voi elinaikanaan muuttua toiseksi alityypiksi (ks. seuraava kuva) Luokkakaaviot 32

33 Yleistys, erikoistaminen, periytyminen yliluokka on abstrakti luokka, jota vastaavaa oliota ei tietojärjestelmässä ole todelliset oliot (ilmentymät) kuuluvat johonkin aliluokkaan (koko elinaikansa) aliluokka perii yliluokan ominaisuudet (attribuutit ja metodit) ylimäärittely voi uudelleenmääritellä perityn ominaisuuden aliluokan tasolla erikoistamismekanismi mahdollistaa luokan käyttämisen kehitystyössä, vaikka sen tarkaa sisältöä ei tunneta ja se tarkentuu vasta sunnittelutyön edetessä erikoistaminen ja ylimäärittely eivät muuta yliluokan tasolla sovittua rajapintasopimusta yliluokan ominaisuudet ovat suunnittelutyössä käytetettävissä vaikka lopullista aliluokan rakennetta ei kaikkien ykstyiskohtien osalta tunneta myöhemminb määräytyviä yksityiskohtia ei luonnollisesti voi käyttää (ennekuin ne tunnetaan) Luokkakaaviot 33

34 yleistys, erikoistaminen, periytyminen H-auto a L-auto e c f d g b K-auto Auto a,b,c,d,e,f,g Iso Iso massiivinen massiivinen luokka luokka Kaksi Kaksi ratkaisua: ratkaisua: yksi yksi luokka, luokka, jossa jossa on on kaikkien kaikkien kolmen kolmen erityyppisen erityyppisen olion olion ominaisuudet ominaisuudet TAI TAI erikoistamisrakenne, erikoistamisrakenne, jossa jossa on on yhteiset yhteiset (ja (ja mahdollisesti mahdollisesti erikoistettavat) erikoistettavat) ominaisuudet ominaisuudet erikoistettujen erikoistettujen ominaisuuksien ominaisuuksien sijaitessa sijaitessa aliluokissa. aliluokissa. Tarve Tarve ratkaisee. ratkaisee. Tehottomuus! Tehottomuus! H-auto a L-auto e c f d g b K-auto d periytyy periytyy a,b,c a,b,c luokkaspesifejä luokkaspesifejä e,f,g e,f,g ylimääritelty ylimääritelty (yksi (yksi tarpeeton!) tarpeeton!) H-auto d, a, e,f(,g) Auto d, e,f,g K-auto d, b, f,g(,e) L-auto d, c e,g(,f) Luokkakaaviot 34

35 Fyysinen ilmentymä vs. looginen rakenne Kun Kun luokkaa luokkaa vastaava vastaava olio olio syntyy syntyy tietojärjestelmässä, tietojärjestelmässä, määräytyy määräytyy sen sen tyyppi tyyppi (lapsiluokan (lapsiluokan tasolla). tasolla). Olio Olio edustaa edustaa tätä tätä luokkaa luokkaa koko koko olemassaolonsa olemassaolonsa ajan ajan ei ei siis siis voi voi muuttua muuttua toisen toisen lapsiluokan lapsiluokan jäseneksi jäseneksi ( henkilöautosta ( henkilöautosta ei ei voi voi tulla tulla kuorma-autoa ). kuorma-autoa ). Luokkakaaviot 35

36 Yleistys / erikoistaminen: esimerkki tili tilinro saldo otto() pano() saldokysely() tili tilinro saldo otto() pano() saldokysely() 1 {xor} 1 luotollinen tili luottoraja käyttötili luotollinen tili luottoraja otto() käyttötili otto() rajoite TAI: tilinro saldo tili otto() pano() saldokysely() luotollinen tili luottoraja käyttötili otto() Luokkakaaviot 36

37 Yleistys / erikoistaminen: esimerkki luotollinen tili tilinro saldo luottoraja otto() pano() saldokysely() TAI käyttötili tilinro saldo otto() pano() saldokysely() Edellisestä luokkakaaviosta realisoituvat luokat luokat Luokkakaaviot 37

38 Periytyminen aliluokka perii yliluokan attribuutit ja operaatiot aliluokka voi määritellä myös omia attribuuttejaan ja operaatioitaan myös ylimäärittely (attribuutti tai operaatio määritellään uudelleen aliluokssa) on mahdollinen käytetään periytymiseen pohjautuvassa uudelleenkäytössä) mahdollistaa suunnittelutason joustavat ratkaisut ja pakottaa toteutuksen noudattamaan sovittua rajapintaa» virtuaalifunktiot» joustavuus, uudelleenkäyttö Luokkakaaviot 38

39 Koostuminen / komponentti(us) koostumisella ilmaistaan luokan olevan toisen komponentti (tai päinvastoin) olion kiinteä riippuvuus toisesta osana koosterakennetta ilmaistaan muodosteen (composition) avulla koosteeseen kuuluvien olioiden välillä on elinikäriippuvuus kuvataan tummennetulla koostesymbolilla komponentti voi olla muodostesuhteessa vain yhteen isäntäolioon kerrallaan Luokkakaaviot 39

40 Periytyminen ja koostuminen: esimerkki korttikasa kortti erikoistaminen sijaintipöydällä lisääpäälle() otaalta() otapäältä() Kooste Kooste 0..* arvo maa kuvapuolinäkyvissä käännä() yleistäminen pöytäpakka käännäpäältä() otaalta() käsipakka sekoita() käsi korttejaaluksi lajittele() Pöytäpakka, Pöytäpakka, käsipakka käsipakka ja ja käsi käsi ovat ovat (erikoistettuja) (erikoistettuja) korttikasoja. korttikasoja. Korttikasa Korttikasa koostuu koostuu korteista korteista (0 (0... n). n). Luokkakaaviot 40

41 periytyminen ja koostuminen: esimerkki pöytäpakka otapäältä() lisääpäälle() käännäpäältä() otaalta() 0..* kortti arvo maa kuvapuolinäkyvissä käännä() Yksi Yksi edellisestä edellisestä kuvauksesta kuvauksesta realisoituva realisoituva luokka luokka on on pöytäpakka, pöytäpakka, joka joka perii perii osan osan ominaisuuksistaan, ominaisuuksistaan, ylimäärittelee ylimäärittelee osan osan ja ja määrittelee määrittelee joitain joitain omia omia ominaisuuksiaan. ominaisuuksiaan. Luokkakaaviot 41

42 Muodoste: esimerkki yritys osasto henkilö 0..* 1..* Yritys Yritys muodostuu muodostuu osastoista osastoista (0..n). (0..n). Osastoa Osastoa ei ei ole ole olemassa olemassa jos jos ei ei ole ole yritystä. yritystä. Osasto Osasto koostuu koostuu henkilöistä, henkilöistä, mutta mutta voi voi olla olla olemassa olemassa vaikka vaikka siihen siihen ei ei olekaan olekaan liittyneenä liittyneenä yhtään yhtään henkilöä. henkilöä. Luokkakaaviot 42

43 Rajapintojen kuvaaminen rajapintojen suunnittelu on yksi ohjelmistosuunnittelun keskeisimpiä tehtäviä (moduulirakenne, kotelointi) luokkien operaatiot muodostuvat vasta suunnitteluvaiheessa, alustava luokkarakenne on määrittelyn tulos (eriaikainen ratkaisun sitominen) tämän takia rajapintoja on tarkoituksenmukaista käsitellä erillään niiden toteutuksesta rajapinta määritellään luokkana, joka sisältää rajapinnan operaatioiden määrittelyt nämä periytetään (realization; toteutus) rajapinnat toteuttaviin luokkiin mekanismi mahdollistaa rajapinnan käytön suunnittelussa, vaikka rajapintaa ei ole määritelty yksi luokka voi toteuttaa useita rajapintoja Luokkakaaviot 43

44 Rajapinta, toteutussuhde: notaatio ja esimerkki rajapinta realization <<Interface>> varoitin varoita() veturi varoita() void kaynnista() { while (1) {... if (kattilapaine > maxpaine) { vptr->varoita("kohta pamahtaa") }... <<Interface>> ohjaus kaynnista() sammuta() asetanopeus() <<uses>> <<thread>> höyrykone kaynnista() sammuta() asetanopeus() <<Interface>> huolto lisäävettä() poistatuhka() <<thread>> polttomoottori realization rajapinta Kaikkien Kaikkien moottoreiden moottoreiden (polttomoottori, (polttomoottori, höyrykone, höyrykone, ) ) on on toteutettava toteutettava rajapinta rajapinta ohjaus. ohjaus. Kaikkien Kaikkien höyrykonetta höyrykonetta käyttävien käyttävien laitteiden laitteiden on on toteutettava(<<uses>>) rajapinta rajapinta varoitin varoitin (riippuvuus; (riippuvuus; tarjoaa tarjoaa operaation, operaation, jolla jolla varoitetaan varoitetaan liian liian korkeasta korkeasta höyrynpaineesta). höyrynpaineesta). Rajapintaluokat Rajapintaluokat periytetään periytetään rajapinnat rajapinnat toteuttaviin toteuttaviin luokkiin luokkiin (realization). (realization). Yksi Yksi luokka luokka voi voi toteuttaa toteuttaa useita useita eri eri rajapintoja rajapintoja (ks. (ks. höyrykone). höyrykone). Luokkakaaviot 44

45 Stereotyypit ja ikonit stereotyypit esitetään kaksoisväkästen (guillements) välissä toimivat komponenttia täsmentävänä lisämääreenä voivat esiintyä missä useissa eri komponenttityypeissä sekä yhteyksissä standardeja: <<interface>>, <<thread>>, <<uses>> voidaan määritellä itse lisää ikonit korvaa tiettyä stereotyyppiä kuvaavan luokkasymbolin ja stereotyyppimääreen kuvaustekniikassa on valmiita ikoneita; käyttäjä voi laajentaa menetelmää omilla ikoneilla Luokkakaaviot 45

46 Rajapinnat, ikonit: esimerkki Rajapinta, Rajapinta, supistettu supistettu muoto. muoto. Veturi Veturi toteuttaa toteuttaa rajapinnan rajapinnan varoitin. varoitin. varoitin Moottori Moottori toteuttaa toteuttaa (käyttää) (käyttää) rajapinnan rajapinnan varoitin varoitin Veturit Mootorit ohjaus Kaikki Kaikki moottorit moottorit toteuttavat toteuttavat rajapinnan rajapinnan ohjaus ohjaus Luokkakaaviot 46

47 Pakkaukset pakkaus on väline mallin elementtein ryhmittelyyn sisältää luokkia, toisia pakkauksia, komponentteja, (kuvauksen tarpeen mukaan) voidaan käyttää myös käyttötapausten ryhmittelyyn rajapintoja voidaan liittää luokkiin ja komponentteihin rajapintaikoni pakkauksessa: pakkauksen sisällä on luokkia tai kopmponentteja, jotka toteuttavat rajapinnan Luokkakaaviot 47

48 Kaavioiden ilmaisuvoima kaavion oikeellisuutta voi testata todellisilla tilanteilla ja kysymyksillä, joihin sen pitäisi kyetä sopia (tilanteet todellisesta ympäristöstä; oliot ja linkit) ilmaisuvoima ei aina ole riittävä sisältää rakenteellista väljyyttä rajoitukset mahdollistavat tiukentamisen» esim. edellä tili voi olla samanaikaisesti luotollinen ja käyttötili mikäli tätä mahdollisuutta ei rajoiteta erillisellä lisämääreellä (tekstimuotoinen selitys) kaikkien sallittujen (todellisuudessa esiintyvien) tilanteiden on oltava kaaviossa mukana Luokkakaaviot 48

49 kaavioiden ilmaisuvoima kaikkia rajoituksia ei aina pysty ilmaisemaan => lisätään rajoitteita ja kommentteja kaavioita voi testata hakemalla siita vastauksia kysymyksiin ja piirtelemällä kuvia esimerkkitilanteista mahtavatkohan asiakkaat ymmärtää kaavioita? piirtämisessä ero luokka ja olio» olio = luokkasymboli, jossa ilmentymän identifikaatio ja luokan nimi alleviivataan Luokkakaaviot 49

50 kaavioiden ilmaisuvoima henkilö nimi osoite puh autonmerkki vuosimalli rekisterinumero 0..1 pomo Henkilö ei saa olla oma esimiehensä esimies Ahto Simakuutio : henkilö pomo jaospäällikkö : vakanssi konsultti : vakanssi Aikon Oyj : yritys alainen 0..* työskentelee 0..* alainen vakanssi Teemu Teekkari : henkilö testaaja : vakanssi 0..* yritys Henkilö Henkilö työskentelee työskentelee yrityksessä yrityksessä ja ja (henkilö) (henkilö) on on pomona pomona tietyille tietyille vakansseille. vakansseille. Kysymys 1: missä yrityksissä A.S. on töissä? Kysymys 2: kuka on T.T.:n esimies, kun hän on Aikonilla työssä? Kysymys 3: mikä on A.S.:n vakanssi näissä työsuhteissa EI: Kysymys 4: mikä on T.T.:n esimehen titteli kohdan 2 kysymyksessä. Luokkakaaviot 50

51 kaavioiden ilmaisuvoima henkilö nimi osoite puh autonmerkki vuosimalli rekisterinumero Ahto Simakuutio : henkilö jaospäällikkö : vakanssi pomo Aikon Oyj : yritys 0..* työskentelee 0..* yritys vakanssi pomo 0..1 alainen 0..* esimies Teemu Teekkari : henkilö konsultti : vakanssi alainen testaaja : vakanssi Henkilö Henkilö työskentelee työskentelee yrityksessä yrityksessä Työsuhteeseen Työsuhteeseen liittyy liittyy vakanssi. vakanssi. Vakanssien Vakanssien välillä välillä on on määritelty määritelty esimies-alainen esimies-alainen suhde. suhde. Kysymys 4: mikä on T.T.:n esimehen titteli kohdan 2 kysymyksessä. Luokkakaaviot 51

52 Kaavioiden laatiminen kaavioita voidaan käyttää esitutkimuksessa, määrittelyssä ja suunnittelussa esitutkimus ja määrittely: sovellusalueen käsitteet (domain object model), järjestelmän rajaus, analysis object model, järjestelmän tietosisällön määrittely (käsitekaavio, conceptual model), usein myös tietokannan rakenne suunnittelu: ohjelman rakenne (design object model), tietokannan rakenne (esimerkiksi relaatiokannan graafinen esitys) kaavio dokumentoi "sanaston", jolla asioista voi keskustella Luokkakaaviot 52

53 kaavioiden laatiminen kaavio kertoo, millaiset tilanteet ovat mahdollisia kaavio ohjaa kysymään oikeita kysymyksiä yleisiä periaatteita luokan jäsenillä on aina samat attribuutit ja sama käyttäytyminen (metodit) luokkajako perustuu pysyviin ominaisuuksiin ei esimerkiksi olion väliaikaiseen tilaan periytyminen on is-a -suhde: kaikkialla, missä on mielekästä käyttää isäluokan oliota, pitää olla mielekästä käyttää lapsiluokkien olioita. Luokkakaaviot 53

54 kaavioiden laatiminen menettely: laaditaan alustava kaavio : oma asiantuntemus, haastattelut,... kaavioiden analysointi» luokkien ja yhteyksien poistaminen» luokkien ja yhteyksien lisääminen» lukumääräsuhteiden tarkennus» attribuuttien (ja metodien) sijoittelu luokkiin kaavion testaaminen ja kokeilu erilaisilla esimerkeillä muokkaus kokeilun tulosten perusteella varautuminen tulevaisuuden muutoksiin attribuuttien sijoittelu tilankäytön kannalta epäedulliseen kohteeseen lukumääräsuhteen yläraja 1 korvataan ylärajalla * Luokkakaaviot 54

55 Kaavioiden muokkaaminen: esimerkki Vaatimus: luokissa ei saa olla toistuvia attribuutteja Toimenpide: lisätään uusi luokka opiskelija suorittaa tentti tentti suoritus toistuvat toistuvatattribuutit attribuutit omaan omaanluokkaan Luokkakaaviot 55

56 kaavioiden muokkaaminen: esimerkki toistuvat toistuvatattribuutit attribuutit omaan omaanluokkaan työntekijä lapsi työntekijä on huoltaja > lapsi» Vaatimus: luokissa ei saa olla toistuvia attribuutteja» Toimenpide: lisätään uusi luokka Luokkakaaviot 56

57 kaavioiden muokkaaminen tarpeetonta redundanssia (tiedon toistuminen monessa paikassa) ei saa esiintyä eikä tieto saa olla pääteltävissä muista tiedoista; redundanssi tieto poistetaan ja korvataan luokalla ja yhteyksillä (luokka suoritus opintosuoritusrekisteriä koskevassa esimerkissä) luokalla on vain yksi attribuutti (voidaan yhdistää muuhun luokkaan) Luokkakaaviot 57

58 kaavioiden muokkaaminen: esimerkki Tilanne: osa attribuuteista on olemassa vain osalle luokan ilmentymistä Muutos: lisätään uusi luokka, joka sisältää nämä attribuutit, ja yhteys alkuperäisestä uuteen henkilö henkilö autonrno henkilö henkilö omistaa auto auto rno rno Luokkakaaviot 58

59 kaavioiden muokkaaminen: esimerkki Tilanne: kahdella luokalla on yhteisiä attribuutteja Muutos: lisätään uusi luokka, joka sisältää nämä attribuutit ja yhteys alkuperäisestä uuteen saattaa olla ratkaistavissa myös yleistys/erikoistamis -mekanismin avulla - huom! ilmentymän tyypin muuttumattomuus) henkilö henkilö opiskelija opettaja opiskelija opettaja Luokkakaaviot 59

60 kaavioiden muokkaaminen: esimerkki henkilö Vaihtoehtoiset Vaihtoehtoiset tavat tavat opettajan opettajan ja ja opiskelijan opiskelijan luokkakaavioksi. luokkakaavioksi. opiskelija opettaja opettavaopiskelija henkilö Eo. Eo. kaavioiden kaavioiden mahdollistamat mahdollistamat todellisten todellisten olioiden olioiden rakenteet rakenteet ovat ovat erilaisia. erilaisia. Minkälaisia? Minkälaisia? opiskelija opettaja Luokkakaaviot 60

61 kaavioiden muokkaaminen: esimerkki Tilanne: osa luokan attribuuteista on olemassa vain osan ilmentymän eliniästä Muutos: uusi luokka asiakas lainatiedot asiakas omaa lainatiedot Luokkakaaviot 61

62 kaavioiden muokkaaminen: esimerkki Tilanne:luokkien ilmentymien elinikä on sama ja niitä yhdistää 1-1 -yhteys Muutos: luokat voidaan yhdistää opettaja 1 1 palkka määräytyy palkkaus peruste opettaja palkkausper. Luokkakaaviot 62

63 kaavioiden muokkaaminen: esimerkki Tilanne: yhteys on pääteltävissä toisista yhteyksistä Muutos: yhteys voidaan poistaa opiskelija? suorittaa kurssi kurssi osallistuu tentti tentti Luokkakaaviot 63

64 kaavioiden muokkaaminen: esimerkki Tilanne: luokassa on vain yksi olio Muutos: luokka poistetaan työntekijä on naimisissa aviopuoliso työntekijä aviopuoliso. Luokkakaaviot 64

65 kaavioiden muokkaaminen Laadintaa koskevista yleisperiaatteista joudutaan käytännössä toisinaan luopumaan toteutukseen liittyvistä syistä (redundanssin lisääminen, yhteyksien lisääminen, toistuvien kenttien salliminen, käsitteiden yhdistely). Tietokannan normalisointi saattaa muuttaa myös rakennetta Luokkakaaviot 65

66 Muita notaatioita luokkakaavioiden notaation perusta on käsitekaavioissa Chenin käsitekaaviot sisältää luokkakaavioiden perusilmaisuvoiman» käsitteet, attribuutit, yhteydet» myös yli- ja aliluokka Martinin käsitekaavio graafiset yhteysmerkinnät OMT-luokkakaavio Boochin luokkakaavio Luokkakaaviot 66

67 Chenin käsitekaavio Huom: lukusuuntaa kuvaava nuoli opiskelija 0:N kurssi 0:N <-kuvaa 1:1 1:N osallistuu opintojakso 0:N 1:1 0:N 0:N 0:N suorittaa tentti kuuluu luennoi 0:1 suoritus opettaja assosiatiivinen käsite (yhteyteen liittyvät attribuutit) Luokkakaaviot 67

68 Martinin käsitekaavio opiskelija suoritus 1:n 0:n 0:N 1:1 osallistuu kurssi kuvaa 0:N 1:1 luennoi 0:1 kuuluu tentti opintojakso opettaja opiskelija 1:N osallistuu 0:N kurssi 0:N <-kuvaa 1:1 opintojakso 0:N 1:1 0:N 0:N suorittaa tentti 0:N kuuluu luennoi 0:1 suoritus opettaja Luokkakaaviot 68

69 OMT-luokkakaavio Opiskelija nimi op.nro osoite 1+ osallistuu Kurssi kurssitunnus periodi lukukausi <-kuvaa Opintojakso kuvaus ilmoittaudu() kuuluu luennoi suorittaa Suoritus arvosana ov-määrä Tentti pvm Opettaja nimi osoite henkilönro Luokkakaaviot 69

70 Boochin luokkakaavio Opiskelija nimi op.nro osoite ilmoittaudu() osallistuu 1..n 0..n Kurssi kurssitunnus periodi lukukausi <-kuvaa 0..n 1 Opintojakso kuvaus 0..n kuuluu 0..n luennoi suorittaa Suoritus 0..n Tentti pvm 0..1 Opettaja nimi osoite henkilönro arvosana ov-määrä Luokkakaaviot 70

71 Esimerkki: kirjasto Kirjaan liittyy nimi, kirjoittajat, ISBN-numero, kustantaja, painovuosi, sivumäärä. Lisäksi kussakin kirjassa on yksikäsitteinen numerotunnus. Lainaajilla on nimi, osoite ja puhelinnumero. Järjestelmä ylläpitää tietoja lainauksista: kuka lainasi ja milloin. Piirrä luokkakaavio. Luokkakaaviot 71

72 esimerkki: kirjasto Lainaus Kirja 0..n lainaus edustaa 0..n 1 Nimike 0..n k irjoittaa Tarpeellisuus? Tarpeellisuus? Käsittelytarve Käsittelytarve ratkaisee! ratkaisee! 0..1 Lainaaja 0..1 Tekijä Luokkakaaviot 72

73 Esimerkki: maalausrobotti. Tarkastellaan maalausrobotin tuotannonohjausta. Robotilla maalataan useita eri tuotteita. Asiakas tilaa tuotteita ja määrää tuotteiden värityksen. Maalarit tallettavat järjestelmään maalausohjelmia, joista asiakas valitsee värityksen. Järjestelmä pitää kirjaa myös tilausten toteutumisesta. Luokkakaaviot 73

74 esimerkki: maalausrobotti Tarpeellisuus? Tarpeellisuus? Käsittelytarve Käsittelytarve ratkaisee! ratkaisee! Maalari Robotti maalaa Tuote n Kaavion Kaavion luokkien luokkien (käsitteiden) (käsitteiden) relevanssi relevanssi riippuu riippuu tarpeesta. tarpeesta. Olennaisen Olennaisen erottaminen erottaminen epäolennaisesta: epäolennaisesta: esim. esim. tilausjärjestelmän tilausjärjestelmän kannalta kannalta robotti robotti ja ja malari malari ovat ovat tarpeettomia; tarpeettomia; väritys väritys voi voi olla olla osa osa tuotteen tuotteen ominaisuutta. ominaisuutta. Laatujärjestelmän Laatujärjestelmän kannalta kannalta robotti robotti ja ja maalari maalari taas taas voivat voivat olla olla tarpeellisia tarpeellisia tietoja. tietoja. 0..n tilaa 1 Asiakas tallettaa 0..n Väritysoh jelma Tarpeellisuus? Tarpeellisuus? Käsittelytarve Käsittelytarve ratkaisee! ratkaisee! Luokkakaaviot 74

75 Kertauskysymykset Mitä eroa on koosteella ja aidolla koosteella (muodoste). Mitä tarkoitetaan aktiivisella oliolla ja miten se esitetään luokkakaaviossa. Järjestelmän kuvaustyössä osa kuvauksista kuvaa esimerkinomaisesti reaalimaailmassa tapahtuvia toimintoja tai sen rakenteita, osa taas mallintamisen näkökulmasta antaa kattavan kuvauksen joko mallinnettavan kohteen rakenteesta tai sen käyttäytymisestä. Mikä on tällaisten esimerkki-kuvausten rooli laadittaessa järjestelmän kattavaa kuvausta. Mitkä kuvausmenetelmät ovat luonnehdiottavissa esimerkkikuvauksiksi ja mitkä kattaviksi kuvauksiksi. Minkälaisen prosessin tuloksena rakennetta / toimintaa koskevat kattavat kuvaukset saadaan. Kuvaa luokkakavioiden, tapahtumasekvenssikavioiden ja tilakaavioiden välinen yhteys tietojärjestelmän kuvaamisessa. Mitä eroa on yhteydellä ja linkillä. Selitä kurssimateriaalissa oleva kurssien suoritusten hallintaa kuvaava luokkakaavio. Mitä kuvaa luokkakaavion yhteysviivassa oleva lukumääräsuhde. Mitä kuvaa oliokavion yhteysviivassa oleva lukumääräsuhde. Millä eri keinoilla voi luokkakaaviokuvauksessa tarkentaa yhteyden luonnetta. Mitä tarkoitetaan luokkakaaviossa yleistämisellä ja erikoistamisella. Mitä tarkoitetaan periytymisellä. Mitä periytymismekanismissa tarkoitetaan ylimäärittelyllä. Miksi tällaista tarvitaan. Periytyminen on yksi uudelleenkäyttöä tukeva ratkaisu. Mitä hyötyä periytymismekanismin käyttömahdollisuudesta on uudelleenkäytön näkökulmasta. Kurssimateriaalissa on esitetty pankkitilien eri muotoja koskeva luokkakaavio. Toisessa kaaviossa asia ilmaistaan perinteisen yhteysrakenteen muodossa ja toisessa hyödyntämällä erikoistamismekanismia. Mitä eroa loogisesta näkökulmasta on näillä ilmaisuilla kun tarkastellaan asiaa syntyvän tietokantaratkaisun näkökulmasta. Mikä on virtuaalifunktio (-metodi). Selitä kurssimaterialissa oleva korttikasan rakennetta kuvaava luokkakaavio. Luokkakaaviot 75

76 kertauskysymykset Kuvaa erillisinä luokkakuvauksina kaikki em. luokkakaavioista synnytettävissä olevat luokat. Mikä merkitys on rajapintakuvauksella UMLluokkakaavioissa. Mihin niitä tarvitaan. Selitä kurssimateriaaliin sisältyvä rajapintoja käsittelevä luokkakaavio (juna, mottorit,...). Miksi rajapintakuvausten käyttö on tässä yhteydessä tarpeellista. Mitä ovat stereotyypit ja ikonit UMLssä. Mihin niitä voi käyttää. Selitä kurssimateriaalissa olevan kahden työsuhteen ja esimiesaseman kuvaamiseen liittyvän luokkakaavion ilmaisuvoiman eroavuudet. KUrssimateriaalissa esitellään kolme eri luokkakaaviota opiskelijan ja opettajan kuvaamiseksi tietojärjestelmässä. Kuvaustapoina on yhteysrakenteen kautta tehtävä määrittely, periytymismekanismilla tehty määrittely ja moniperitymistä hyödyntävä malli. Mitä eroa näillä kuvauksilla on tietojärjestelmään syntyvien olioiden näkökulmasta. Anna luokkakaavio sairaalan henkilökunta- ja potilasrekisterisovellusta varten. Harjoitustehtäviä kirjasta Koskimies, Oliokirja. Kurssimateriaalin (tämän osion) lopussa on käsitelty yksinkertaisen kirjastojärjestelmän toimintaa esimerkkinä luokkakaavion laatimisesta. Selitä järjestelmän luokkakaavioratkaisu ottaen erityisesti kantaa siihen, minkälaisia ilmaisumahdollisuuksia eri kaaviovaihtoehdot antavat. Kurssimateriaalin (tämän osion) lopussa on käsitelty maalausrobotin avulla maalattavien tuotteiden tilausjärjestelmän toimintaa. Selitä järjestelmän luokkakaavioratkaisu ottaen erityisesti kantaa siihen, minkälaisia ilmaisumahdollisuuksia eri kaaviovaihtoehdot antavat. Anna luokkakaavio, jossa on vähintään 10 suhdetta (assosiaatio, kooste, yleistys/erikoistus) seuraavien luokkien kesken. Nimeä assosiaatiot. Voit tarvittaessa lisätä muita luokkia. Luokat: koulu, pelikenttä, rehtori, johtokunta, luokkahuone, kirja, oppilas, opettaja, kahvila, tietokone, pöytä, tuoli, ovi, luokanvalvoja, järjestäjä Luokkakaaviot 76

77 kertauskysymykset Anna aterioivien filosofien ongelman luokkakaavio. Ongelman asetelma on seuraava: Viisi filosofia istuu pyöreässä pöydässä, jokaisessa välissä on yksi haarukka, jonka vieressä olevat filosofit jakavat. Kukin filosofi tarvitsee kahta haarukkaa syödäkseen: jokainen haarukka on siten joko pöydällä tai filosofin kädessä. Filosofi joko ajattelee tai syö. Anna luokkakaavio kirjaston tiedonhallintajärjestelmälle. Kirjastoon sisältyvät mm. seuraavat käsitteet: kirja, lehti, cd-levy, videonauha, lainattava teos, ei-lainattava teos, lainaaja-asiakas, lainauskortin numero, osoite, osasto, hylly, tekijä(t), kirjan nimi, julkaisupaikka- ja vuosi, lainausaika, lainauspaikka, kirjastoauto, kirjastotalo. Järjestelmässä on pystyttävä toteuttamaan mm. kyselyt: "kenellä on lainassa kohde x?", "missä on sijoitettuna kohde x?", "mitä kohteita on lainassa henkilöllä x?", "koska kohde x vapautuu lainasta?". Voit täydentää tehtävää tarpeen mukaan. Luokkakaaviot 77

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät Tenttikysymykset 1. Selitä mitä asioita kuuluu tietojärjestelmän käsitteeseen. 2. Selitä kapseloinnin ja tiedon suojauksen periaatteet oliolähestymistavassa ja mitä hyötyä näistä periaatteista on. 3. Selitä

Lisätiedot

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

Sisällys. 19. Unified Modeling Language (UML) Johdanto. Johdanto. Johdanto. Luokkakaavio: Sisällys 9. Unified Modeling Language (UML) Perustuu Kai Koskimiehen Oliokirjaan ja aikaisempaan luentomateriaaliin. Johdanto. Luokkakaavio: Luokkasymboli, attribuutit ja metodit. Suhteet: Assosiaatiot:

Lisätiedot

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

TIE-20200 Samuel Lahtinen. Lyhyt UML-opas. UML -pikaesittely Lyhyt UML-opas UML -pikaesittely UML, Unified Modeling Language Standardoitu, yleiskäyttöinen mallinnuskieli, jota ylläpitää/hallitsee (Object Management Group) OMG Historiaa: 90-luvulla oli paljon kilpailevia

Lisätiedot

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

Jouni Huotari & Ari Hovi. Käsitemallinnuksesta relaatiokantaan KÄSITEMALLI. LOOGINEN MALLI: tietomalli valittu. FYYSINEN MALLI: DBMS valittu Informaatioteknologian instituutti IIO30100 Tietokantojen suunnittelu Polku luokkakaavioista taulujen toteutukseen kirjan Hovi, Huotari, Lahdenmäki: Tietokantojen suunnittelu & indeksointi, Docendo (2003,

Lisätiedot

Tietokantojen suunnittelu, relaatiokantojen perusteita

Tietokantojen suunnittelu, relaatiokantojen perusteita Tietokantojen suunnittelu, relaatiokantojen perusteita A277, Tietokannat Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: Leon Atkinson: core MySQL Ari Hovi: SQL-opas TTY:n tietokantojen perusteet-kurssin

Lisätiedot

3. Käsiteanalyysi ja käsitekaavio

3. Käsiteanalyysi ja käsitekaavio 3. Käsiteanalyysi ja käsitekaavio lehtori Pasi Ranne Metropolia ammattikorkeakoulu E-mail: pasi.ranne@metropolia.fi sivu 1 Käsiteanalyysi Selvitetään mitä tietokantaan pitää tallentaa Lähtökohtana käyttäjien

Lisätiedot

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

Yhteydelle voi antaa nimen kumpaankin suuntaan Sille ei tarvise antaa lainkaan nimeä Yhteysnimen asemasta tai lisäksi voidaan käyttää roolinimiä 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

Lisätiedot

Muutamia peruskäsitteitä

Muutamia peruskäsitteitä Muutamia peruskäsitteitä Huom. 1: nämä peruskäsitteet eivät muodosta hyvin määriteltyä keskenään yhteensopivien käsitteiden joukkoa, vaan käsitteet ovat osittain päällekkäisiä ja eri yhteyksissä niillä

Lisätiedot

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät Tenttikysymykset 1. Selitä mitä asioita kuuluu tietojärjestelmän käsitteeseen. 2. Selitä kapseloinnin ja tiedon suojauksen periaatteet oliolähestymistavassa ja mitä hyötyä näistä periaatteista on. 3. Selitä

Lisätiedot

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

Olio-ohjelmoinnissa luokat voidaan järjestää siten, että ne pystyvät jakamaan yhteisiä tietoja ja aliohjelmia. 4. Periytyminen 4.1. Johdantoa Käytännössä vähänkään laajemmissa ohjelmissa joudutaan laatimaan useita luokkia, joiden pitäisi pystyä välittämään tietoa toisilleen. Ohjelmien ylläpidon kannalta olisi lisäksi

Lisätiedot

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

Johdanto. Olio (Object) Luokka (Class) Olion kuvaaminen Johdanto Olio (Object) Luokat (ja oliot) mallintava järjestelmän rakennetta määrittely järjestelmän kannalta Luokat ja niiden väliset suhteet muuntuvat suoraan lähdekoodiksi! Luokkakaaviolla kuvataan ohjelmiston

Lisätiedot

Ohjelmistojen kehittämisessä tarvitaan kaaviotekniikoita

Ohjelmistojen kehittämisessä tarvitaan kaaviotekniikoita Ohjelmistojen kehittämisessä tarvitaan kaaviotekniikoita Mahdollistavat todellisuuden havainnollistamisen ja yksinkertaistamisen Sallivat eri abstraktiotasot, laajuudet ja näkökulmat Auttavat ymmärtämään

Lisätiedot

UML -mallinnus LUOKKAKAAVIO EERO NOUSIAINEN

UML -mallinnus LUOKKAKAAVIO EERO NOUSIAINEN UML -mallinnus LUOKKAKAAVIO EERO NOUSIAINEN SISÄLLYS 3. Luokkakaavio UML -mallinnuskielessä 3.1 Luokkakaavion luokan rakenteet 3.2 Luokan kuvauksesta C++ ohjelmakoodiksi 3.3 Luokkakaavion luokkien yhteystyypit

Lisätiedot

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Opintojakso TT00AA11 Ohjelmoinnin jatko (Java) Tavoite Opiskelija ymmärtää olio-ohjelmoinnin problematiikan. Opiskelija osaa määritellä ja käyttää itse

Lisätiedot

Rajapinta (interface)

Rajapinta (interface) 1 Rajapinta (interface) Mikä rajapinta on? Rajapinta ja siitä toteutettu luokka Monimuotoisuus ja dynaaminen sidonta Rajapinta vs periytyminen 1 Mikä rajapinta on? Rajapintoja käytetään, kun halutaan määritellä

Lisätiedot

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

Joskus yleistäminen voi tapahtua monen ominaisuuden pohjalta. Myös tällöin voi tulla moniperintätilanteita. Moniperintä 2 Joskus yleistäminen voi tapahtua monen ominaisuuden pohjalta. Myös tällöin voi tulla moniperintätilanteita. Oliomallinnus TITE.2040 Hannu K. Niinimäki 1 Delegointi 1 Moniperinnän toteuttaminen

Lisätiedot

2. Käsiteanalyysi ja relaatiomalli

2. Käsiteanalyysi ja relaatiomalli 2. Käsiteanalyysi ja relaatiomalli lehtori Pasi Ranne Metropolia ammattikorkeakoulu E-mail: pasi.ranne@metropolia.fi sivu 1 Tietokannan suunnitteluprosessin osat sivu 2 Käsiteanalyysi ER-mallinnus, tietomallinnus

Lisätiedot

OHJ-3010 Ohjelmistotuotannon perusteet, kesä 2012

OHJ-3010 Ohjelmistotuotannon perusteet, kesä 2012 OHJ-300 Ohjelmistotuotannon perust eet, kesäkurssi 202 OHJ-300 Ohjelmistotuotannon perusteet, kesä 202 5.06.2 Ajankoht aist a kurssilla - Asiakasvaatimusten dedis meni... - Torstaina 4.6.202 ei harjoituksia:

Lisätiedot

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

Luokkamalli LUOKKAKAAVIO. Tämän osan sisältö. Luokkamalli. Luokka ja olio. Luokkakaavio (class diagram) 4 Luokkamalli Rakenteet mittojen mukaan. Mitat rakenteen mukaan. Tämän osan sisältö Luokkakaavio luokkakaavion elementti attribuutit operaatiot määreet Olioiden väliset suhteet kytkös kooste yleistys rajapinta

Lisätiedot

UML- mallinnus: Tilakaavio

UML- mallinnus: Tilakaavio UML- mallinnus: Tilakaavio Karkea kuvaus UML- kaavioiden käytöstä ohjelmistonkehityksen eri vaiheissa ja tehtävissä. Mallinnus tilakaavioilla Tilakaaviolla kuvataan yhden luokan olioiden tilan muuttumista

Lisätiedot

UML Luokkakaavio 14:41

UML Luokkakaavio 14:41 UML Luokkakaavio UML Olio-ohjelman luokkien pääpiirteet voidaan kätevähkösti esittää ns. UML-luokkakaaviona. Näin usein tehdäänkin esim. suunniteltaessa, millaisia luokkia ohjelmaan on tarkoitus laatia,

Lisätiedot

Olio-ohjelmointi: Luokkien toteuttaminen. Jukka Juslin

Olio-ohjelmointi: Luokkien toteuttaminen. Jukka Juslin Olio-ohjelmointi: Luokkien toteuttaminen Jukka Juslin Luokkien kirjoittaminen Tähän mennessä on käytetty valmiiksi määritettyjä luokkia. Nyt opimme kirjoittamaan omia luokkia olioiden kuvaamiseksi Seuraavaksi

Lisätiedot

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

A) on käytännöllinen ohjelmointitekniikka. = laajennetaan aikaisemmin tehtyjä luokkia (uudelleenkäytettävyys) 1(37) PERIYTYMINEN (inheritance) YLILUOKKA (superclass) ALILUOKKA (subclass) A) on käytännöllinen ohjelmointitekniikka = laajennetaan aikaisemmin tehtyjä luokkia (uudelleenkäytettävyys) B) on käsitteiden

Lisätiedot

Kertaus: yleistys-erikoistus ja perintä

Kertaus: yleistys-erikoistus ja perintä Kertaus: yleistys-erikoistus ja perintä Nauta, Lehmä ja Kuttu ovat Kotieläimiä, Kotieläimet Eläimiä Kotieläimillä (siis myös Naudoilla, Lehmillä ja Kutuilla) on Omistaja Kuttu ja Lehmä toteuttavat rajapinnan

Lisätiedot

Olio-ohjelmointi Javalla

Olio-ohjelmointi Javalla 1 Olio-ohjelmointi Javalla Olio-ohjelmointi Luokka Attribuutit Konstruktori Olion luominen Metodit Olion kopiointi Staattinen attribuutti ja metodi Yksinkertainen ohjelmaluokka Ohjelmaluokka 1 Olio-ohjelmointi

Lisätiedot

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä Matti Luukkainen 10.12.2009 Tässä esitetty esimerkki on mukaelma ja lyhennelmä Robert Martinin kirjasta Agile and Iterative Development löytyvästä

Lisätiedot

Tällä harjoituskerralla on tarkoituksena harjoitella käyttötapaus-, luokka- ja tapahtumasekvenssikaavioiden luontia.

Tällä harjoituskerralla on tarkoituksena harjoitella käyttötapaus-, luokka- ja tapahtumasekvenssikaavioiden luontia. MagicDraw-pikaohje Tällä harjoituskerralla on tarkoituksena harjoitella käyttötapaus-, luokka- ja tapahtumasekvenssikaavioiden luontia. Alkuvalmistelut Windows (sali TC205) 1) Kirjaudu sisään TTY:n intra-tunnuksella.

Lisätiedot

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1 3. Komponentit ja rajapinnat 3.1 Komponenttien idea: ohjelmistotuotannon rationalisointi 3.2 Mikä on ohjelmistokomponentti? 3.3 Komponentit ohjelmistoyksikköinä 3.4 Rajapinnat 3.6 Komponenttien räätälöinti

Lisätiedot

HELIA 1 (20) Outi Virkki Tiedonhallinta 4.11.2000

HELIA 1 (20) Outi Virkki Tiedonhallinta 4.11.2000 HELIA 1 (20) Luento 3.1 7LHWRNDQWDSRKMDLVHQVRYHOOXNVHQVXXQQLWWHOXSURVHVVL Tietokannan suunnittelun tavoitteet... 3 Abstraktiotasot tietokannan suunnittelussa... 4 3-taso -malli... 4 TIHA-standardi... 5

Lisätiedot

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

Luokka (class) esitetään suorakulmion avulla, jonka sisälle kirjoitetaan luokan nimi (vahvennettuna). Luokkakaavio (Class diagram) Oliokaavio (Object diagram) Luokka (class) esitetään suorakulmion avulla, jonka sisälle kirjoitetaan luokan nimi (vahvennettuna). Ikkuna Olio (object) on luokan ilmentymä (instance).

Lisätiedot

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

TyontekijaOhjelma. +main() (käyttää) + = public - = private 1 (6) OPPIMISTEHTÄVÄT 11 (opetusviikko 15) Periytyminen, Rajapinta, Kertaus 1) Periytyminen: Periytä Henkilo-luokasta Tyontekija-aliluokka. Tyontekija-luokalla on attribuutti tuntipalkka (desimaaliluku).

Lisätiedot

Ohjelmistotuotanto vs. muut insinööritieteet. (Usein näennäinen) luotettavuus ja edullisuus

Ohjelmistotuotanto vs. muut insinööritieteet. (Usein näennäinen) luotettavuus ja edullisuus Yhteenveto Ohjelmistotuotanto vs. muut insinööritieteet Monimutkaisuus Näkymättömyys (Usein näennäinen) luotettavuus ja edullisuus Muunnettavuus Epäjatkuvuus virhetilanteissa Skaalautumattomuus Copyright

Lisätiedot

T740103 Olio-ohjelmointi Osa 5: Periytyminen ja polymorfismi Jukka Jauhiainen OAMK Tekniikan yksikkö 2010

T740103 Olio-ohjelmointi Osa 5: Periytyminen ja polymorfismi Jukka Jauhiainen OAMK Tekniikan yksikkö 2010 12. Periytyminen Johdantoa Käytännössä vähänkään laajemmissa ohjelmissa joudutaan laatimaan useita luokkia, joiden pitäisi pystyä välittämään tietoa toisilleen. Ohjelmien ylläpidon kannalta olisi lisäksi

Lisätiedot

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

Aalto Yliopisto T-106.2001 Informaatioverkostot: Studio 1. Oliot ja luokat Javaohjelmoinnissa Aalto Yliopisto T-106.2001 Informaatioverkostot: Studio 1 Oliot ja luokat Javaohjelmoinnissa Vesa Laakso 22.9.2012 Sisällysluettelo Sisällysluettelo... 1 Johdanto... 2 1. Luokka... 2 2. Olio... 2 3. Luokan

Lisätiedot

Perusarkkitehtuurin ja vuorovaikutuksen mallintamisen perusteita.

Perusarkkitehtuurin ja vuorovaikutuksen mallintamisen perusteita. Perusarkkitehtuurin ja vuorovaikutuksen mallintamisen perusteita. Arkkitehtuuriin vaikuttavat ympäristötekijät Jo kehittämisen alkuvaiheessa on tarpeellista hahmotella arkkitehtuurin perusratkaisu. Lähtökohdat

Lisätiedot

UML -mallinnus TILAKAAVIO

UML -mallinnus TILAKAAVIO UML -mallinnus TILAKAAVIO SISÄLLYS 3. Tilakaavio 3.1 Tilakaavion alku- ja lopputilat 3.2 Tilan nimi, muuttujat ja toiminnot 3.3 Tilasiirtymä 3.4 Tilasiirtymän vai tilan toiminnot 3.5 Tilasiirtymän tapahtumat

Lisätiedot

12. Kehysarkkitehtuurit

12. Kehysarkkitehtuurit 12. Kehysarkkitehtuurit Johdanto Kehystyypit Kehysten osittaminen Kehykset ja suunnittelumallit Kehysten etuja ja ongelmia Yhteenvetoa Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 1 Johdanto

Lisätiedot

Kaaviotekniikoista (erityisesti UML)

Kaaviotekniikoista (erityisesti UML) Kaaviotekniikoista (erityisesti UML) Kari Systä 20.10.2014 20.10.2014 Jotu2014/KSY 1 Tiedotettavaa Jos ette ole varanneet välinäyttöä, varatkaa heti (keskiviikkona dedis) Dokumentit IDLEeen (sähköposti

Lisätiedot

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

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen Taulukot: Array Taulukko Javassa pitää aina perustaa (new) Yksinkertaisessa tilanteessa taulukon koko tiedetään etukäteen ja

Lisätiedot

Ohjelmistojen mallintaminen Olioiden yhteistyö. 18.11.2008 Harri Laine 1

Ohjelmistojen mallintaminen Olioiden yhteistyö. 18.11.2008 Harri Laine 1 Ohjelmistojen mallintaminen Olioiden yhteistyö 18.11.2008 Harri Laine 1 Olioiden yhteistyö Oliokeskeisen ohjelmistonäkemyksen mukaan ohjelmiston palvelut tuotetaan olioiden yhteistyön tuloksena. Ohjelmisto

Lisätiedot

Kuvaustekniikat. Exit

Kuvaustekniikat. Exit Kuvaustekniikat Luvussa tarkastellaan tietojärjestelmän määrittelymenetelmiä. Määrittelymenetelmä sitoo yhteen ja ohjeistaa sen, miten eri kuvausmenetelmiä käyttäen voidaan tehdä tietojärjestelmän määrittely.

Lisätiedot

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

Java-API, rajapinnat, poikkeukset, UML,... Java-API, rajapinnat, r poikkeukset, UML,... Janne Käki 12.10.2006 Keskeisimmät Java-API:n pakkaukset API = Application Programming Interface eli sovellusohjelmointirajapinta (!) pakkaus (engl. package)

Lisätiedot

YHTEYSSUHDE (assosiation)

YHTEYSSUHDE (assosiation) YHTEYSSUHDE (assosiation) -Mikä on yhteyssuhde? -Miten toteutan yhteyssuhteen? 1 Mikä on yhteyssuhde? Yhteyssuhde kuvaa kahden olion välistä suhdetta: Esim. Auto Henkilö, omistussuhde Tili Asiakas, omistussuhde

Lisätiedot

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

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++? JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: http://java.sun.com/docs/books/tutorial/index.html Vesterholm, Kyppö: Java-ohjelmointi,

Lisätiedot

Oppijan palvelukokonaisuus. Tietomallinnuksen laaja katselmointi 7.12.2011

Oppijan palvelukokonaisuus. Tietomallinnuksen laaja katselmointi 7.12.2011 Oppijan palvelukokonaisuus Tietomallinnuksen laaja katselmointi 7.12.2011 Sisältö Tietoarkkitehtuuri Tietomallit ja sanastot Tietomallinnus Tietomallinnus hankkeessa (Hankkeessa käytetyt keskeisimmät mallinnuselementit)

Lisätiedot

HARJOITUS 2. Kasvattamot ja mittaukset

HARJOITUS 2. Kasvattamot ja mittaukset HARJOITUS 2. Tehtävä 1 Alla on esitetty relaatiotietokannan taulujen rakenne. Mitä ongelmia tähän tietokantaan liittyy jos se yritettäisiin ottaa käyttöön sellaisenaan? Korjaa puutteet ja esitä toimiva

Lisätiedot

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet A271117, Tietokannat Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: Leon Atkinson: core MySQL Ari Hovi: SQL-opas TTY:n tietokantojen perusteet-kurssin

Lisätiedot

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

Tietokantasuunnittelun pääperiaatteena on tiedon toiston välttäminen. Tiedon toistumiseen liittyy monenlaisia ongelmia. Tietokantasuunnittelun pääperiaatteena on tiedon toiston välttäminen. Tiedon toistumiseen liittyy monenlaisia ongelmia toistuva tieto vie tilaa ylläpito muodostuu hankalaksi ylläpito-operaatioilla voi

Lisätiedot

Java kahdessa tunnissa. Jyry Suvilehto

Java kahdessa tunnissa. Jyry Suvilehto Java kahdessa tunnissa Jyry Suvilehto Ohjelma Ohjelmointiasioita alkeista nippelitietoon n. 45 min Tauko 10 min Oliot, luokat ja muut kummajaiset n. 45 min Kysykää Sisältöä ei oikeasti ole 2x45 min täytteeksi,

Lisätiedot

HELIA 1 (19) Outi Virkki Tietokantasuunnittelu 9.3.2001

HELIA 1 (19) Outi Virkki Tietokantasuunnittelu 9.3.2001 HELIA 1 (19) Luento 11 Eheyssäännöt (Integrity Constraints)... 2 Eheyden valvonta... 3 Yksilön eheyssääntö... 4 Arvojoukkoeheyssäännöt... 5 Null-arvoista... 6 Viite-eheyssäännöt... 7 Emorelaation päivitys...

Lisätiedot

Ohjelmistojen mallintaminen. Luento 7, 23.11.

Ohjelmistojen mallintaminen. Luento 7, 23.11. Ohjelmistojen mallintaminen Luento 7, 23.11. Kertaus: olioiden yhteistyön kuvaaminen Luokkakaavion avulla voidaan kuvata ohjelman rakenne Minkälaisista luokista ohjelma koostuu ja miten luokat liittyvät

Lisätiedot

HELIA 1 (12) Outi Virkki Tiedonhallinta 4.11.2000

HELIA 1 (12) Outi Virkki Tiedonhallinta 4.11.2000 HELIA 1 (12) Luento 4.3 Eheyssäännöt (Integrity Constraints)... 2 Eheyden valvonta... 3 Yksilön eheyssääntö... 4 Viite-eheyssäännöt... 5 Arvojoukkoeheyssäännöt... 8 Null-arvoista... 10 Sovelluskohtaiset

Lisätiedot

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta. Malli-näkym kymä-ohjain arkkitehtuurit (Model-View View-Controller, MVC) Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta. Lähtökohdat: Sovelluksen

Lisätiedot

UML-kaaviot. Jouni Kylä-Nikkilä

UML-kaaviot. Jouni Kylä-Nikkilä UML-kaaviot Jouni Kylä-Nikkilä Tampereen yliopisto Tietojenkäsittelytieteiden laitos Tietojenkäsittelyoppi Pro gradu -tutkielma Huhtikuu 2008 Tampereen yliopisto Tietojenkäsittelytieteiden laitos Tietojenkäsittelyoppi

Lisätiedot

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Kirjoita jokaiseen palauttamaasi konseptiin kurssin nimi, kokeen päivämäärä, oma nimi ja opiskelijanumero. Vastaa kaikkiin tehtäviin omille konsepteilleen.

Lisätiedot

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

T-76.611 Ohjelmistojen määrittely- ja suunnittelumenetelmät Harjoitustyöraportti TNT - Tarkistetaan Ne Tentit Arkkitehtuuri- ja suunnittelumalli T-76.611 Ohjelmistojen määrittely- ja suunnittelumenetelmät Harjoitustyöraportti TNT - Tarkistetaan Ne Tentit Arkkitehtuuri- ja suunnittelumalli Lasse Lindqvist Lasse Lopperi llindqvi@cc.hut.fi lmlopper@cc.hut.fi

Lisätiedot

Ohjelmistojen mallintaminen. Luento 4, 12.11.

Ohjelmistojen mallintaminen. Luento 4, 12.11. Ohjelmistojen mallintaminen Luento 4, 12.11. Kertausta: Olioperustainen ohjelmistokehitys Lähdemme siis oletuksesta, että kehitettävän järjestelmän voidaan ajatella koostuvan oliosta Tehdään koko ohjelmistokehitys

Lisätiedot

Tietueet. Tietueiden määrittely

Tietueet. Tietueiden määrittely Tietueet Tietueiden määrittely Tietue on tietorakenne, joka kokoaa yhteen eri tyyppistä tietoa yhdeksi asiakokonaisuudeksi. Tähän kokonaisuuteen voidaan viitata yhteisellä nimellä. Auttaa ohjelmoijaa järjestelemään

Lisätiedot

4.12.2005. SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T

4.12.2005. SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T SEPA: REFAKTOROINTI 2 (9) SEPA: REFAKTOROINTI 3 (9) VERSIOHISTORIA Version Date Author Description 0.1 2.12.2005 Erik Hakala Ensimmäinen

Lisätiedot

9. Muunneltavuuden hallinta

9. Muunneltavuuden hallinta 9. Muunneltavuuden hallinta Muunneltavuuden hallinta (Variability management): Tekniikat ja työtavat, jotka auttavat kuvaamaan, toteuttamaan ja hyödyntämään tuoterungon mahdollistamaa ohjelmistotuotteiden

Lisätiedot

1. Olio-ohjelmointi 1.1

1. Olio-ohjelmointi 1.1 1. Olio-ohjelmointi 1.1 Sisällys Olio-ohjelmointi on eräs ohjelmointiparadigma. Olio-ohjelmoinnin muotoja. Ohjelmiston analyysi ja suunnittelu. Olioparadigman etuja ja kritiikkiä. 1.2 Ohjelmointiparadigmoja

Lisätiedot

Yhteentoimivuutta edistävien työkalujen kehittäminen

Yhteentoimivuutta edistävien työkalujen kehittäminen Yhteentoimivuutta edistävien työkalujen kehittäminen Semantiikkaa organisaatioiden välisen tiedonvaihdon helpottamiseksi Mikael af Hällström, Verohallinto Esityksen sisältö Taustatekijöitä (OKM:n hallinnonala,

Lisätiedot

TIE-20200 Ohjelmistojen suunnittelu

TIE-20200 Ohjelmistojen suunnittelu TIE-20200 Ohjelmistojen suunnittelu Luento 6: suunnittelua Samuel Lahtinen TIE-20200 Samuel Lahtinen 1 Ajankohtaista Harjoitustyö Protosessioita tällä viikolla Ohjelmassa tänään Ohjelmistojen suunnittelujuttuja

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 15.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.3.2010 1 / 56 Tiedostoista: tietojen tallentaminen ohjelman suorituskertojen välillä Monissa sovelluksissa ohjelman

Lisätiedot

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena Ohjelmointikielet ja -paradigmat 5op Markus Norrena Ko#tehtävä 4 Viimeistele "alkeellinen kuvagalleria". Käytännössä kaksi sivua Yksi jolla voi ladata kuvia palvelimelle (file upload) Toinen jolla ladattuja

Lisätiedot

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

Copyright by Haikala. Ohjelmistotuotannon osa-alueet Copyright by Haikala Ohjelmistotuotannon osa-alueet Ohjelmiston elinkaari 1. Esitutkimus, tarvekartoitus, kokonaissuunnittelu, järjestelmäsuunnittelu (feasibility study, requirement study, preliminary

Lisätiedot

TIE-20200 Ohjelmistojen suunnittelu

TIE-20200 Ohjelmistojen suunnittelu TIE-20200 Ohjelmistojen suunnittelu Luento 1: Virtuaalifunktiot, Template method 1 Yleistä asiaa Muistakaa harkkatyöilmoittautuminen 23 ryhmää (mm. lihansyöjäkirahvi), vajaita ryhmiäkin on 44 henkeä vielä

Lisätiedot

ohjelman arkkitehtuurista.

ohjelman arkkitehtuurista. 1 Legacy-järjestelmällä tarkoitetaan (mahdollisesti) vanhaa, olemassa olevaa ja käyttökelpoista ohjelmistoa, joka on toteutettu käyttäen vanhoja menetelmiä ja/tai ohjelmointikieliä, joiden tuntemus yrityksessä

Lisätiedot

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas Tiedonhallinnan perusteet Viikko 1 Jukka Lähetkangas Kurssilla käytävät asiat Tietokantojen toimintafilosofian ja -tekniikan perusteet Tiedonsäilönnän vaihtoehdot Tietokantojen suunnitteleminen internetiä

Lisätiedot

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

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004 Vertailulauseet Ehtolausekkeet Ehdot, valintalausekkeet Boolean-algebra == yhtäsuuruus!= erisuuruus < pienempi suurempi >= suurempi tai yhtäsuuri Esimerkkejä: int i=7; int j=10;

Lisätiedot

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

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Tietorakenneluokkia 2: HashMap, TreeMap Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Tietorakenneluokkia 2: HashMap, TreeMap Tietorakenneluokkia ja -rajapintoja Java tarjoaa laajan kokoelman tietorakennerajapintoja ja - luokkia. Aiemmin

Lisätiedot

Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: Harjoitus 7 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: class Lintu //Kentät private int _siivenpituus; protected double _aivojenkoko; private bool _osaakolentaa; //Ominaisuudet public int

Lisätiedot

2. Olio-ohjelmoinista lyhyesti 2.1

2. Olio-ohjelmoinista lyhyesti 2.1 2. Olio-ohjelmoinista lyhyesti 2.1 Sisällys Yleistä. Oliot ja luokat. Attribuutit. Olioiden esittely ja alustus. Rakentajat. Olion operaation kutsuminen. 2.2 Yleistä Olio-ohjelmointia käsitellään hyvin

Lisätiedot

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

Kompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma 1 Kompositio Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma 1 Mikä kompositio on? Tili - : String - : double 1 1 Kayttoraja

Lisätiedot

NORMALISOINTI TIETOJEN MALLINNUS JOUNI HUOTARI & ARI HOVI

NORMALISOINTI TIETOJEN MALLINNUS JOUNI HUOTARI & ARI HOVI TIETOJEN MALLINNUS NORMALISOINTI HOVI, HUOTARI, LAHDENMÄKI: TIETOKANTOJEN SUUNNITTELU & INDEKSOINTI DOCENDO (2003, 2005) LUKU 5 JOUNI HUOTARI & ARI HOVI SUUNNITTELUPUTKI Käyttäjien näkemykset Näytöt, ikkunat

Lisätiedot

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo 15.2.2006

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo 15.2.2006 TURUN YLIOPISTO DEMO III Informaatioteknologian laitos tehtävät Olio-ohjelmoinnin perusteet / Salo 15.2.2006 1. Tässä tehtävässä tarkastellaan erääntyviä laskuja. Lasku muodostaa oman luokkansa. Laskussa

Lisätiedot

Eija Järvelä Elina Puusaari. käsikirja

Eija Järvelä Elina Puusaari. käsikirja Eija Järvelä Elina Puusaari käsikirja Jyväskylän yliopisto Chydenius instituutti Kokkolan yliopistokeskus Kokkola 2005 OHRA projekti Ohjelmistoarkkitehtuurien integrointi ohjelmistotuotantoon Chydenius

Lisätiedot

A274101 TIETORAKENTEET JA ALGORITMIT

A274101 TIETORAKENTEET JA ALGORITMIT A274101 TIETORAKENTEET JA ALGORITMIT PERUSTIETORAKENTEET LISTA, PINO, JONO, PAKKA ABSTRAKTI TIETOTYYPPI Tietotyyppi on abstrakti, kun se on määritelty (esim. matemaattisesti) ottamatta kantaa varsinaiseen

Lisätiedot

TIE-20200 Ohjelmistojen suunnittelu

TIE-20200 Ohjelmistojen suunnittelu TIE-20200 Ohjelmistojen suunnittelu Luento 0: Kurssin esittely TIE-20200 Samuel Lahtinen 1 Mitäs tänään on tarjolla? Käytännön juttuja: Mistä tietoa löytyy Kurssin henkilökunta Kurssin rakenne Käytännönjärjestelyt

Lisätiedot

Ylläpitodokumentti. Boa Open Access. Helsinki 2.5.2006 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Ylläpitodokumentti. Boa Open Access. Helsinki 2.5.2006 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Ylläpitodokumentti Boa Open Access Helsinki 2.5.2006 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Ilmari

Lisätiedot

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset Tekninen määrittely: Editori Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset Sisällysluettelo 1. Johdanto...4 1.1. Tarkoitus ja kattavuus...4 1.2. Tuote ja ympäristö...4 1.3. Määritelmät,

Lisätiedot

Mikä yhteyssuhde on?

Mikä yhteyssuhde on? 1 Yhteyssuhde Mikä yhteyssuhde on? Yhteyssuhde Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma 1 Mikä yhteyssuhde on? Tili - : String - : double * 1 Asiakas - hetu: String - : String

Lisätiedot

Kirjasto Relaatiotietokannat Kevät 2001. Auvinen Annemari Niemi Anu Passoja Jonna Pulli Jari Tersa Tiina

Kirjasto Relaatiotietokannat Kevät 2001. Auvinen Annemari Niemi Anu Passoja Jonna Pulli Jari Tersa Tiina Kirjasto Kevät 2001 Auvinen Annemari Niemi Anu Harjoitustyö 7.4.2001 Sisällysluettelo 1. Yleiskuvaus... 3 2. Vaatimukset... 3 2.1. Toiminnalliset... 3 2.1.1. Sisäänkirjautuminen... 3 2.1.2. Nimikkeiden

Lisätiedot

MagicDraw-pikaohje (VH5)

MagicDraw-pikaohje (VH5) MagicDraw-pikaohje (VH5) Tällä harjoituskerralla on tarkoituksena harjoitella käyttötapaus-, luokka- ja tapahtumasekvenssikaavioiden luontia. Alkuvalmistelut Linux-työasemaluokka: käynnistä MagicDraw jollakin

Lisätiedot

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena Ohjelmointikielet ja -paradigmat 5op Markus Norrena Kotitehtävä 6, toteuttakaa alla olevan luokka ja attribuutit (muuttujat) Kotitehtävä 6, toteuttakaa alla olevan luokka ja attribuutit (muuttujat) Huom!

Lisätiedot

Harjoitustehtävät ja ratkaisut viikolle 48

Harjoitustehtävät ja ratkaisut viikolle 48 Harjoitustehtävät ja ratkaisut viikolle 48 1. Tehtävä on jatkoa aiemmalle tehtävälle viikolta 42, missä piti suunnitella älykodin arkkitehtuuri käyttäen vain ennalta annettua joukkoa ratkaisuja. Tämäkin

Lisätiedot

Liigan taulut ja attribuutit

Liigan taulut ja attribuutit HARJOITUS 3. Tehtävä 1. Laadi harjoitusmielessä kaksi käsitekaaviota, (juniori. Nappula tms.)liiga ja äänitearkisto. Levyarkisto: Tietokannassa tulee olla perustiedot äänitteistä (CD, vinyyli, kasetti),

Lisätiedot

Ohjelmistojen mallintaminen. Luento 8, 26.11.

Ohjelmistojen mallintaminen. Luento 8, 26.11. Ohjelmistojen mallintaminen Luento 8, 26.11. Kertaus: yleistys-erikoistus ja perintä Nauta, Lehmä ja Kuttu ovat Kotieläimiä, Kotieläimet Eläimiä Kotieläimillä (siis myös Naudoilla, Lehmillä ja Kutuilla)

Lisätiedot

582104 Ohjelmistojen mallintaminen, olioja relaatiomallinnuksen suhteesta

582104 Ohjelmistojen mallintaminen, olioja relaatiomallinnuksen suhteesta 582104 Ohjelmistojen mallintaminen, olioja relaatiomallinnuksen suhteesta 1 Tietojen pysyvyys liiketoiminnan edellytys Tällä kurssilla on keskitytty oliomenetelmiä hyödyntävään ohjelmistojen mallintamiseen

Lisätiedot

Ohjelmistojen mallintaminen. Luento 6, 19.11.

Ohjelmistojen mallintaminen. Luento 6, 19.11. Ohjelmistojen mallintaminen Luento 6, 19.11. Kertaus: käsiteanalyysi eli menetelmä luokkamallin muodostamiseen 1. Etsi luokkaehdokkaat tekstikuvauksista (substantiivit) 2. Karsi luokkaehdokkaita (mm. yhdistä

Lisätiedot

Olio-ohjelmointi Johdanto olio-ohjelmointiin

Olio-ohjelmointi Johdanto olio-ohjelmointiin Olio-ohjelmointi Johdanto olio-ohjelmointiin Ohjelmistoa kehitettäessä voidaan tunnistaa ainakin kaksi abstraktiota: prosessiabstraktio ja dataabstraktio. Prosessiabstraktio huomattiin jo varhain, koska

Lisätiedot

Ohjelmistojen mallintaminen. Luento 4, 22.11.

Ohjelmistojen mallintaminen. Luento 4, 22.11. Ohjelmistojen mallintaminen Luento 4, 22.11. Kertaus: olioiden yhteistyön kuvaaminen Luokkakaavion avulla voidaan kuvata ohjelman rakenne Minkälaisista luokista ohjelma koostuu ja miten luokat liittyvät

Lisätiedot

HELIA 1 (17) Outi Virkki Tiedonhallinta 4.11.2000

HELIA 1 (17) Outi Virkki Tiedonhallinta 4.11.2000 HELIA 1 (17) Luento 4.5 Normalisointi... 2 Tavoitteet... 2 Attribuuttien väliset riippuvuudet... 4 Funktionaalinen / moniarvoinen riippuvuus... 4 Transitiivinen / suora riippuvuus... 6 Täydellinen / osittainen

Lisätiedot

Rinnakkaisohjelmointi, Syksy 2006

Rinnakkaisohjelmointi, Syksy 2006 Rinnakkaisohjelmointi, Syksy 2006 17.12.2006 Opintopiiri WTF Mika Holmström Paula Kemppi Janne Piippo Lasse Lukkari Javan semaforit 1. Menetelmän käyttötarkoitus ja sovellusalue Semaforin idea kehitettiin

Lisätiedot

Relaatiotietokantojen perusteista. Harri Laine Helsingin yliopisto

Relaatiotietokantojen perusteista. Harri Laine Helsingin yliopisto Harri Laine Helsingin yliopisto Suosion syy? Yksinkertaisuus vähän käsitteitä helppo hahmottaa Selkeä matemaattinen perusta ei tulkintaongelmia kuten esim. UML:ssä teoria käytäntö kaavio: R(A 1 :D 1, A

Lisätiedot

Ohjelmointi II. Erkki Pesonen Luennot ja harjoitukset. Itä-Suomen yliopisto Tietojenkäsittelytieteen laitos 2015

Ohjelmointi II. Erkki Pesonen Luennot ja harjoitukset. Itä-Suomen yliopisto Tietojenkäsittelytieteen laitos 2015 Ohjelmointi II Erkki Pesonen Luennot ja harjoitukset Itä-Suomen yliopisto Tietojenkäsittelytieteen laitos 2015 1 Johdantoa kurssilla opiskeluun: oppimistavoitteet. 1. Tiedän mitä asioita kurssilla opiskellaan

Lisätiedot

TIE-20200 Ohjelmistojen suunnittelu

TIE-20200 Ohjelmistojen suunnittelu TIE-20200 Ohjelmistojen suunnittelu Luento 1: Virtuaalifunktiot, Template method 1 Seuraavaksi tarjolla: Otekn-asiaa vähän pintaa syvemmältä Virtuaalifunktiot ja erikoistaminen, olioiden kopiointi ja elinaika

Lisätiedot

etunimi, sukunimi ja opiskelijanumero ja näillä

etunimi, sukunimi ja opiskelijanumero ja näillä Sisällys 1. Algoritmi Algoritmin määritelmä. Aiheen pariin johdatteleva esimerkki. ja operaatiot (sijoitus, aritmetiikka ja vertailu). Algoritmista ohjelmaksi. 1.1 1.2 Algoritmin määritelmä Ohjelmointi

Lisätiedot

Helia Ohjelmointitaito 14.3.2005 Tuomas Kaipainen Mermit Business Applications Oy. 2005 Mermit Business Applications

Helia Ohjelmointitaito 14.3.2005 Tuomas Kaipainen Mermit Business Applications Oy. 2005 Mermit Business Applications Helia Ohjelmointitaito 14.3.2005 Tuomas Kaipainen Mermit Business Applications Oy Esityksen sisältö Mermit yrityksenä Perustiedot Toimintamalli Mermit työpaikkana ohjelmistoinsinöörille Esimerkkiprojekti

Lisätiedot