1 / 20

Luokkien löytyminen käytännössä

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:

tadeo
Download Presentation

Luokkien löytyminen käytännössä

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

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

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

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

  5. Seuraava vaihe sisältää substantiivien tai substantiivilausekkeiden etsimisen. Jos joukossa on pronomineja, valitaan nekin: tMyn

  6. 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 asiakkaalletyömääräyksen allekirjoitettavaksi. • Työmääräys näyttää vaihdettavien osien hinnat (luultavammin vaihdettavat), arvioidut työkustannukset, arvonlisäverojen osuuden, ja arvioidun kokonaiskustannuksen. tMyn

  7. Yhteenvetona saatiin osapuilleen lista: tMyn

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

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

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

  11. Nyt lista luokkaehdokkaista on paljon lyhyempi: • Luodaan siis luokat Auto, Asiakas ja Tyomaaraus. tMyn

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

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

  14. UML-kaavio Asiakas-luokasta voisi näyttää tältä: tMyn

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

  16. UML-kaavio Auto-luokasta voisi näyttää tältä: tMyn

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

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

  19. UML-kaavio Tyomaarays-luokasta voisi näyttää tältä: tMyn

  20. Edellä kuvattu tapahtumasarja on tyypillisesti iteratiivinen ja inkrementaalinen. Siis lähdetään liikkeelle, ja täsmennetään luokkamäärittelyjä useammalla kuin yhdellä kierroksella. tMyn

More Related