Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

Luokkien löytyminen käytännössä tMyn1 Luokkien löytyminen käytännössä Kun aletaan ratkaista elävän elämän ohjelmointitehtäviä, niin ensimmäisten asioiden.

Samankaltaiset esitykset


Esitys aiheesta: "Luokkien löytyminen käytännössä tMyn1 Luokkien löytyminen käytännössä Kun aletaan ratkaista elävän elämän ohjelmointitehtäviä, niin ensimmäisten asioiden."— Esityksen transkriptio:

1 Luokkien löytyminen käytännössä tMyn1 Luokkien löytyminen käytännössä Kun aletaan ratkaista elävän elämän ohjelmointitehtäviä, niin ensimmäisten asioiden joukossa on löytää tarpeelliset luokat ja kunkin luokan tehtävät. Pääpiirteittäin näiden tarpeellisten luokkien löytyminen onnistuu seuraavasti: 1. Kirjoitetaan kattava kuvaus kyseisestä alueesta johon ohjelmointiratkaisua on tarkoitus sovitella. 2. Etsitään kuvauksesta kaikki substantiivit tai substantiivilausekkeet. Nämä ovat hyviä ehdokkaita luokiksi.

2 Luokkien löytyminen käytännössä tMyn2 3. Edellisessä kohdassa saatua listaa typistetään, ja jäljelle jäävät vain välttämättömät luokat. Otetaan esimerkki näistä kolmesta vaiheesta. Ollaan ohjelmoimassa sovellusta, jonka avulla Jukan Auto – korjaamossa tulostetaan asiakkaalle työmääräyskaavake. Tällainen kaavake tulostetaan, kun asiakas tulee liikkeeseen saadakseen autonsa korjattavaksi. Sovelletaan edellä mainittuja kolmea askelta tähän:

3 Luokkien löytyminen käytännössä tMyn3 1. Jukan Auto huoltaa ulkomaalaisia autoja, ja se on erikoistunut huoltamaan Mercedes-, Porche- ja BMW-merkkisiä henkilöautoja. Kun asiakas saapuu autokorjaamoon, niin töiden vastaanottaja kirjaa ylös asiakkaan nimen, osoitteen ja puhelinnumeron. Tämän jälkeen töiden vastaanottaja määrittelee huollettavaksi tulevan auton merkin, mallin ja vuosimallin ja lopuksi tulostaa asiakkaalle työmääräyksen allekirjoitettavaksi. Työmääräys näyttää vaihdettavien osien hinnat (luultavammin vaihdettavat), arvioidut työkustannukset, arvonlisäverojen osuuden ja arvioidun kokonaiskustannuksen.

4 Luokkien löytyminen käytännössä tMyn4 Siispä kirjallisen kuvauksen tulisi sisältää soveltuvin osin ainakin: Fyysiset kokonaisuudet, kuten ajoneuvot, laitteet ja tuotteet. Kunkin mukana olevan henkilön osuus/tehtävät tapahtumasarjassa (johtaja, työntekijä, asiakas jne). Tapahtumasarjan tuotos/tuotokset, kuten edellä kuvatussa työmääräyskaavake. Tarvittavat muistiin tallennettavat tiedot, kuten asiakashistoria, laskutusosoite jne.

5 Luokkien löytyminen käytännössä tMyn5 Seuraava vaihe sisältää substantiivien tai substantiivilausekkeiden etsimisen. Jos joukossa on pronomineja, valitaan nekin:

6 Luokkien löytyminen käytännössä tMyn6 2. Jukan Auto huoltaa ulkomaalaisia autoja, ja se on erikoistunut huoltamaan Mercedes-, Porche- ja BMW-merkkisiä henkilöautoja. Kun asiakas saapuu autokorjaamoon, niin töiden vastaanottaja kirjaa ylös asiakkaan nimen, osoitteen ja puhelinnumeron. Tämän jälkeen töiden vastaanottaja määrittelee huollettavaksi tulevan auton merkin, mallin ja vuosimallin ja lopuksi tulostaa asiakkaalle työmääräyksen allekirjoitettavaksi. Työmääräys näyttää vaihdettavien osien hinnat (luultavammin vaihdettavat), arvioidut työkustannukset, arvonlisäverojen osuuden, ja arvioidun kokonaiskustannuksen.

7 Luokkien löytyminen käytännössä tMyn7 Yhteenvetona saatiin osapuilleen lista:

8 Luokkien löytyminen käytännössä tMyn8 Kolmannessa vaiheessa pyritään typistämään edellisessä vaiheessa generoitua listaa. Jotkut listassa edustavat samaa asiaa, vaikkapa henkilöauto ja ulkomaalainen auto sekä autokorjaamo ja Jukan Auto. Tiputetaan vaikkapa ulkomaalainen auto ja Jukan Auto. Edelleen jotkut listalla olevat ehdokkaat eivät ole välttämättömiä ajatellen annetun tehtävän ratkaisemista. Koska tavoitteena on yksittäisen työmääräyksen generointi, niin siihen ei tarvita autokorjaamo-tietoa. Sama pätee töiden vastaanottaja –tietoa (toki jos töiden vastaanottajia olisi useampia, niin siinä tapauksessa tilanne olisi toinen).

9 Luokkien löytyminen käytännössä tMyn9 Jotkut listalla olevat substantiivit edustavat luokan ilmentymää, eivät luokkaa. Poistetaan siis Mercedes, Porche ja BMW. Jotkut listalla olevat edustavat yksittäistä arvoa, ja ne voi siksi tallentaa yksittäiseen muuttujaan. Pidetään mielessä, että luokka sisältää tietojäseniä ja jäsenfunktioita. Tietojäsenet määrittelevät olion tilan. Jäsenfunktiot edustavat käyttöliittymää, ja luokan olio voi kutsua näitä jäsenfunktioita. Jos listalla olevaan substantiiviin ei suoralta kädeltä pysty liittämään ainuttakaan tietojäsentä tai jäsenfunktiota, niin tuskinpa kyseessä on luokka. Hyödyllisiä apukysymyksiä ovat:

10 Luokkien löytyminen käytännössä tMyn10 Löytyykö substantiiville joukko arvoja (tietojäsenet), jotka määrittelevät kyseisen substantiivin tilan? Löytyykö ilmeisiä toimintoja (jäsenfunktiot) jotka liittyvät harkinnan alla olevaan substantiiviin? Jos vastaus on kielteinen kumpaankin edellä esitettyyn kysymykseen, niin silloin substantiivi edustaa yksittäistä arvoa, jonka voi tallentaa muuttujaan. Tämän perusteella seuraavat listalla olijat tuskin ovat luokkia: arvioidut työkustannukset, arvioitu kokonaiskustannus, vaihdettavien osien hinnat, arvonlisäveron osuus, asiakkaan osoite, asiakkaan puhelinnumero, auton merkki, auton malli, auton vuosimalli.

11 Luokkien löytyminen käytännössä tMyn11 Nyt lista luokkaehdokkaista on paljon lyhyempi: Luodaan siis luokat Auto, Asiakas ja Tyomaaraus.

12 Luokkien löytyminen käytännössä tMyn12 Kun luokat on tunnistettu, niin seuraava vaihe sisältää luokan vastuiden selvittäminen: –Mitä luokan tulee tietää –Mitä luokan pitää pystyä tekemään Mitä luokka tietää -> Luokan tietojäsenet Mitä luokan pitää tehdä -> Luokan jäsenfunktiot Vastaukset kysymyksiin ”Mitä luokan tulee tietää tässä kontekstissa?” ja ”Mitä luokan tulee tehdä?” löytyvät suoraan tai epäsuorasti (=joutuu vähän miettimään!) kohdan 1 kuvauksesta. Aloitetaan Asiakas-luokasta:

13 Luokkien löytyminen käytännössä tMyn13 Mitä Asiakas-luokan tulee tietää? Tekstistä löytyy suoraan kolme attribuuttia: –Asiakkaan nimi –Asiakkaan osoite –Asiakkaan puhelinnumero Edellä mainitut ovat niin ollen luokan tietojäseniä, ja ne voidaan tallentaa merkkijonoina. Mitä Asiakas-luokan pitää kyetä tekemään? –Luoda olio luokkaansa –Muuttaa ja hakea asiakkaan nimi –Muuttaa ja hakea asiakkaan osoite –Muuttaa ja hakea asiakkaan puhelinnumero

14 Luokkien löytyminen käytännössä tMyn14 UML-kaavio Asiakas-luokasta voisi näyttää tältä: Asiakas -nimi:String -osoite:String -puhelinnumero:String +Asiakas(): +asetaNimi(n:String):void +asetaOsoite(o:String):void +asetaPuhNumero(p:String):void +haeNimi():String +haeOsoite:String +haePuhNumero():String

15 Luokkien löytyminen käytännössä tMyn15 Mitä Auto-luokan tulee tietää? Tekstistä löytyy suoraan kolme attribuuttia: –Auton merkki –Auton malli –Auton vuosimalli Mitä Auto-luokan pitää kyetä tekemään? –Luoda olio luokkaansa –Muuttaa ja hakea auton merkki –Muuttaa ja hakea auton malli –Muuttaa ja hakea auton vuosimalli

16 Luokkien löytyminen käytännössä tMyn16 UML-kaavio Auto-luokasta voisi näyttää tältä: Auto -merkki:String -malli:String -vuosimalli:int +Auto(): +asetaMerkki(me:String):void +asetaMalli(ma:String):void +asetaVuosimalli(v:int):void +haeMerkki():String +haeMalli:String +haeVuosimalli():int

17 Luokkien löytyminen käytännössä tMyn17 Mitä Tyomaarays-luokan tulee tietää? Tekstistä löytyy suoraan neljä attribuuttia: –Vaihdettavaksi arvioitujen osien hinnat –Arvioidut työkustannukset –Arvonlisäveron osuus –Arvioidut kokonaiskustannukset Edellä luetelluista attribuuteista kaksi saadaan laskutoimituksen kautta: arvonlisäveron osuus sekä arvioidut kokonaiskustannukset. On siis järkevää ratkaista asia kummankin attribuutin kohdalla niin, että toteutetaan jäsenfunktiot hoitamaan tällaisten arvojen laskemiset.

18 Luokkien löytyminen käytännössä tMyn18 Mitä Tyomaarays-luokan pitää kyetä tekemään? –Luoda olio luokkaansa –Muuttaa ja hakea osien hinnat –Muuttaa ja hakea työkustannukset –Laskea arvonlisäveron osuus –Laskea kokonaiskustannukset

19 Luokkien löytyminen käytännössä tMyn19 UML-kaavio Tyomaarays-luokasta voisi näyttää tältä: Tyomaarays -osienHinnat:double -tyokustannukset:double +Tyomaarays(): +asetaOsienHinnat(o:double):void +asetaTyokustannukset(t:double):void +haeOsienHinnat():double +haeTyokustannukset():double +haeAlvOsuus():double +haeKokonaiskustannukset():double

20 Luokkien löytyminen käytännössä tMyn20 Edellä kuvattu tapahtumasarja on tyypillisesti iteratiivinen ja inkrementaalinen. Siis lähdetään liikkeelle, ja täsmennetään luokkamäärittelyjä useammalla kuin yhdellä kierroksella.


Lataa ppt "Luokkien löytyminen käytännössä tMyn1 Luokkien löytyminen käytännössä Kun aletaan ratkaista elävän elämän ohjelmointitehtäviä, niin ensimmäisten asioiden."

Samankaltaiset esitykset


Iklan oleh Google