1 / 31

Johdanto

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ö

akasma
Télécharger la présentation

Johdanto

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

  2. 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

  3. 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

  4. 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

  5. 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

  6. 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

  7. 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

  8. 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

  9. 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

  10. 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

  11. 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

  12. 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

  13. 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

  14. Harjoitus - luokkakaavio • luokat • opiskelija • opintojakso • opintorekisteriote, ote • tutkintotodistus, todistus • opintosuoritus, suoritus 6. Luokkakaaviot

  15. Luokkien väliset yhteydet - assosiaatio • assosiaatio (association) • merkitsee kahden luokan olioiden välillä olevaa linkkiä (esim. Asiakas omistaa tilin) 6. Luokkakaaviot

  16. Luokkien väliset yhteydet - assosiaatio • yhteys voi olla myös kahden saman luokan ilmentymän välillä: 6. Luokkakaaviot

  17. Luokkien väliset yhteydet – kooste (aggregate) • Kokonaisuuden ja siihen kuuluvan osan • välinen yhteys • kooste • yhteyden erikoistapaus, kuvaa pysyvää • yhteyttä 6. Luokkakaaviot

  18. 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

  19. Opiskelijahallinnon luokkakaavio 6. Luokkakaaviot

  20. 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

  21. 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

  22. 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

  23. Luokkaehdokkaat 6. Luokkakaaviot

  24. paikka Alustava luokkamalli – täydennä! ohjelmakartta teatteri elokuva näytös asiakas varaus lippu 6. Luokkakaaviot

  25. 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

  26. OPISKELIJA • nimi • sotu • osoite • koulutusohjelma • OPETTAJA • nimi • sotu • osoite • virkasuhde • opetusalue Yleistys - esimerkki 6. Luokkakaaviot

  27. OPISKELIJA • koulutusohjelma • OPETTAJA • virkasuhde • opetusalue Yleistys - esimerkki • HENKILÖ • nimi • sotu • osoite 6. Luokkakaaviot

  28. 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

  29. 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

  30. Abstraktit operaatiot ja luokat abstrakti luokka abstraktit operaatiot konkreettinen operaatio konkreettiset luokat 6. Luokkakaaviot

  31. 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

More Related