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.
Tämä on SUUNTA-työkalun käyttöön opastava diaesitys
Olio-ohjelmoinnin perusteet luento 3: Muuttujista ja funktioista Sami Jantunen LTY/Tietotekniikan osasto.
JavaScript (c) Irja & Reino Aarinen, 2007
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ä.
Bensan hinta Hyvää päivää, Olen kuullut ennustettavan, että bensan hinta saattaa syksyyn mennessä nousta litralta jopa € 1,90 :een.
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
Tietokantatapahtuman hallinta
Kiintolevyn osiointi.
Julkaisukielet ja - tekniikat tMyn1 Julkaisukielet ja -tekniikat •Verkko-ohjelmointi voidaan jakaa kahteen osaan: asiakaspuolen ja palvelinpuolen ohjelmointiin.
Olio-ohjelmointi. Mitä olio-ohjelmointi on ?  Pyritään mallintamaan jotain reaalimaailman kohdetta tietokoneohjelman avulla  Olio on luokan ilmentymä.
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.
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
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.
Olio-ohjelmoinnin perusteet luento 3
Poikkeuskäsittely- lohkot tMyn1 Poikkeuskäsittelylohkot try-catch Poikkeustilanteiden käsittelymekanismi toteutetaan varatuilla sanoilla try, throw ja.
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
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.
13. Hyvä ohjelmointitapa (osa 1)
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ä.
Luokan muodostintMyn1 Luokan muodostin Olioihin kohdistuvia automaattisia toimintoja ovat luonti, alustus, kopiointi, sijoitus, tyhjennys ja tuhoaminen.
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
− työkalu toiminnan suunnittelun ja suunnitelman arvioinnin tueksi
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.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
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.
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.
1 © Jukka Juslin Luokat, attribuutit ja metodit Yleistietoa: seuraavalla koulutusviikolla tarkempi käsittely.
Tehtävä 3: PowerPoint Tomi Ilmonen. Ohjeistus Tämä on tehtävä 3: Power Point Etene tässä olevien ohjeiden mukaan. ◦ Älä ”hypi” eli käy kohta kohdalta.
Tehtävä 3: PowerPoint Jarmo Lautamäki. Tämän tulee olla DIA 2. Tämä dia on nyt dia 1. ◦ Siirrä tämä dia siten, että siitä tulee dia 2. ◦ Lisää tähän esitykseen:
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.
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

Johdetun luokan määrittely tMyn44 Joskus ohjelmoija voi olla sitä mieltä, että johonkin luokkaan ei saa luoda (instantioida) lainkaan olioita. Tällaista toimintaa varten on olemassa varattu sana abstract. Tehdään esimerkki, jossa kantaluokka määritellään abstract -tyyppiseksi. Jos luokka on abstract -tyyppinen ja sillä on tietojäseniä, niin silloin ilman muuta pitää toteuttaa tähän kyseiseen abstraktiin luokkaan muodostin, jotta toiminta on oikeellista siinä vaiheessa kun tästä abstraktista kantaluokasta johdettuun luokkaan luodaan olio.

Johdetun luokan määrittely tMyn45 Edelleen on myös mahdollista toteuttaa abstraktiin luokkaan jäsenfunktioita, vaikka eipä siinä taida olla paljoakaan järkeä: eihän kyseiseen luokkaan voi luoda olioita, joten kukapa näitä abstraktin luokan jäsenfunktioiden toteutuksia tarvitsisi!:

Johdetun luokan määrittely tMyn46

Johdetun luokan määrittely tMyn47

Johdetun luokan määrittely tMyn48

Johdetun luokan määrittely tMyn49

Johdetun luokan määrittely tMyn50 Edellinen esimerkki alkaa toimimaan, kun kommentoidaan ne rivit, joissa yritetään luoda kantaluokkaan olio:

Johdetun luokan määrittely tMyn51

Johdetun luokan määrittely tMyn52

Johdetun luokan määrittely tMyn53 Jos halutaan luoda abstrakti luokka, niin silloin lienee luontevinta, että samaisen luokan tavalliset jäsenfunktiot ovat myöskin abstrakteja – jos ylipäänsä haluaa sisällyttää kyseiseen luokkaan muita jäsenfunktioita kuin mahdollisesti muodostin (koska niitä tietojäseniä varmaankin on tyypillisesti abstraktillakin luokalla). Toisin päin on näin: jos sisällyttää luokkaan abstraktin jäsenfunktion, niin sitten on pakko nimetä myös kyseinen luokka abstraktiksi. Huom! Abstrakti jäsenfunktio ei saa sisältää runkoa, ei edes aaltosulkeita rungon kohdalla:

Johdetun luokan määrittely tMyn54

Johdetun luokan määrittely tMyn55

Johdetun luokan määrittely tMyn56

Johdetun luokan määrittely tMyn57 Muutetaan edellinen esimerkki toimimaan: abstraktilla kantaluokalla on yksi abstrakti jäsenfunktio. Tehdään tälle abstraktille jäsenfunktiolle kelvollinen toteutus johdetussa luokassa:

Johdetun luokan määrittely tMyn58

Johdetun luokan määrittely tMyn59

Johdetun luokan määrittely tMyn60