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

Samankaltaiset tiedostot
Mitä on periytyminen?

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

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

9. Periytyminen Javassa 9.1

9. Periytyminen Javassa 9.1

12. Monimuotoisuus 12.1

12. Monimuotoisuus 12.1

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

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

2. Olio-ohjelmoinnin perusteita 2.1

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

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

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

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

Ohjelmistojen mallintaminen Luokkakaaviot Harri Laine 1

Ohjelmistotekniikan menetelmät, luokkamallin laatiminen

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

19. Unified Modeling Language (UML)

16. Javan omat luokat 16.1

815338A Ohjelmointikielten periaatteet

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ä

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.

Oliot viestivät metodeja kutsuen

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

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

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

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.

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

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

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

Abstraktit tietotyypit ja olio-ohjelmointi

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

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

Olio-ohjelmointi Johdanto olio-ohjelmointiin

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

5. Järjestelmämallit. Mallinnus

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

Pakkauksen kokoaminen

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

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

UML -mallinnus TILAKAAVIO

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.

Mikä yhteyssuhde on?

Ohjelmistojen mallintaminen. Luento 8,

Harjoitustehtävät ja ratkaisut viikolle 48

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

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

1. Olio-ohjelmointi 1.1

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Ohjelmistojen suunnittelu

Myöhäinen luokittaminen olio-ohjelmoinnissa

15. Ohjelmoinnin tekniikkaa 15.1

Ohjelmistojen mallintaminen, kurssikoe esimerkkivastauksia

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

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

JHS 162 Paikkatietojen mallintaminen tiedonsiirtoa varten Liite 1 UML-mallinnus

Ohjelmistojen mallintaminen viikon 4 laskareiden mallivastauksia

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

Ontologiat merkitysten mallintamisessa: OWL. Eeva Ahonen

Tällä harjoituskerralla on tarkoituksena harjoitella käyttötapaus-, luokka- ja tapahtumasekvenssikaavioiden luontia.

Transkriptio:

8. Periytyminen 8.1

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

Mitä on periytyminen? Periytyminen (inheritance) tarkoittaa luokan piirteiden siirtymistä jollekin toiselle luokalle B. 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 kolmiokä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. 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.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ä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.10

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

Periytymisen käyttö 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 käyttö liluokan tulisi aina tuoda yliluokkaansa jokin tarkennus (tai laajennus): liluokassa voidaan määritellä uusia piirteitä (attribuutteja ja metodeja). liluokka voi korvata (override) yliluokassa 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