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



Samankaltaiset tiedostot
Luokkakaavion laatiminen

Ohjelmistotekniikan menetelmät, luokkamallin laatiminen

Ohjelmistotekniikan menetelmät, luokkamallin laatiminen

Ohjelmistotekniikan menetelmät Luokkamallit ohjelmiston mallintamisessa Harri Laine 1

Johdatus sovellussuunnitteluun, s 2001, osa 4b Helsingin yliopisto / TKTL Harri Laine / Inkeri Verkamo 1. Luokkakaavion tarkoitus

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

Luokkakohtaiset eli stattiset metodit ja attribuutit

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

UML -mallinnus LUOKKAKAAVIO EERO NOUSIAINEN

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

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

UML - unified modeling language

Johdatus sovellussuunnitteluun, s2000, osa5 Helsingin yliopisto;/tktl. Harri Laine 1. Luokkakaavion tarkoitus. Luokkakaavion tarkoitus

Tietokantojen perusteet k2004helsingin yliopisto/tktl Tietokantojen perusteet, s 2007 ER-mallin peruskäsitteet.

Ohjelmistojen mallintaminen Luokkakaaviot Harri Laine 1

Mikä yhteyssuhde on?

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

UML Luokkakaavio 14:41

Mitä on periytyminen?

Luokka- ja oliokaaviot

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

UML ja luokkien väliset suhteet

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

Periytyminen (inheritance)

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

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

YHTEYSSUHDE (assosiation)

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

Olio-ohjelmointi Javalla

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

Ohjelmistotekniikan menetelmät, luokkamallin laatiminen

Olioperustaisuus (object oriented)

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

Ohjelmistotekniikan menetelmät

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

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

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

Muutamia peruskäsitteitä

Ohjelmistotekniikan menetelmät

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

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

2. Olio-ohjelmoinnin perusteita 2.1

Kertaus: yleistys-erikoistus ja perintä

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

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

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

Ohjelmistotekniikan menetelmät, UML

Ohjelmistojen mallintaminen. Luento 7,

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

Javan perusteita. Janne Käki

2. Olio-ohjelmoinnin perusteita 2.1

Ohjelmistojen mallintaminen luokkamallin laatiminen

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

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

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

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

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

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

9. Periytyminen Javassa 9.1

Ohjelmistojen mallintaminen. Luento 4,

Ohjelmistojen mallintaminen Unified Modeling Language (UML)

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

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

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

Java kahdessa tunnissa. Jyry Suvilehto

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

HELIA 1 (14) Outi Virkki Käyttöliittymät ja ohjlmiston suunnittelu

Nimi: Henkilötunnus: {id} {+id}

Olio-ohjelmointi: Luokkien toteuttaminen. Jukka Juslin

POLKU LUOKKAKAAVIOISTA TAULUJEN TOTEUTUKSEEN

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

Ohjelmistojen mallintaminen Olioiden yhteistyö Harri Laine 1

Ohjelmistojen mallintaminen, kertausta

Ohjelmistojen mallintaminen kertausta Harri Laine 1

Ohjelmistojen mallintaminen luokkamallin laatiminen

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

3. Käsiteanalyysi ja käsitekaavio

Antti-Jussi Lakanen Ohjelmointi 1, C# / kevät 2011

Ohjelmistojen mallintaminen, mallintaminen ja UML

1. Tarkastellaan seuraavaa kaaviota

UML- mallinnus: Tilakaavio

Yhteistoimintakaavio (Esimerkki)

1 Tehtävän kuvaus ja analysointi

9. Periytyminen Javassa 9.1

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

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

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

KOHDELUOKAN MÄÄRITTELY

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

UML:n yleiskatsaus. UML:n osat:

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

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Ohjelmistotekniikan menetelmät, koe

1. Olio-ohjelmointi 1.1

19. Unified Modeling Language (UML)

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

Rajapinta (interface)

12. Monimuotoisuus 12.1

Transkriptio:

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 ja järjestelmän rakenne olioiden tietosisältö palvelut, joita oliot kykenevät suorittamaan sekä olioiden ja luokkien väliset yhteydet 6. Luokkakaaviot 1 tiedon ja sen käsittelyyn liittyvien palveluiden muodostama kokonaisuus olion tietoihin pääsee käsiksi vain palvelujen kautta ( hyvä tapa ) kapselointi (encapsulation) tiedon piilotus kuuluu johonkin luokkaan (class) oliolla on identiteetti (identity) tila (state) attribuuttien arvo tiettynä ajanhetkenä käyttäytyminen (behaviour) käyttäytyminen mallinnetaan palveluina (operation) 6. Luokkakaaviot 2 Olion kuvaaminen Luokka (Class) matin: numero: int =123432 omistaja:string = Mainio Matti saldo: double = 123,45 joskus olion nimi voi puuttua (:) oliot ovat viestiyhteydessä toteuttaakseen järjestelmän toiminnallisuuden; palvelupyyntö jokainen oli on jonkin luokan ilmentymä (instance) luokka kuvaa tai määrittelee samanlaisten olioiden yhteiset ominaispiirteet luokka on siis kuvaus olion tyypistä Oikeiden luokkien löytäminen on oliopohjaisen analyysin (OOA) onnistumisen avaintekijä! Katsele ympärillesi. Mitä luokkia voisit nimetä? 6. Luokkakaaviot 3 6. Luokkakaaviot 4

Luokka ja oliot Luokan kuvaaminen numero: int omistaja: String saldo: double nosto() pano() - numero: integer - Omistaja: String -Saldo: doupble näkyvyys (+, - #) voi puuttua attribuutin tai palvelun edestä (yleensä vasta suunnitteluvaiheessa otetaan kantaa myös tyypit puuttuvat yleensä analyysivaiheessa matin: numero: int =123432 omistaja:string = Mainio Matti saldo: double = 123,45 maijan: numero: int =345543 omistaja:string = Metso Maija saldo: double = 54567,80 mikon: numero: int =654321 omistaja:string = Linna Mikko saldo: double = -789,76 + tili() + annasaldo : float + otto(mk: float) + pano(mk: float) 6. Luokkakaaviot 5 6. Luokkakaaviot 6 Luokan kuvaaminen staattinen kuvaus: kuvaa pysyvää rakennetta määrittää perustan muille kaavioille voidaan toteuttaa suoraan olio-ohjelmointikielellä luokka kuvataan antamalla nimi ominaisuudet (attribuutit) osaamiset (palvelut, metodit) ominaisuuksien arvo määrittää olion tilan voi olla viittaus toiseen olioon (--> yhteys toiseen olioon) palvelut (palvelurajapinta, ulospäin näkyvä) 6. Luokkakaaviot 7 Luokkakuvaus olioohjelmassa public class { int numero; string[] omistaja; double saldo; public tili ( ) { } public void pano ( ) { } public void otto( ) { } } matin = new ( ); // ilmentymä maijan = new ( ); // toinen ilmentymä 6. Luokkakaaviot 8

Erilaisia luokkia Luokkakuvaus: TILI, HENKILÖTUNNUS Liiketoimintaluokka asiakas sopimus lasku velka sijoitus hinta-arvio Teknisiä luokkia (käyttöliittymäluokkia) anturi näyttö i/o-kortti moottori painonappi numero omistaja saldo tili () annasaldo() otto () pano () Henkilotunnus - tarkistumerkkit[31] -paivamaara - jarjestysnumero - tarkmerkki + tostring(): String + isok(): Boolean + getbirdhdate(): Date +getsex(): int 6. Luokkakaaviot 9 6. Luokkakaaviot 10 Analyysivaiheen luokkien löytyminen Analysoitavat tuotokset käyttötapauskaaviot ja tekstikuvaukset vaatimusluettelo liiketoiminnan yleinen kuvaus (arkkitehtuurikuvaus) Luokkia ovat kohdemaailman tärkeäksi koetut asiat, esineet, ihmiset, tapahtumat liiketoiminnan todellisia käsitteitä Hyvä analyysivaiheen luokka nimi kuvaa sisältöä abstraktio, joka mallintaa kohdejärjestelmää kokonaisuutena yhtenäinen kokonaisuus, mutta heikko kytkentä Analyysivaiheen luokkien löytyminen substantiivi/verbi analyysi substantiivit voivat olla luokkia tai luokkien ominaisuuksia (attribuutteja) verbit kuvaavat luokkien vastuita (palveluita) fyysiset objektit (lentokone, ihmiset, hotelli, ) paperit (lasku, tilaus, ) käyttöliittymät (kortinlukija, näyttö, ) 6. Luokkakaaviot 11 6. Luokkakaaviot 12

Harjoitus - luokkakaavio Oppilashallintosovellus Opettajan pitää pystyä lisäämään opiskelijoiden suorituksia Opintosihteeri ylläpitää oppilasrekisteriä Opintosihteeri ylläpitää myös kurssiluetteloa Opintosihteeri ja opiskelija voivat tulostaa opinto-otteita Opintosihteeri tulostaa tutkintotodistuksia Harjoitus - luokkakaavio luokat opiskelija opintojakso opintorekisteriote, ote tutkintotodistus, todistus opintosuoritus, suoritus 6. Luokkakaaviot 13 6. Luokkakaaviot 14 Luokkien väliset yhteydet - assosiaatio assosiaatio (association) merkitsee kahden luokan olioiden välillä olevaa linkkiä (esim. Asiakas omistaa tilin) Luokkien väliset yhteydet - assosiaatio yhteys voi olla myös kahden saman luokan ilmentymän välillä: Tyontekija esimies Asiakas 0..1 numero omistaja saldo 0..* omistaa 1 nimi osoite puhelin alainen 0..* johtaa 6. Luokkakaaviot 15 6. Luokkakaaviot 16

Luokkien väliset yhteydet kooste (aggregate) Kokonaisuuden ja siihen kuuluvan osan välinen yhteys kooste yhteyden erikoistapaus, kuvaa pysyvää yhteyttä Luokkien väliset yhteydet kompositio (composition) koostetta merkittävämpi rakenne mallintamisen kannalta osa on olemassaoloriippuva kokonaisuudesta: kokonaisuuden hävittäminen hävittää myös osat! Joukkue 0..* Pelaaja Laiva 1..* Hytti 6. Luokkakaaviot 17 6. Luokkakaaviot 18 Opiskelijahallinnon luokkakaavio Luokkamallin laatiminen Opiskelija nimi osoite puhelin email saa OpintoOte saa tekee Suoritus pvm arvosana Todistus liittyy Opettaja nimi osoite puhelin email opetusalue arvioi opettaa 1. Kartoita luokkaehdokkaita laadi luettelo keskeisistä kohteista ja ilmiöistä (toimintaan osallistujat, toiminnan kohteet, toimintaan liittyvät tapahtumat, materiaalit, tuotteet, välituotteet, ) käytä pohjana tekstikuvausta kohdealueesta (substantiivit; verbit voivat ilmaista yhteyttä) karsi jo alustavasti epäoleelliset 2. Karsi ehdokkaita Liittyykö ilmiöön tietosisältöä, joka on välttämätöntä järjestelmän kannalta? Onko asia tärkeä? koostuu Opintojakso 6. Luokkakaaviot 19 6. Luokkakaaviot 20

Luokkamallin laatiminen 3. Tunnista olioiden väliset yhteydet verbit, genetiivit, kytkentää ilmaisevat ilmaukset mieti onko oleellinen 4. Täydennä luokkakuvauksia määrittelemällä attribuutit voi löytyä tekstikuvauksista edellyttää usein lisäselvityksiä (haastatteluja) 5. Määrittele osallistumisrajoitteet 6. ** Liitä luokkiin palvelut alustavassa mallissa ei vielä tarvitse määritellä 7. ** Varmista palvelujen ja tietosisällön yhteensopivuus Esimerkki: Elokuvateatteri Elokuvalipun varaaminen: Lippu oikeuttaa paikkaan tietyssä näytöksessä. Näytöksellä tarkoitetaan elokuvan esittämistä tietyssä teatterissa tiettyyn aikaan. Samaa elokuvaa voidaan esittää useissa teattereissa useina aikoina. Teatterin ohjelmakartta määrittelee, mitä elokuvia missäkin näytöksessä esitetään. Asiakas voi samassa varauksessa varata useita lippuja. Luokkaehdokkaat? 6. Luokkakaaviot 21 6. Luokkakaaviot 22 Luokkaehdokkaat Alustava luokkamalli täydennä! Ehdokas Analyysi ohjelmakartta teatteri elokuvalippu sama kuin lippu, karsitaan lippu oikeus paikkaan, mahdollinen, tietosisältö? elokuva paikka istuin teatterissa, varauksen kohde, tunnus näytös näytös varauksen kohde,keskeinen, aika elokuva teatteri asiakas näytöksen sisältö, nimi, yms isompi paikka varauksen tekijä, oleellinen asiakas varaus ohjelmakartta ohjelmatarjonta, kytkennät ajan ja paikan ja elokuvan välillä varaus tuote 6. Luokkakaaviot 23 lippu paikka 6. Luokkakaaviot 24

Yleistys jos kahden luokan olioilla on yhteisiä piirteitä, voidaan nämä koota yhdeksi luokaksi, jota kutsutaan yliluokaksi (superclass) erikoiset piirteet sisällytetään tämän luokan aliluokille (subclass) yleistys (generalization) tai periytyminen, perintä (inheritance) kanden luokan yhteisten ominaisuuksien yleistys yhteiseksi yläluokaksi erikoistaminen luokkien erikoisten ominaisuuksien erottelu aliluokille Yleistys - esimerkki OPISKELIJA -nimi -sotu -osoite -koulutusohjelma OPETTAJA -nimi -sotu -osoite -virkasuhde -opetusalue 6. Luokkakaaviot 25 6. Luokkakaaviot 26 Yleistys - esimerkki HENKILÖ -nimi -sotu -osoite Periytyminen ja polymorfismi Yleistäminen (generalization) yleisen ja erikoistetun elementin välinen suhde erikoistettua elementtiä voi käyttää kaikkialla, missä odotetaan käytettävän yleistä elementtiä vahvin yhteysmuoto (vahva kytkentä) yliluokka, perusluokka OPISKELIJA -koulutusohjelma OPETTAJA -virkasuhde -opetusalue yleistäminen (generalization) Nelio Kuvio Ympyra Kolmio erikoistaminen (specialization) 6. Luokkakaaviot 27 aliluokka, perillinen 6. Luokkakaaviot 28

Luokan perintä Abstraktit operaatiot ja luokat aliluokat voivat periä yliluokkansa piirteitä (features) ominaisuuksia (attributes) operaatioita (operations) suhteita (relationships) rajoitteita (constraints) aliluokalla voi olla lisäksi omia piirteitä sekä ne voivat ylikirjoittaa (overwrite) yliluokkansa operaatioita ylikirjoittaminen Nelio Kuvio nelioala ala = leveys * korkeus Ympyra ala = säde 2 * π abstrakti luokka konkreettiset luokat Nelio Kuvio nelioala Ympyra abstraktit operaatiot konkreettinen operaatio 6. Luokkakaaviot 29 6. Luokkakaaviot 30 Polymorfismi = monta muotoa edellä abstraktit operaatioilla (, ) on kaksi erilaista toteutusta ovat polymorfisia konkreettisen luokan on aina määriteltävä ja toteutettava abstraktilta luokalta perimänsä ja sen määrittelemät operaatiot Pankki 1 * numero saldo nosto laskekorko talletus Käyttötili Luottotili Talletustili nosto laskekorko otto nosto laskekorko nosto laskekorko 6. Luokkakaaviot 31