2. Olio-ohjelmoinnin perusteita 2.1

Samankaltaiset tiedostot
2. Olio-ohjelmoinnin perusteita 2.1

4. Olio-ohjelmoinista lyhyesti 4.1

2. Olio-ohjelmoinista lyhyesti 2.1

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

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

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

Luokka- ja oliokaaviot

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

1. Olio-ohjelmointi 1.1

Oliot viestivät metodeja kutsuen

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

Ohjelmistotekniikan menetelmät, UML

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

Ohjelmistojen mallintaminen Unified Modeling Language (UML)

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

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

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

Mitä on periytyminen?

Olioperustaisuus (object oriented)

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

UML Luokkakaavio 14:41

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

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

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

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

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

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

Ohjelmistojen mallintaminen. Luento 3, 9.11.

VH5, JOTU, MagicDraw:n käyttö

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

Ohjelmoinnin perusteet Y Python

9. Periytyminen Javassa 9.1

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

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

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

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

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

3. Käsiteanalyysi ja käsitekaavio

UML -mallinnus TILAKAAVIO

Olio-ohjelmointi: Luokkien toteuttaminen. Jukka Juslin

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

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

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

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

Mikä yhteyssuhde on?

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

7. Oliot ja viitteet 7.1

12. Monimuotoisuus 12.1

TIE = JOTU. VH5 - MagicDraw

9. Periytyminen Javassa 9.1

HELIA 1 (17) Outi Virkki Tiedonhallinta

UML -mallinnus LUOKKAKAAVIO EERO NOUSIAINEN

UML-kielen formalisointi Object-Z:lla

UML - unified modeling language

16. Javan omat luokat 16.1

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

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

1. Omat operaatiot 1.1

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

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

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

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

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

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

Javan perusteita. Janne Käki

Sokkelon sisältö säilötään linkitetyille listalle ja tekstitiedostoon. Työ tehdään itsenäisesti yhden hengen ryhmissä. Ideoita voi vaihtaa koodia ei.

18. Abstraktit tietotyypit 18.1

Ohjelmistojen mallintaminen kertausta Harri Laine 1

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op

8/20: Luokat, oliot ja APIt

12. Monimuotoisuus 12.1

Kertaus: yleistys-erikoistus ja perintä

Luokkakaavion laatiminen

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

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

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

KOHDELUOKAN MÄÄRITTELY

Luokat ja oliot. Ville Sundberg

Ohjelmistojen mallintaminen Luokkakaaviot Harri Laine 1

UML:n yleiskatsaus. UML:n osat:

19. Unified Modeling Language (UML)

Luokkakohtaiset eli stattiset metodit ja attribuutit

Olio-ohjelmointi Johdanto olio-ohjelmointiin

19. Olio-ohjelmointia Javalla 19.1

on ohjelmoijan itse tekemä tietotyyppi, joka kuvaa käsitettä

käyttötapaukset mod. testaus

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton

11/20: Konepelti auki

Olio-ohjelmoinnissa luokat voidaan järjestää siten, että ne pystyvät jakamaan yhteisiä tietoja ja aliohjelmia.

Kuva 1. Jokaisen tavallisen kuvan tasotyökalussa näkyy vain yksi taso, tässä nimellä tausta.

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

Ohjelmoinnin peruskurssi Y1

Luokka (class) esitetään suorakulmion avulla, jonka sisälle kirjoitetaan luokan nimi (vahvennettuna).

Ohjelmistotekniikan menetelmät, suunnittelumalleja

T Olio-ohjelmointi Osa 5: Periytyminen ja polymorfismi Jukka Jauhiainen OAMK Tekniikan yksikkö 2010

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

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. II Johdanto olio-ohjelmointiin


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

Transkriptio:

2. Olio-ohjelmoinnin perusteita 2.1

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

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

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

Käsitteet Ajatusmaailman mielikuvia, jotka auttavat hahmottamaan 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. 2.5

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ä. 2.6

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

Käsitteet, luokat ja oliot Esim. Olkoon sovellusalue kirjasto. Käsitteitä: teos, lainaus, varaus, asiakas, sakko jne. Asiakasluokkaan 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. 2.8

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

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. Olio Häntä Väri Möykky kippura musta Möykky Rontti Rontti tavallinen musta 2.10

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

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

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

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

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

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ä. 2.16