Taulukot: Array Taulukko Javassa pitää aina perustaa (new)

Slides:



Advertisements
Samankaltaiset esitykset
Tuloksellinen Java-ohjelmointi Luku 3 Luokkien käyttäminen
Advertisements

18. Abstraktit tietotyypit
15. Loogiset operaatiot.
Olio-ohjelmoinnin perusteet luento 3: Muuttujista ja funktioista Sami Jantunen LTY/Tietotekniikan osasto.
6. Metodit.
© Jukka Harju, Viittausmuuttujat. © Jukka Harju, Viittaukset •Viittausmuuttuja sisältää tiedon siitä missä muistipaikassa olio.
16. Javan omat luokat.
1 Ehtolausekkeet Ehdot, valintalausekkeet Boolean-algebra.
© 2004 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice Java-perusteet Kari Kujansuu
Nämä kalvot on lisensoitu Creative Commons Attribution-ShareAlike 1
Tuloksellinen Java-ohjelmointi Luku 9 Taulukot ja perustietorakenteet
© Jukka Harju, 2005 Javan util -pakkaus •Javan util -pakkaus sisältää monia hyödyllisiä luokkia ja rajapintoja. –Kaikki ao luokat ovat pakkauksessa java.util.
Taulukot Jukka Juslin © Jukka Juslin 2006.
Taulukoiden määrittely, käsittely ja kopiointi Vaihtoehdot taulukoille
22. Taulukot.
Ohjelmointitaito (ict1td002, 12 op) Syksy 2008
Näytölle tulostaminen. 7.2 Sisällys System.out.println - ja System.out.print -operaatiot. Tulostus erikoismerkeillä. Edistyneempää tulosteiden.
Java-ohjelmointi Opas ammattimaiseen osaamiseen Luku 4 Toistolauseet
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
Yksinkertaiset graafiset syöttö- ja tulostustoiminnot.
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Tietorakenneluokkia 2: HashMap, TreeMap.
© 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.
Toiston tekeminen Javalla  Mikä toistorakenne on?  while toistorakenne  do-while toistorakenne  for toistorakenne 1.
TAULUKKO YKSIULOTTEINEN TAULUKKO. TAULUKKO  Taulukon tarkoitus Ohjelmassa tarvitaan paljon samantyyppisiä samaan kohdealueeseen kuuluvia muuttujia Näitä.
© Jukka Harju, Jukka Juslin
1 Kertaus koetta varten oleellisista asioista Jukka Juslin.
7. Oliot ja viitteet.
Map-luokka Mikä Map on? Mapin esittely ja luonti Map-luokan metodeja Mappiin lisääminen Mapin läpikäynti Mapista poistaminen 1.
String-vertailusta ja Scannerin käytöstä (1/2)
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.
20. Javan omat luokat.
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Standardi- ja tietorakenneluokkia.
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.
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.
Näppäimistöltä lukeminen Sisällys Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä. In -luokka.
Hyvä ohjelmointitapa (osa 2) Yleistä Lisää hyviä ohjelmointikäytäntöjä: − Jaa pitkä koodi osiin. − Käytä attribuutteja säästeliäästi.
Olioon kohdistuvia perustoimintoja tMyn1 Olioon kohdistuvia perustoimintoja Kopiointimuodostin (copy constructor) alustaa olion tietojäsenet saman luokan.
22. Taulukot.
Ohjelmointitaito (ict1td002, 12 op) Kevät 2008 Raine Kauppinen
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Pakkaukset ja määreet.
Olioiden taulukointi Perustaulukon käyttö Luokan ilmentymät voidaan tallettaa taulukkoon samoin kuin muuttujat Esimerkki talletetaan taulukkoon opintojaksojen.
Javascript 2: Ohjelmointikielen ominaisuudet Jaana Holvikivi Metropolia.
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.
15. Ohjelmoinnin tekniikkaa
Tiedostot. 8.2 Sisältö Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen.
16. Javan omat luokat Sisällys Johdanto. Object -luokka: − toString -, equals -, clone - ja getClass -metodit. Comparable -rajapinta: − compareTo.
String-vertailusta ja Scannerin käytöstä (1/2)
6. Tiedostot.
2. Taulukot.
4. Komentoriviparametrit
7. Hyvä ohjelmointitapa..
3. Luokat, oliot ja metodit Java-kielessä (Lausekielinen ohjelmointi I ja II –kursseilla opitun kertausta.)
7. Näytölle tulostaminen
2. Taulukot.
6. Metodit.
7. Oliot ja viitteet.
3. Komentoriviparametrit
4. Attribuutit.
7. Näytölle tulostaminen
3. Attribuutit.
4. Luokan testaus ja käyttö olion kautta
eli oliotiedostojen käsittely
Esityksen 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ä Taulukko voi olla myös tyyppiä String int [] sateet= new int [12]; String[] b = new String[27]; Taulukon esittely Taulukko-olion luonti 12.9.2012 Outi Grotenfelt

Taulukot: Array.. Taulukolle voidaan myös antaa alkuarvot Tällöin taulukon kokoa ei tarvitse kertoa Taulukko voidaan tehdä myös omista olioista: int [] kk = {31,28,31,30,31,30,31,31,30,31,30,31}; 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

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

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

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ä yo. listaan voi tallettaa merkkijonoja ArrayList< String > omaLista; 12.9.2012 Outi Grotenfelt

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

Kalvosarjan tekijän nimi 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)); 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

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

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

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

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

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

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

Vesa Ollikainen & Outi Grotenfelt 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

Yliluokista ja aliluokista 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

Vesa Ollikainen & Outi Grotenfelt Ylikirjoittaminen 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 private- muuttujat eivät näy aliluokkaan. Yliluokan samannimistä metodia x voitaisiin tarvittaessa kutsua aliluokasta ilmauksella super.x(); Luokassa Juna 7.9.2012 Vesa Ollikainen & Outi Grotenfelt

Vesa Ollikainen & Outi Grotenfelt Tyypinmuunnoksista 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) Kulkuneuvo- olioksi, ei em. tyypinmuunnos olisi mahdollinen. Luokassa Testi 7.9.2012 Vesa Ollikainen & Outi Grotenfelt

Vesa Ollikainen & Outi Grotenfelt 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

Esimerkki: toString() Luokassa Polkupyörä 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. Luokassa Testi 7.9.2012 Vesa Ollikainen & Outi Grotenfelt

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