8. Periytyminen.

Slides:



Advertisements
Samankaltaiset esitykset
Tuloksellinen Java-ohjelmointi Luku 3 Luokkien käyttäminen
Advertisements

Rajapintaluokat Rajapintaluokka luettelee metodit, joille tulee löytyä toteutus asianomaisen rajapinnan toteuttavista luokista. Rajapintaluokka on siis.
Minimaalinen Java-ohjelma •Kaikki ohjelmakoodi on luokkamäärityksen sisällä •Ohjelma käynnistyy ”public static void main(String[] args)”-metodista •System.out.print()
– Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä.
19. Unified Modeling Language (UML)
Koostumussuhde Jukka Juslin © Jukka Juslin.
12. Monimuotoisuus Sisällys •Johdanto. •Periytymismekanismi määrittää alityypityksen. − Viitteiden sijoitus ja vertailu. •Staattinen ja dynaaminen.
6. Metodit.
© Jukka Harju, Viittausmuuttujat. © Jukka Harju, Viittaukset •Viittausmuuttuja sisältää tiedon siitä missä muistipaikassa olio.
© Jukka Harju, Jukka Juslin1 Java-ohjelmointi opas ammattimaiseen osaamiseen Luku 12 Periytyminen.
16. Javan omat luokat.
Muutamia käsitteitätMyn1 Muutamia käsitteitä •Perintä (inheritance) on luokkien välinen suhde, jossa johdettu luokka (subclass, derived class) perii kantaluokan,
Luokkakaaviot Luokkakaaviot Tekninen suunnittelu.
2. Olio-ohjelmoinnin perusteita
Olio-ohjelmointi. Mitä olio-ohjelmointi on ?  Pyritään mallintamaan jotain reaalimaailman kohdetta tietokoneohjelman avulla  Olio on luokan ilmentymä.
13. Pakkaukset.
Perintä. Yleistä Olio-ohjelmoinnin menetelmä muodostaa uusia luokkia aiemmin määriteltyjen luokkien avulla Luokka saa automaattisesti käyttöönsä kaikki.
Ohjelmiston toteutus (teknisestä näkökulmasta)
9. Periytyminen Javassa.
© Jukka Harju, Jukka Juslin
1 Kertaus koetta varten oleellisista asioista Jukka Juslin.
7. Oliot ja viitteet.
Luokan määrittely class-määreellä tMyn1 Luokan määrittely class-määreellä Luokan määrittely tarkoittaa luokan tietojäsenten esittelyä ja jäsenfunktioiden.
UML-luokkakaaviot ja Java
4. Attribuutit 4.1. Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2.
5. Kapselointi Yleistä Kapseloinnilla (encapsulation) tarkoitetaan luokan tietojen ja toimintojen pakkaamista yhdeksi suojatuksi kokonaisuudeksi.
10. Abstrakti luokka Johdanto Abstrakti luokka (abstract class) poikkeaa konkreettisesta luokasta (ei-abstrakti luokka) siten, että siitä ei.
17. Kooste Kooste Kooste (aggregation) on luokkien A ja B välinen suhde, joka tarkoittaa “A on B:n osa” tai “A kuuluu B:hen”. − Koostesuhteessa.
Harjoitustyö 1. Olio-ohjelmoinnin perusteet | Kevät 2015 | Jorma Laurikkala2 Harjoitustyö Tehtävä: ohjelmoi lötköjen kansoittamaa alkulimaa simuloiva.
Mallinnustavat.
Jouni Juntunen Oulun seudun ammattikorkeakoulu Liiketalouden yksikkö
Johdetun luokan olion esittely... tMyn1 Johdetun luokan olion esittely ja määrittely Esittelyluokka tarkoittaa olion tunnuksen luokkaa. Määrittelyluokka.
© Jukka Harju, Sisältö 1. Mitä on periytyminen Javassa? 2. Periytyminen UML-luokkakaaviossa 3. Termejä 4. Periytymishierarkia 5. Periytyminen vs.
Vesa Ollikainen & Outi Grotenfelt
11. Rajapinnat Sisällys Mitä rajapinnat ovat? Kuinka ne määritellään ja otetaan käyttöön? Moniperiytyminen rajapintojen avulla. Varoituksen.
Monimuotoinen luokka tMyn1 Monimuotoinen luokka Monimuotoinen luokka mahdollistaa saman jäsenfunktion toteutuksen monella tavalla. Tällöin puhutaan virtuaalisesta.
1 © Jukka Juslin Luokat, attribuutit ja metodit Yleistietoa: seuraavalla koulutusviikolla tarkempi käsittely.
Tentti. Olio-ohjelmoinnin perusteet | Kevät 2015 | Jorma Laurikkala2 Tentti Torstaina klo 16–20 D10ab (Päätalo). Pääasiassa Java-ohjelmien kirjoittamista.
8. Periytyminen Sisällys Mitä on periytyminen? Yksittäis- ja moniperiytyminen. Oliot ja perityt luokat. Periytymisen käyttö.
15. Ohjelmoinnin tekniikkaa
Kertaus: yleistys-erikoistus ja perintä ● Nauta, Lehmä ja Kuttu ovat Kotieläimiä, Kotieläimet Eläimiä ● Kotieläimillä (siis myös Naudoilla, Lehmillä ja.
UML-luokkakaavio ● Luokkakaavio (class diagram) kuvaa järjestelmän luokkarakennetta ● Mitä luokkia on olemassa ● Minkälaisia luokat ovat ● Luokkien suhteet.
16. Javan omat luokat Sisällys Johdanto. Object -luokka: − toString -, equals -, clone - ja getClass -metodit. Comparable -rajapinta: − compareTo.
Yksikkötestaus ● Yksikkötestauksella tarkoitetaan lähdekoodiin kuuluvien yksittäisten osien testaamista. Termi yksikkö viittaa ohjelman pienimpiin mahdollisiin.
15. Ohjelmoinnin tekniikkaa Sisällys For-each-rakenne. Lueteltu tyyppi enum. Override-annotaatio. Geneerinen ohjelmointi.
17. Kooste.
5. Kapselointi.
Harjoitustyö.
Tentti.
13. Pakkaukset.
11. Rajapinnat.
1. Olio-ohjelmointi.
15. Ohjelmoinnin tekniikkaa
Rajapintaluokat Rajapintaluokka luettelee metodit, joille tulee löytyä toteutus asianomaisen rajapinnan toteuttavista luokista. Rajapintaluokka on siis.
Geeni vaikuttaa ominaisuuksiin eri tavoin
Muutamia käsitteitä Perintä (inheritance) on luokkien välinen suhde, jossa johdettu luokka (subclass, derived class) perii kantaluokan, perusluokan (superclass,
14. Hyvä ohjelmointitapa.
6. Metodit.
13. Pakkaukset.
16. Javan omat luokat.
4. Attribuutit.
15. Ohjelmoinnin tekniikkaa
– Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä
3. Attribuutit.
13. Pakkaukset.
12. Monimuotoisuus.
8. Periytyminen.
4. Luokan testaus ja käyttö olion kautta
2. Olio-ohjelmoinnin perusteita
1. Olio-ohjelmointi.
Esityksen transkriptio:

8. Periytyminen

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

Mitä on periytyminen? Periytyminen (inheritance) tarkoittaa sitä, että luokka B saa käyttöönsä osan tai kaikki luokan A piirteistä. Tällöin sanotaan, että A on B:n yliluokka (superclass) ja vastaavasti B on A:n aliluokka (subclass). A a b B c Piirteet: a, b Piirteet: a, b, c UML:n luokkakaaviossa luokkaa symboloi laatikko, jossa annetaan luokan nimi ja usein myös luokan piirteet. Attribuutit ja metodit erotetaan myöhemmin väliviivalla, kun luokkasymboleita ryhdytään piirtämään hieman tarkemmin. Periytymissuhde piirretään onttokärkisenä yliluokkaan osoittavana nuolena.

Mitä on periytyminen? Yliluokalla on yksi tai useampia aliluokkia. Aliluokka tuntee yliluokkansa, mutta ei aliluokkiaan. Luokka A on luokan B esi-isä (ancestor) jos A on B:n yliluokka tai B:n yliluokan esi-isä. Luokka B on luokan A jälkeläinen (descendant), jos B on A:n aliluokka tai A:n jonkin aliluokan jälkeläinen. A B C D

Mitä on periytyminen? A Piirteet: a, b a b Piirteet: a, b, c Piirteet: a, b, d, e B C d e c D Piirteet: a, b, d, e, f f

Yksittäis- ja moniperiytyminen Yksittäisperiytymisessä (single inheritance) jokaisella aliluokalla on yksi yliluokka. Moniperiytymisessä (multiple inheritance) aliluokalla voi olla useampia yliluokkia. A B A1 B A2

Yksittäis- ja moniperiytyminen Yksittäisperiytyminen tuottaa selkeän puumaisen rakenteen. Moniperiytyminen on kuvattavissa vaikeampiselkoisena verkkona. Molemmin tavoin saadaan aikaiseksi luokkahierarkia, jolla on juuri (root) tai juuria. A B C D

Yksittäis- ja moniperiytyminen Moniperiytymisestä sekä hyötyä että haittaa. Joissakin kielissä, Java mukaan lukien, on vain yksittäisperiytyminen. Moniperiytyminen voidaan ilmaista Javassa rajoitetusti rajapintojen avulla. C++ on esimerkki kielestä, jossa luokalla voi olla useita yliluokkia. Jatkossa periytymisen esittely rajoitetaan vain yksittäisperiytymiseen.

Oliot ja perityt luokat Periytymisen kautta oliolla voi olla useampia luokkia. Jatkossa olion perus-luokaksi sanotaan luokkaa, josta olio on luotu. Kukin yliluokka lisää olioon uuden kerroksen piirteitä (attribuutteja ja/tai metodeja). A A-luokan olio C A C-luokan olio B A B-luokan olio D C D-luokan olio A

Periytymisen käytännön näkökulmasta Periytyminen tukee koodin uudelleenkäyttöä; aliluokkien ei tarvitse toistaa perittyjä piirteitä. Periytymisen avulla voidaan kehittää ohjelmistoja tarkentaen (inkrementaalisesti), koska aliluokkia voidaan lisätä ilman, että yliluokkia tarvitsee muuttaa. Periytymisen avulla voidaan toteuttaa monimuotoisuutta.

Periytyminen filosofisesta näkökulmasta Periytyminen tukee käsitteelliseen mallintamiseen perustuvaa ohjelmistokehitystä: aliluokka on käsitteen erikoistus ja yliluokka on yleistys. Periytymisellä voidaan mallintaa käsitehierarkioita. Periytymistä kutsutaankin joskus yleistämiseksi (generalization), koska periytyminen liittyy läheisesti käsitteellisestä mallintamisesta tuttuun IsA-suhteeseen. Periytyminen on luontevaa, jos lause “Aliluokka IsA Yliluokka.” tuntuu järkevältä. Esimerkiksi “Auto IsA Ajoneuvo.”

Periytymisen käyttö Eräs käsitehierarkia periytymisellä esitettynä: Nisäkäs IsA Eläin. Ihminen IsA Nisäkäs, Kissa IsA Nisäkäs. Opiskelija IsA Ihminen, Opettaja IsA Ihminen. Ihminen Opiskelija Opettaja Nisäkäs Eläin Kissa

Periytymisen käyttö Aliluokan tulisi aina tuoda yliluokkaansa jokin tarkennus (tai laajennus). Aliluokassa voidaan määritellä uusia piirteitä (attribuutteja ja metodeja). Aliluokka voi korvata (override) yliluokassa ilmentymämetodilla määritellyn toiminnallisuuden toteuttamalla perityn metodin eri tavoin. Korvaaminen on eräs monimuotoisuuden muoto. Aliluokka tyypillisesti rakentaa olion omalla tavallaan.

Nisäkäs, kissa ja ihminen Piirteet: elossa, paino, syö(), onkoIso() elossa, paino, syö(), onkoIso(), henkilötunnus, puhu() väri, häntä, ääntele(), kehrää() Nisäkäs elossa, paino Ihminen Kissa henkilötunnus puhu() väri, häntä ääntele(), kehrää()

Kissa-olio Misse-olio luodaan Kissa-luokasta: Kissa on missen perusluokka. Koska jokainen kissa on nisäkäs, on misse on sekä Kissa että Nisäkäs. Misse perii Nisäkäs-luokasta attribuutit elossa ja paino sekä metodit syö() ja onkoIso(), jotka voidaan korvata Kissa-luokassa siten, että ne toimivat kissalle ominaisesti. Lisäksi missellä on kissoille ominaiset piirteet (esim. attribuutti häntä ja metodi kehrää(). väri, häntä ääntele(), kehrää() elossa, paino syö(), onkoIso() Nisäkäs-kerros Kissa-kerros