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.

Slides:



Advertisements
Samankaltaiset esitykset
Tuloksellinen Java-ohjelmointi Luku 3 Luokkien käyttäminen
Advertisements

Rajapintaluokat Rajapintaluokka luettelee metodit, joille tulee löytyä toteutus asianomaisen rajapinnan toteuttavista luokista. Rajapintaluokka on siis.
Suorita menulta voit ottaa yhteyden iSeries:iin tai katkaista yhteyden sinne ja poistua RI400:sta.
Kalastuslupien sähköinen kuittivihko on nopein ja helpoin tapa saada yhdellä tilauksella kalastusluvat suurellekin ryhmälle.
Olio-ohjelmoinnin perusteet luento 3: Muuttujista ja funktioista Sami Jantunen LTY/Tietotekniikan osasto.
Moodlen ohje opiskelijoille
NAO/Maija-Leena Haapa-alho
Portal-ohje opiskelijoille. 2 Kirjaudu sisään tunnuksella ja salasanalla. Portaliin kirjauduttaessa käytetään samoja tunnuksia kuin muihin VAMKin IT-järjestelmiin.
@ Leena Lahtinen Helia TIETO JA TIETOKONEOHJELMA  TIETOKONEOHJELMA KÄSITTELEE TIETOJA  TIETOJA VOIDAAN KÄSITELLÄ OHJELMASSA VAIN SALLITUILLA.
© Jukka Harju, Viittausmuuttujat. © Jukka Harju, Viittaukset •Viittausmuuttuja sisältää tiedon siitä missä muistipaikassa olio.
Luokkien väliset koostesuhteet
Luokan otsikko- ja toteutustiedosto tMyn1 Luokan otsikko- ja toteutustiedosto •Tähän asti ohjelmaesimerkit on toteutettu siten, että kaikki koodi on yhdessä.
1 Heli Lepomäki Yritysten ja muiden organisaatioiden käyttöön sähköinen työpöytä on jo leviämässä, koska niiden toiminta ja asiakaspalvelu.
Bensan hinta Hyvää päivää, Olen kuullut ennustettavan, että bensan hinta saattaa syksyyn mennessä nousta litralta jopa € 1,90 :een.
Outi Grotenfelt & Vesa Ollikainen
Tietokanta.
Aloitetaan normalisoimattomasta raakadatasta
Julkaisukielet ja - tekniikat tMyn1 Julkaisukielet ja -tekniikat •Verkko-ohjelmointi voidaan jakaa kahteen osaan: asiakaspuolen ja palvelinpuolen ohjelmointiin.
Nämä kalvot on lisensoitu Creative Commons Attribution-ShareAlike 1
Olio-ohjelmointi. Mitä olio-ohjelmointi on ?  Pyritään mallintamaan jotain reaalimaailman kohdetta tietokoneohjelman avulla  Olio on luokan ilmentymä.
Taulukot Jukka Juslin © Jukka Juslin 2006.
Johdetun luokan määrittely tMyn1 Johdetun luokan määrittely •Kun johdettu luokka periytetään kantaluokasta, saadaan kantaluokan jäsenet enemmän tai vähemmän.
Klikkaa Työkalut ja Mobile Properties. Sender id = Puhelinnumero, jolta lähetetään ja jolle vastaussanoma palautuu. Password = Operaattorilta saatu palvelun.
Antti-Jussi Lakanen Nuorten peliohjelmointi 2009 / Jyväskylän yliopisto.
OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT. LUOKKA JAVA ohjelma koostuu luokista LUOKKA sisältää metodeja molemmat sisältävät attribuutteja eli muuttujia.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
Metoditehtävä 1.Tee ohjelma, jonka tehtävänä on laskea jonkin tietyn käyttäjän syöttämän välin numeroiden summa. (Esim. käyttäjän syötöllä 1 ja 5 ohjelma.
Poikkeuskäsittely- lohkot tMyn1 Poikkeuskäsittelylohkot try-catch Poikkeustilanteiden käsittelymekanismi toteutetaan varatuilla sanoilla try, throw ja.
HALLITUKSEN PUHEENJOHTAJA VASTUUALUE 1VASTUUALUE 3 VASTUUALUE 4 VASTUUALUE 2 SIHTEERI MALLISEURA RY / HALLITUS - dynaamisen organisaatiokaavion esittely.
Marja Toivonen gsm Tuumasta toimeen – seminaarin päätös Aktiivi
Motion compensated interframe tMyn1 Motion compensated interframe prediction -koodaus Edellä tutkittiin yksittäisen kehyksen sisällä olevan redundanssin.
Kuvan tuominen sivulle Työvaiheet käytettäessä Kuvanhallinta-toimintoa: 1. Ladataan kuvatiedosto oman tietokoneen hakemistosta sivustolle 2. Liitetään.
T Personal SE assignment Project progress tracking and control.
TAULUKKO YKSIULOTTEINEN TAULUKKO. TAULUKKO  Taulukon tarkoitus Ohjelmassa tarvitaan paljon samantyyppisiä samaan kohdealueeseen kuuluvia muuttujia Näitä.
TIETO JA TIETOKONEOHJELMA TIETOKONEOHJELMA KÄSITTELEE TIETOJA TIETOJA VOIDAAN KÄSITELLÄ OHJELMASSA VAIN SALLITUILLA MENETELMILLÄ.
2. Vuokaaviot.
Dynaamiset oliottMyn1 Dynaamiset oliot Dynaamisen olion tunnuksen esittely ja olion määrittely voivat tapahtua yhtäaikaisesti tai eri aikaan. Dynaamisen.
Olioon kohdistuvia perustoimintoja tMyn1 Olioon kohdistuvia perustoimintoja Kopiointimuodostin (copy constructor) alustaa olion tietojäsenet saman luokan.
Virtuaaliset jäsenfunktiot tMyn1 Virtuaaliset jäsenfunktiot Virtuaalinen jäsenfunktio on esiteltävä monimuotoisessa kantaluokassa. Virtuaalisen jäsenfunktion.
© Jukka Harju, Jukka Juslin
Johdetun luokan olion alustus tMyn1 Johdetun luokan olion alustus määrätyillä arvoilla Kun ohjelmassa esiintyy johdetun luokan olion määrittely, järjestelmä.
Normalisointi2tMyn1 Yksi kelpo perusavain on sarakkeet laakNro ja vastAika. Toinen voisi olla potNro ja vastAika, kolmas voisi olla huoneNro ja vastAika,…,
Tietokanta-analyysi, suunnittelu ja toteutus
Luokan määrittely class-määreellä tMyn1 Luokan määrittely class-määreellä Luokan määrittely tarkoittaa luokan tietojäsenten esittelyä ja jäsenfunktioiden.
Opinnäytetyön tekijä: Etunimi Sukunimi
4. Attribuutit 4.1. Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
Hyvä ohjelmointitapa (osa 2) Yleistä Lisää hyviä ohjelmointikäytäntöjä: − Jaa pitkä koodi osiin. − Käytä attribuutteja säästeliäästi.
Olioon kohdistuvia perustoimintoja tMyn1 Olioon kohdistuvia perustoimintoja Kopiointimuodostin (copy constructor) alustaa olion tietojäsenet saman luokan.
Ohjelman keskeytys virhetilanteessa tMyn1 Ohjelman keskeytys virhetilanteessa Poikkeustilanteet voidaan ryhmitellä logiikkavirheisiin ja muihin ajonaikaisiin.
Johdetun luokan olion alustus tMyn1 Johdetun luokan olion alustus määrätyillä arvoilla Kun ohjelmassa esiintyy johdetun luokan olion määrittely, järjestelmä.
Komponenttipohjainen ohjelmistotekniikka (TJTSS56) Osa 4 Kevätlukukausi 2010 Jyväskylän yliopisto Tietojenkäsittelytieteiden laitos Markku Sakkinen.
© Jukka Juslin1 Osio2 Olio-ohjelmointi: Merkkijonot eli Stringit Jukka Juslin.
Rinnakkaisuus Järjestelmässä, jossa voi olla useita prosesseja rinnakkain suorituksessa voi tulla tilanteita, joissa prosessien suoritusta täytyy kontrolloida.
Jouni Juntunen Oulun seudun ammattikorkeakoulu Liiketalouden yksikkö
Johdetun luokan olion esittely... tMyn1 Johdetun luokan olion esittely ja määrittely Esittelyluokka tarkoittaa olion tunnuksen luokkaa. Määrittelyluokka.
Poikkeustenkäsittely- lohkot tMyn1 Poikkeustenkäsittelylohkot try-catch Poikkeustilanteiden käsittelymekanismi toteutetaan varatuilla sanoilla try, throw.
Tekstitiedostoon kirjoittaminen tMyn1 Tekstitiedostoon kirjoittaminen Tiedostoja käsitellään ohjelmassa tiedosto-olion avulla. Tiedosto-olion luokka sisältää.
Monimuotoinen luokka tMyn1 Monimuotoinen luokka Monimuotoinen luokka mahdollistaa saman jäsenfunktion toteutuksen monella tavalla. Tällöin puhutaan virtuaalisesta.
Tiedon vieminen funktiolle tMyn1 Tiedon vieminen funktiolle, parametrit Argumentin vieminen funktiolle voidaan toteuttaa kahdella menetelmällä: –Pass-by-Value.
Johdetun luokan olion alustus tMyn1 Johdetun luokan olion alustus määrätyillä arvoilla Kun ohjelmassa esiintyy johdetun luokan olion määrittely, järjestelmä.
Kantaluokan määrittely tMyn1 Kantaluokan määrittely Perinnän käyttöön liittyvät varatut sanat private, protected, public, final ja abstract. Ne tarkoittavat.
Johdetun luokan määrittely tMyn1 Johdetun luokan määrittely Kun johdettu luokka periytetään kantaluokasta, saadaan kantaluokan jäsenet enemmän tai vähemmän.
1 © Jukka Juslin Luokat, attribuutit ja metodit Yleistietoa: seuraavalla koulutusviikolla tarkempi käsittely.
15. Ohjelmoinnin tekniikkaa
MapInfon tiedostot TAB – Tiedosto, jonka avulla tietokanta avataan MapInfossa. Tiedostossa tietoja kentistä ja koordinaattijärjestelmästä. DAT, XLS. TXT.
Rajapintaluokat Rajapintaluokka luettelee metodit, joille tulee löytyä toteutus asianomaisen rajapinnan toteuttavista luokista. Rajapintaluokka on siis.
TIETO JA TIETOKONEOHJELMA
4. Luokan testaus ja käyttö olion kautta
2. Olio-ohjelmoinnin perusteita
Esityksen transkriptio:

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.

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:

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.

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.

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

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.

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

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

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:

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.

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

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:

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

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

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

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

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.

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

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

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.