Mitä on periytyminen?

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

Rajapinnasta ei voida muodostaa olioita. Voidaan käyttää tunnuksen tyyppinä. Rajapinta on kuitenkin abstraktia luokkaa selvästi abstraktimpi tyyppi.

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

9. Periytyminen Javassa 9.1

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä

9. Periytyminen Javassa 9.1

12. Monimuotoisuus 12.1

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä

12. Monimuotoisuus 12.1

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

2. Olio-ohjelmoinnin perusteita 2.1

Sisällys. JAVA-OHJELMOINTI Osa 6: Periytyminen ja näkyvyys. Luokkahierarkia. Periytyminen (inheritance)

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

Sisällys. 19. Unified Modeling Language (UML) Johdanto. Johdanto. Johdanto. Luokkakaavio:

Ohjelmistojen mallintaminen Luokkakaaviot Harri Laine 1

Ohjelmistotekniikan menetelmät, luokkamallin laatiminen

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki

16. Javan omat luokat 16.1

815338A Ohjelmointikielten periaatteet

19. Unified Modeling Language (UML)

Sisällys. Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2

Oliot viestivät metodeja kutsuen

A) on käytännöllinen ohjelmointitekniikka. = laajennetaan aikaisemmin tehtyjä luokkia (uudelleenkäytettävyys)

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

Luokkakaavion laatiminen

Kertaus: yleistys-erikoistus ja perintä

Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen

Luokkamalli LUOKKAKAAVIO. Tämän osan sisältö. Luokkamalli. Luokka ja olio. Luokkakaavio (class diagram)

15. Ohjelmoinnin tekniikkaa 15.1

Johdanto. Olio (Object) Luokka (Class) Olion kuvaaminen

Muutamia peruskäsitteitä

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

Ohjelmistojen mallintaminen. Luento 7,

Sisällys. 12. Monimuotoisuus. Johdanto. Alityypitys. Johdanto. Periytymismekanismi määrittää alityypityksen.

Hakemistojen sisällöt säilötään linkitetyille listalle.

Johdatus sovellussuunnitteluun, s 2001, osa 4b Helsingin yliopisto / TKTL Harri Laine / Inkeri Verkamo 1. Luokkakaavion tarkoitus

Tämän lisäksi listataan ranskalaisin viivoin järjestelmän tarjoama toiminnallisuus:

Luokka (class) esitetään suorakulmion avulla, jonka sisälle kirjoitetaan luokan nimi (vahvennettuna).

2. Olio-ohjelmoinnin perusteita 2.1

TIE Ohjelmistojen suunnittelu. Luento 8..9: moniperintä

Aalto Yliopisto T Informaatioverkostot: Studio 1. Oliot ja luokat Javaohjelmoinnissa

Jouni Huotari & Ari Hovi. Käsitemallinnuksesta relaatiokantaan KÄSITEMALLI. LOOGINEN MALLI: tietomalli valittu. FYYSINEN MALLI: DBMS valittu

Kooste. Esim. Ympyrän keskipiste voidaan ajatella ympyrän osaksi.

Johdatus sovellussuunnitteluun, s2000, osa5 Helsingin yliopisto;/tktl. Harri Laine 1. Luokkakaavion tarkoitus. Luokkakaavion tarkoitus

POLKU LUOKKAKAAVIOISTA TAULUJEN TOTEUTUKSEEN

Periytyminen (inheritance)

Perintä (inheritance)

UML -mallinnus LUOKKAKAAVIO EERO NOUSIAINEN

4. Luokan testaus ja käyttö olion kautta 4.1

Linkitetystä listasta perittyä omaa listaa käytetään muun muassa viestiin liittyvien vastausten säilömiseen.

Ohjelmistojen mallintaminen. Luento 4,

Luento 17: Perintä. self.points = 0 self.status = 'Student'

P e d a c o d e ohjelmointikoulutus verkossa

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

UML - unified modeling language

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla.

T Olio-ohjelmointi Osa 5: Periytyminen ja polymorfismi Jukka Jauhiainen OAMK Tekniikan yksikkö 2010

Olio-ohjelmoinnissa luokat voidaan järjestää siten, että ne pystyvät jakamaan yhteisiä tietoja ja aliohjelmia.

Abstraktit tietotyypit ja olio-ohjelmointi

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IV Periytyminen ja monimuotoisuus

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen

Olio-ohjelmointi Johdanto olio-ohjelmointiin

Työ tehdään itsenäisesti yhden hengen ryhmissä. Ideoita voi vaihtaa koodia ei.

Pakkauksen kokoaminen

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla.

UML-kielen formalisointi Object-Z:lla

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

Sokkelon sisältö säilötään linkitetyille listalle ja tekstitiedostoon. Työ tehdään itsenäisesti yhden hengen ryhmissä. Ideoita voi vaihtaa koodia ei.

Mallinnus. 5. Järjestelmämallit. Abstraktiot. Mallinnuksen etuja. Arkkitehtuurimalli. Yhteysmallit. Ohjelmistotuotanto, järjestelmämallit Kevät 2005

Mikä yhteyssuhde on?

5. Järjestelmämallit. Mallinnus

Ohjelmistojen mallintaminen. Luento 8,

Ohjelmistojen mallintaminen viikon 4 laskareiden mallivastauksia

HELIA 1 (14) Outi Virkki Käyttöliittymät ja ohjlmiston suunnittelu

Harjoitustehtävät ja ratkaisut viikolle 48

1. Olio-ohjelmointi 1.1

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Ohjelmistojen suunnittelu

Myöhäinen luokittaminen olio-ohjelmoinnissa

15. Ohjelmoinnin tekniikkaa 15.1

Joskus yleistäminen voi tapahtua monen ominaisuuden pohjalta. Myös tällöin voi tulla moniperintätilanteita.

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. II Johdanto olio-ohjelmointiin

UML -mallinnus TILAKAAVIO

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. VII Suunnittelumallit Adapter ja Composite

Pakkauksen kokoaminen

Sisällys. 15. Lohkot. Lohkot. Lohkot

Luokat ja oliot. Ville Sundberg

Yhteydelle voi antaa nimen kumpaankin suuntaan Sille ei tarvise antaa lainkaan nimeä Yhteysnimen asemasta tai lisäksi voidaan käyttää roolinimiä

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 15.3

Johdatus sovellussuunnitteluun, s99, osa3 Helsingin yliopisto;/tktl Harri Laine 1. Olioiden väliset yhteydet. Olioiden väliset yhteydet

CS-A1150 Tietokannat CS-A1150 Tietokannat / 43

CS-A1150 Tietokannat CS-A1150 Tietokannat / 35

Johdatus sovellussuunnitteluun, s99, osa3 Helsingin yliopisto;/tktl Harri Laine 1. Olioiden väliset yhteydet. Olioiden väliset yhteydet

Analyysi on tulkkaamista

Ohjelmistotekniikan menetelmät

Ohjelmistojen mallintaminen, kurssikoe esimerkkivastauksia

Olio-ohjelmointi: Luokkien toteuttaminen. Jukka Juslin

Transkriptio:

8. Periytyminen 8.1

Sisällys Mitä on periytyminen? Yksittäis- ja moniperiytyminen. Oliot ja perityt luokat. Filosofinen ja käytännönläheinen näkökulma periytymiseen. Periytymisen soveltaminen. 8.2

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

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

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

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

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. B D C 8.7

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. 8.8

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). -luokan olio B B-luokan olio C C-luokan olio C D D-luokan olio 8.9

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. 8.10

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 Is-suhteeseen. Periytyminen on luontevaa, jos lause liluokka Is Yliluokka. tuntuu järkevältä. Esimerkiksi uto Is joneuvo. 8.11

Periytymisen soveltaminen Eräs käsitehierarkia periytymisellä esitettynä: Eläin Nisäkäs Ihminen Kissa Opiskelija Opettaja Nisäkäs Is Eläin. Ihminen Is Nisäkäs, Kissa Is Nisäkäs. Opiskelija Is Ihminen, Opettaja Is Ihminen. 8.12

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

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

Kissa-olio Misse-olio luodaan Kissaluokasta: 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 Kissaluokassa siten, että ne toimivat kissalle ominaisesti. Lisäksi missellä on kissoille ominaiset piirteet (esim. attribuutti häntä ja metodi kehrää(). elossa, paino syö(), onkoiso() väri, häntä ääntele(), kehrää() Nisäkäs-kerros Kissa-kerros 8.15