2. Olio-ohjelmoinnin perusteita 2.1

Samankaltaiset tiedostot
2. Olio-ohjelmoinnin perusteita 2.1

Rajapinnasta ei voida muodostaa olioita. Voidaan käyttää tunnuksen tyyppinä. Rajapinta on kuitenkin abstraktia luokkaa selvästi abstraktimpi tyyppi.

Sisällys. Mitä on periytyminen? Yksittäis- ja moniperiytyminen. Oliot ja perityt luokat. Periytymisen käyttö. 8.2

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

Mitä on periytyminen?

Sisällys. Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2

Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen

Oliot viestivät metodeja kutsuen

4. Olio-ohjelmoinista lyhyesti 4.1

2. Olio-ohjelmoinista lyhyesti 2.1

9. Periytyminen Javassa 9.1

Sisällys. 19. Unified Modeling Language (UML) Johdanto. Johdanto. Johdanto. Luokkakaavio:

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä

9. Periytyminen Javassa 9.1

Ohjelmistotekniikan menetelmät, UML

Ohjelmistojen mallintaminen Unified Modeling Language (UML)

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä

Antti-Jussi Lakanen Ohjelmointi 1, C# / kevät 2011

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

Johdatus sovellussuunnitteluun, s99, osa3 Helsingin yliopisto;/tktl Harri Laine 1. Olioiden väliset yhteydet. Olioiden väliset yhteydet

Johdatus sovellussuunnitteluun, s99, osa3 Helsingin yliopisto;/tktl Harri Laine 1. Olioiden väliset yhteydet. Olioiden väliset yhteydet

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

Yhteydelle voi antaa nimen kumpaankin suuntaan Sille ei tarvise antaa lainkaan nimeä Yhteysnimen asemasta tai lisäksi voidaan käyttää roolinimiä

Luokka- ja oliokaaviot

Johdanto. Olio (Object) Luokka (Class) Olion kuvaaminen

1. Olio-ohjelmointi 1.1

12. Monimuotoisuus 12.1

UML Luokkakaavio 14:41

3. Käsiteanalyysi ja käsitekaavio

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

Kooste. Esim. Ympyrän keskipiste voidaan ajatella ympyrän osaksi.

16. Javan omat luokat 16.1

Aalto Yliopisto T Informaatioverkostot: Studio 1. Oliot ja luokat Javaohjelmoinnissa

Olio-ohjelmointi: Luokkien toteuttaminen. Jukka Juslin

Javan perusteita. Janne Käki

4. Luokan testaus ja käyttö olion kautta 4.1

Luokkakohtaiset eli stattiset metodit ja attribuutit

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

TIEDONHALLINTA - SYKSY Luento 7. Pasi Ranne /10/17 Helsinki Metropolia University of Applied Sciences

12. Monimuotoisuus 12.1

UML -mallinnus LUOKKAKAAVIO EERO NOUSIAINEN

Ohjelmistojen mallintaminen. Luento 3, 9.11.

Olioperustaisuus (object oriented)

HELIA 1 (14) Outi Virkki Käyttöliittymät ja ohjlmiston suunnittelu

Johdatus sovellussuunnitteluun, s99, osa2 Helsingin yliopisto;/tktl Harri Laine 1. Olioperustaisuus (object oriented)

UML -mallinnus TILAKAAVIO

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

7. Oliot ja viitteet 7.1

Sisällys. 7. Oliot ja viitteet. Olion luominen. Olio Java-kielessä

Tällä harjoituskerralla on tarkoituksena harjoitella käyttötapaus-, luokka- ja tapahtumasekvenssikaavioiden luontia.

UML - unified modeling language

VH5, JOTU, MagicDraw:n käyttö

8/20: Luokat, oliot ja APIt

19. Unified Modeling Language (UML)

TIE = JOTU. VH5 - MagicDraw

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

Luokkakaavion laatiminen

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

YHTEYSSUHDE (assosiation)

Johdatus sovellussuunnitteluun, s99, osa2 Helsingin yliopisto;/tktl Harri Laine 1. Olioperustainen ohjelmistokehitys

SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T

Ohjelmistojen mallintaminen, mallintaminen ja UML

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op

Ohjelmistojen mallintaminen kertausta Harri Laine 1

Ohjelmistotekniikan menetelmät

UML-kielen formalisointi Object-Z:lla

Ohjelmistotekniikan menetelmät

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Kertaus: yleistys-erikoistus ja perintä

Periytyminen (inheritance)

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

Olio-ohjelmointi Johdanto olio-ohjelmointiin

Linkitetystä listasta perittyä omaa listaa käytetään muun muassa viestiin liittyvien vastausten säilömiseen.

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

Hakemistojen sisällöt säilötään linkitetyille listalle.

Joskus yleistäminen voi tapahtua monen ominaisuuden pohjalta. Myös tällöin voi tulla moniperintätilanteita.

Johdatus sovellussuunnitteluun, s2000, osa4 Helsingin yliopisto;/tktl. Harri Laine 1. Luokka- ja oliokaaviot. Luokka- ja oliokaaviot

Taulukot. Jukka Harju, Jukka Juslin

Kompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma

UML:n yleiskatsaus. UML:n osat:

Mikä yhteyssuhde on?

Luento 17: Perintä. self.points = 0 self.status = 'Student'

The OWL-S are not what they seem

Ohjelmistojen mallintaminen. Luento 4,

Ohjelmistojen mallintaminen, mallinnustekniikat käytännössä

KARHU. Jos näet metsässä karhun, a) huuda kovaa. b) juokse lujaa. c) kiipeä puuhun. d) leiki kuollutta.

JHS 162 Paikkatietojen mallintaminen tiedonsiirtoa varten Liite 1 UML-mallinnus

Sisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto

CS-A1150 Tietokannat CS-A1150 Tietokannat / 35

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

Imperatiivisen ohjelmoinnin peruskäsitteet. Meidän käyttämän pseudokielen lauseiden syntaksi

Perusarkkitehtuurin ja vuorovaikutuksen mallintamisen perusteita.


HELIA 1 (17) Outi Virkki Tiedonhallinta

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Transkriptio:

2. Olio-ohjelmoinnin perusteita 2.1

Sisällys Luokat ja oliot. Käsitteet, luokat ja oliot. Attribuutit, olion tila ja identiteetti. Metodit ja viestit. 2.2

Luokat ja oliot Olio-ohjelmoinnin keskeisimpiä termit, luokka (class) ja olio (object), liittyvät kiinteästi yhteen, mutta ovat kuitenkin erilliset. Luokka on yleinen malli, joka määrää olionsa (ilmentymänsä) tiedot ja toiminnallisuuden eli olion piirteet. Luokkien ja olioiden suhteesta seuraa, että oliolla on aina luokka ja että luokalla voi olla 0, 1 tai useampia olioita. Luokka itsessään mallintaa karkealla tasolla käsitettä (concept). 2.3

Käsitteet Ajatusmaailman mielikuvia, jotka auttavat hahmottamaan maailmaa ja tunnistamaan sen olioita. Ilmaistaan kielellisesti määritelmän avulla. Käsitteeseen viitataan sanalla tai termillä. 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. Örkki-käsite ei ole kotoisin tästä maailmasta. 2.4

Käsitteet, luokat ja oliot Olio-ohjelmoinnissa sovellusalueen ja sen ympäristön käsitteitä mallinnetaan luokiksi, joista luotavat oliot muodostavat ohjelman. Käsitteen vangitseminen sellaisenaan luokaksi 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ä. Jos luokkia ja niiden välisiä suhteita ei voida tunnistaa suoraan tai tarkempi ajattelu on ylipäätänsä paikallaan, on sovellusalue analysoitava muodollisemmin. Tämä tehdään yleensä UML:n avulla. 2.5

Käsitteet, luokat ja oliot Luokaksi soveltuvat käsitteet ovat yleensä substantiiveja. kissa, koira, auto, rengas, henkilö, kokonaisluku,... Yksittäisellä arvolla ilmaistava substantiivi ei ole on usein luokkaan liittyvä tieto. väri, paino, pituus, ikä,,... Toimintaa ilmaisevat käsitteet (esimerkiksi maukuminen ja haukkuminen) sopivat luokan toiminnallisuuden mallintamiseen. Olkoon sovellusalue kirjasto. Käsitteitä: teos, lainaus, varaus, asiakas, sakko jne. Asiakas-luokkaan voitaisiin sijoittaa muun muassa asiakkaan nimi ja yhteystiedot. 2.6

Attribuutit Olion tiedot määritellään attribuuteilla (attribute), jotka voivat esiintyä yhdessä tai useammassa luokassa. Kissoilla ja linnuilla on väri. Toisaalta kissoilla on häntä ja linnuilla on pyrstö. Attribuutti voidaan jakaa periytymismekanismin avulla luokkien kesken, kun periyttäminen on käsitteellisesti luontevaa. Attribuutteja pyritään käyttämään mahdollisimman vähän ja vain käsitteen mallintamiseen. 2.7

Attribuutit Oliolla on tila (state), jonka attribuutin arvot määräävät. Luokka toteutetaan yleensä siten ettei olion tilaa päästä muuttamaan suoraan attribuuttien arvoja sijoittamalla. 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. Olio Häntä Väri Möykky kippura musta Möykky Rontti Rontti tavallinen musta 2.8

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öykky Mörkö Mörkö kippura musta 2.9

Metodit Metodit (method) mallintavat olioiden toiminnallisuuden 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ä. Metodien nimet annetaan käskymuodossa (yksikön imperatiivi) syö, ääntele, raavi, leiki, nuku, 2.10

Metodit Olioparadigmassa ohjelma on joukko keskenään keskustelevia olioita. Abstraktisti voidaan ajatella, että oliot kommunikoivat keskenään viesteillä (message). Olio voi viestiä myös itselleen. 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. 2.11

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