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

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.
– Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä.
19. Unified Modeling Language (UML)
ER-mallista relaatiomalliin
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.
Antti-Jussi Lakanen Nuorten peliohjelmointi 2009 / Jyväskylän yliopisto.
OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT. LUOKKA JAVA ohjelma koostuu luokista LUOKKA sisältää metodeja molemmat sisältävät attribuutteja eli muuttujia.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
Poikkeustenkäsittely  Mitä poikkeustenkäsittely tarkoittaa?  Poikkeuksen käsitteleminen  Poikkeusluokkien hierarkia  Poikkeuksen heittäminen 1.
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.
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.
© Jukka Juslin1 Osio2 Olio-ohjelmointi: Merkkijonot eli Stringit Jukka Juslin.
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.
Tentti. Olio-ohjelmoinnin perusteet | Kevät 2015 | Jorma Laurikkala2 Tentti Torstaina klo 16–20 D10ab (Päätalo). Pääasiassa Java-ohjelmien kirjoittamista.
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.
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,
6. Metodit.
13. Pakkaukset.
8. Periytyminen.
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 8.1

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

8.3 Mitä on periytyminen? Periytyminen (inheritance) tarkoittaa luokan A piirteiden siirtymistä jollekin toiselle luokalle B. Tällöin sanotaan, että A on B :n yliluokka (superclass) ja vastaavasti B on A :n aliluokka (subclass). 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 kolmiokärkisenä yliluokkaan osoittavana nuolena. AabAab BcBc Piirteet: a, b Piirteet: a, b, c

8.4 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 BC D

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

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

8.7 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 BC D

8.8 Yksittäis- ja moniperiytyminen Moniperiytymisestä sekä hyötyä että haittaa. Joissakin kielissä, Java mukaan lukien, on vain yksittäisperiytyminen. Tämä Javan ominaisuus voidaan kiertää osin rajapintojen avulla. C++ on esimerkki kielestä, jossa luokalla voi olla useita yliluokkia. Jatkossa periytymisen esittely rajoitetaan vain yksittäisperiytymiseen.

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

8.10 Periytymisen käyttö Pragmaattinen näkökulma: − Periytyminen tukee koodin uudelleenkäyttöä: aliluokkien ei tarvitse toistaa perittyjä piirteitä. − Periytymisen avulla voidaan kehittää ohjelmistoja tarkentaen (inkrementaalisesti): aliluokkia voidaan lisätä ilman, että yliluokkia tarvitsee muuttaa. − Periytymisen avulla voidaan toteuttaa monimuotoisuutta.

8.11 Periytymisen käyttö Filosofinen näkökulma: − Periytyminen tukee käsitteelliseen mallintamiseen perustuvaa ohjelmistokehitystä: aliluokka erikoistus ja yliluokka yleistys. − Näin ollen periytymisellä voidaan mallintaa käsitehierarkioita. − Periytymistä kutsutaankin joskus yleistämiseksi (generalization), koska periytyminen liittyy läheisesti käsitteellisestä mallintamisesta tuttuun IsA-suhteeseen.

8.12 Periytymisen käyttö 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 OpiskelijaOpettaja Nisäkäs Eläin Kissa

8.13 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 määritellyn toiminnallisuuden toteuttamalla perityn metodin eri tavoin. Korvaaminen on eräs monimuotoisuuden muoto. − Aliluokka tyypillisesti rakentaa olion omalla tavallaan.

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

8.15 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