1 / 22

Rajapintaluokat

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.

Download Presentation

Rajapintaluokat

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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: tMyn

  2. tMyn

  3. tMyn

  4. tMyn

  5. 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: tMyn

  6. tMyn

  7. tMyn

  8. tMyn

  9. Tilanteen voi kiertää antamalla tyhjän rungon: tMyn

  10. tMyn

  11. tMyn

  12. 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. tMyn

  14. 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. 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: tMyn

  16. tMyn

  17. tMyn

  18. tMyn

  19. tMyn

  20. 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. tMyn

  22. 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ä. tMyn

More Related