Johdetun luokan määrittely tMyn1 Johdetun luokan määrittely •Kun johdettu luokka periytetään kantaluokasta, saadaan kantaluokan jäsenet enemmän tai vähemmän.

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.
Olio-ohjelmoinnin perusteet luento 3: Muuttujista ja funktioista Sami Jantunen LTY/Tietotekniikan osasto.
Luokkien väliset koostesuhteet
Luokan otsikko- ja toteutustiedosto tMyn1 Luokan otsikko- ja toteutustiedosto •Tähän asti ohjelmaesimerkit on toteutettu siten, että kaikki koodi on yhdessä.
© Jukka Harju, Jukka Juslin1 Java-ohjelmointi opas ammattimaiseen osaamiseen Luku 12 Periytyminen.
Muutamia käsitteitätMyn1 Muutamia käsitteitä •Perintä (inheritance) on luokkien välinen suhde, jossa johdettu luokka (subclass, derived class) perii kantaluokan,
Ict1td002: Ohjelmointitaito Kertaus Osio 2 - luokat - ilmentymät - viittaus- ja arvomuuttuja - ilmentymien taulukointi HAAGA-HELIA IltaTiko.
Datan määrittely, MySQL
Aloitetaan normalisoimattomasta raakadatasta
Tietokantatapahtuman hallinta
Julkaisukielet ja - tekniikat tMyn1 Julkaisukielet ja -tekniikat •Verkko-ohjelmointi voidaan jakaa kahteen osaan: asiakaspuolen ja palvelinpuolen ohjelmointiin.
Relaatiomallin perusteet
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.
ER (Entity-Relationship) –mallinnuksen perusteet
Olio-ohjelmoinnin perusteet luento 3
OLIO-OHJELMOINTI PERUSTEET PERUSTIETOTYYPIT
Poikkeuskäsittely- lohkot tMyn1 Poikkeuskäsittelylohkot try-catch Poikkeustilanteiden käsittelymekanismi toteutetaan varatuilla sanoilla try, throw ja.
Lineaarinen lohkokoodaus, Block Coding
Vakio-osoitin ja osoitin vakioon tMyn1 Vakio-osoitin ja osoitin vakioon Tavallinen osoitin voi vaihtaa osoitettavaa keskusmuistialuetta. Tämä voidaan tehdä.
Luokkien löytyminen käytännössä tMyn1 Luokkien löytyminen käytännössä Kun aletaan ratkaista elävän elämän ohjelmointitehtäviä, niin ensimmäisten asioiden.
Johdanto HTML-julkaisukieleen
Motion compensated interframe tMyn1 Motion compensated interframe prediction -koodaus Edellä tutkittiin yksittäisen kehyksen sisällä olevan redundanssin.
9. Periytyminen Javassa.
Dynaamiset oliottMyn1 Dynaamiset oliot Dynaamisen olion tunnuksen esittely ja olion määrittely voivat tapahtua yhtäaikaisesti tai eri aikaan. Dynaamisen.
Olioon kohdistuvia perustoimintoja tMyn1 Olioon kohdistuvia perustoimintoja Kopiointimuodostin (copy constructor) alustaa olion tietojäsenet saman luokan.
Virtuaaliset jäsenfunktiot tMyn1 Virtuaaliset jäsenfunktiot Virtuaalinen jäsenfunktio on esiteltävä monimuotoisessa kantaluokassa. Virtuaalisen jäsenfunktion.
© Jukka Harju, Jukka Juslin
Funktion esittely eli prototyyppi tMyn1 Funktion esittely eli prototyyppi Funktion esittely (function declaration) kertoo funktion nimen, parametrien tyypit.
1 Kertaus koetta varten oleellisista asioista Jukka Juslin.
Johdetun luokan olion alustus tMyn1 Johdetun luokan olion alustus määrätyillä arvoilla Kun ohjelmassa esiintyy johdetun luokan olion määrittely, järjestelmä.
Normalisointi2tMyn1 Yksi kelpo perusavain on sarakkeet laakNro ja vastAika. Toinen voisi olla potNro ja vastAika, kolmas voisi olla huoneNro ja vastAika,…,
Luokan muodostintMyn1 Luokan muodostin Olioihin kohdistuvia automaattisia toimintoja ovat luonti, alustus, kopiointi, sijoitus, tyhjennys ja tuhoaminen.
Tietokanta-analyysi, suunnittelu ja toteutus
Luokan määrittely class-määreellä tMyn1 Luokan määrittely class-määreellä Luokan määrittely tarkoittaa luokan tietojäsenten esittelyä ja jäsenfunktioiden.
Lomakkeet ja vuorovaikutteisuus
Intra-frame DCT -koodaus
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.
Virheenpaljastus- ja korjauskoodit tMyn1 Virheenpaljastus- ja korjauskoodit Virheen havaitseminen Tässä vaaditaan ainoastaan se, että pystytään toteamaan.
Olioon kohdistuvia perustoimintoja tMyn1 Olioon kohdistuvia perustoimintoja Kopiointimuodostin (copy constructor) alustaa olion tietojäsenet saman luokan.
Ohjelman keskeytys virhetilanteessa tMyn1 Ohjelman keskeytys virhetilanteessa Poikkeustilanteet voidaan ryhmitellä logiikkavirheisiin ja muihin ajonaikaisiin.
Johdetun luokan olion alustus tMyn1 Johdetun luokan olion alustus määrätyillä arvoilla Kun ohjelmassa esiintyy johdetun luokan olion määrittely, järjestelmä.
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
Poikkeustenkäsittely- lohkot tMyn1 Poikkeustenkäsittelylohkot try-catch Poikkeustilanteiden käsittelymekanismi toteutetaan varatuilla sanoilla try, throw.
Oman poikkeus- käsittelyfunktion tMyn1 Oman poikkeuskäsittelyfunktion määrittely Funktion tulisi muodostaa ainoastaan sellaisia poikkeuksia, jotka on sallittu.
11. Rajapinnat Sisällys Mitä rajapinnat ovat? Kuinka ne määritellään ja otetaan käyttöön? Moniperiytyminen rajapintojen avulla. Varoituksen.
Tekstitiedostoon kirjoittaminen tMyn1 Tekstitiedostoon kirjoittaminen Tiedostoja käsitellään ohjelmassa tiedosto-olion avulla. Tiedosto-olion luokka sisältää.
Monimuotoinen luokka tMyn1 Monimuotoinen luokka Monimuotoinen luokka mahdollistaa saman jäsenfunktion toteutuksen monella tavalla. Tällöin puhutaan virtuaalisesta.
Tiedon vieminen funktiolle tMyn1 Tiedon vieminen funktiolle, parametrit Argumentin vieminen funktiolle voidaan toteuttaa kahdella menetelmällä: –Pass-by-Value.
Johdetun luokan olion alustus tMyn1 Johdetun luokan olion alustus määrätyillä arvoilla Kun ohjelmassa esiintyy johdetun luokan olion määrittely, järjestelmä.
Kantaluokan määrittely tMyn1 Kantaluokan määrittely Perinnän käyttöön liittyvät varatut sanat private, protected, public, final ja abstract. Ne tarkoittavat.
Johdetun luokan määrittely tMyn1 Johdetun luokan määrittely Kun johdettu luokka periytetään kantaluokasta, saadaan kantaluokan jäsenet enemmän tai vähemmän.
1 © Jukka Juslin Luokat, attribuutit ja metodit Yleistietoa: seuraavalla koulutusviikolla tarkempi käsittely.
11. Rajapinnat.
Poikkeustenkäsittelylohkot try-catch
Kantaluokan määrittely
3. Luokat, oliot ja metodit Java-kielessä (Lausekielinen ohjelmointi I ja II –kursseilla opitun kertausta.)
Rajapintaluokat Rajapintaluokka luettelee metodit, joille tulee löytyä toteutus asianomaisen rajapinnan toteuttavista luokista. Rajapintaluokka on siis.
Kantaluokan määrittely
Luokan määrittely class-määreellä
Muutamia käsitteitä Perintä (inheritance) on luokkien välinen suhde, jossa johdettu luokka (subclass, derived class) perii kantaluokan, perusluokan (superclass,
14. Hyvä ohjelmointitapa.
4. Attribuutit.
3. Attribuutit.
Esityksen transkriptio:

Johdetun luokan määrittely tMyn1 Johdetun luokan määrittely •Kun johdettu luokka periytetään kantaluokasta, saadaan kantaluokan jäsenet enemmän tai vähemmän johdetun luokan käyttöön. •Kantaluokan jäsenen näkyvyys määritellään tyypillisesti joko private -, protected - tai public -saantimääreellä. •Käsitellään varatut sanat final ja abstract erikseen tämän kappaleen lopussa. •Muodostetaan taulukko, josta käy ilmi näkyvyyssäännön vaikutus, kuva 1.

Johdetun luokan määrittely tMyn2 kantaluokka jäsenen näkyvyyssääntö: public jäsenet protected jäsenet private jäsenet näkyvyys johdetussa luokassa: johdettu luokka public protected periytyy, mutta ei ole käytettävissä Kuva 1. Näkyvyyssäännön vaikutus.

Johdetun luokan määrittely tMyn3 •Perintä (inheritance) kantaluokasta määritellään varatulla sanalla extends, jossa kantaluokan ominaisuudet ja metodit peritään johdettuun luokkaan. •Johdetun luokan muodostinta toteutettaessa on muistettava, että sen rungossa pitää ensimmäiseksi kutsua kantaluokan muodostinta, jotta kaikki perityt tietojäsenet saavat halutun/vaaditun alustuksen. •Kantaluokan muodostimen kutsumisessa johdetun luokan muodostimesta käytetään varattua sanaa parent ja näkyvyysoperaattoria :: (scope resolution operator).

Johdetun luokan määrittely tMyn4 •Kuvasta 1 nähdään, että kantaluokan private - saantimääreellä esitelty jäsen pysyy private - tyyppisenä kantaluokalle. Käytännössä tämä tarkoittaa sitä, että private -tyyppiset kantaluokan jäsenet ovat private -tyyppisiä myös johdetulle luokalle. Tästä seuraa, että kantaluokan private - tyyppiset tietojäsenet eivät ole käytettävissä johdetun luokan jäsenfunktioille. Niitä voi siis käyttää ainoastaan määrittelemällä kantaluokkaan public - saantimääreellä jäsenfunktio. Tarkastellaan näitä asioita seuraavassa esimerkissä:

Johdetun luokan määrittely tMyn5

Johdetun luokan määrittely tMyn6

Johdetun luokan määrittely tMyn7

Johdetun luokan määrittely tMyn8

Johdetun luokan määrittely tMyn9 •Sitä vastoin jos kantaluokassa on public -tyyppinen jäsenfunktio, niin sitä voidaan käyttää johdetussa luokassa (esimerkiksi) kaiuttamaan näytölle kantaluokalta perityt private -tyyppiset tietojäsenet. •Muilta osin kaikki on saman tyyppisesti kuin mitä edellisessä esimerkissä:

Johdetun luokan määrittely tMyn10

Johdetun luokan määrittely tMyn11

Johdetun luokan määrittely tMyn12

Johdetun luokan määrittely tMyn13

Johdetun luokan määrittely tMyn14 •Jos kantaluokan jäsenen saantimääreenä on public tai protected, niin silloin johdetulle luokalle periytetty tietojäsen on myös tämän johdetun luokan jäsenfunktion käytettävissä. •Tiedon piilottamisen periaatteen mukaisesti kantaluokan tietojäsenten ei tulisi koskaan olla public -tyyppisiä. •Tehdään alkuperäiseen esimerkkiin se muutos, että asetetaan kantaluokan tietojäsenet protected - tyyppiseksi, muuten koodi on sama kuin ensimmäisessä esimerkissä:

Johdetun luokan määrittely tMyn15

Johdetun luokan määrittely tMyn16

Johdetun luokan määrittely tMyn17

Johdetun luokan määrittely tMyn18

Johdetun luokan määrittely tMyn19 •Nyt kun kantaluokan tietojäsenet ovat protected - tyyppisiä, voidaan tehdä seuraava muutos: korvataan (redefinition) kantaluokan jäsenfunktio sopivammalla toteutuksella johdetussa luokassa, siis sekä kantaluokassa että johdetussa luokassa on otsikkotiedoiltaan identtinen jäsenfunktio:

Johdetun luokan määrittely tMyn20

Johdetun luokan määrittely tMyn21

Johdetun luokan määrittely tMyn22

Johdetun luokan määrittely tMyn23

Johdetun luokan määrittely tMyn24 •Korvaamisessa (redefining) on se vaatimus, että johdetun luokan kohdalla korvattavan funktion otsikkotiedot on oltava täsmälleen samat kuin kantaluokassa. •Siis kun kantaluokassa jäsenfunktion saantimääreenä on public, niin sen pitää olla public myös johdetussa luokassa (jossa sen toteutus on tarkoitus korvata). Tehdään edelliseen esimerkkiin vain tämä saantimääremuutos johdettuun luokkaan:

Johdetun luokan määrittely tMyn25

Johdetun luokan määrittely tMyn26

Johdetun luokan määrittely tMyn27

Johdetun luokan määrittely tMyn28 •Leikitellään vielä hetki saantimääreellä protected. •Jos kantaluokan jäsenfunktion saantimääreenä on protected, niin se tarkoittaa sitä, että sitä voi kutsua saman luokan toinen jäsenfunktio tai johdetun luokan jäsenfunktio – eivät ketkään muut. •Sitä ei siis voi kutsua luokan ulkopuolelta. Siinä mielessä varattu sana protected on yhtä vahva kuin varattu sana private :

Johdetun luokan määrittely tMyn29

Johdetun luokan määrittely tMyn30

Johdetun luokan määrittely tMyn31

Johdetun luokan määrittely tMyn32

Johdetun luokan määrittely tMyn33 •Mutta voihan sitä kutsua toinen jäsenfunktio, seuraavassa esimerkissä johdetun luokan jäsenfunktio – käytetään täsmälleen äskeistä esimerkkiä kommentoimalla kaksi riviä. •Viittaaminen kantaluokan jäsenfunktioon onnistuisi myös käyttämällä varattua sanaa parent::, mutta nyt käytetään kantaluokan nimeä:

Johdetun luokan määrittely tMyn34

Johdetun luokan määrittely tMyn35

Johdetun luokan määrittely tMyn36 •Harvemmin (?) käytetty saantimääre on final. Tämä saantimääre jäsenfunktion kohdalla tarkoittaa sitä, että kyseistä jäsenfunktiota ei voida korvata (override) johdetussa luokassa:

Johdetun luokan määrittely tMyn37

Johdetun luokan määrittely tMyn38

Johdetun luokan määrittely tMyn39

Johdetun luokan määrittely tMyn40

Johdetun luokan määrittely tMyn41 •Jos käyttäisi final -saantimäärettä luokan kohdalla, niin se tarkoittaisi sitä, että kyseistä luokkaa ei pystyisi periyttämään. •Pidetään siis edellinen esimerkki muuten täsmälleen samana, mutta siirretään varattu sana final luokan Henkilo kohdalle:

Johdetun luokan määrittely tMyn42

Johdetun luokan määrittely tMyn43