1 / 21

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

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.

cecile
Télécharger la présentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 opTaulukot & Periytyminen

  2. 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 Outi Grotenfelt

  3. 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]; Outi Grotenfelt

  4. 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); Outi Grotenfelt

  5. 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 Outi Grotenfelt

  6. 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; Outi Grotenfelt

  7. Taulukot: kokoelmat ja luokka ArrayList • Käytettävissä olevat toiminnot: add lisää elementin ArrayListin loppuun clear tyhjentää koko listan containspalauttaa true, jos elementti löytyy listasta getpalauttaa annetun indeksin mukaisen elementin indexOfpalauttaa ensimmäisen haetun elementin mukaisen indeksin removepoistaa ensimmäisen löydetyn elementin removepoistaa halutun indeksin mukaisen elementin size palauttaa listan koon trimToSizetrimmaa listan senhetkisen tarpeen kokoiseksi Outi Grotenfelt

  8. 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

  9. Yliluokat ja aliluokat • 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 ”Junat ja polkupyörät ovat kulkuneuvoja.” Vesa Ollikaine & Outi Grotenfelt

  10. 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ä. Vesa Ollikaine & Outi Grotenfelt

  11. 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. Vesa Ollikaine & Outi Grotenfelt

  12. 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. Vesa Ollikaine & Outi Grotenfelt

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

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

  15. Konstruktoreista • Aliluokan alustaja/konstruktorikutsuu 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. Vesa Ollikainen & Outi Grotenfelt

  16. Yliluokista ja aliluokista • UML-luokkakaaviotekniikassaperiytyminen kuvataan avokärkisellä nuolella. • Luokalla voi olla vain yksi yliluokka. • Java-kieli ei tue moniperintää. Vesa Ollikainen & Outi Grotenfelt

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

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

  19. 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 • inthashCode() palauttaa olion hajautusarvon • booleanequals() testaa olioiden yhtäsuuruuden • Object clone() kopioi olion • StringtoString() palauttaa olion tilamerkkijonon Vesa Ollikainen & Outi Grotenfelt

  20. LuokassaPolkupyörä Esimerkki: toString() • 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 Vesa Ollikainen & Outi Grotenfelt

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

More Related