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



Samankaltaiset tiedostot
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Tietorakenneluokkia 2: HashMap, TreeMap

Listarakenne (ArrayList-luokka)

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

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Pakkaukset ja määreet

Periytyminen (inheritance)

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Olio-ohjelmointi Javalla

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

Taulukot. Jukka Harju, Jukka Juslin

Mikä yhteyssuhde on?

Rajapinta (interface)

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes)

7. Näytölle tulostaminen 7.1

16. Javan omat luokat 16.1

Ohjelmoinnin jatkokurssi, kurssikoe

Kompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

1 Tehtävän kuvaus ja analysointi

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

Metodien tekeminen Javalla

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Luokan sisällä on lista

Java-kielen perusteet

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op

Sisältö. 2. Taulukot. Yleistä. Yleistä

Sisältö. 22. Taulukot. Yleistä. Yleistä

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Standardi- ja tietorakenneluokkia

9. Periytyminen Javassa 9.1

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

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Poikkeukset ja tietovirrat: Virhetilanteiden ja syötevirtojen käsittely

Tietorakenteet. JAVA-OHJELMOINTI Osa 5: Tietorakenteita. Sisällys. Merkkijonot (String) Luokka String. Metodeja (public)

List-luokan soveltamista. Listaan lisääminen Listan läpikäynti Listasta etsiminen Listan sisällön muuttaminen Listasta poistaminen Listan kopioiminen

Java kahdessa tunnissa. Jyry Suvilehto

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista.

9. Periytyminen Javassa 9.1

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004

Olio-ohjelmointi Syntaksikokoelma

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

on ohjelmoijan itse tekemä tietotyyppi, joka kuvaa käsitettä

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

Java-kielen perusteet

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

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

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

Javan perusteita. Janne Käki

Taulukot. Taulukon määrittely ja käyttö. Taulukko metodin parametrina. Taulukon sisällön kopiointi toiseen taulukkoon. Taulukon lajittelu

Osio2: Taulukot Jukka Juslin

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

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

Ohjelmoinnin perusteet, kurssikoe

Java-kielen perusteet

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

14. Poikkeukset 14.1

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

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Olioiden yhteistoiminta

14. Poikkeukset 14.1

1. Omat operaatiot 1.1

Tietokannat II -kurssin harjoitustyö

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

20. Javan omat luokat 20.1

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang

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

TIETORAKENTEET JA ALGORITMIT

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

7. Oliot ja viitteet 7.1

Ohjelmointi 2 / 2010 Välikoe / 26.3

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

17. Javan omat luokat 17.1

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

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

Testivetoinen ohjelmistokehitys

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

Taulukot. Taulukon käsittely. Tämän osan sisältö. Esimerkki. Taulukon esittely ja luonti. Taulukon alustaminen. Taulukon koko

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

15. Ohjelmoinnin tekniikkaa 15.1

C# olio-ohjelmointi perusopas

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

812347A Olio-ohjelmointi, X Reflektiivisyys

Java-kielen perusteita

Luokat ja oliot. Ville Sundberg

Tehtävä 1. Tehtävä 2. Arvosteluperusteet Koherentti selitys Koherentti esimerkki

public static void main (String [] args)

Ohjelmointi 2, välikoe

Oliot viestivät metodeja kutsuen

15. Ohjelmoinnin tekniikkaa 15.1

Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Ta

7/20: Paketti kasassa ensimmäistä kertaa

YHTEYSSUHDE (assosiation)

KOHDELUOKAN MÄÄRITTELY

Sisällys. 19. Olio-ohjelmointia Javalla. Yleistä. Olioiden esittely ja alustus

12. Monimuotoisuus 12.1

Lista luokan sisällä

Taulukoiden käsittely Javalla

19. Olio-ohjelmointia Javalla 19.1

ITKP102 Ohjelmointi 1 (6 op)

18. Abstraktit tietotyypit 18.1

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

Transkriptio:

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

Taulukot: Array Taulukko Javassa pitää aina perustaa (new) Yksinkertaisessa tilanteessa taulukon koko tiedetään etukäteen ja taulukko on perustietotyyppiä int [] sateet= new int [12]; Taulukko voi olla myös tyyppiä String String[] b = new String[27]; Taulukon esittely Taulukkoolion luonti 12.9.2012 Outi Grotenfelt 2

Taulukot: Array.. Taulukolle voidaan myös antaa alkuarvot int [] kk = {31,28,31,30,31,30,31,31,30,31,30,31}; Tällöin taulukon kokoa ei tarvitse kertoa Taulukko voidaan tehdä myös omista olioista: public class OmaLuokka{ private int luku; public void setluku(int luku) {this.luku = luku;} public int getluku() {return luku;} }... OmaLuokka [] omataulu = new OmaLuokka[5]; 12.9.2012 Outi Grotenfelt 3

Taulukot: Array.. Taulukko voidaan myös läpikäydä seuraavalla for-silmukalla (enhanced for): for ( parametri : taulukonnimi) lauseita; Tällöin edellisen sivun kk-taulukon läpikäynti sujuisi esim. seuraavasti: for ( int num: kk) System.out.println( päivät: +num); 12.9.2012 Outi Grotenfelt 4

Taulukot: Array.. 2-ulotteiset taulukot toimivat vastaavasti Array-luokan ominaisuuksia valmiita toimintoja: double[ ] tuplataulu = {8.4, 9.3, 0.2, 7.9, 3.4}; int[ ] tayttotaulu = new int[6]; Arrays.sort( tuplataulu ); // taulukko on järjestetty Arrays.fill (tayttotaulu, 6); // täyttää taulukon numeroilla 6 System.arraycopy(tayttoTaulu1,0, tayttotaulu2,0, tayttotaulu1.length); // kopioi taulukon Boolean b = Arrays.equals(tayttoTaulu1, tayttotaulu2); // vertaa samuutta, palauttaa totuusarvon int paikka = Arrays.binarySearch(tayttoTaulu, 4); //etsii, jos arvo löytyy taulukosta 12.9.2012 Outi Grotenfelt 5

Taulukot: kokoelmat ja luokka ArrayList Etukäteen ei tarvita tietoa taulukon koosta Sopii olioiden säilytykseen Kirjastossa java.util ArrayList<t> Korvaa <t> sopivalla tyyppimäärittelyllä ArrayList< String > omalista; yo. listaan voi tallettaa merkkijonoja 12.9.2012 Outi Grotenfelt 6

Taulukot: kokoelmat ja luokka ArrayList Käytettävissä olevat toiminnot: add lisää elementin ArrayListin loppuun clear tyhjentää koko listan contains palauttaa true, jos elementti löytyy listasta get palauttaa annetun indeksin mukaisen elementin indexof palauttaa ensimmäisen haetun elementin mukaisen indeksin remove poistaa ensimmäisen löydetyn elementin remove poistaa halutun indeksin mukaisen elementin size palauttaa listan koon trimtosize trimmaa listan senhetkisen tarpeen kokoiseksi 12.9.2012 Outi Grotenfelt 7

public static void display(arraylist< String > palikat, String otsikko){ System.out.println(otsikko); for ( String item : palikat) System.out.print(" "+item); System.out.println(); } public static void main(string[] args) { ArrayList< String > palikat = new ArrayList< String >(); palikat.add("punainen"); palikat.add(0,"keltainen"); System.out.print("Eka tulos: "); for(int i=0; i<palikat.size(); i++) System.out.print(" "+palikat.get(i)); System.out.println(); display(palikat,"toka tulostus:"); palikat.add("vihreä"); palikat.add("keltainen"); display(palikat,"kolmas tulostus"); palikat.remove("keltainen"); display(palikat,"neljäs tulostus"); palikat.remove(1); display(palikat,"viides tulostus"); System.out.print("punainen listassa "); System.out.print(palikat.contains("punainen")? "kyllä":"ei"); } Kalvosarjan tekijän nimi 8

Yliluokat ja aliluokat Junat ja polkupyörät ovat kulkuneuvoja. Yliluokasta periytyvä aliluokka perii yliluokan ominaisuudet ja metodit. Aliluokalle voidaan luoda omia ominaisuuksia ja metodeja. Yliluokalta periytyvät ominaisuudet ja metodit voidaan ylikirjoittaa. Edellä voisimme määritellä: yliluokan Kulkuneuvo luokat Polkupyörä ja Juna aliluokiksi luokalle Kulkuneuvo 7.9.2012 Vesa Ollikaine & Outi Grotenfelt 9

Esimerkki: yliluokka Kulkuneuvo Kulkuneuvoilla on nopeus ja huippunopeus. Niillä voidaan ajaa ja niitä kiihdytetään. Niistä lähtee ääntä. Osa gettereistä ja settereistä on koodiesimerkeissä esittämättä tilasyistä. 7.9.2012 Vesa Ollikaine & Outi Grotenfelt 10

Esimerkki: yliluokka Kulkuneuvo Yliluokka sisältää kulkuneuvojen yhteiset ominaisuudet ja metodit. Yliluokalla on omat alustajansa, jossa ominaisuudet alustetaan. Junat ja polkupyörät ovat kulkuneuvoja Luodaan seuraavaksi niille luokat, jotka periytyvät Kulkuneuvo-luokasta. 7.9.2012 Vesa Ollikaine & Outi Grotenfelt 11

Esimerkki: aliluokka Juna Junissa on vaunuja. Ovet menevät auki ja kiinni. Alustajassa kutsutaan automaattisesti Kulkuneuvo-luokan tyhjää, parametritonta alustajaa. Luokassa määritellään ominaisuudet ja metodit, jotka ovat mielekkäitä vain junille. 7.9.2012 Vesa Ollikaine & Outi Grotenfelt 12

Esimerkki: aliluokka Polkupyörä Polkupyörällä on merkki ja vaihteita. Alustajassa kutsutaan eksplisiittisesti Kulkuneuvo-luokan parametrillista alustajaa. Luokassa määritellään ominaisuudet (ja voitaisiin määritellä metodit), jotka ovat mielekkäitä vain polkupyörille. 7.9.2012 Vesa Ollikainen & Outi Grotenfelt 13

Esimerkki: Testiluokka Metodeja kiihdytä() ja aja() voidaan soveltaa sekä junille että polkupyörille. Metodia suljeovet() voidaan soveltaa vain luokan Juna olioille. 7.9.2012 Vesa Ollikainen & Outi Grotenfelt 14

Konstruktoreista Aliluokan alustaja/konstruktori kutsuu oletusarvoisesti yliluokan parametritonta alustajaa. Yliluokan (parametrillista tai parametritonta) alustajaa voidaan eksplisiittisesti kutsua super()-metodin avulla. Kutsun on tällöin oltava aliluokan alustajassa ensimmäisenä lauseena. 7.9.2012 Vesa Ollikainen & Outi Grotenfelt 15

Yliluokista ja aliluokista Kulkuneuvo Polkupyörä Juna UML-luokkakaaviotekniikassa periytyminen kuvataan avokärkisellä nuolella. Luokalla voi olla vain yksi yliluokka. Java-kieli ei tue moniperintää. 7.9.2012 Vesa Ollikainen & Outi Grotenfelt 16

Ylikirjoittaminen Luokassa Juna Ylikirjoitettaessa yliluokan metodi määritellään aliluokassa uudelleen. Sama nimi, parametrit ja paluuarvon tyyppi. Esimerkissä ylikirjoitetaan Juna-luokalle kiihdytä()- metodi sallimaan myös negatiivinen nopeus. (Juna voi myös peruuttaa). Huomaa getterien ja setterien käyttö. Yliluokan privatemuuttujat eivät näy aliluokkaan. Yliluokan samannimistä metodia x voitaisiin tarvittaessa kutsua aliluokasta ilmauksella super.x(); 7.9.2012 Vesa Ollikainen & Outi Grotenfelt 17

Tyypinmuunnoksista Luokassa Testi Luotua aliluokan oliota voidaan käsitellä yliluokkansa tyyppisenä. Tällöin vain yliluokan metodit näkyvät. Aliluokan metodien käyttö edellyttää tyypinmuunnosta aliluokkaan (downcasting). Jos outoneuvo olisi luotu (new-sanalla) Kulkuneuvoolioksi, ei em. tyypinmuunnos olisi mahdollinen. 7.9.2012 Vesa Ollikainen & Outi Grotenfelt 18

Object-luokka Object-luokka on kaikkien luokkien kantaluokka. Sen metodit peritään automaattisesti. Object-luokkaa ei tarvitse eikä saa eksplisiittisesti periä extends-avainsanalla. Luokan metodit voidaan ylikirjoittaa. Luokan metodeja: Class getclass() palauttaa olion luokan int hashcode() palauttaa olion hajautusarvon boolean equals() testaa olioiden yhtäsuuruuden Object clone() kopioi olion String tostring() palauttaa olion tilamerkkijonon 7.9.2012 Vesa Ollikainen & Outi Grotenfelt 19

Esimerkki: tostring() Luokassa Polkupyörä Luokassa Testi Object-luokan metodi tostring() ilmoittaa olion tilan merkkijonona. Metodin uudelleenkirjoittaminen aliluokassa helpottaa ohjelmien testaamista. Yllä olevan esimerkin tulostuslauseessa oliolle tehdään tostring()-metodin määräämä muunnos merkkijonoksi. 7.9.2012 Vesa Ollikainen & Outi Grotenfelt 20

KIITOS! www.metropolia.fi www.facebook.com/metropoliaamk Outi.grotenfelt@metropolia.fi