Luokka- eli ER- eli käsitekaaviot (Luku 6)

Slides:



Advertisements
Samankaltaiset esitykset
Tuloksellinen Java-ohjelmointi Luku 3 Luokkien käyttäminen
Advertisements

18. Abstraktit tietotyypit
Rajapintaluokat Rajapintaluokka luettelee metodit, joille tulee löytyä toteutus asianomaisen rajapinnan toteuttavista luokista. Rajapintaluokka on siis.
Koostumussuhde Jukka Juslin © Jukka Juslin.
Ohjelmiston tekninen suunnittelu
Olio-ohjelmoinnin perusteet luento 3: Muuttujista ja funktioista Sami Jantunen LTY/Tietotekniikan osasto.
@ Leena Lahtinen Helia TIETO JA TIETOKONEOHJELMA  TIETOKONEOHJELMA KÄSITTELEE TIETOJA  TIETOJA VOIDAAN KÄSITELLÄ OHJELMASSA VAIN SALLITUILLA.
© Jukka Harju, Viittausmuuttujat. © Jukka Harju, Viittaukset •Viittausmuuttuja sisältää tiedon siitä missä muistipaikassa olio.
JavaScript (c) Irja & Reino Aarinen, 2007
Luokkien väliset koostesuhteet
Muutamia käsitteitätMyn1 Muutamia käsitteitä •Perintä (inheritance) on luokkien välinen suhde, jossa johdettu luokka (subclass, derived class) perii kantaluokan,
Luokkakaaviot Luokkakaaviot Tekninen suunnittelu.
Tietokanta.
Nämä kalvot on lisensoitu Creative Commons Attribution-ShareAlike 1
Tapahtumasekvenssit = Käyttötapausten realisointi
Olio-ohjelmointi. Mitä olio-ohjelmointi on ?  Pyritään mallintamaan jotain reaalimaailman kohdetta tietokoneohjelman avulla  Olio on luokan ilmentymä.
2.8.3 Abstraktit tietotyypit
Taulukot: Array Taulukko Javassa pitää aina perustaa (new)
13. Pakkaukset.
Antti-Jussi Lakanen Nuorten peliohjelmointi 2009 / Jyväskylän yliopisto.
Ohjelmiston toteutus (teknisestä näkökulmasta)
OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT. LUOKKA JAVA ohjelma koostuu luokista LUOKKA sisältää metodeja molemmat sisältävät attribuutteja eli muuttujia.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
Olio-ohjelmoinnin perusteet luento 3
1 Senioreiden säästäminen ja maksutavat 2014 SENIOREIDEN SÄÄSTÄMINEN JA MAKSUTAVAT
TMA.003 / L3 ( )1 3. Funktioista 3.1. Kuvaus ja funktio Olkoon A ja B ei-tyhjiä joukkoja. Tulojoukon A  B = {(x,y) | x  A, y  B} osajoukko on.
Elinkeinopoliittinen mittaristo 2014
9. Periytyminen Javassa.
TIETO JA TIETOKONEOHJELMA TIETOKONEOHJELMA KÄSITTELEE TIETOJA TIETOJA VOIDAAN KÄSITELLÄ OHJELMASSA VAIN SALLITUILLA MENETELMILLÄ.
Päivi Ovaska Tutkijaopettaja LTY/Tite
© Jukka Harju, Jukka Juslin
1 Kertaus koetta varten oleellisista asioista Jukka Juslin.
Tietovuokaaviot (ei osa UML-kieltä)
Johdatus ohjelmointiin Ohjelmistosuunnittelu Jaana Holvikivi.
Luokan määrittely class-määreellä tMyn1 Luokan määrittely class-määreellä Luokan määrittely tarkoittaa luokan tietojäsenten esittelyä ja jäsenfunktioiden.
ict1td002 - Copyright Raine Kauppinen 1 Alkuarvot ja tyyppimuunnokset (1/5)  Aiemmin olemme jo antaneet muuttujille alkuarvoja, esimerkiksi: int.
Miika Nurminen, Kerho -alusta() : void +lue_tiedostosta(tied : String) : String +talleta() : String +kerhon_nimi(): String +jasenia() : int +poista(nro:
Metodit – Arvotyyppi Ellei metodi palauta arvoa, sen arvotyyppi on void Tällöin ”return;”-lauseke ei ole metodissa pakollinen, vaikka sen käyttö on sallittua.
4. Attribuutit 4.1. Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2.
5. Kapselointi Yleistä Kapseloinnilla (encapsulation) tarkoitetaan luokan tietojen ja toimintojen pakkaamista yhdeksi suojatuksi kokonaisuudeksi.
10. Abstrakti luokka Johdanto Abstrakti luokka (abstract class) poikkeaa konkreettisesta luokasta (ei-abstrakti luokka) siten, että siitä ei.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
Hyvä ohjelmointitapa (osa 2) Yleistä Lisää hyviä ohjelmointikäytäntöjä: − Jaa pitkä koodi osiin. − Käytä attribuutteja säästeliäästi.
OHJELMOINTITAITO ICT02D 12 ECTS. OPINTOJAKSON TOTEUTUS  KESTO: –  AVOIMEN OPISKELIJAT: – YKSI LUOKA (SUOMI) – LUOKKA ICT02O-1.
Heuristinen arviointi Käyttöliittymäseminaari Jere Salonen.
– Ohjelmistojen mallintaminen, mallintaminen ja UML.
Rinnakkaisuus Järjestelmässä, jossa voi olla useita prosesseja rinnakkain suorituksessa voi tulla tilanteita, joissa prosessien suoritusta täytyy kontrolloida.
Jouni Juntunen Oulun seudun ammattikorkeakoulu Liiketalouden yksikkö
Oliot ja luokat Oliot ja luokat Oliot (object) ja luokat (class) ovat keskeisiä olio- ohjelmoinnin käsitteitä. Olio-ohjelmointi on ohjelmointiparadigma,
Vesa Ollikainen & Outi Grotenfelt
Component diagram– Komponenttikaavio J. Pätsi & H. Malmihuhta
Johdetun luokan olion alustus tMyn1 Johdetun luokan olion alustus määrätyillä arvoilla Kun ohjelmassa esiintyy johdetun luokan olion määrittely, järjestelmä.
Java - Tietokanta. JDBC=Java database connectivity  ODBC:n kaltainen ohjelmointiliittymä SQL- tietokantoihin  Koostuu Java-kehitysympäristön (esim.
1 © Jukka Juslin Luokat, attribuutit ja metodit Yleistietoa: seuraavalla koulutusviikolla tarkempi käsittely.
XSL Teppo Räisänen
15. Ohjelmoinnin tekniikkaa
Ohjelmistojen mallintaminen, sekvenssikaaviot
Kertausta: Ohjelmistotuotantoprosessin vaiheet ● Vaatimusanalyysi- ja määrittely – Mitä halutaan? ● Suunnittelu – Miten tehdään? ● Toteutus – Ohjelmointi.
UML-luokkakaavio ● Luokkakaavio (class diagram) kuvaa järjestelmän luokkarakennetta ● Mitä luokkia on olemassa ● Minkälaisia luokat ovat ● Luokkien suhteet.
5. Kapselointi.
1. Olio-ohjelmointi.
Kantaluokan määrittely
3. Luokat, oliot ja metodit Java-kielessä (Lausekielinen ohjelmointi I ja II –kursseilla opitun kertausta.)
Rajapintaluokat Rajapintaluokka luettelee metodit, joille tulee löytyä toteutus asianomaisen rajapinnan toteuttavista luokista. Rajapintaluokka on siis.
Toisto Toistolausekkeet for, while(ehto){…} ja do {…} while(ehto)
4. Attribuutit.
Ohjelmistotekniikan menetelmät, sekvenssikaaviot
3. Attribuutit.
4. Luokan testaus ja käyttö olion kautta
2. Olio-ohjelmoinnin perusteita
Esityksen transkriptio:

Luokka- eli ER- eli käsitekaaviot (Luku 6) Tämä luku on muuttunut melkoisesti siirryttäessä painoksesta 6 painokseen 7. - Kalvomateriaali on kurssin www-sivuilla ja luku on kirjan www-sivuilla pdf-muodossa. Peruskomponentit Esimerkki Pieni harjoitus Sivuhyppäys: ohjelmistojen oliokeskeisyys (OO, Object Orientation), oliot ja luokat Koostuminen Yli/alityypit (eli periyttäminen eli erikoistaminen) Rajapintojen määrittely Lisukkeita, jotka eivät ole tällä kurssilla tärkeitä Kaavioiden käyttötavoista ja ilmaisuvoimasta Kaavioiden laatimisohjeita ja esimerkkejä Muita kaavionotaatioita vaatimukset 7.10.2003/ijh

Kaaviot 7.10.2003/ijh Käyttötapaus Käsittele puu Kuljettaja Sahaa tukki 7.10.2003/ijh

Luokka (käsite, kohde) ja yhteys (vastaa kuvaa 6.1) Olio? 7.10.2003/ijh

Oliot, lukumääräsuhteet (kuva ei kirjassa) 7.10.2003/ijh

Esimerkki (kuva 6.2) lukusuunta navigointisuunta assosiatioluokka UML 2.0? 30.9 7.10.2003/ijh

University lab library The students and personnel borrow books An ID card with barcode is used to identify the clients. There is a maximum amount of books that can be borrowed by one client. There is a maximum time for a loan. Books can be reserved. … Use cases? Class diagram? 7.10.2003/ijh

Sivuhyppäys: ohjelmistojen oliokeskeisyys (OO, Object Orientation) Oliomenetelmät ovat 1980-luvun loppupuolelta lähtien vallanneet alaa ja ovat nyt “valtavirta” -- toisaalta ohjelmistot kehitetään käytännössä useimmiten ilman sen juhlallisempia menetelmiä. Perusajatuksena on sovellusalueen mallintaminen ohjelmassa luomalla ohjelmaan todellisuutta vastaavat oliot (tilaus, kuorma-auto, anturi, jne.) luokittelu (abstraktiot) olioiden väliset yhteydet olioiden koostuminen toisista olioista OOA: Object Oriented Analysis, oliomäärittely. OOD: Object Oriented Design, oliosuunnittelu OOP: Object Oriented Programming, olio-ohjelmointi. Oleellisinta olio-ajattelussa on ajattelutapa, ei toteutustekniikka (C, C++ -luokka, Java, COM-komponentti, Corba, Java-papu jne…). 7.10.2003/ijh

…ohjelmistojen oliokeskeisyys Oliokeskeisessä ajattelussa lähes mitä hyvänsä voi ajatella oliona: bitti, merkki, merkkijono, kokonaisluku, tiedosto, palvelin, kuorma-auto, pankkiyhteys, varasto, pankkitili … Oliolla on tila olion ”muisti” tila voi koostua toisista olioista, esimerkiksi pvm voi koostua päivästä, kuukaudesta ja vuodesta olion tila on ”kapseloitu” olion sisälle: sitä voi kysellä oliolta ja sitä voi muuttaa kutsumalla olion metodeita Oliolla on rajapinta joukko toimintoja, joilla oliota hallitaan, operaatiot, julkiset jäsenfunktiot, palvelut, metodit... Oliokeskeinen ohjelma koostuu joukosta keskenään kommunikoivia oliota. Oliot kommunikoivat lähettämällä toisilleen sanomia, ts. kutsumalla toistensa rajapintojen määrittelemiä. Luokka: oliot, joilla on sama käyttäytyminen (metodit) ja samat attribuutit, ovat instansseja eli ilmentymiä samasta olioluokasta. 7.10.2003/ijh

Muodostuminen (kuva 6.5) ja koostuminen muodoste (composition) kooste (aggregation) assosiaation erikoistapauksia 7.10.2003/ijh

Periyttäminen, yleistäminen, erikoistaminen (kuva 6.3) rajoite TAI: voisi vielä havainnollistaa henkilöesimerkillä 7.10 7.10.2003/ijh

Periyttäminen (kuva 6.4) yleistäminen erikoistaminen 7.10.2003/ijh

Rajapinnat, toteutus-suhde (kuva 6.6, vrt. periytyminen) ohjaus kaynnista() sammuta() asetaNopeus() <<Interface>> höyrykone <<thread>> veturi varoita() varoitin <<uses>> void kaynnista() { while (1) { .... if (kattilapaine > maxPaine) { vPtr->varoita("kohta pamahtaa") } realization polttomoottori heikko riippuvuus 7.10.2003/ijh

Rajapinnat 2 (kuva 6.7) 7.10.2003/ijh

Lisukkeet: Luokka Instantiation: Template WinType parameter Window<Xwindow> Window {abstract, author = KK status = tested} Property list (optional) Attribute list (optional) +size #visibility: Boolean = false -xptr: WinType Operation list (optional) +display() hide() +create() -attachXWindow(xwin: WinType*) + = public - = private # = protected = unknown Class operation (static) (simple name is enough for an attribute and operation, too) 7.10.2003/ijh

Lisukkeet: Yhteyksien erityispiirteitä has Navigointi Person * AccessRight Kvalifiointi Bank * Client accountnr * 1..* Roolien nimet Company Person employer employee 7.10.2003/ijh

Kaavioiden käyttötavoista 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. Kaavio kertoo, millaiset tilanteet ovat mahdollisia. Kaavio ohjaa kysymään oikeita kysymyksiä. 7.10.2003/ijh

Kaavioiden ilmaisuvoimasta Kaikkien sallittujen tilanteiden on oltava kaaviossa mukana. 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? 7.10.2003/ijh

Esimerkki ilmaisuvoimasta (1, kuva 6.8a) (Korjattu, UML-std:n mukaan kuvan 6.9 esimerkkitilanne olisi mahdoton (?), jos käytettäisiin assosiaatioluokkaa) Kysymys 1: missä firmoissa A.S. on töissä? Kysymys 2: kuka on A.S.:n esimies, kun hän on Aikonilla hommissa? Kysymys 3: mikä on A.S.:n esimiehen titteli kohdan 2 kysymyksessä. 7.10.2003/ijh

Esimerkki ilmaisuvoimasta (2, kuva 6.9a) 7.10.2003/ijh

Esimerkki ilmaisuvoimasta (3, kuva 6.8b) 7.10.2003/ijh

Esimerkki ilmaisuvoimasta (4, kuva 6.9b) 7.10.2003/ijh

Kaavioiden laatiminen: Luokat (1) Luokan jäsenillä on samat attribuutit ja sama käyttäytyminen (metodit). Tyypillisiä luokkia ”Konseptuaaliset” luokat: sovellusalueen käsitteet (toinen tapa sanoa lähes sama: käsitteet, jotka ovat mukana jokaisessa ajateltavissa olevassa ratkaisussa) itse keksityt metaforat yms, ”pure fabrication”: luokat, jotka keksitään ”tyhjästä” helpottamaan keskustelua sovelluksesta (määrittely- tai suunnittelutasolla) Suunnittelun MVC-malli (Model-View-Controller): Model-luokat sisältävät datan (usein konseptuaalinen luokka). View-luokka näkyy käyttöliittymässä. Controller-luokka sisältää käyttöliittymälogiikan. ... Luokkajako perustuu pysyviin ominaisuuksiin ei esimerkiksi olion väliaikaiseen tilaan. Esimerkki. Toiminnallisuuden jakaminen: ei mahtiluokkia (God class), jotka "osaavat" ja "tietävät" kaiken (muut luokat toimivat vain tiedon säilytyspaikkoina). 7.10.2003/ijh

Kaavioiden laatiminen: Luokat (2) Metodit saantimetodit (accessors) palauttavat tietoa olion tilasta muuttajametodit (mutators) muuttavat olion tilaa perussääntö: laita metodit sinne, missä tietokin on Attribuutit primitiivityypit esitetään attribuutteina abstraktit tietotyypit ja joskus muutkin oliot voivat esiintyä myös attribuutteina (vrt. muodoste ♦ ) assosiaatiot toteuttavia ”attribuutteja” ei yleensä esitetä attribuutteina kaavioissa Ei toistuvia kenttiä (ks. opiskelijarekisteri). Ei tarpeetonta redundanssia (sama tieto monessa paikassa, ov opiskelijarekisterissä). Ei puuttuvia kenttiä (Esimerkki). Ei turhia luokkia. 7.10.2003/ijh

Kaavioiden laatiminen: Yhteydet Olion A ja B voi yhdistää esimerkiksi seuraavanlainen suhde A on osa tai kuuluu B:n A sisältää tai omistaa B:n A kuvaa B:n A kommunikoi B:n kanssa A on tapahtuma, joka liittyy B:n A on fyysisesti B:n vieressä A käyttää B:tä A hallinnoi B:tä... Minimoi yhteydet luokkien välillä, ei redundantteja yhteyksiä (ks. opiskelijarekisteri). ”need-to-know”-periaate: jos olio A tarvitsee toiminnassan oliota B, siihen on päästävä jotenkin käsiksi, eli A:lla on oltava ”näkyvyys” (visibility) olioon B Assosiaatiot kuvaavat yleensä tilannetta, jossa näkyvyys on pysyväisluontoista, siis koko ajan olemassa Muissa tapauksissa käytetään riippuvuusnuolia, esim. olio B välitetään parametrina olion A operaatiolle olio B on väliaikainen, A:n metodi luo olion, käyttää sitä ja tuhoaa sen lopuksi Täysin staattisessa tilanteessa, esimerkiksi globaali objekti, jota kaikki käyttävät, yhteys jätetään usein kokonaan pois 7.10.2003/ijh

Kaavioiden laatiminen: Ohjeiden soveltamisesta Ehdottomia sääntöjä ei ole. Toteutusvaiheessa näistä peukalosäännöistä voidaan tehokkuussyistä joutua tinkimään. Periytymiseen liittyviin sääntöihin palataan OTM-kurssilla. 7.10.2003/ijh

Puuttuvia kenttiä (ei kirjassa) 7.10.2003/ijh

Periyttäminen (ei kirjassa, lähinnä kuva 6.10) 7.10.2003/ijh

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

Muut notaatiot: Chenin notaatio (kuva 6.11) 7.10.2003/ijh

Muut notaatiot: Martinin kohdekaaviot (kuva 6.12) 7.10.2003/ijh

Muut notaatiot: OMT (ei kirjassa) 7.10.2003/ijh

Muut notaatiot: Booch (ei kirjassa) 7.10.2003/ijh