310 likes | 637 Views
Johdanto. 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ö
E N D
Johdanto • 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
Olio (Object) • 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
matinTili:Tili numero: int =123432 omistaja:String =’Mainio Matti’ saldo: double = 123,45 Olion kuvaaminen • joskus olion nimi voi puuttua (:Tili) • oliot ovat viestiyhteydessä toteuttaakseen järjestelmän toiminnallisuuden; palvelupyyntö 6. Luokkakaaviot
Luokka (Class) • 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
Tili numero: int omistaja: String saldo: double nosto() pano() matinTili:Tili numero: int =123432 omistaja:String =’Mainio Matti’ saldo: double = 123,45 mikonTili:Tili numero: int =654321 omistaja:String =’Linna Mikko’ saldo: double = -789,76 maijanTili:Tili numero: int =345543 omistaja:String =’Metso Maija’ saldo: double = 54567,80 Luokka ja oliot 6. Luokkakaaviot
Tili - numero: integer - Omistaja: String - Saldo: doupble + tili() + annaSaldo : float + otto(mk: float) + pano(mk: float) Luokan kuvaaminen • näkyvyys (+, - #) voi puuttua attribuutin tai palvelun edestä (yleensä vasta suunnitteluvaiheessa otetaan kantaa • myös tyypit puuttuvat yleensä analyysivaiheessa 6. Luokkakaaviot
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
Luokkakuvaus olio-ohjelmassa public class Tili { int numero; string[] omistaja; double saldo; public tili (…) { …} public void pano (…) { …} public void otto( …) { …} …} Tili matinTili = new Tili( …); // ilmentymä Tili maijanTili = new Tili( …); // toinen ilmentymä 6. Luokkakaaviot
Liiketoimintaluokka asiakas sopimus lasku velka sijoitus hinta-arvio Teknisiä luokkia (käyttöliittymäluokkia) anturi näyttö i/o-kortti moottori painonappi Erilaisia luokkia 6. Luokkakaaviot
Tili numero omistaja saldo tili () annaSaldo() otto () pano () Henkilotunnus - tarkistumerkkit[31] - paivamaara - jarjestysNumero - tarkMerkki + toString(): String + isOK(): Boolean + getBirdhDate(): Date +getSex(): int Luokkakuvaus: TILI, HENKILÖTUNNUS 6. Luokkakaaviot
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ä 6. Luokkakaaviot
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
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 6. Luokkakaaviot
Harjoitus - luokkakaavio • luokat • opiskelija • opintojakso • opintorekisteriote, ote • tutkintotodistus, todistus • opintosuoritus, suoritus 6. Luokkakaaviot
Luokkien väliset yhteydet - assosiaatio • assosiaatio (association) • merkitsee kahden luokan olioiden välillä olevaa linkkiä (esim. Asiakas omistaa tilin) 6. Luokkakaaviot
Luokkien väliset yhteydet - assosiaatio • yhteys voi olla myös kahden saman luokan ilmentymän välillä: 6. Luokkakaaviot
Luokkien väliset yhteydet – kooste (aggregate) • Kokonaisuuden ja siihen kuuluvan osan • välinen yhteys • kooste • yhteyden erikoistapaus, kuvaa pysyvää • yhteyttä 6. Luokkakaaviot
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! 6. Luokkakaaviot
Opiskelijahallinnon luokkakaavio 6. Luokkakaaviot
Luokkamallin laatiminen • 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 • Karsi ehdokkaita • Liittyykö ilmiöön tietosisältöä, joka on välttämätöntä järjestelmän kannalta? • Onko asia tärkeä? 6. Luokkakaaviot
Luokkamallin laatiminen • Tunnista olioiden väliset yhteydet • verbit, genetiivit, kytkentää ilmaisevat ilmaukset • mieti onko oleellinen • Täydennä luokkakuvauksia määrittelemällä attribuutit • voi löytyä tekstikuvauksista • edellyttää usein lisäselvityksiä (haastatteluja) • Määrittele osallistumisrajoitteet • ** Liitä luokkiin palvelut • alustavassa mallissa ei vielä tarvitse määritellä • ** Varmista palvelujen ja tietosisällön yhteensopivuus 6. Luokkakaaviot
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
Luokkaehdokkaat 6. Luokkakaaviot
paikka Alustava luokkamalli – täydennä! ohjelmakartta teatteri elokuva näytös asiakas varaus lippu 6. Luokkakaaviot
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 6. Luokkakaaviot
OPISKELIJA • nimi • sotu • osoite • koulutusohjelma • OPETTAJA • nimi • sotu • osoite • virkasuhde • opetusalue Yleistys - esimerkki 6. Luokkakaaviot
OPISKELIJA • koulutusohjelma • OPETTAJA • virkasuhde • opetusalue Yleistys - esimerkki • HENKILÖ • nimi • sotu • osoite 6. Luokkakaaviot
Kuvio Nelio Ympyra Kolmio 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 erikoistaminen (specialization) yleistäminen (generalization) aliluokka, perillinen 6. Luokkakaaviot
Luokan perintä • 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 ala = säde2 * π ala = leveys * korkeus 6. Luokkakaaviot
Abstraktit operaatiot ja luokat abstrakti luokka abstraktit operaatiot konkreettinen operaatio konkreettiset luokat 6. Luokkakaaviot
Polymorfismi = ”monta muotoa” • edellä abstraktit operaatioilla (piirra, laskeAla) 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 6. Luokkakaaviot