Rajapinta (interface)



Samankaltaiset tiedostot
Listarakenne (ArrayList-luokka)

Metodien tekeminen Javalla

public static void main (String [] args)

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

Lista luokan sisällä

Olio-ohjelmointi Javalla

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

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

Periytyminen (inheritance)

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

YHTEYSSUHDE (assosiation)

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

Ohjelmoinnin jatkokurssi, kurssikoe

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

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

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki

1. Kun käyttäjä antaa nollan, niin ei tulosteta enää tuloa 2. Hyväksy käyttäjältä luku vain joltain tietyltä väliltä (esim tai )

Luokan sisällä on lista

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

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

KOHDELUOKAN MÄÄRITTELY

16. Javan omat luokat 16.1

1 Tehtävän kuvaus ja analysointi

Java-kielen perusteita

Mikä yhteyssuhde on?

Ohjelmointi 2 / 2010 Välikoe / 26.3

Java-kielen perusteita

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti

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

Taulukoiden käsittely Javalla

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

Luokan muodostimet (Constructors)

Java-kielen perusteita

Java kahdessa tunnissa. Jyry Suvilehto

Ohjelmointityö 3. Mikko Laamanen

Ohjelmoinnin perusteet, kurssikoe

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

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

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

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi

14. Poikkeukset 14.1

14. Poikkeukset 14.1

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

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

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Metodien tekeminen Javalla

Vahva koostumussuhde (Composition)

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

Java-kielen perusteet

7. Näytölle tulostaminen 7.1

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

1. Omat operaatiot 1.1

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Java-API, rajapinnat, poikkeukset, UML,...

Java-kielen perusteet

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

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

9. Periytyminen Javassa 9.1

Poikkeustenkäsittely

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

Javan perusteita. Janne Käki

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

Ehto- ja toistolauseet

812341A Olio-ohjelmointi, IX Olioiden välisistä yhteyksistä

9. Periytyminen Javassa 9.1

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

17. Javan omat luokat 17.1

Rajapinnasta ei voida muodostaa olioita. Voidaan käyttää tunnuksen tyyppinä. Rajapinta on kuitenkin abstraktia luokkaa selvästi abstraktimpi tyyppi.

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä

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

2. Olio-ohjelmoinista lyhyesti 2.1

Tietorakenteet, laskuharjoitus 7,

Ohjelmointi 2 / 2008 Välikoe / Pöytätestaa seuraava ohjelma.

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 16.3

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 15.3

TIETORAKENTEET JA ALGORITMIT

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

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

private TreeMap<String, Opiskelija> nimella; private TreeMap<String, Opiskelija> numerolla;

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

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

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

Javan GUI Scratchaajalle

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

Projekti 1 Säikeet ja kriittisen vaiheen kontrollointi javalla

Mitä poikkeuskäsittely tarkoittaa?

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

12. Näppäimistöltä lukeminen 12.1

Tietorakenteet, laskuharjoitus 3, ratkaisuja

8. Näppäimistöltä lukeminen 8.1

Luokat ja oliot. Ville Sundberg

Tietojen syöttäminen ohjelmalle. Tietojen syöttäminen ohjelmalle Scanner-luokan avulla

Ohjelmistojen mallintaminen viikon 4 laskareiden mallivastauksia

20. Javan omat luokat 20.1

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

4. Olio-ohjelmoinista lyhyesti 4.1

7. Oliot ja viitteet 7.1

19. Olio-ohjelmointia Javalla 19.1

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Transkriptio:

1 Rajapinta (interface) Mikä rajapinta on? Rajapinta ja siitä toteutettu luokka Monimuotoisuus ja dynaaminen sidonta Rajapinta vs periytyminen 1 Mikä rajapinta on? Rajapintoja käytetään, kun halutaan määritellä metodille nimi siten, että kaikissa rajapinnan toteuttavissa luokissa on toteutettu ko. niminen metodi monimuotoisuus ja dynaaminen sidonta pystytään toteuttamaan helposti Rajapinta määrittelee metodien nimet, parametrit ja paluuarvot, mutta rajapinta ei toteuta niitä. Rajapintaluokasta voidaan toteuttaa useita luokkia siten, että nämä toteuttavat rajapintaluokan metodit. Rajapinnasta toteutettuun luokkaan voidaan lisäksi laittaa luokan omia metodeja ja attribuutteja. 2

2 Javassa on valmiina rajapintoja, joista on toteutettu yksi tai useampi luokka. Collection rajapinnasta on tehty Set ja List rajapinnat. List rajapinnasta on toteutettu ArrayList- ja LinkedList-luokat. List rajapintaan on määritelty mm. seuraavat metodit: boolean add ( E e) E get (int index) E remove (int index) Nämä metodi löytyvät toteutettuna eli ovat siis käytettävissä kummassakin luokassa ArrayList ja LinkedList 3 public interface X public void metodi(); public class Y implements X public void metodi() // Metodin koodi Rajapinta ja sen toteutus interface -> rajapintaluokka Rajapintaluokassa on vain metodien määrittely ja vakiot. Rajapintaluokassa ei saa olla attribuutteja. Rajapinnan ja siellä olevien metodien näkyvyys on aina public. Rajapinta Rajapinnasta toteutettu luokka kertoo, mistä rajapinnoista luokka on toteutettu Rajapinnan toteuttavassa luokassa on toteutetttava rajapinnan kaikki 4 metodit.

3 public interface Ohjelma // rajapinta public void aja() ; public class KertotauluOhjelma implements Ohjelma public void aja() for (int i = 1; I <= 10;i++) tulostakertotaulu(i); System.out.println(); private void tulostakertotaulu (int luku) for (int i = 1; i <= 10;i++) System.out.print( luku * i + " "); 5 import java.util.scanner; public class SummaOhjelma implements Ohjelma public void aja() int summa = 0; for (int i=1 ; i< 100 ; i++) summa = summa + i; System.out.print(i + " + "); summa = summa + 100; System.out.println(100 + " = " + summa); 6

4 import java.util.scanner; public class KertomaOhjelma implements Ohjelma private Scanner input; public KertomaOhjelma () input = new Scanner(System.in); public void aja() int luku = pyydaarvo(); int kertoma = 1; for (int i = 1; i <= luku; i++) kertoma = kertoma * i; System.out.println("Luvun " + luku + " kertoma on " + kertoma); 7 // pyytää käyttäjältä numeron, jonka kertoma aiotaan // laskea private int pyydaarvo() int numero; System.out.print("Anna luku, jonka kertoman haluat "+ "tulostettavan: "); numero = input.nextint(); return numero; // end of class KertomaOhjelma 8

5 Monimuotoisuus import java.util.scanner; public class PaaOhjelma public static void main(string[] args) Scanner input = new Scanner(System.in); int valinta; Ohjelma kutsuttava=null; do Määritellään muuttujan tyypiksi rajapinta Ohjelma System.out.println("1) käynnistä kertotaulu ohjelma"); System.out.println("2) käynnistä summa ohjelma"); System.out.println("3) käynnistä kertoma ohjelma"); System.out.println("0) lopeta"); System.out.print("valitse: "); valinta = input.nextint(); // ohjelma jatkuu seuraavalla sivulla 9 Monimuotoisuus ja dynaaminen sidonta Annetaan muuttujan Ohjelma kutsuttava arvoksi Ohjelma rajapinnan toteuttava olio if (valinta == 1) kutsuttava = new KertotauluOhjelma(); if (valinta == 2) kutsuttava = new SummaOhjelma(); if (valinta == 3) kutsuttava = new KertomaOhjelma(); if (valinta!= 0) Kääntäjä tutkii onko kutsuttava.aja(); muuttajalla, jonka tyyppi on Ohjelma, metodi aja(). while (valinta!= 0); ON // end of PaaOhjelma Kun ohjelma ajetaan, järjestelmä tutkii, mihin olioon muuttuja kutsuttava viittaa ja kutsuu tämän olion metodia aja() == Dynaaminen sidonta ja monimuotoisuus 10

6 Rajapinta vs periytyminen Jos periytettävä luokka on ns. normaaliluokka, jolla voi tehdä olioita, sille ei voi toteuttaa metodia, jonka periytettävät luokat joutuisivat toteuttamaan Abstrakti luokka On luokka, johon ei voi tehdä olioita Luokassa pitää olla vähintään yksi puhdas abstrakti metodi, jota ei toteuteta abstraktissa luokassa vaan se on toteutettava niissä luokissa, jotka periytetään ko. abstraktista luokasta abstrakti luokka ei ole kuitenkaan samanlainen kuin rajapinta Abtraktiin luokaan voidaan tehdä muitakin kuin abtrakteja metodeita ja luokassa voi olla attribuutteja 11