Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

Rajapintaluokat Rajapintaluokka luettelee metodit, joille tulee löytyä toteutus asianomaisen rajapinnan toteuttavista luokista. Rajapintaluokka on siis.

Samankaltaiset esitykset


Esitys aiheesta: "Rajapintaluokat Rajapintaluokka luettelee metodit, joille tulee löytyä toteutus asianomaisen rajapinnan toteuttavista luokista. Rajapintaluokka on siis."— Esityksen transkriptio:

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


Lataa ppt "Rajapintaluokat Rajapintaluokka luettelee metodit, joille tulee löytyä toteutus asianomaisen rajapinnan toteuttavista luokista. Rajapintaluokka on siis."

Samankaltaiset esitykset


Iklan oleh Google