Lataa esitys
Esittely latautuu. Ole hyvä ja odota
JulkaistuPäivi Turunen Muutettu yli 9 vuotta sitten
1
Rajapintaluokat Rajapintaluokka luettelee metodit, joille tulee löytyä toteutus asianomaisen rajapinnan toteuttavista luokista. Rajapintaluokka on siis 100%:sti abstrakti luokka: rajapintaluokassa ei ole yhdellekään metodille toteutusta. Rajapintaluokkaan ei luonnollisestikaan voi luoda olioita. Käytössä ovat varatut sanat interface ja implements: Rajapintaluokat tMyn
2
Rajapintaluokat tMyn
3
Rajapintaluokat tMyn
4
Rajapintaluokat tMyn
5
Luokka voi toteuttaa useammankin rajapinnan
Luokka voi toteuttaa useammankin rajapinnan. Sellaisessa tapauksessa otsikkorivillä luetellaan rajapintojen nimet pilkuilla eroteltuina. Jos luokka toteuttaa rajapinnan, niin silloin kyseisessä luokassa tulee olla jokaiselle rajapinnan metodille toteutus: Rajapintaluokat tMyn
6
Rajapintaluokat tMyn
7
Rajapintaluokat tMyn
8
Rajapintaluokat tMyn
9
Tilanteen voi kiertää antamalla tyhjän rungon:
Rajapintaluokat tMyn
10
Rajapintaluokat tMyn
11
Rajapintaluokat tMyn
12
Rajapintaluokat tMyn
13
Rajapintaluokka siis omalla tavallaan antaa yhteisen rakenteen niille luokille, jotka toteuttavat kyseisen rajapintaluokan. Rajapintaluokka ei ole sama asia kuin moniperintä. PHP ei tue moniperintää. Rajapintaluokan toteuttava luokka (yksittäinen luokka siis saattaa toteuttaa useammankin rajapinnan) saa rajapintaluokalta ainoastaan metodien esittelyt, ei yhdenkään toteutusta. Tyypillisesti ohjelmointiprojektissa on monia ohjelmoijia – tällöin rajapintaluokka on yksi toimiva tapa määritellä ylemmän tason toiminnallisuutta. Rajapintaluokat tMyn
14
Ovatko rajapintaluokat vaihtoehtoja abstrakteille luokille?
Ohjelmoinnin aikana voi käydä ilmi, että johonkin luokkaan ei koskaan luoda olioita. Sellainen luokka on hyvä kandidaatti rajapintaluokaksi! Toinen esimerkki: sinulla on jonkin sortin tajua siitä millaisia metodeita luokalla tulisi olla, mutta yksityiskohdat eivät vielä ole tiedossa. Ovatko rajapintaluokat vaihtoehtoja abstrakteille luokille? Ero voisi olla vaikkapa tällainen: rajapintaluokan voi toteuttaa kaksi (tai miten monta tahansa) luokkaa, jotka eivät ole millään muotoa looginen osa tuota rajapintaluokkaa. Rajapintaluokat tMyn
15
Seuraavassa esimerkissä on kaksi toisiinsa loogisesti riippumatonta luokkaa: Lemmikki ja Koti. Kummatkin luokat toteuttavat rajapintaluokan vakuutuskelpoinen. Abstraktista kantaluokasta Elain periytetään johdettu luokka Lemmikki: Rajapintaluokat tMyn
16
Rajapintaluokat tMyn
17
Rajapintaluokat tMyn
18
Rajapintaluokat tMyn
19
Rajapintaluokat tMyn
20
Rajapintaluokat tMyn
21
UML-kaavio voisi näyttää kuvan 1 mukaiselta.
Yleistys (generalization) tai perintä (inheritance) kuvataan yhtenäisellä viivalla luokkien välillä, jonka kantaluokan puoleisessa päässä on ontto kolmio. Luokkien Elain ja Lemmikki välinen suhde on yleistys. Toteutus (realization) kuvataan katkoviivalla luokkien välillä, jonka rajapintaluokan puoleisessa päässä on ontto kolmio. Luokkien vakuutuskelpoinen ja Lemmikki sekä luokkien vakuutuskelpoinen ja Koti välinen suhde on toteutus. Rajapintaluokat tMyn
22
Kuva 1. UML-luokkakaavio rajapintaluokan esimerkistä.
Elain {abstract} <<interface>> vakuutuskelpoinen #ika:int <<constructor>> +__construct(ika) +KenenOmistuksessa():string {abstract} +HaeIka():int +HaeArvoTieto():string Lemmikki Koti -nimi:string <<constructor>> +__construct(ika, nimi) +HaeNimi():string +KenenOmistuksessa():string +HaeArvoTieto():string +HaeArvoTieto():string Kuva 1. UML-luokkakaavio rajapintaluokan esimerkistä. Rajapintaluokat tMyn
Samankaltaiset esitykset
© 2023 SlidePlayer.fi Inc.
All rights reserved.