10. Abstrakti luokka 10.1. 10.2 Johdanto Abstrakti luokka (abstract class) poikkeaa konkreettisesta luokasta (ei-abstrakti luokka) siten, että siitä ei.

Slides:



Advertisements
Samankaltaiset esitykset
18. Abstraktit tietotyypit
Advertisements

Minimaalinen Java-ohjelma •Kaikki ohjelmakoodi on luokkamäärityksen sisällä •Ohjelma käynnistyy ”public static void main(String[] args)”-metodista •System.out.print()
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 13 Monimuotoisuus.
Luokan otsikko- ja toteutustiedosto tMyn1 Luokan otsikko- ja toteutustiedosto •Tähän asti ohjelmaesimerkit on toteutettu siten, että kaikki koodi on yhdessä.
16. Javan omat luokat.
Polymorfismi Sisältö Mitä on polymorfismi?
2. Olio-ohjelmoinnin perusteita
Nämä kalvot on lisensoitu Creative Commons Attribution-ShareAlike 1
Tuloksellinen Java-ohjelmointi Luku 9 Taulukot ja perustietorakenteet
Taulukot: Array Taulukko Javassa pitää aina perustaa (new)
Ohjelmointitaito (ict1td002, 12 op) Syksy 2008
13. Pakkaukset.
Näytölle tulostaminen. 7.2 Sisällys System.out.println - ja System.out.print -operaatiot. Tulostus erikoismerkeillä. Edistyneempää tulosteiden.
Perintä. Yleistä Olio-ohjelmoinnin menetelmä muodostaa uusia luokkia aiemmin määriteltyjen luokkien avulla Luokka saa automaattisesti käyttöönsä kaikki.
Java-ohjelmointi Opas ammattimaiseen osaamiseen Luku 4 Toistolauseet
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
© Jukka Harju, Jukka Juslin Java-ohjelmointi Opas ammattimaiseen osaamiseen Luku 9 Poikkeuskäsittely.
Poikkeustenkäsittely  Mitä poikkeustenkäsittely tarkoittaa?  Poikkeuksen käsitteleminen  Poikkeusluokkien hierarkia  Poikkeuksen heittäminen 1.
9. Periytyminen Javassa.
Virtuaaliset jäsenfunktiot tMyn1 Virtuaaliset jäsenfunktiot Virtuaalinen jäsenfunktio on esiteltävä monimuotoisessa kantaluokassa. Virtuaalisen jäsenfunktion.
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.
Metodit – Arvotyyppi Ellei metodi palauta arvoa, sen arvotyyppi on void Tällöin ”return;”-lauseke ei ole metodissa pakollinen, vaikka sen käyttö on sallittua.
19. Olio-ohjelmointia Javalla
20. Javan omat luokat.
1 DataOutputStream ja DataInputStream DataOutputStream:lla voidaan tallentaa perustietotyyppien arvoja binäärimuotoiseen tiedostoon DataInputStream:lla.
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.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
Olioon kohdistuvia perustoimintoja tMyn1 Olioon kohdistuvia perustoimintoja Kopiointimuodostin (copy constructor) alustaa olion tietojäsenet saman luokan.
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.
Ohjelmointitaito (ict1td002, 12 op) Kevät 2008 Raine Kauppinen
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Pakkaukset ja määreet.
Oliot ja luokat Oliot ja luokat Oliot (object) ja luokat (class) ovat keskeisiä olio- ohjelmoinnin käsitteitä. Olio-ohjelmointi on ohjelmointiparadigma,
Vesa Ollikainen & Outi Grotenfelt
Olioiden taulukointi Perustaulukon käyttö Luokan ilmentymät voidaan tallettaa taulukkoon samoin kuin muuttujat Esimerkki talletetaan taulukkoon opintojaksojen.
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.
Kantaluokan määrittely tMyn1 Kantaluokan määrittely Perinnän käyttöön liittyvät varatut sanat private, protected, public, final ja abstract. Ne tarkoittavat.
Javan oliovirrat eli oliotiedostojen käsittely. Olio- eli objektitiedostojen käsittely Käsittely täysin samanlaista kuin muiden tiedostojen 1.Otetaan.
1 © Jukka Juslin Luokat, attribuutit ja metodit Yleistietoa: seuraavalla koulutusviikolla tarkempi käsittely.
14. Poikkeukset Sisällys Johdanto poikkeuksiin. Poikkeusten käsittely: − Poikkeusten käsittely paikallisesti. − Poikkeusten heittäminen. Exception.
Sähköpostin lähetys Java- ohjelmasta Jukka Juslin.
8. Periytyminen Sisällys Mitä on periytyminen? Yksittäis- ja moniperiytyminen. Oliot ja perityt luokat. Periytymisen käyttö.
16. Javan omat luokat Sisällys Johdanto. Object -luokka: − toString -, equals -, clone - ja getClass -metodit. Comparable -rajapinta: − compareTo.
15. Ohjelmoinnin tekniikkaa Sisällys For-each-rakenne. Lueteltu tyyppi enum. Override-annotaatio. Geneerinen ohjelmointi.
17. Kooste.
5. Kapselointi.
6. Metodit.
11. Rajapinnat.
14. Poikkeukset.
Kantaluokan määrittely
15. Ohjelmoinnin tekniikkaa
3. Luokat, oliot ja metodit Java-kielessä (Lausekielinen ohjelmointi I ja II –kursseilla opitun kertausta.)
Kantaluokan määrittely
6. Metodit.
13. Pakkaukset.
8. Periytyminen.
16. Javan omat luokat.
4. Attribuutit.
3. Attribuutit.
14. Poikkeukset.
13. Pakkaukset.
12. Monimuotoisuus.
8. Periytyminen.
4. Luokan testaus ja käyttö olion kautta
eli oliotiedostojen käsittely
Esityksen transkriptio:

10. Abstrakti luokka 10.1

10.2 Johdanto Abstrakti luokka (abstract class) poikkeaa konkreettisesta luokasta (ei-abstrakti luokka) siten, että siitä ei voi luoda olioita – abstraktia luokkaa käytetään olioiden asemasta periytymisen avulla. − Luokalle voidaan kuitenkin kirjoittaa rakentajia. − Abstraktin luokan aliluokka voi olla abstrakti. Abstrakti luokka ei tyypillisesti toteuta kaikkia metodejaan: osalle metodeista (abstraktit) annetaan vain otsikot ja runkojen määrittely (toteutus) jätetään luokan jälkeläisille. − Abstraktissa luokassa ei ole pakko olla abstrakteja metodeja.

10.3 Johdanto Koska yksikin abstrakti metodi tekee luokasta abstraktin, konkreettisen aliluokan on toteutettava kaikki perimänsä abstraktit metodit. Abstrakti luokka soveltuu luontevasti abstraktien käsitteiden (esim. läheisyys, päivämäärä ja nisäkäs) kuvaamiseen. Abstrakti luokka mahdollistaa ohjelmointitekniikan, jolla varmistetaan, että abstraktin yliluokan konkreettisen aliluokan liittymässä on aina joukko metodeja, joita aliluokan on ollut pakko “tarkentaa” nämä metodit toteuttamalla. − Konkreettisen luokan aliluokan ei ole pakko korvata perittyjä metodeja.

10.4 Abstraktin luokan määrittely Javassa varattua sanaa abstract käyttäen. Yleisesti: määreet abstract class LuokanNimi {... } missä määreet -kohta on valinnainen. Määritellään jatkossa julkisiksi public -määreen avulla. Jälkeläisten toteuttamiksi tarkoitetut metodit annetaan abstract -määreellä ilman runkoa. − Toteutetun metodin otsikosta abstract -määre jätetään luonnollisesti pois.

10.5 Eläin, nisäkäs ja kissa Piirteet: elossa, paino, syö(), onkoIso() Piirteet: elossa, paino, syö(), onkoIso(), turkillinen Piirteet: elossa, paino, syö(), onkoIso(), turkillinen, väri, häntä, ääntele(), kehrää() Nisäkäs turkillinen syö(), onkoIso() Kissa väri, häntä ääntele(), kehrää() Eläin elossa, paino syö(), onkoIso() UML:ssä abstraktius ilmaistaan usein kursivoimalla. Nisakas toteuttaa perimänsä metodit.

10.6 Eläin, nisäkäs ja kissa (Elain.java) // Yksinkertainen abstrakti Elain-luokka. public abstract class Elain { private boolean elossa; private double paino; // Rakentajat ja aksessorit.... // Abstraktit oliometodit. public abstract void syo(); public abstract boolean onkoIso(); }

10.7 Eläin, nisäkäs ja kissa (Nisakas.java) // Elain-luokasta peritty abstrakti Nisakas-luokka. public abstract class Nisakas extends Elain { private boolean turkillinen; // Rakentajat ja aksessorit.... // Toteutetut metodit. public void syo() { System.out.println("Syön kuin nisäkäs..."); } public boolean onkoIso() { return false ; } }

10.8 Eläin, nisäkäs ja kissa (Kissa.java) // Nisakas-luokasta peritty konkreettinen Kissa-luokka. public class Kissa extends Nisakas { private String vari; private String hanta; // Rakentajat, aksessorit ja muut oliometodit.... // Korvatut metodit. public void syo() { System.out.println("Syön kuin kissa..."); kehraa(); } public boolean onkoIso() { return paino() > 10; } }

10.9 Eläin, nisäkäs ja kissa (Testi.java) public class Testi { public static void main(String[] args) { // Tämä ei menisi kääntäjästä läpi, // koska abstraktista luokasta ei voida luoda olioita. // Nisakas nisse = new Nisakas(); Kissa mussu = new Kissa(); mussu.syo();// Syön kuin kissa... } // murr, murrrr... }