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 keskitymme näihin: luokan määritykset olion eli ilmentymän eli instanssin tieto kapselointi eli ilmentymän tietojen suojaus, ja sen käyttöön tarvittavat metodit(get, set) metodien määrittäminen ja parametrien välitys muodostimet
Luokat Luokka sisältää attribuutit, muodostimet ja metodit
Tiedon näkyvyys Tietoon, joka määritetään luokkatasolla voidaan viitata luokan kaikista metodeista käsin Tietoon, joka määritellään metodin sisällä, päästään käsiksi vain ko. metodin sisällä Tietoa, joka määritellään metodin sisällä kutsutaan paikalliseksi tiedoksi / paikalliseksi muuttujaksi
Kapselointi eli olion tietojen suojaaminen Voimme tarkastella oliota kahdesta näkökulmasta: sisäinen - luokan muuttujien ja metodien yksityiskohdat, eli luokan määrittäminen ulkoinen - palvelut, jotka olio tarjoaa ja kuinka olio vuorovaikuttaa muiden järjestelmän olioiden kanssa Ulkoisesta näkökulmasta olio on kapseloitu ilmentymä (eli kokonaisuus), se tarjoaa joukon määritettyjä palveluita Nämä palvelut määrittävät olion rajapinnan (eli interface), joka näkyy muille luokille
Kapselointi kapseloitua oliota voidaan ajatella mustana laatikkona sen sisäinen toiminta peitetään asiakkailta Asiakas kutsuu rajapintametodeja (tavalliset publictyyppiset metodit) nämä hallitsevat instanssin tietoa Asiakas Metodit Tieto
Näkyvyyden muuntelu Javassa kapselointi toetutetaan käyttämällä sopivia näkyvyysmääreitä(visibility modifiers) näkyvyysmääre on Javan varattu sana, joka määrittää tietyn metodin tai muuttujan luonteen Javassa on kolme näkyvyyden muuntelumäärettä: public, protected ja private protected määre liittyy periytymiseen, jota käsittelemme opintojaksomme osiossa kolme.
Näkyvyyden määritteet Luokan osiin (attribuutit tai metodit), jotka määritetään julkisiksi (public visibility) voidaan viitata mistä tahansa käsin Luokan osiin (attribuutit ja metodit), jotka määritetään yksityisiksi (private visibility) voidaan viitata ainoastaan ko. luokan sisältä Luokan osiin (attribuutit ja metodit), joille ei anneta näkyvyyttä (visibility) ollenkaan, annetaan oletusarvoinen näkyvyys (default visibility) ja näihin voidaan viitata mistä tahansa luokasta samassa paketissa
Näkyvyysmääreet public private Muuttujat, attribuutit Metodit Rikkovat kapselointia Tarjoavat palveluja asiakkaille Tukevat kapselointia Tukevat luokan muita metodeja
Get- ja set - metodit Koska ilmentymän tieto on yksityistä (private), luokka yleensä tarjoaa palveluita muuttujien arvojen lukemista ja päivittämistä varten get-metodi (accessor method) palauttaa muuttujan nykyisen arvon set-metodi (mutator method) muuttaa muuttujan arvoa (päivittää muuttujan arvoa) Nimet metodeille ovat muotoa getx ja setx, jossa X on attribuutin nimi (esim. setoppilasnumero(numero) Näitä metodeja kutsutaan gettereiksi ja settereiksi
Luokkien kirjoittaminen - this Muista this-avainsanan käyttö This-sanalla viitataan olion attribuuttiin Ilman this sanaa metodille tulevat parametrit on nimettävä erinimisiksi kuin luokan attribuutit This-viittaa aina kyseisellä hetkellä käytössä olevaan olioon Koko nykyinen olio voidaan palauttaa kirjoittamalla return(this);
tostring metodi Luokille kirjoitetaan tostring metodi tostring yhdistää Stringiksi olion attribuuttien arvon, kyseessä on ns. olion tilan tulostaminen Ilman tostring metodia saadaan oliosta tulostumaan ns. OID numero, joka on muistiosoite viitaten missä itse olio sijaitsee
Metodien kutsuminen luokan sisällä ja muista luokista Jos kutsuttu metodi on samassa luokassa tarvitaan vain metodin nimi kutsumiseen laske munmetodi munmetodi();
Metodien kutsumekanismit Kutsuttu metodi on usein osa toista luokkaa tai oliota: tutki onko kyseessä luokkametodi vai ilmentymämetodi mitä eroa on metodikutsussa? main teese autamua olio.teese(); autamua();
Pankkitiliesimerkki Katsotaan esimerkkiä, joka esittää luokkien ja metodien toteutuksen Esitämme pankkitilä luokalla, jonka nimi on Tili Pankkitilin tila voi sisältää pankkitilin numeron, saldon tällähetkellä ja tilin omistajan nimen Tilin käyttäytyminen (tai sen palvelut) sisältävät otot ja talletukset sekä koron lisäämisen tilille Toteutetaan luennon jälkeen harjoitustunneilla
Testausohjelmat Testausohjelma eli ajuriohjelman avulla testataan ilmentymäluokkine toimintaa Testausohjelmia tarvitaan varmistamaan luokkamääritysten toiminta Ohjelmassa on kokonaisuuden käynistävä mainmetodi ( ovi sovellukseen)
Pankkitili-esimerkki tili1 72354 tilnumero saldo 102.56 nimi Matti Nykänen tili2 69713 tilinumero saldo 140.00 nimi Pekka Pere