2. Olio-ohjelmoinnin perusteita

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.
Ohjelmiston tekninen suunnittelu
Murtolukujen kertolasku
6. Metodit.
© Jukka Harju, Viittausmuuttujat. © Jukka Harju, Viittaukset •Viittausmuuttuja sisältää tiedon siitä missä muistipaikassa olio.
Luokkien väliset koostesuhteet
16. Javan omat luokat.
Luokkakaaviot Luokkakaaviot Tekninen suunnittelu.
Olio-ohjelmointi. Mitä olio-ohjelmointi on ?  Pyritään mallintamaan jotain reaalimaailman kohdetta tietokoneohjelman avulla  Olio on luokan ilmentymä.
1. Olio-ohjelmointi.
Olio-mallinnus Tietojärjestelmien suunnittelu KYAMK, Liiketalous, Kouvola Jarkko Ansamäki, 2002.
13. Pakkaukset.
Perintä. Yleistä Olio-ohjelmoinnin menetelmä muodostaa uusia luokkia aiemmin määriteltyjen luokkien avulla Luokka saa automaattisesti käyttöönsä kaikki.
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.
@ Leena Lahtinen Helia OHJELMOINTITAITO ICT02D 12 OP.
OHJELMOINTITAITO ICT02D 12 ECTS. OPINTOJAKSON TOTEUTUS  KESTO: –  PÄIVÄOPISKELIJAT: – KAKSI LUOKAA (SUOMI) –YKSI LUOKKA (ENGLANTI)
Oliomallittaminen ja UML
9. Periytyminen Javassa.
Oliosuunnittelu.
© Lammi-Niskala-Kossarev ADT:n toteutus Imperatiivinen paradigma Imperatiivinen paradigma toimenpiteet aktiivisia, tiedot passiivisia toimenpiteet.
© Jukka Harju, Jukka Juslin
Käsitteen didaktiikkaa
7. Oliot ja viitteet.
Luokan määrittely class-määreellä tMyn1 Luokan määrittely class-määreellä Luokan määrittely tarkoittaa luokan tietojäsenten esittelyä ja jäsenfunktioiden.
Työasemasovelluksen käyttöliittymä sovelluksien käyttöliittymät voidaan jakaa kahteen pääluokkaan: –kohde-toiminto -pohjaisiin (object-action) käyttöliittymiin.
ET didaktiikkaa Eero Salmenkivi Opettajankoulutuslaitos.
4. Attribuutit 4.1. Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2.
5. Kapselointi Yleistä Kapseloinnilla (encapsulation) tarkoitetaan luokan tietojen ja toimintojen pakkaamista yhdeksi suojatuksi kokonaisuudeksi.
10. Abstrakti luokka Johdanto Abstrakti luokka (abstract class) poikkeaa konkreettisesta luokasta (ei-abstrakti luokka) siten, että siitä ei.
17. Kooste Kooste Kooste (aggregation) on luokkien A ja B välinen suhde, joka tarkoittaa “A on B:n osa” tai “A kuuluu B:hen”. − Koostesuhteessa.
OHJELMOINTITAITO ICT02D 12 ECTS. OPINTOJAKSON TOTEUTUS  KESTO: –  AVOIMEN OPISKELIJAT: – YKSI LUOKA (SUOMI) – LUOKKA ICT02O-1.
Mallinnustavat.
Toteutus. Ohjelmointikielen valinta Käytetään samaa kuin muutkin Työkalujen laatu Usein asiakas määrää Yleensä valittu jo ennen toteutusta Osaaminen vs.
Jouni Juntunen Oulun seudun ammattikorkeakoulu Liiketalouden yksikkö
Oliot ja luokat Oliot ja luokat Oliot (object) ja luokat (class) ovat keskeisiä olio- ohjelmoinnin käsitteitä. Olio-ohjelmointi on ohjelmointiparadigma,
Vesa Ollikainen & Outi Grotenfelt
11. Rajapinnat Sisällys Mitä rajapinnat ovat? Kuinka ne määritellään ja otetaan käyttöön? Moniperiytyminen rajapintojen avulla. Varoituksen.
Johdetun luokan olion alustus tMyn1 Johdetun luokan olion alustus määrätyillä arvoilla Kun ohjelmassa esiintyy johdetun luokan olion määrittely, järjestelmä.
1 © Jukka Juslin Luokat, attribuutit ja metodit Yleistietoa: seuraavalla koulutusviikolla tarkempi käsittely.
– Ohjelmistojen mallintaminen Unified Modeling Language (UML)
8. Periytyminen Sisällys Mitä on periytyminen? Yksittäis- ja moniperiytyminen. Oliot ja perityt luokat. Periytymisen käyttö.
15. Ohjelmoinnin tekniikkaa
Olio-ohjelmoinista lyhyesti. 2.2 Sisällys Yleistä. Oliot ja luokat. Attribuutit. Olioiden esittely ja alustus. Rakentajat. Olion operaation kutsuminen.
17. Kooste.
5. Kapselointi.
6. Metodit.
3. Olio-ohjelmoinista lyhyesti
11. Rajapinnat.
1. Olio-ohjelmointi.
OHJELMOINTITAITO ICT02D 12 Leena Lahtinen Helia
3. Luokat, oliot ja metodit Java-kielessä (Lausekielinen ohjelmointi I ja II –kursseilla opitun kertausta.)
Rajapintaluokat Rajapintaluokka luettelee metodit, joille tulee löytyä toteutus asianomaisen rajapinnan toteuttavista luokista. Rajapintaluokka on siis.
Luokan määrittely class-määreellä
6. Metodit.
OHJELMOINTITAITO ICT02D 12 Leena Lahtinen Helia
13. Pakkaukset.
8. Periytyminen.
4. Attribuutit.
OHJELMOINTITAITO ICT02D 12 ECTS.
OHJELMOINTITAITO ICT02D 12 ECTS.
3. Attribuutit.
13. Pakkaukset.
8. Periytyminen.
4. Luokan testaus ja käyttö olion kautta
2. Olio-ohjelmoinnin perusteita
1. Olio-ohjelmointi.
OHJELMOINTITAITO ICT02D 12 ECTS.
Esityksen transkriptio:

2. Olio-ohjelmoinnin perusteita

Sisällys Esitellään peruskäsitteitä yleisellä tasolla: Luokat ja oliot. Käsitteet, luokat ja oliot. Attribuutit, olion tila ja identiteetti. Metodit ja viestit. Olioperustainen ohjelmointi.

Luokat ja oliot Luokka (class) ja olio (object) ovat olio-ohjelmoinnin keskeisimpiä käsitteitä. Liittyvät kiinteästi yhteen, ovat kuitenkin eri asia. Luokka voidaan ajatella yleiseksi malliksi, josta luodaan mallin mukaisen rakenteen ja käytöksen omaavia olioita. Luokka määrää siis olion attribuutit (ominaisuudet) ja metodit (käytös) eli olion piirteet. Abstraktisti: Olio on luokan ilmentymä (instance).

Luokat ja oliot Luokkien ja olioiden suhteesta seuraa: Oliolla on aina luokka. Luokalla voi olla 0, 1 tai useampia olioita. Luokka vastaa karkealla tasolla maailman käsitettä (concept). Tämä selittää pitkälti olio-ohjelmoinnin suosion.

Käsitteet Ajatusmaailman mielikuvia, jotka auttavat hahmot-tamaan maailmaa ja tunnistamaan sen olioita. Ilmaistaan kielellisesti määritelmän avulla. Käsitteeseen viitataan sanalla tai termillä. Esim. Käsite koira voidaan määritellä “Koira on nelijalkainen eläin, jolla on häntä ja joka haukkuu.” Käsite voi olla konkreettinen tai abstrakti. Käsitteet voivat olla myös kuvitteellisia. Esim. Örkki-käsite ei ole kotoisin tästä maailmasta.

Käsitteet, luokat ja oliot Olio-ohjelmoinnissa sovellusalueen ja sen ympäristön käsitteitä mallinnetaan luokiksi, joista luotavat oliot muodostavat ohjelman. Luokkia ei voida aina tunnistaa suoraan. Tällöin analysoidaan sovellusalueen olioita (eli käsitteiden edustajia), jotta löydetään käsitteitä. Käsitteen “vangitseminen” sellaisenaan on lähes mahdotonta. Tämä ei ole onneksi tarpeen, koska riittää, että käsitettä vastaava luokka sisältää sovelluksen kannalta tärkeän osuuden käsitteestä.

Käsitteet, luokat ja oliot Luokaksi soveltuvat käsitteet yleensä substantiiveja: kissa, koira, auto, henkilö, levy, kahvinkeitin, ... Luokkien ominaisuuksia (attribuutit) ja toimintoja (metodit) ei tulisi mallintaa luokiksi. Ominaisuutta ilmaisevat substantiivit (esim. väri, koko ja ikä) ovat attribuutteja. Yksittäisellä arvolla ilmaistava käsite on usein attribuutti (esim. opiskelijanumero). Toimintaa ilmaisevat käsitteet (esim. lisäys, poisto, tallentaminen ja hakeminen) ovat luonnollisesti metodeja.

Käsitteet, luokat ja oliot Esim. Olkoon sovellusalue kirjasto. Käsitteitä: teos, lainaus, varaus, asiakas, sakko jne. Asiakas-luokkaan voitaisiin sijoittaa vaikkapa vain asiakkaan nimi ja yhteystiedot. Asiakas-käsitteen edustajat ovat konkreettisesti olemassa. Toisaalta asiakkaat “elävät” myös Asiakas-luokan olioina ohjelmassa. Oliolla on siis kaksi roolia: Sovellusalueen käsitteen edustaja. Käsitettä vastaavan luokan edustaja.

Attribuutit Olion ominaisuudet määritellään attribuuteilla (attribute), jotka voivat esiintyä yhdessä tai useammassa luokassa. Esimerkiksi sekä kissoilla että linnuilla on väri. Toisaalta kissoilla on häntä ja linnuilla on pyrstö. Yleensä attribuutein pyritään esittämään vain tärkeimmät ominaisuudet.

Olion tila Oliolla on tila (state), jonka attribuutin arvot määräävät. Jos esimerkiksi Möykyn häntä on kippura ja Rontin häntä tavallinen, on näillä kissaolioilla eri tila, vaikka molemmat ovat mustia Kissa-luokan edustajia. Möykky Rontti Olio Häntä Väri Möykky kippura musta Rontti tavallinen

Olion identiteetti Olioilla on myös identiteetti (identity), joka avulla olio voidaan erottaa yksikäsitteisesti muista olioista. Olkoon esimerkiksi Möykky ja Mörkö mustia kippurahäntäisiä Kissoja. Vaikka kissaolioiden tila onkin sama, ovat oliot kissojen tapaan ainutkertaisia ja erillisiä yksilöitä. Olio Häntä Väri Möykky kippura musta Mörkö Möykky Mörkö

Metodit Metodit (method) mallintavat olioiden käytöksen eli tietyn luokan olioille ominaiset toiminnot. Metodit voivat muuttaa olion tilaa. Esimerkiksi Kissat osaavat muun muassa syödä, äännellä, raapia, leikkiä ja nukkua. Nämä toiminnot ilmenevät vaikkapa Mörkö-kissan käytöksestä. Annetaan metodien nimet käskymuodossa (yksikön imperatiivi): syö(mitä), ääntele(ääni), raavi(mitä), leiki(millä) ja nuku(aika).

Metodit Esim. Tietokoneohjelman painike voi olla aktiivinen tai passiivinen ja painiketta klikataan hiirellä. Metodeja: aktivoi(), passivoi(), ilmoitaKlikkaus(). Esim. Murtoluvut ⅓ ja ⅔ voidaan vaikkapa kertoa ja yksittäinen murtoluku esimerkiksi supistaa. Metodeja: kerro(murtoluku), supista().

Viestit Olioparadigmassa ohjelma on joukko keskenään “keskustelevia” olioita. Abstraktisti voidaan ajatella, että oliot kommunikoivat viesteillä (message). Luonteva ajattelumalli, koska myös reaalimaailman oliot lähettävät viestejä toisilleen. Lähettäjän (sender) viestin aktivoi vastaanottajan (receiver) metodin. Olio ymmärtää vain metodeihinsa liittyvät viestit.

Viestit Mörkö-kissa voi esimerkiksi naukua omistajalleen, joka sitten ruokkii käskystä kissansa raksuilla. Reaalimaailma: Oliokaaviona: Mörkö omistaja Miau! mörkö: Kissa syö(raksuja) omistaja: Ihminen ruoki()

Olioperustainen ohjelmointi Olio on ohjelman perusyksikkö: Ohjelma kuvataan keskenään kommunikoivina olioina. Luokat toteutetaan olio-ohjelmointikielellä. Oliot luodaan jollakin operaatiolla luokastaan. Oliot voidaan yksilöidä esimerkiksi viitteen avulla. Viestiä vastaa metodin kutsuminen esimerkiksi pistenotaatiolla. Toteutusvaiheeseen pääsy vaatii usein luokkien ja niiden välisten suhteiden mallintamista. Tämä tehdään usein UML:llä.