Olioperustaisuus ohjelmistotuotannossa

Samankaltaiset tiedostot
Ohjelmiston suunnittelu. Olioperustaiset menetelmät

Ohjelmistotekniikan menetelmät, luokkamallin laatiminen

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

Ohjelmistotekniikan menetelmät, luokkamallin laatiminen

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

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

Luokkakaavion laatiminen

Ohjelmistojen mallintaminen Tietovuokaaviot Harri Laine 1

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

Ohjelmistotekniikan menetelmät Luokkamallit ohjelmiston mallintamisessa Harri Laine 1

Ohjelmistotekniikan menetelmät, UML

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

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

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

Ohjelmistojen mallintaminen, mallintaminen ja UML

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

Ohjelmistojen suunnittelu

Ohjelmistojen mallintaminen Luokkakaaviot Harri Laine 1

Ohjelmistojen mallintaminen olioiden elinkaaret - tilakaavio Harri Laine 1

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

Mitä on periytyminen?

Ohjelmistojen mallintaminen Unified Modeling Language (UML)

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

812341A Olio-ohjelmointi, I Johdanto

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

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. II Johdanto olio-ohjelmointiin

Ohjelmistotuotanto, s

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

Ohjelmistojen mallintaminen, kesä 2010

Perusarkkitehtuurin ja vuorovaikutuksen mallintamisen perusteita.

Ohjelmistotekniikan menetelmät, kesä 2008

812336A C++ -kielen perusteet,

2. Olio-ohjelmoinnin perusteita 2.1

UML-kielen formalisointi Object-Z:lla

UML- mallinnus: Tilakaavio

Ohjelmistojen mallintaminen, kesä 2009

Ohjelmistojen mallintaminen kertausta Harri Laine 1

Kertaus: yleistys-erikoistus ja perintä

Lähestymistavat - toiminnallinen

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

Ohjelmiston toteutussuunnitelma

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

3. Käsiteanalyysi ja käsitekaavio

Ohjelmistotekniikan menetelmät, kevät 2008

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

käyttötapaukset mod. testaus

Ohjelmistojen mallintaminen

TIEDONHALLINTA - SYKSY Luento 7. Pasi Ranne /10/17 Helsinki Metropolia University of Applied Sciences

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

UML - unified modeling language

Muutamia peruskäsitteitä

Joskus yleistäminen voi tapahtua monen ominaisuuden pohjalta. Myös tällöin voi tulla moniperintätilanteita.

Luokka- ja oliokaaviot

Ohjelmistojen mallintaminen Olioiden yhteistyö Harri Laine 1

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

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

HELIA 1 (8) Outi Virkki Tietokantasuunnittelu

Paikkatiedon mallinnus Dokumentoinnin ymmärtäminen. Lassi Lehto

TOIMINNALLINEN MÄÄRITTELY MS

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

2. Olio-ohjelmoinnin perusteita 2.1

Ohjelmistojen mallintaminen, mallintaminen ja UML

Ohjelmistojen mallintaminen, Johdatus ohjelmistotuotantoon

815338A Ohjelmointikielten periaatteet

Hyvin määritelty on puoliksi tehty kuinka vältetään turha tekeminen jo alussa

5. Järjestelmämallit. Mallinnus

Ohjelmistojen mallintaminen Ohjelmiston suunnittelu Model driven development Harri Laine 1

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Olioperustaisuus (object oriented)

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

Salasanan vaihto uuteen / How to change password

Luokkakohtaiset eli stattiset metodit ja attribuutit

Mallinnus. 5. Järjestelmämallit. Abstraktiot. Mallinnuksen etuja. Arkkitehtuurimalli. Yhteysmallit. Ohjelmistotuotanto, järjestelmämallit Kevät 2005

Uudelleenkäytön jako kahteen

Attribuuttipohjainen käyttövaltuuksien hallinta Case Dreamspark Premium

Ohjelmistojen mallintaminen, mallinnustekniikat käytännössä

Ohjelmistojen mallintaminen. Luento 11, 7.12.

UML -mallinnus TILAKAAVIO

UML:n yleiskatsaus. UML:n osat:

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

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op

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

Määrittelyvaihe. Projektinhallinta

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

TIEKE Verkottaja Service Tools for electronic data interchange utilizers. Heikki Laaksamo

1. Tarkastellaan seuraavaa kaaviota

TIE Ohjelmistojen suunnittelu. Luento 8..9: moniperintä

The OWL-S are not what they seem

Olioperustainen ohjelmistokehitys määrittelyn, suunnittelun ja toteutuksen väliset suhteet

Sisällys. Ratkaisumallien historia. Ratkaisumalli. Ratkaisumalli [2] Esimerkki: Composite [2] Esimerkki: Composite. Jaakko Vuolasto 25.1.

Olio-ohjelmointi Johdanto olio-ohjelmointiin

Tietojärjestelmän osat

13/20: Kierrätys kannattaa koodaamisessakin

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

Sokkelon sisältö säilötään linkitetyille listalle ja tekstitiedostoon. Työ tehdään itsenäisesti yhden hengen ryhmissä. Ideoita voi vaihtaa koodia ei.

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

Verifioinnin ja validoinnin ero. 7. Verifiointi ja validointi. Verifiointi- ja validointitekniikat. Verifiointi- ja validointitekniikat II

Ohjelmistojen mallintaminen, kertausta

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

Transkriptio:

Olioperustaisuus ohjelmistotuotannossa perinteinen top-down toiminnan tarkennus karkea kuvaus tarkennuksia ohjelmakoodi Olioperustaisuus ohjelmistotuotannossa Perinteisen osituksen ongelmia komponentit riippuvat ylemmällä tasolla tehdyistä ratkaisuista -> pieni muutos ylätasolla voi aiheuttaa suuria muutoksia alempana komponentit sidoksissa yksittäisen ohjelmiston toiminnallisiin vaatimuksiin -> eivät ole helposti uudelleenkäytettävissä Harri Laine 1

Olioperustaisuus ohjelmistotuotannossa Olioperustainen ohjelmistosuunnittelu: ohjelmien tehtävänä on simuloida sovellusalueen tai ongelman ilmiöitä tai tapahtumia - muodostaa tietokoneessa toimiva malli sovellusalueesta luokat ja oliot vastaavat sovellusongelman ilmiöitä ja tapahtumia luokat ja oliot ovat itsenäisiä, vaikka toimivatkin yhdessä toiminnan yksityiskohdat eivät näy ulospäin uudelleenkäyttö sovellusalueella helppoa muutokset paikallisia? muutoskohdat helppo löytää? Oliolähestymistapa Olio: ohjelmistokomponentti, jolla on omat tietorakenteet ja itsenäinen käyttäytyminen tietotyyppi -> muuttuja luokka -> olio tieto ja toiminta muodostavat pakkauksen Harri Laine 2

Oliolähestymistapa Oliolähestymistavassa tiedon ja sitä käsittelevän toiminnan katsotaan kuuluvan yhteen yhdeksi kokonaisuudeksi - luonnollinen yhteenkuuluvuus Olion reaalimaailman vastineita olisivat parhaiten erilaiset aktiiviset toimintaa suorittavat yksiköt (ihmiset, organisaatioyksiköt, koneet,...) mutta koostuuko todellisuus vain tällaisista? onko tiedon ja toiminnan paketointi asian tarpeetonta monimutkaistamista - ihminen on suhteellisen luonnollinen (?) olio, mutta onko toiminnallisuudella varustettu vastaanottovirkailija enää sitä? onko olemassa luonnollista tapaa organisoida toimintaa? Oliolähestymistapa Oliolähestymistavassa yhtenä merkittävänä hyötynä pidetään sitä, että samaa oliokäsitteistöä käytetään kaikissa ohjelmistoprosessin vaiheissa analyysissä suunnittelussa ohjelmoinnissa abstaraktiotason muuttumisesta johtuen kuitenkin sovellettuna eri kohdealueisiin analyysissä luonnollisia olioita (ihmisolio, asiakirjaolio, ) suunnittelussa teknisiä olioita (tiedosto-olio, näyttöolio,...) Harri Laine 3

Oliokäsitteitä Abstrahointi (abstraction) voidaan keskittyä ohjelmiston tärkeimpiin komponentteihin voidaan valita tarkastelutaso yksityiskohdat voidaan jättää täsmennettäviksi myöhemmin jopa ohjelma voidaan kirjoittaa myöhemmin täsmentyvänä Kapselointi (encapsulation) ulkoinen liittymä erotetaan toteutuksesta sisäiset yksityiskohdat piiloon ulkopuolisilta turvallisuus paranee, ylläpiton rajautuu, uudelleenkäyttöön paremmat mahdollisuudet Oliokäsitteitä Tiedon ja käyttäytymisen yhdistäminen olion tietosisältöä voi käsitellä vain olion omin operaatioin muut eivät pääse sotkemaan elinkaari hallinnassa luokka = abstrakti tietotyyppi Jakaminen (sharing) yhteinen muoto ja käyttäytyminen voidaan koota omaksi kokonaisuudekseen (luokaksi) joka on jaettavissa (perittävissä) keskitetysti uudelleenkäyttö, kuvauksen taloudellisuus Harri Laine 4

Oliokäsitteitä Identiteetti (identity) tietosisältö ei määrää oliota (kuten esim. relaatiomallissa) oliot on erotettavissa toisistaan vaikka ne olisivat identtisiä Luokittelu (classification) keskenään samankaltaiset oliot kuvataan samassa luokassa luokka on olioiden malli voidaan määritellä luokkien välisiä yhteyksiä, esimerkiksi hierarkkinen riippuvuus ihminen : mies / nainen Oliokäsitteitä Monimuotoisuus (polymorphism) nimeen kytketyn toiminnan erilaisuus eri (sukulais)luokissa olio suorittaa nimetyn operaation oman luokkansa mukaisesti (=> olio voi kuulua vain yhteen luokkarakenteen lehtiluokkaan, eli luokkaan, jolla ei ole aliluokkia) sihteeri.maksaa ={antaa rahaa tarjoilijalle} johtaja.maksaa = {pyytää, että sihteeri.maksaa} nimettyä operaatiota pyytävän olion ei tarvitse tietää mihin luokkaan operaation suorittaja todella kuuluu tarjoilija voi pyytää maksua, joko sihteeriltä tai johtajalta (ja saa aina rahat) myöhäinen sidonta, operaation toteutustapa ratkeaa vasta operaatiota pyydettäessä laskun maksutapa selviää vasta kun lasku esitetään Harri Laine 5

Oliokäsitteitä - perintä Perintä (inheritance) muotoa voidaan jakaa luokkien väliseen hierarkiaan perustuen aliluokat (subclass) perivät muodon yliluokiltaan (superclass) vastaanottovirkailijakin on ihmisen muotoinen aliluokat erikoistavat (specialise) yleisiä yliluokkia erikoistettu aliluokka voi lisätä perittyyn muotoon omia ominaisuuksia aliluokka voi uudelleenmääritellä (syrjäyttää) (override) perimänsä ominaisuuden ominaisuudet attribuutteja (tietorakenteita) tai operaatioita Oliokäsitteitä - perintä ikä ihminen mies parta yksittäisperintä nainen hameita Mauno ikä: 75 parta: ei ilmentymiä Tellervo ikä: 72 hameita:37 Harri Laine 6

Oliokäsitteitä - perintä Auto moottoritilavuus Asunto vuodepaikkoja Asuntoauto moniperintä HIP-111 moottoritilavuus:3500 vuodepaikkoja:4 Oliokäsitteitä - perintä perintä on merkittävin ero olioohjelmoinnin ja muiden ohjelmointiparadigmojen välillä. Perinnän päätavoitteet: käsittellinen mallintaminen (puhdashenkinen europpalainen koulukunta) yleistäminen/erikoistaminen pääpaino ohjelmistokehityksen määrittely- ja analyysivaiheessa koodin uudelleenkäyttö (pragmaattinen amerikkalainen koulukunta) attribuuttien ja operaatioiden periminen kasvattava ohjelmakehitys pääpaino suunnittelu- ja toteutusvaiheessa Harri Laine 7

Oliomallintaminen Mallinnettaessä järjestelmää olioilla erotetaan yleensä kaksi puolta: staattinen millaisia luokkia - tietosisältö, yhteydet, rakenteet mitä palveluja tarjolla dynaaminen miten oliot toimivat yhteistyössä millainen on olion elinkaari Eri menetelmät tarjoavat erilaisia malleja sille, mitä oliokeskeisen määrittelyvaiheen yhteydessä pitäisi tehdä ja miten. Oliomallintaminen - Booch Tunnista luokat ja oliot etsi ehdokasolioita ja luokkia analysoi olioiden käyttäytymistä tunnista käyttöskenaariot (miten tavalliseti toimitaan) määritä attriobuutit ja operaatiot kullekin luokalle Määritä luokkien semantiikka valitse skenaariot ja analysoi ne kiinnitä luokille vastuut jaa vastuuta ja tasapainota käyttäytyminen tutki olion rooleja ja vastuita määrittele operaatiot vastuiden hoitamiseksi selvitä olioiden yhteistyötä Harri Laine 8

Oliomallintaminen - Booch Tunnista luokkien ja olioiden väliset yhteydet millaisia riippuvuuksia tunnista olioiden asemat yhteyksissä varmenna skenaarioiden toteutuvuus Tarkenna laadi kaaviot laadi hierarkia ryhmittele Toteuta Oliomallintaminen - Coad & Yordon Tunnista luokat Laadi hierarkia Määrittele sisältyvyydet Jaa luokat osa- alueisiin (subject) Määrittele attribuutit Määrittele palvelut Harri Laine 9

Oliomallintaminen - Jacobsson Tunnista käyttäjäryhmät Määrittele vaatimukset Määrittele käyttäjäryhmät Määrittele käyttötapaukset Laadi karkea kuvaus luokista ja yhteyksistä Varmista käyttötapausten toteutuvuus Laadi analyysimalli Määrittele liittymät ja niiden oliot Määrittele luokkarakenne Määrittele operaatiot Jaa kokonaisuus osajärjestelmiin Varmista käyttötapausten toteutuminen Oliomallintaminen - Rumbaugh Laadi luokkamalli tunnista relevantit luokat määritä attribuutit määritä yhteydet määritä luokkahierarkia Laadi käyttäytymismalli luo käyttöskenaariot määritä skenaarioon liittyvä viestinvälitys luo viestiyhteyskaaviot kuvaa olioiden elinkaaret varmista skenaarioiden toteutuvuus Harri Laine 10

Oliomallintaminen - Rumbaugh Laadi toimintomalli määritä järjestelmän syötteet ja tulosteet kuvaa toiminta tietovirtoina määrittele toiminta tehtäväkuvauksin määritä toimintaan kohdistuvat vaatimukset ja rajoitteet Olioiden/luokkien tunnistaminen Oliolähestymistapa soveltuu parhaiten tilanteisiin, joissa simuloidaan toimintaa sovellusalueella: sovelluksen oliot vastaavat pitkälti aktiivisia toimijoita sovellusalueella olioiden palvelut vastaavat niitä tehtäviä, joita sovellualueen toimijat suorittavat jäsennettävä sovellusalue, tunnistettava toimijat ja heidän tehtävänsä, selvitettävä mitä tietoa toimijat tarvitsevat kyetäkseen toimimaan Harri Laine 11

Olioiden/luokkien tunnistaminen - tekstin analysointi grammatical parse Laadi ongelmaa kuvaava teksti Analysoi kuvausta, etsi lauseista luokkaehdokkaita, alleviivaa ne Luokkaehdokkaita ongelman kannalta olennaiset substantiivit Tunnista ja karsi synomyymit Valitse luokat Määritä attribuutit etsi tekstistä ilmiöitä, jotka kuvailevat valittuja olioita Määritä yhteydet etsi tekstistä kuvauksia yhteyksistä, rakenteita, joissa oliot ovat mukana Määritä palvelut etsi tekstistä tekemiseen ja toimintaan liittyviä ilmauksia, kohdista ne luokkiin Olioiden/luokkien tunnistaminen - tekstin analysointi grammatical parse Luokkina tulevat kyseeseen, esim. ulkoiset oliot tahot, jotka tuottavat tai saavat tietoa järjestelmältä toiset järjestelmät, ihmiset, laitteet tietosisältöön kuuluvat asiat raportit, näytöt, kirjeet, signaalit tapahtumat, joihin järjestelmän pitäisi reagoida roolit, jotka edustavat erilaisia tapoja toimia järjestelmän kanssa organisaatioyksiköt paikat, jotka luovat ympäristön ongelmalle rakenteet Toiminnot eivät ole luokkia Harri Laine 12

Esimerkki Tarkastellaan seuraavaa kuvausta: SafeHome software enables the homeowner to configure the security system when it is installed, monitors all sensors connected to the security system and interacts with the homeowner through a key pad and function keys contained in the SafeHome control panel. During installation, the SafeHome control panel is used to 'program' and configure the system. Each sensor is assigned a number and type, a master password is programmed for alarming and disalarming the system, and telephone numbers are input for dialing when a sensor event occurs. Esimerkki When a sensor event is recognized, the software invokes an audible alarm attached to the system. After a delay time that is specified by the homeowner during the system configuration activities, the software dials a telephone number of a monitoring service, provides information about the location, reporting the nature of the event that has been detected. The number will be redialed every 20 seconds until telephone connection is obtained. All interaction with safehome is managed by a user interaction subsystem that reads input provided through the key pad and function keys, and displays prompting messages and system status on the LDC display. Keyboard interaction takes the following form Harri Laine 13

Esimerkki - ehdokkaita homeowner sensors key pad function keys control panel installation type number telephone numbers audible alarm security system system status interaction subsystem master password sensor event ulkoinen olio / rooli ulkoinen olio ulkoinen olio ulkoinen olio ulkoinen olio tapahtuma attribuutti attribuutti asia ulkoinen olio organisaatioyksikkö / asia attribuutti organisaatioyksikkö / asia asia tapahtuma Esimerkki - ehdokkaita lisää nature of the event configuration activities telephone connection prompting messages LDC display monitoring service location attribuutti toiminta ulkoinen olio asia ulkoinen olio organisaatioyksikkö paikka Harri Laine 14

Ehdokasluokasta luokaksi - kriteerejä (Coad & Yourdon) kaikkien pitäisi toteutua (1) muistamistarve tiedon säilyttäminen luokan olioista on välttämätöntä järjestelmän toiminnan kannalta sisältää muistettavaa tietoa (2) palvelujen tarjonta luokan olioiden täytyy tarjota palveluita, luokan attribuuttien käsittelyyn (3) moniattribuuttisuus määritysvaiheessa yksiattribuuttiset oliot harvoin ovat oleellisia ongelman kannalta Ehdokasluokasta luokaksi - kriteerejä (Coad & Yourdon) (4) attribuutien jaettavuus luokaaan on liitettävissä joukko sen kaikille esiintymille soveltuvia attribuutteja (5) palvelujen jaettavuus luokkaan on liitettävissä joukko palveluita, jotka luokan kaikki esiintymät kykenevät suorittamaan (6) olennaisuus ongelman kannalta Harri Laine 15

Esim. ehdokkaiden analysointi homeowner ulkoinen olio / rooli -1, -2, +6 sensors ulkoinen olio + kaikki key pad ulkoinen olio -6 function keys ulkoinen olio -6 control panel ulkoinen olio +kaikki installation tapahtuma -1, -2 type attribuutti number attribuutti telephone numbers asia -3 audible alarm ulkoinen olio -1, + muut security system organisaatioyksikkö / asia + kaikki system status attribuutti interaction subsystem organisaatioyksikkö / asia -6 master password asia -3 sensor event tapahtuma + kaikki Esim. ehdokkaiden analysointi nature of the event attribuutti configuration activities toiminta telephone connection ulkoinen olio -1,-2,-3, prompting messages asia -1,-6 LDC display ulkoinen olio -6 monitoring service organisaatioyksikkö -1, -2 location paikka -1,-2 Harri Laine 16

Atribuutteja: sensor Esim. ehdokkaiden analysointi type number tuning data control panel function keys LDC display messages audible alarm alarm specs. Delay state Esim. ehdokkaiden analysointi lisää attribuutteja security system telephone numbers system status location delay time master password no of tries sensor event nature of event telephone numbers Harri Laine 17

Esim. ehdokkaiden analysointi Yhteydet security system contains sensor manages emits provides sensor event contol panel audible alarm Esim. ehdokkaiden analysointi Palvelut sensor turnon turnoff adjust control panel get Input show State show Message audible alarm Emit Alarm adjust delay Harri Laine 18

Esim. ehdokkaiden analysointi palvelut jatkuu security system Turn on Turn off Register location Adjust delay Identify Process event sensor event Set connection Oliot ja määrittely Mitä määrittelyvaiheessa on välttämättä kuvattava järjestelmän toiminnalliset vaatimukset tarvitaanko tähän olioita - EI auttavatko oliot - VÄHÄN olioita käytettäessä toiminta ja siihen liittyvät vastuut saadaan jaettua eri luokille => oliokäsitteestä olisi apua kuvaamaan esim. osajärjestelmiä olioiden yläpuolelle tarvitaan toiminnan kokonaiskuvaus jos ollaan oliokeskeisiä, pitäisikö koko järjestelmä nähdä yhtenä oliona, joka tarjoaa palveluja - KYLLÄ käyttötapaukset (use case) ovat järjestelmän käyttäjilleen tarjoamien palvelujen määrityksiä Harri Laine 19

Oliot ja määrittely Mitä määrittelyvaiheessa on välttämättä kuvattava yleiskuva järjestelmän tietosisällöstä siinä laajuudessa, että paljelut tulevat ymmärretyiksi voiko tässä käyttää olioita - KYLLÄ keskeiset luokat ja niiden väliset yhteydet Harri Laine 20