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

Koko: px
Aloita esitys sivulta:

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

Transkriptio

1 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 Luokkakaavion laatimisesta se vaativampi osa esimerkki: kirjanpitoa kirjastolainauksista Mallintaminen / Auvo Häkkinen / K Mallintaminen / Auvo Häkkinen / K Luokkamalli Luokkamalli tarkoittaa suunnitteluvaiheen mallintamista ratkaisuvaihtoehtojen kokeilua ja arviointia ilman työlästä toteutusvaihetta Mallinnettaessa luokitellaan kohdealueen ilmiöitä olioluokkiin ja näiden pohjalta laaditaan luokkakuvauksia käyttötapaukset mallinnetaan olioiden yhteistoimintana sanasto apuna olioiden tunnistamisessa Kuvataan käyttötapaukset toteuttavat luokat ja oliot olioiden väliset kytkökset, koostumiset ja yleistykset olioiden välinen vuorovaikutus LUOKKAKAAVIO Korkeampi abstraktiotaso kuin ohjelmakoodilla yleisrakenteen hahmottelu ilman "häiritseviä" yksityiskohtia Käytetään toteutusvaiheessa ohjelmoinnin tukena Mallintaminen / Auvo Häkkinen / K Mallintaminen / Auvo Häkkinen / K Luokka ja olio Luokka = malli, jonka mukaan voi luoda olioita kuvaa ominaisuudet (attribuutit) ja toiminnot (operaatiot) Olio = luokan suoritusaikainen ilmentymä, instanssi olio luotava ennen kuin voi käyttää mallin mukaisia operaatioita esim. Javan Scanner-luokka tarjoaa lukemisessa tarvittavia operaatioita: nextint(), nextline(), ennen kuin operaatioita voi käyttää, on luotava olio import java.util.scanner; Scanner näppis = new Scanner(System.in); String rivi = näppis.nextline(); Tietosisältö kapseloidaan (piilotetaan) luokan sisälle private tietosisältöön ei pääse suoraan käsiksi ulkopuolelta Luokan julkinen rajapinta tarjoaa hallitun ja kontrolloidun pääsyn tietosisältöön public luokassa operaatiot, joiden kautta tietosisältöön voi vaikuttaa public class SaldoLaskuri { private double arvo; public double otto(double määrä); public double pano(double määrä); public double saldo(); SaldoLaskuri laskuri = new SaldoLaskuri(); double m = laskuri.pano(10); Mallintaminen / Auvo Häkkinen / K Mallintaminen / Auvo Häkkinen / K Luokkakaavio (class diagram) Käytännössä tärkein ja käytetyin kaaviotyyppi UML:n luokkaelementissä kolme lohkoa valinnaiset osat mukana riippuen halutusta abstraktiotasosta Luokan nimi Attribuutit Operaatiot Aina mukana kaikissa kaavioissa Valinnaisia osia Luokkakaavio kuvaa ohjelmiston staattista rakennetta luokat ohjelmiston tietosisältöä luokkien attribuutit luokkien ulkoisia rajapintoja olioiden tarjoamat operaatiot luokkien (olioiden) välisiä suhteita kytkökset koosteet yleistykset UML:n oliokaaviolla (object diagram) kuvataan jotain tiettyä suoritusaikaista tilannetta ohjelmiston / järjestelmän koostuminen olioista on siis luokkakaavion ajonaikainen ilmentymä Oliokaaviossa : LuokanTunnus olion nimi voi näkyä elementissä tai se voi puuttua operaatiot eivät mukana oliokaaviossa tarkoittaa oliota ( : ja luokan tunnus) attribuuttien arvot tietyllä hetkellä Mallintaminen / Auvo Häkkinen / K Mallintaminen / Auvo Häkkinen / K

2 Luokkakaavio Oliokaavio KohdeHallinto-oliolla on sovelluksen suoritusaikana, tietyllä hetkellä, kytkökset kahteen Auto-olioon kommentti / huomautus Mallintaminen / Auvo Häkkinen / K Mallintaminen / Auvo Häkkinen / K Attribuuttilohko ATTRIBUUTIT OPERAATIOT sekä niiden määreet Attribuuttilohko ei pakollinen osa UML:n luokkaelementtiä Minimissään näkyy attribuuttien nimet kaikkia attribuutteja ei tarvitse esittää Lisäksi siinä voi olla attribuutin tietotyyppi vrt. Javan int, double, char, String, jne. näkyvyysmääre Luokan nimi vrt. Javan private, public, protected lisämääreet Attribuutit vrt. Javan static, final oletusarvo Operaatiot moniarvoisuus esim. taulukko, kokoelma Syntaksi [näkyvyys] nimi [: tyyppi ] [ = oletusarvo][{muut määreet] Merkintä [ ] tarkoittaa syntaksikaavioissa, että osa voi puuttua Mallintaminen / Auvo Häkkinen / K Mallintaminen / Auvo Häkkinen / K Attribuutin tyyppi Tyyppi erotetaan attribuutin nimestä kaksoispisteellä pituus : int Tyyppi voi olla perustietotyyppi int, double, char jne. Oliotyyppiset attribuutit esitetään attribuuttiosassa vain mikäli ne ovat perustietotyypin kaltaisia esim. String, Date, Color, Point, jne. Muussa tapauksessa oliotyyppistä attribuuttia ei esitetä luokan sisällä, vaan merkitään kytkös (assosiaatio) ko. luokkien välille kytköksen voi nimetä kuvaavalla (attribuutin) nimellä, roolinimellä esim. hoitaja Näkyvyysmääreet Rajaavat attribuutin tai operaation näkyvyyttä Merkitään attribuutin tai operaation nimen eteen - + # ~ Jos määre puuttuu, näkyvyys on määrittelemätön (oletusarvoa ei ole) näkyy vain luokan omille operaatioille vrt. Javan private näkyy kaikkialle, myös luokan ulkopuolelle vrt. Javan public näkyy luokan omille operaatioille, ja aliluokkien operaatioille vrt. Javan protected näkyy saman pakkauksen (package) operaatioille vrt. Javassa tyhjä (oletus) piirrosohjelmat saattavat "koristella" omalla tavallaan Mallintaminen / Auvo Häkkinen / K Mallintaminen / Auvo Häkkinen / K Muut määreet Attribuutin nimi alleviivattuna määrittelee luokka-attribuutiksi attribuutti ei ole oliokohtainen, vaan yhteinen ko. luokan kaikille olioille vrt. Javan static Muut lisämääreet kaarisulkeissa { frozen vakioarvoinen attribuutti, arvoa ei muuteta vrt. Javan final Operaatiolohko Operaatiolohko ei pakollinen osa UML:n luokkaelementtiä Jos mukana, lohkossa näkyy minimissään operaation nimi kaikkia operaatioita ei tarvitse esittää Lisäksi siinä voi olla operaation näkyvyys kuten attribuuttien näkyvyys parametrit kuten attribuuttien määrittely lisäksi voi olla tiedon välityksen suunta: in, out, inout paluuarvon tyyppi muut määreet Syntaksi Luokan nimi Attribuutit Operaatiot Javassa mahdollista vain in, ei merkitä [näkyvyys] nimi ([parametrit])[: paluuarvo][{muut määreet] nimi : tyyppi [= oletusarvo] Mallintaminen / Auvo Häkkinen / K Mallintaminen / Auvo Häkkinen / K

3 Esimerkkejä static protected package private public social security number OLIOIDEN VÄLISET SUHTEET kytkös Itsestäänselvyyksiä turha merkitä esim. setterit ja getterit, konstruktori Mallintaminen / Auvo Häkkinen / K Mallintaminen / Auvo Häkkinen / K Kytkös (association) Kahden luokan välille voi määritellä rakenteellisen kytköksen (assosiaation), jossa luokan sisällä on kiinteä viite toiseen luokkaan Kuvaa luokkien ilmentymien eli olioiden välisiä suhteita olioilla rakenteellinen, pysyväluonteinen kytkös kuvaa suoritusaikaista tilannetta kytköksen ansiosta olio voi tuntea toisen olion ilmaisee, että olio voi käyttää toisen olion operaatioita Olio voi tuntea toisen olion hetkellisesti myös pelkän metodille annetun parametrin kautta Merkitään viivana tai nuolena luokkien välille korkealla abstraktiotasolla kytkökset merkitty yleensä suuntaamattomina Ohjelmakoodissa kytkös ilmenee s.e. luokalla olioarvoinen attribuutti tai luokan oliosta jokin epäsuora viittaus toiseen olioon, esim. operaatio saa viitteen metodikutsun parametrina public class { private int numero; private String laji; private float paino; private Henkilo hoitaja; Kytkökselle voi merkitä nimen (roolin) - tarvittaessa molempiin päihin Eläimen hoitaja on n hoidettava on Lisäksi voi merkitä lukusuunnan < tai > kytkösviivana nuoli hoidettava <hoitaa hoitaja Mallintaminen / Auvo Häkkinen / K Mallintaminen / Auvo Häkkinen / K Kytkösrajoitteet (multiplicity) Kertoo kuinka monta luokan ilmentymää voi olla kytkettynä toisen luokan ilmentymään (kertautuminen, moniarvoisuus) esim. Yhteen eläimeen liittyy täsmälleen yksi hoitaja. Jokaisella hoitajalla voi olla monta hoidettavaa eläintä Merkinnöissä 0 = 0 tai 1 ilmentymää * hoidettava[] 1 = täsmälleen yksi ilmentymä * = 0 tai useampia ilmentymiä (merk. joskus n) Jos ei merkitä, jää määrittelemättömäksi (ei oletusarvoa) 1 hoitaja Yleensä olioarvoinen attribuutti vain kytköksen toisessa päässä Jos halutaan toteuttaa navigoitavuus myös toiseen suuntaan, tarvitaan moniarvoinen attribuutti esim. taulukko public class { private int numero; private String laji; private float paino; private hoitaja; public ( h) { hoitaja = h; navigoitavuus Eläimestä ön public class { private String nimi; private [] hoidettava; public otahoitoon( e){ hoidettava[i] = e; tee kytkös esim. -oliota luotaessa (konstruktorissa), tai navigoitavuus stä useaan Eläimeen tee kytkös esim. erillisellä metodilla, tai Mallintaminen / Auvo Häkkinen / K Mallintaminen / Auvo Häkkinen / K Kytkös samaan luokkaan melko tavallinen tilanne, ei ongelmaa Esim. Ihmisellä on 0 tai useampi lapsi Ihmisellä on 0..2 vanhempaa Ihminen vanhemmat[] 0..2 lapset[] 0..n class Ihminen { private String nimi; private Ihminen[] lapset; private Ihminen[] vanhemmat; this.lapset = new Ihminen[n]; this.vanhemmat = new Ihminen[2]; this.lapset[4] = this.vanhemmat[1] = Ihminen mä = new Ihminen("Averell"); Kytköksille voi asettaa myös muita kuin lukumäärällisiä rajoitteita Rajoite merkitään aaltosulkujen sisään { ikä>65 Eläkeläinen Jos attribuutin arvon voi laskea muiden attribuuttien arvosta, voi attribuutin merkitä johdokseksi Johdos merkitään nimen edessä olevalla kauttaviivalla Tuote myyntihinta : double; nettohinta : double; /kate=myyntihinta-nettohinta; Mallintaminen / Auvo Häkkinen / K Mallintaminen / Auvo Häkkinen / K

4 Kytköstyypit OLIOIDEN VÄLISET SUHTEET kooste Kun kytköksen toista/toisia osapuolia voi pitää osana toista osapuolta, käytetään kytköksestä termiä kooste tai aito kooste eli kompositio "on osa", "kuuluu" Kytköstyyppi merkitään salmiakkikuviona sen luokan puoleiseen päähän, johon osa kuuluu Kytköstyypit korostavat toteutustapaa ero tulee siitä, voiko toinen osapuoli olla olemassa vaikka toista osapuolta ei olisikaan olemassa olemassaoloriippuvuus vai ei Mallintaminen / Auvo Häkkinen / K Mallintaminen / Auvo Häkkinen / K Kooste (aggregation) Ei olemassaoloriippuvuutta osa ja kokonaisuudet voivat olla olemassa toisistaan riippumatta Kumpikin osapuoli voidaan luoda ja hävittää täysin erillään toisistaan tarvitaan erillinen operaatio, jolla kytkös saadaan tehdyksi parametrinvälityksen kautta Avoin salmiakkisymboli Luokka * Oppilas Aito kooste, kompositio (composition) Olemassaoloriippuvuus osien olemassaolo täysin sidoksissa kokonaisuuden olemassaoloon osien luonti samalla kun olio itse luodaan kun kokonaisuus hävitetään, hävitetään myös sen osat Vahva kytkös osa voi sisältyä vain yhteen samantyyppisen kompositioon osa ei voi vaihtaa kompositiotaan, vaan on aina osa samaa kokonaisuutta Kokonaisuus vastuussa osien elinkaaresta luominen, tuhoaminen Täytetty salmiakkisymboli Rakennus * Huone Mallintaminen aggregation: / Auvo kokonaisuus, Häkkinen / K2013 kokonais-, yhdistelmä, keräymä 4-27 Mallintaminen composition: / Auvo koostumus, Häkkinen / K2013 S2010 rakenne, kokoonpano, lados, asetelma 4-28 Joukkue koostuu 5:stä Pelaajasta Ihmisellä on 2 Jalkaa, 2 Kättä ja Pää" Pää Joukkue Pelaaja Ihminen Käsi Joukkue-kokonaisuudessa attribuutit, joiden avulla päästään käsiksi kuhunkin Pelaaja-osaan ts. Joukkue-olio voi käyttää Pelaaja-olioiden operaatioita, esim. pelaaja.getnimi() Pelaajan tiedot voi erikseen kytkeä joukkueeseen erillisellä metodilla, esim. joukkue.palkkaa(pelaaja) Pelaajan voi vaihtaa toiseksi suoritusaikana (pura vanha kytkös, tee uusi) Joukkue säilyy vaikka pelaajat vaihtuisivat Pelaaja voi olla olemassa, vaikka ei olisikaan kytköstä Joukkueeseen Joukkue koostuu aina viidestä Pelaajasta Jalka Ihminen-kokonaisuudessa attribuutit, joiden avulla päästään käsiksi koosteen osiin (Pää, Käsi, Jalka) ts. Ihminen-olio voi käyttää niihin liittyviä operaatioita, esim. käsi.vilkuta() Ruumiinjäsen-oliot luodaan silloin, kun Ihminen luodaan konstruktorissa Kun Ihminen-olio lakkaa olemasta, katoavat myös ruumiinjäsen-oliot Mallintaminen / Auvo Häkkinen / K Mallintaminen / Auvo Häkkinen / K Yleistys (generalization) OLIOIDEN VÄLISET SUHTEET yleistys Luokkien välinen yleistys-erikoistus suhde yleiskäsite = yliluokka (base class) esim. Ihminen erikoistus = aliluokka (subclass) esim. Suomalainen Syntyy luokkahierarkia Tutumpi oliokäsite periytyminen (inheritance) Javassa avainsana extends Jokainen aliluokan olio on myös yliluokan olio Suomalainen on Ihminen Päinvastainen ei välttämättä päde Kaikki Ihmiset eivät ole Suomalaisia Englanniksi: periytyminen on is a suhde A Finn is a Human" Yliluokka Aliluokka Ihminen Suomalainen Kolmionuoli, kolmio yleiskäsitteeseen päin Mallintaminen / Auvo Häkkinen / K Mallintaminen / Auvo Häkkinen / K

5 Koska aliluokan olio on myös yliluokan olio, se perii kaikki yliluokan attribuutit Suomalaisella on kaikki Ihmisen ominaisuudet Aliluokka voi määritellä attribuutteja, joita yliluokan olioilla ei ole Suomalaisella on sisua Eli jos yliluokalla on attribuutteja tai operaatiota, niin aliluokalla on automaattisesti samat attribuutit ja operaatiot Aliluokassa voi määritellä uudelleen samannimisiä attribuutteja ja operaatioita kuin yliluokassa käytetään niitä yliluokassa esitettyjen sijasta ylikirjoittaminen (override) Aliluokka voi nähdä suoraan yliluokan attribuutit Java: määre protected Jos yliluokassa määre private, käytettävä gettereitä ja settereitä Johtaja on erikoislaatuinen Työntekijä periytyminen samat (perus)ominaisuudet ja (perus)operaatiot kuin muillakin työntekijöillä Johtajalla on Työntekijöitä alaisina luokassa lisäksi siis kytkökset alaisiinsa voi sisältää myös lisäominaisuuksia ja -operaatioita ylikirjoittaminen: peritty ominaisuus tai operaatio voi olla räätälöity public class Johtaja extends Työntekijä { ; private Työntekijä [] alainen; Työntekijä Johtaja n alainen 0..1 Mallintaminen / Auvo Häkkinen / K Mallintaminen / Auvo Häkkinen / K "Autoilla on omistaja. Omistaja voi olla joko tai Yritys." Omistaja on yleiskäsite on Omistajan erikoistus Yritys on Omistajan erikoistus public class Auto { public class Yritys extends Omistaja { ; private Omistaja omja; public class extends Omistaja { ; public class Omistaja { private Auto [] auto; Yritys Auto * 1 Omistaja Moniperintä (multiple inheritance) Luokka on useamman kuin yhden yliluokan välitön aliluokka perii ominaisuuksia ja operaatioita useammalta kuin yhdeltä luokalta Tyypillisesti vaikea toteuttaa (oikein); vältä ongelma: samannimiset attribuutit / operaatiot C++ tukee moniperintää, Java ei suoraan Javassa käytettävä rajapintoja (interface) Työntekijä palkka Partneri Osakkeenomistaja osakelkm Mallintaminen / Auvo Häkkinen / K Mallintaminen / Auvo Häkkinen / K Abstrakti luokka (abstract class) Abstrakti luokka = vähintään yksi abstrakti metodi Abstrakti metodi = ainoastaan otsikko, ei toteutusta kuvataan vain rajapinta Abstraktista luokasta ei voi luoda olioita abstrakti luokka voi olla vain yliluokkana public abstract class Ajoneuvo { private double ajokilometrit; ei pakollinen <<abstract>> Ajoneuvo ajokilometrit aja(ajokm:double) asetaajokm(ajokm:double) tulostaajokm() public abstract void aja(double ajokm); // ei toteutusta public void asetaajokm(double ajokm){ ajokilometrit = ajokm; public void tulostaajokm() { System.out.println( Ajettu = + ajokilometrit); Mallintaminen / Auvo Häkkinen / K kursivoituna public class Auto extends Ajoneuvo { public void aja(double ajokm) { // toteuta abstrakti metodi System.out.println( Onko ajokorttia (k/e)? ); char vast = Oma.lueChar(); if (vast!= e ) { this.asetaajokm(ajokm); this.tulostaajokm(); else { System.out.println("Hankipa ajokortti ensin!"); public class Polkupyora extends Ajoneuvo { public void aja(double ajokm) { // toteuta abstrakti metodi this.asetaajokm(ajokm); this.tulostaajokm(); public class Ajotesti { public static void main(string[] args) { Polkupyora fillari = new Polkupyora(); Auto biili = new Auto(); Ajoneuvo neuvo = new Ajoneuvo(); // VIRHE! fillari.aja(45); biili.aja(120); Mallintaminen / Auvo Häkkinen / K Rajapinta (interface) Tapa esitellä mitä operaatioita luokkaan kuuluu määrittelemättä mitään toimintaa esitellään vain operaatioiden otsakkeet, mutta yhdenkään toimintaa ei kuvata kaikki operaatiot abstrakteja kuvauksessa voi olla vain vakioarvoisia staattisia attribuutteja (public final static) Javassa rajapinta ei ole luokka vaan joukko esittelyjä (prototyyppejä) luokkien operaatioista, joiden on tarkoitus olla kuvatun prototyypin mukaisia siitä ei voi luoda suoraan olioita otsakkeessa määre interface (määreen class sijasta) Käytetään kuten periytymistä operaatioiden nimet peritään sellaisenaan, mutta toteutus (realization) aina ohjelmoitava erikseen Javassa avainsana on nyt implements (ei extends) luokka voi toteuttaa useita rajapintoja (implements api1, api2, api3) Luokka Appelsiini periytyy luokasta Hedelmä ja toteuttaa rajapinnan Pallo Luokka Jalkapallo toteuttaa rajapinnan Pallo yleistys (eli periytyminen) extends Hedelmä Appelsiini <<interface>> Pallo Jalkapallo Rajapinnan toteutus merkitään pisteviivallisena yleistyksenä kaikki abstrakteja (kursivointi) toteutus implements Mallintaminen / Auvo Häkkinen / K Mallintaminen / Auvo Häkkinen / K

6 public class Hedelmä { public String tostring() { return Olen hedelmä ; public interface Pallo { public abstract void ; // vain otsake = mikä toiminto // miten toiminto tehdään toteutetaan luokissa Appelsiini ja Jalkapallo public class Appelsiini extends Hedelmä implements Pallo { public void { System.out.println( Appelsiini pyörii vaappuen ); public class Jalkapallo implements Pallo { public void { System.out.println( Jalkapallo pyörii hyvin ); public String tostring() { return Olen jalkapallo ; Mallintaminen / Auvo Häkkinen / K Koska rajapinta ei oikeasti ole luokka, se kuvataan usein ympyrä- ja kuppisymbolein (jolloin operaationimet eivät näy) ympyrä = toteuttaa rajapinnan kuppi = käyttää rajapinnan tarjoamaa operaatiota Appelsiini Jalkapallo Jalkapallo Pallo Pallo rajapinnan nimi Jonglööri JokuLuokka Mallintaminen / Auvo Häkkinen / K UML 2 UML 1 LUOKKAKAAVION LAATIMISESTA Mallintaminen / Auvo Häkkinen / K Mallintaminen / Auvo Häkkinen / K Luokkakaavion laatiminen Kartoita ehdokkaita luokiksi Kokonaisuudesta osiin (jäsentävä tapa) etsi ensin karkea (käyttötapauksista riippumaton) yleiskuva luokista ja niiden kytköksistä, lisää sitten yksityiskohtia etsi kerralla koko kohdealuetta kuvaavaa luokkamallia voi olla hankalaa, jos kohdealue on laaja Osista kokonaisuuteen (inkrementaalinen tapa) yksityiskohdista yleiskuvaan jaa ensin kokonaisuus osiin ja tee osakohtaisia malleja luokista/olioista osa voisi olla esimerkiksi käyttötapaus yhdistä ne sitten kokonaismalliksi sopii paremmin suurten ohjelmistojen kehittämiseen Kartoita ehdokkaita luokiksi. Karsi ehdokkaita. Tunnista olioiden väliset kytkökset. Täsmennä luokkakuvauksia määrittelemällä attribuutit. Määrittele kytköksiin liittyvät rajoitteet. Määrittele keskeiset operaatiot. iteratiivisuus Ota lähtökohdaksi järjestelmän sovellussanasto, jonka saat koottua sanallisesta kuvauksesta, haastatteluista käyttötapausten tilannekuvauksista Alleviivaa ehdokkaita luokiksi ja kerää niistä luetteloa Luokkina (ja olioina) voivat tulla kyseeseen toimintaan osallistujat toiminnan kohteet toimintaan liittyvät tapahtumat materiaalit tuotteet ja välituotteet toiminnalle edellytyksiä luovat asiat Ehdokkaita luokiksi: subjektit ja objektit, substantiivit esim. Auto, Asiakas, Pankkitili, jne. joku tekee jotain jollekin kuka? kenelle/mille? Mallintaminen / Auvo Häkkinen / K Mallintaminen / Auvo Häkkinen / K Karsi ehdokkaita Alustava karsinta järjestelmän rajaaminen karsi synonyymit Käy läpi löydetyt ehdokkaat ja arvioi, voisiko olla sopiva luokaksi liittyykö luokan ilmentymiin tietosisältöä, joka välttämätöntä järjestelmän kannalta yleensä oltava useita attribuutteja, muuten ei luokaksi tarvitaanko tietoa ilmentymien olemassaolosta onko asia riittävän tärkeä kohdealueen / mallinnettavan ilmiön kannalta Jatka karsintaa, iteroi "ei se nyt ekalla kerralla kuitenkaan mennyt oikein" Tunnista kytkökset Kytköksiä (ilmentymien välillä) voi etsiä vapaamuotoisesta kuvauksesta ehdokkaita kytköksiksi: verbit ja genetiivit esim. hoitaa, käyttää, omistaa, jne. muut ilmaukset, jotka kuvaavat kytkentää Kytkösten suhteen tulisi miettiä onko kytkös oleellinen tarkasteltavan ilmiön kannalta onko se rakenteellinen (olemassoleva asiaintila): kooste vai aito kooste tarvitaanko kytkös molempiin suuntiin Yksi asia (data) pitäisi esittää vain kertaalleen johdettavissa olevaa tietoa ei tarvitse (ei pidä) tallettaa erikseen kytköksen kautta pääsee muualla olevaan tietoon karsi tai merkitse joku tekee jotain jollekin joku omistaa jonkun joku on osa jotain joku koostuu jostakin Älä piilota kytköksiä attribuuteiksi, piirrä kaavioon! Huom. olio voi tuntea toisen olion hetkellisesti myös parametrinvälityksen kautta Mallintaminen / Auvo Häkkinen / K Mallintaminen / Auvo Häkkinen / K

7 Määrittele attribuutit ja operaatiot Seuraava vaihe on täsmentää luokkien tietosisältö (attribuutit) sekä niihin liittyvät operaatiot Attribuutteja saattaa löytyä sanallisesta tilannekuvauksesta yleensä löytäminen edellyttää lisäselvityksiä kohdealueesta, esimerkiksi toiminnan osapuolten haastatteluja Määrittele kytkösrajoitteet Kytkösrajoitteet ilmaisevat rakenteellisia sääntöjä Säännöt eivät välttämättä tule esiin sanallisessa kuvauksessa, vaan edellyttää tarkempaa kohdealueen analysointia Varmista luokkamallin kattavuus vertaamalla käyttötapauksiin Attribuuttien kohdalla pitää myös selvittää mihin niitä tarvitaan Lisää luokkien tärkeimmät julkiset operaatiot käyttötapauksen tilannekuvauksessa (numeroidut) askeleet potentiaalisia ehdokkaita operaatioiksi voiko attribuuttiin vaikuttaa luokan ulkopuolelta Älä piilota yhteyksiä attribuuteiksi Älä änge liikaa yhteen kaavioon. Tee useampia kaavioita. Kaikkea ei tarvitse esittää kerralla. Keskity olennaiseen kullakin abstraktiotasolla. Sopiva määrä abouttiarallaa 7 ± 2 elementtiä per kaavio. Tärkeimmät elementit vasempaan yläreunaan. Mallintaminen / Auvo Häkkinen / K Mallintaminen / Auvo Häkkinen / K Välikysymyksiä Millaisista elementeistä luokkakaavio muodostuu? Miten luokkakaavio ja oliokaavio eroavat toisistaan? Miten kooste ja aito kooste eroavat toisistaan? Miten kytkös toteutetaan käytännössä? Mitä tarkoitetaan oliokäsitteellä yleistys? Hyödyt? Mitä tarkoitetaan tiedon kapseloinnilla? Millaisia määreitä attribuutteihin ja operaatioihin voi liittää? Mikä on abstrakti luokka? Miten rajapinta ja luokka eroavat toisistaan? Mallintaminen / Auvo Häkkinen / K

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä 582104 Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä 1 Luokkamallin lisäpiirteitä Erilaiset yhteystyypit kooste kompositio Muita luokkien välisiä suhteita riippuvuudet periytyminen eli luokkahierarkia

Lisätiedot

Ohjelmistotekniikan menetelmät, luokkamallin laatiminen

Ohjelmistotekniikan menetelmät, luokkamallin laatiminen 582101 - Ohjelmistotekniikan menetelmät, luokkamallin laatiminen 1 Lähestymistapoja Kokonaisvaltainen lähestymistapa (top-down) etsitään kerralla koko kohdealuetta kuvaavaa mallia hankalaa, jos kohdealue

Lisätiedot

Ohjelmistotekniikan menetelmät, luokkamallin laatiminen

Ohjelmistotekniikan menetelmät, luokkamallin laatiminen 582101 - Ohjelmistotekniikan menetelmät, luokkamallin laatiminen 1 Lähestymistapoja Kokonaisvaltainen lähestymistapa (top-down) etsitään kerralla koko kohdealuetta kuvaavaa mallia hankalaa, jos kohdealue

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

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

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

Metodien tekeminen Javalla

Metodien tekeminen Javalla 1 Metodien tekeminen Javalla Mikä metodi on? Metodin syntaksi Metodi ja sen kutsuminen Parametreista Merkkijonot ja metodi Taulukot ja metodi 1 Mikä metodi on? Metodilla toteutetaan luokkaan toiminnallisuutta.

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

Ohjelmistotekniikan menetelmät

Ohjelmistotekniikan menetelmät Ohjelmistotekniikan menetelmät Luokat ja oliot Luokka- ja oliokaavio 7.11.2008 Harri Laine 1 Luokat ja oliot käyttötapaus Käyttötapaus käyttää järjestelmän palveluja käyttää Käytettävät palvelut saadaan

Lisätiedot

Ohjelmistotekniikan menetelmät

Ohjelmistotekniikan menetelmät Ohjelmistotekniikan menetelmät Luokat ja oliot Luokka- ja oliokaavio 7.11.2008 Harri Laine 1 Luokat ja oliot käyttötapaus Käyttötapaus käyttää järjestelmän palveluja käyttää Käytettävät palvelut saadaan

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

Luokkakaavion laatiminen

Luokkakaavion laatiminen Luokkakaavion laatiminen Kartoita luokkaehdokkaita Karsi ehdokkaita Tunnista olioiden väliset yhteydet Täsmennä luokkakuvauksia määrittelemällä attribuutit Määrittele yhteyksiin liittyvät osallistumisrajoitteet.

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

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä 582104 Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä 1 Luokkamallin lisäpiirteitä Erilaiset yhteystyypit kooste kompositio Muita luokkien välisiä suhteita riippuvuudet periytyminen eli luokkahierarkia

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

Ohjelmistotekniikan menetelmät, luokkamallin laatiminen

Ohjelmistotekniikan menetelmät, luokkamallin laatiminen 582101 - Ohjelmistotekniikan menetelmät, luokkamallin laatiminen 1 Perussanasto Luettelo organisaation toiminnan kannalta keskeisistä käsitteistä ja niiden määritelmistä Voidaan esittää Koko organisaatiolle

Lisätiedot

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

812341A Olio-ohjelmointi Peruskäsitteet jatkoa 812341A Olio-ohjelmointi 2106 Peruskäsitteet jatkoa Luokkakohtaiset piirteet n Yhteisiä kaikille saman luokan olioille n Liittyvät luokkaan, eivät yksittäiseen olioon n Kaikki ko. luokan oliot voivat käyttää

Lisätiedot

Ohjelmistotekniikan menetelmät Luokkamallit ohjelmiston mallintamisessa Harri Laine 1

Ohjelmistotekniikan menetelmät Luokkamallit ohjelmiston mallintamisessa Harri Laine 1 Ohjelmistotekniikan menetelmät Luokkamallit ohjelmiston mallintamisessa 14.11.2008 Harri Laine 1 Oliot ohjelmiston mallinnuksessa käyttötapaus käyttää Käyttämämme oliokeskeinen perusmalli ohjelmistojen

Lisätiedot

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

on ohjelmoijan itse tekemä tietotyyppi, joka kuvaa käsitettä LUOKAN MÄÄRITTELY Luokka, mitä se sisältää Luokan määrittely Olion ominaisuudet eli attribuutit Olion metodit Olion muodostimet ja luonti Olion tuhoutuminen Metodin kutsu luokan ulkopuolelta Olion kopioiminen

Lisätiedot

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

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen Metodit Metodien määrittely Metodin parametrit ja paluuarvo Metodien suorittaminen eli kutsuminen Metodien kuormittaminen 1 Mikä on metodi? Metodi on luokan sisällä oleva yhteenkuuluvien toimintojen kokonaisuus

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

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. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki Sisällys JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta Abstrakti luokka ja metodi Rajapintamäärittely (interface) Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto 13.10.2000 E.

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

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

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

Ohjelmistojen mallintaminen Luokkakaaviot Harri Laine 1

Ohjelmistojen mallintaminen Luokkakaaviot Harri Laine 1 Ohjelmistojen mallintaminen Luokkakaaviot 5.12.2008 Harri Laine 1 Olioiden palvelut Palvelun kuvauksessa annettavat tiedot näkyvyys (kuten attribuuttien kohdalla) nimi (ainoa välttämätön osa) parametrit

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

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

9. Periytyminen Javassa 9.1

9. Periytyminen Javassa 9.1 9. Periytyminen Javassa 9.1 Sisällys Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Metodien korvaaminen ja super-attribuutti. Attribuutin peittäminen periytymisen kautta. Rakentajat

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

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

Rajapinnasta ei voida muodostaa olioita. Voidaan käyttää tunnuksen tyyppinä. Rajapinta on kuitenkin abstraktia luokkaa selvästi abstraktimpi tyyppi. 11. Rajapinnat 11.1 Sisällys Johdanto. Abstrakti luokka vai rajapinta? Rajapintojen hyötyjä. Kuinka rajapinnat määritellään ja otetaan käyttöön? Eläin, nisäkäs, kissa ja rajapinta. Moniperiytyminen rajapintojen

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

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

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

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

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat Rajapinnat Java-kieli ei tue luokkien moniperintää. Jokaisella luokalla voi olla vain yksi välitön yliluokka. Toisinaan olisi

Lisätiedot

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

Sisällys. JAVA-OHJELMOINTI Osa 6: Periytyminen ja näkyvyys. Luokkahierarkia. Periytyminen (inheritance) Sisällys JAVA-OHJELMOINTI Osa 6: Periytyminen ja näkyvyys Periytyminen (inheritance) Näkyvyys (visibility) Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto 13.10.2000 E. Hyvönen: Java Osa

Lisätiedot

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio Analyysi Tarkentaa ja jäsentää vaatimusmäärittelyä, vastaa kysymykseen MITÄ järjestelmän tulisi tehdä. Suoritetaan seuraavia tehtäviä:

Lisätiedot

Ohjelmistojen mallintaminen luokkamallin laatiminen

Ohjelmistojen mallintaminen luokkamallin laatiminen 582104 Ohjelmistojen mallintaminen luokkamallin laatiminen 1 Lähestymistapoja Kokonaisvaltainen lähestymistapa (top-down) etsitään kerralla koko kohdealuetta kuvaavaa mallia hankalaa, jos kohdealue on

Lisätiedot

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

Tietokantojen perusteet k2004helsingin yliopisto/tktl Tietokantojen perusteet, s 2007 ER-mallin peruskäsitteet. Tietosisällön kuvaaminen Toteutusvälineistä riippumaton tietosisällön kuvaus Entity-Relationship malliperhe Lähtökohta: Chenin malli vuodelta 1976 Useita muunnelmia, pieniä eroja peruskäsitteissä ja erityisesti

Lisätiedot

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

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä Sisällys 9. Periytyminen Javassa Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Metodien korvaaminen ja super-attribuutti. Attribuutin peittäminen periytymisen kautta. Rakentajat

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

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

Sisällys. 11. Rajapinnat. Johdanto. Johdanto Sisällys 11. ajapinnat. bstrakti luokka vai rajapinta? ajapintojen hyötyjä. Kuinka rajapinnat määritellään ja otetaan käyttöön? Eläin, nisäkäs, kissa ja rajapinta. Moniperiytyminen rajapintojen avulla.

Lisätiedot

Periytyminen (inheritance)

Periytyminen (inheritance) 1 Periytyminen (inheritance) Mitä periytyminen on? Yli- ja aliluokka Konstruktorit Get- ja set-metodi Muut metodit tostring Yksinkertainen pääohjelma 1 Mitä periytyminen on? Periytymisen avulla olemassa

Lisätiedot

UML ja luokkien väliset suhteet

UML ja luokkien väliset suhteet UML ja luokkien väliset suhteet -Luokan kuvaaminen UML-tekniikalla -Yhteyssuhde ja koostumussuhde 1 Luokan kuvaaminen UML-tekniikalla : Luokka - attribuutti1 : tietotyyppi # attribuutti2 : tietotyyppi

Lisätiedot

Ohjelmistojen mallintaminen luokkamallin laatiminen

Ohjelmistojen mallintaminen luokkamallin laatiminen 582104 Ohjelmistojen mallintaminen luokkamallin laatiminen 1 Oliot ja luokat Ohjelmistokehitys perustuu usein oletukseen: Minkä tahansa järjestelmän katsotaan voivan muodostua olioista, jotka yhteistyössä

Lisätiedot

9. Periytyminen Javassa 9.1

9. Periytyminen Javassa 9.1 9. Periytyminen Javassa 9.1 Sisällys Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Ilmentymämetodien korvaaminen. Luokkametodien peittäminen. Super-attribuutti. Override-annotaatio.

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

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio Analyysi Tarkentaa ja jäsentää vaatimusmäärittelyä, vastaa kysymykseen MITÄ järjestelmän tulisi tehdä. Suoritetaan seuraavia tehtäviä:

Lisätiedot

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

Sisällys. Mitä on periytyminen? Yksittäis- ja moniperiytyminen. Oliot ja perityt luokat. Periytymisen käyttö. 8.2 8. Periytyminen 8.1 Sisällys Mitä on periytyminen? Yksittäis- ja moniperiytyminen. Oliot ja perityt luokat. Periytymisen käyttö. 8.2 Mitä on periytyminen? Periytyminen (inheritance) tarkoittaa luokan piirteiden

Lisätiedot

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

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Pakkaukset ja määreet Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Pakkaukset ja määreet Pakkaukset ja määreet Toisiinsa liittyvät luokkatiedostot voidaan koota pakkauksiksi. Luo hierarkiaa ja järjestystä ohjelmistotuotteeseen.

Lisätiedot

Listarakenne (ArrayList-luokka)

Listarakenne (ArrayList-luokka) Listarakenne (ArrayList-luokka) Mikä on lista? Listan määrittely ArrayList-luokan metodeita Listan läpikäynti Listan läpikäynti indeksin avulla Listan läpikäynti iteraattorin avulla Listaan lisääminen

Lisätiedot

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

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4) 2. Lisää Java-ohjelmoinnin alkeita Muuttuja ja viittausmuuttuja Vakio ja literaalivakio Sijoituslause Syötteen lukeminen ja Scanner-luokka 1 Muuttuja ja viittausmuuttuja (1/4) Edellä mainittiin, että String-tietotyyppi

Lisätiedot

1 Tehtävän kuvaus ja analysointi

1 Tehtävän kuvaus ja analysointi Olio-ohjelmoinnin harjoitustyön dokumentti Jyri Lehtonen (72039) Taneli Tuovinen (67160) 1 Tehtävän kuvaus ja analysointi 1.1 Tehtävänanto Tee luokka, jolla mallinnetaan sarjaan kytkettyjä kondensaattoreita.

Lisätiedot

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

Johdatus sovellussuunnitteluun, s2000, osa4 Helsingin yliopisto;/tktl. Harri Laine 1. Luokka- ja oliokaaviot. Luokka- ja oliokaaviot 6..2000 Luokka- ja oliokaaviot Luokka- ja oliokaavioilla kuvataan ohjelmiston / järjestelmän koostuminen olioista, olioiden tietämys, niiden tarjoamat palvelut sekä olioiden väliset yhteydet Olio tiedon

Lisätiedot

Mitä on periytyminen?

Mitä on periytyminen? 8. Periytyminen 8.1 Sisällys Mitä on periytyminen? Yksittäis- ja moniperiytyminen. Oliot ja perityt luokat. Filosofinen ja käytännönläheinen näkökulma periytymiseen. Periytymisen soveltaminen. 8.2 Mitä

Lisätiedot

Olioperustaisuus (object oriented)

Olioperustaisuus (object oriented) DO NOT PRINT THIS DOCUMENT Olioperustainen ohjelmistokehitys Olioperustaisuus (object oriented) järjestelmä (system) muodostuu joukosta olioita (object), jotka yhteistyössä toimien tuottavat järjestelmän

Lisätiedot

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

Johdatus sovellussuunnitteluun, s99, osa2 Helsingin yliopisto;/tktl Harri Laine 1. Olioperustaisuus (object oriented) DO NOT PRINT THIS DOCUMENT Olioperustainen ohjelmistokehitys Olioperustaisuus (object oriented) järjestelmä (system) muodostuu joukosta olioita (object), jotka yhteistyössä toimien tuottavat järjestelmän

Lisätiedot

Tehtävä 1. Tehtävä 2. Arvosteluperusteet Koherentti selitys Koherentti esimerkki

Tehtävä 1. Tehtävä 2. Arvosteluperusteet Koherentti selitys Koherentti esimerkki Tehtävä 1 Koherentti selitys Koherentti esimerkki ½p ½p Tehtävä 2 Täysiin pisteisiin edellytetään pelaajien tulostamista esimerkin järjestyksessä. Jos ohjelmasi tulostaa pelaajat jossain muussa järjestyksessä,

Lisätiedot

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2 4. Attribuutit 4.1 Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2 Yleistä Luokan lohkossa, mutta metodien ulkopuolella esiteltyjä

Lisätiedot

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti: 1 (7) Tiedon lukeminen näppäimistöltä Scanner-luokan avulla Miten ohjelma saa käyttöönsä käyttäjän kirjoittamaa tekstiä? Järjestelmässä on olemassa ns. syöttöpuskuri näppäimistöä varten. Syöttöpuskuri

Lisätiedot

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

Johdatus sovellussuunnitteluun, s99, osa3 Helsingin yliopisto;/tktl Harri Laine 1. Olioiden väliset yhteydet. Olioiden väliset yhteydet DO NOT PRINT THIS DOCUMENT DO NOT PRINT THIS DOCUMENT Yhteyden nimi Nimen lukusuunta pankkitili 0..0 Omistaja->..3 asiakas

Lisätiedot

KOHDELUOKAN MÄÄRITTELY

KOHDELUOKAN MÄÄRITTELY KOHDELUOKAN MÄÄRITTELY Kohdeluokka, mitä se sisältää Luokan määrittely Olion ominaisuudet eli attribuutit Olion metodit Olion luonti Olion tuhoutuminen Metodin kutsu luokan ulkopuolelta Taulukon alkiona

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

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2 4. Attribuutit 4.1 Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2 Yleistä Luokan lohkossa, mutta metodien ulkopuolella esiteltyjä muuttujia ja vakioita. Esittely

Lisätiedot

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

Johdatus sovellussuunnitteluun, s99, osa3 Helsingin yliopisto;/tktl Harri Laine 1. Olioiden väliset yhteydet. Olioiden väliset yhteydet ..999 DO NOT PRINT THIS DOCUMENT DO NOT PRINT THIS DOCUMENT Yhteyden nimi Nimen lukusuunta pankkitili asiakas 0..0 Omistaja->..3

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

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

Johdatus sovellussuunnitteluun, s99, osa2 Helsingin yliopisto;/tktl Harri Laine 1. Olioperustainen ohjelmistokehitys DO NOT PRINT THIS DOCUMENT Olioperustainen ohjelmistokehitys Olioperustaisuus (object oriented) järjestelmä (system) muodostuu joukosta olioita (object), jotka yhteistyössä toimien tuottavat järjestelmän

Lisätiedot

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys Tällä kurssilla on tutustuttu ohjelmistojen mallintamiseen oliomenetelmiä ja UML:ää käyttäen Samaan aikaan järjestetyllä kurssilla on käsitelty

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

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

Johdatus sovellussuunnitteluun, s 2001, osa 4b Helsingin yliopisto / TKTL Harri Laine / Inkeri Verkamo 1. Luokkakaavion tarkoitus Luokkakaavion tarkoitus Järjestelmän tietosisällön kuvaaminen: tiedot ja niiden väliset kytkennät järjestelmän tiedot kuvaavat kohdealueiden ilmiöitä, joten luokkakaavion tulisi määritellä kohdealueen

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

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

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä Sisällys 9. Periytyminen Javassa Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Metodien korvaaminen ja super-attribuutti. Attribuutin peittäminen periytymisen kautta. Rakentajat

Lisätiedot

Ohjelmistojen mallintaminen. Luento 3, 9.11.

Ohjelmistojen mallintaminen. Luento 3, 9.11. Ohjelmistojen mallintaminen Luento 3, 9.11. Kertausta: Ohjelmistotuotantoprosessin vaiheet Vaatimusanalyysi- ja määrittely Mitä halutaan? Suunnittelu Miten tehdään? Toteutus Ohjelmointi Testaus Varmistetaan

Lisätiedot

Ohjelmistojen mallintaminen, sekvenssikaaviot

Ohjelmistojen mallintaminen, sekvenssikaaviot 582104 - Ohjelmistojen mallintaminen, sekvenssikaaviot 1 Vuorovaikutussuunnittelu Oliojärjestelmän toiminta perustuu olioiden vuorovaikutukseen ja yhteistyöhön Olioiden yhteistyö toteutuu operaatioiden

Lisätiedot

812341A Olio-ohjelmointi, IX Olioiden välisistä yhteyksistä

812341A Olio-ohjelmointi, IX Olioiden välisistä yhteyksistä 2016 IX Olioiden välisistä yhteyksistä Sisältö 1. Johdanto 2. Kytkentä 3. Koheesio 4. Näkyvyydestä 2 Johdanto n Ohjelmassa syntyy kytkentöjä olioiden välille Toivottuja ja epätoivottuja n Näkyvyys vaikuttaa

Lisätiedot

16. Javan omat luokat 16.1

16. Javan omat luokat 16.1 16. Javan omat luokat 16.1 Sisällys Johdanto. Object-luokka: tostring-, equals-, clone- ja getclass-metodit. Comparable-rajapinta: compareto-metodi. Vector- ja ArrayList-luokat. 16.2 Javan omat luokat

Lisätiedot

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

Johdatus sovellussuunnitteluun, s2001, osa 4a Helsingin yliopisto / TKTL Harri Laine / Inkeri Verkamo 1. Luokka- ja oliokaaviot Luokka- ja oliokaaviot Luokka- ja oliokaavioilla kuvataan ohjelmiston / järjestelmän koostuminen olioista, olioiden tietämys, niiden tarjoamat palvelut sekä olioiden väliset yhteydet Olio tiedon ja sen

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

19. Unified Modeling Language (UML)

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

Lisätiedot

4. Olio-ohjelmoinista lyhyesti 4.1

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

Lisätiedot

Ohjelmointi 2 / 2010 Välikoe / 26.3

Ohjelmointi 2 / 2010 Välikoe / 26.3 Ohjelmointi 2 / 2010 Välikoe / 26.3 Välikoe / 26.3 Vastaa neljään (4) tehtävään ja halutessa bonustehtäviin B1 ja/tai B2, (tuovat lisäpisteitä). Bonustehtävät saa tehdä vaikkei olisi tehnyt siihen tehtävään

Lisätiedot

public static void main (String [] args)

public static void main (String [] args) HAAGA-HELIA OHJELMOINTI 1(5) OHJELMALUOKKA Ohjelma-luokan käynnistää public static void main (String [] args) main-metodiin voi koodata 1. ohjelman logiikan tai 2. luoda ohjelma-olion ja kutsua metodia,

Lisätiedot

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Sisällys. 14. Poikkeukset. Johdanto. Johdanto Sisällys 14. Poikkeukset Johdanto. Tarkistettavat ja tarkistamattomat poikkeukset. Miten varautua poikkeukseen metodissa? Poikkeusten tunnistaminen ja sieppaaminen try-catchlauseella. Mitä tehdä siepatulla

Lisätiedot

Javan perusteita. Janne Käki

Javan perusteita. Janne Käki Javan perusteita Janne Käki 20.9.2006 Muutama perusasia Tietokone tekee juuri (ja vain) sen, mitä käsketään. Tietokone ymmärtää vain syntaksia (sanojen kirjoitusasua), ei semantiikkaa (sanojen merkitystä).

Lisätiedot

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma. 2. Taulukot 2.1 Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.2 Yleistä

Lisätiedot

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

Johdatus sovellussuunnitteluun, s2000, osa5 Helsingin yliopisto;/tktl. Harri Laine 1. Luokkakaavion tarkoitus. Luokkakaavion tarkoitus Luokkakaavion tarkoitus Järjestelmän tietosisällön kuvaaminen tiedot ja niiden väliset kytkennät järjestelmän tiedot kuvaavat kohdealueiden ilmiöitä, joten luokkakaavion tulisi määrittellä kohdealueen

Lisätiedot

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista.

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista. 1 Luokka Murtoluku uudelleen Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista. Sievennettäessä tarvitaan osoittajan ja nimittäjän suurin yhteinen tekijä (syt).

Lisätiedot

UML - unified modeling language

UML - unified modeling language UML - unified modeling language Lähtökohtana: Booch, Rumbaugh, Jacobsson Tavoitteena Unified Method - syntyykö? Kehittäjänä: Rational Inc. Standardointi: Object Management Group (OMG) - vaiheessa Lähteet:

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

812341A Olio-ohjelmointi, 2016. Olio-ohjelmoinnin peruskäsitteet ja Java-kieli

812341A Olio-ohjelmointi, 2016. Olio-ohjelmoinnin peruskäsitteet ja Java-kieli 812341A Olio-ohjelmointi, 2016 Olio-ohjelmoinnin peruskäsitteet ja Java-kieli Sisältö 1. Java-kieli 2. Luokka 3. Luokkakaaviot 4. Lisää Javaa Javalla 2 Java-kieli n Sun Microsystems tutkimusprojekti 1991

Lisätiedot

14. Poikkeukset 14.1

14. Poikkeukset 14.1 14. Poikkeukset 14.1 Sisällys Johdanto. Tarkistettavat ja tarkistamattomat poikkeukset. Miten varautua poikkeukseen metodissa? Poikkeusten tunnistaminen ja sieppaaminen try-catchlauseella. Mitä tehdä siepatulla

Lisätiedot

Java-kielen perusteita

Java-kielen perusteita Java-kielen perusteita valintalauseet 1 Johdantoa kontrollirakenteisiin Tähän saakka ohjelmissa on ollut vain peräkkäisyyttä eli lauseet on suoritettu peräkkäin yksi kerrallaan Tarvitsemme myös valintaa

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

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

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet String-merkkijonoluokka 1 Ohjelmointikielten merkkijonot Merkkijonot ja niiden käsittely on välttämätöntä ohjelmoinnissa Valitettavasti ohjelmointikielten tekijät eivät tätä ole ottaneet

Lisätiedot

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa(); Sisällys 7. Oliot ja viitteet Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen. Viitteiden käsittelyä: sijoitus, vertailu ja varautuminen null-arvoon. Viite metodin paluuarvona.. 7.1 7.2 Olio

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

14. Poikkeukset 14.1

14. Poikkeukset 14.1 14. Poikkeukset 14.1 Sisällys Johdanto. Tarkistettavat ja tarkistamattomat poikkeukset. Poikkeusten tunnistaminen ja sieppaaminen try-catchlauseella. Mitä tehdä siepatulla poikkeuksella? Poikkeusten heittäminen.

Lisätiedot

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Sisällys. 14. Poikkeukset. Johdanto. Johdanto Sisällys 14. Poikkeukset Johdanto. Tarkistettavat ja tarkistamattomat poikkeukset. Poikkeusten tunnistaminen ja sieppaaminen try-catchlauseella. Mitä tehdä siepatulla poikkeuksella? Poikkeusten heittäminen.

Lisätiedot