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

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

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

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

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

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

Rajapinta (interface)

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op

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

9. Periytyminen Javassa 9.1

9. Periytyminen Javassa 9.1

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

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

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

Java kahdessa tunnissa. Jyry Suvilehto

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

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

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

Sisällys. Mitä on periytyminen? Yksittäis- ja moniperiytyminen. Oliot ja perityt luokat. Periytymisen käyttö. 8.2

15. Ohjelmoinnin tekniikkaa 15.1

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

Ohjelmoinnin jatkokurssi, kurssikoe

Mitä on periytyminen?

15. Ohjelmoinnin tekniikkaa 15.1

Sokkelon sisältö säilötään linkitetyille listalle ja tekstitiedostoon. Työ tehdään itsenäisesti yhden hengen ryhmissä. Ideoita voi vaihtaa koodia ei.

16. Javan omat luokat 16.1

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

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

Kertaus: yleistys-erikoistus ja perintä

Ohjelmistojen mallintaminen viikon 4 laskareiden mallivastauksia

Ohjelmistojen mallintaminen. Luento 7,

Ohjelmointi 2 / 2010 Välikoe / 26.3

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

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

Luento 2. T Ohjelmoinnin jatkokurssi T1 & T Ohjelmoinnin jatkokurssi L1. Luennoitsija: Otto Seppälä

UML -mallinnus LUOKKAKAAVIO EERO NOUSIAINEN

T Olio-ohjelmointi Osa 5: Periytyminen ja polymorfismi Jukka Jauhiainen OAMK Tekniikan yksikkö 2010

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

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

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

Olio-ohjelmoinnissa luokat voidaan järjestää siten, että ne pystyvät jakamaan yhteisiä tietoja ja aliohjelmia.

12. Monimuotoisuus 12.1

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

P e d a c o d e ohjelmointikoulutus verkossa

Pino S on abstrakti tietotyyppi, jolla on ainakin perusmetodit:

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. II Johdanto olio-ohjelmointiin

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti

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

Yksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } }

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

Periytyminen (inheritance)

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

TIE Ohjelmistojen suunnittelu. Luento 8..9: moniperintä

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

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

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

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

Solidity älysopimus ohjelmointi. Sopimus suuntautunut ohjelmointi

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

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

Pakkauksen kokoaminen

TIE Samuel Lahtinen. Lyhyt UML-opas. UML -pikaesittely

815338A Ohjelmointikielten periaatteet

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton

Graafinen käyttöliittymä, osa 1

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. VII Suunnittelumallit Adapter ja Composite

Olio-ohjelmointi: Luokkien toteuttaminen. Jukka Juslin

Pakkauksen kokoaminen

Mikä yhteyssuhde on?

JReleaser Yksikkötestaus ja JUnit. Mikko Mäkelä

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

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

Sisällys. 19. Unified Modeling Language (UML) Johdanto. Johdanto. Johdanto. Luokkakaavio:

Olio-ohjelmointi Suunnittelumallit Adapter ja Composite. 1. Adapter

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

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

Graafinen käyttöliittymä, osa 3

14. Poikkeukset 14.1

Ohjelmistojen mallintaminen Luokkakaaviot Harri Laine 1

1. Omat operaatiot 1.1

4. Olio-ohjelmoinista lyhyesti 4.1

UML ja luokkien väliset suhteet

12. Monimuotoisuus 12.1

Ohjelmointi 2, välikoe

Metodien tekeminen Javalla

Sopimuspohjainen olio-ohjelmointi

1. Olio-ohjelmointi 1.1

JavaRMI 1 JAVA RMI. Rinnakkaisohjelmoinnin projekti 1 osa C Tekijät: Taru Itäpelto-Hu Jaakko Nissi Mikko Ikävalko

Javan perusteita. Janne Käki

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Poikkeustenkäsittely

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

Luokat ja oliot. Ville Sundberg

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

KOHDELUOKAN MÄÄRITTELY

YHTEYSSUHDE (assosiation)

useampi ns. avain (tai vertailuavain) esim. opiskelijaa kuvaavassa alkiossa vaikkapa opintopistemäärä tai opiskelijanumero

2. Olio-ohjelmoinista lyhyesti 2.1

TyontekijaOhjelma. +main() (käyttää) + = public - = private

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Transkriptio:

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

Rajapinnat Java-kieli ei tue luokkien moniperintää. Jokaisella luokalla voi olla vain yksi välitön yliluokka. Toisinaan olisi edullista, jos aliluokka voisi periä muuttujia ja metodeja useammalta yliluokalta. Rajapintojen avulla voidaan kiertää moniperinnän puute. Luokka perii yhden yliluokan. Luokka voi lisäksi toteuttaa yhden tai useampia rajapintoja. Toteutuksella tarkoitetaan, että rajapinnan määrittämät metodit kirjoitetaan rajapinnan toteuttavassa luokassa. Vesa Ollikainen & Outi Grotenfelt 2

Rajapinnat Käsitteellisesti rajapinta muistuttaa abstraktia luokkaa, jonka kaikki metodit ovat abstrakteja. Rajapinnat ovat kuitenkin luokkahierarkian ulkopuolella. Rajapinnat ovat koodin modularisuutta edistävä työväline. Rajapinnan toteutus takaa, että määrätyt metodit ovat käytössä kaikissa sen toteuttavissa luokissa. Rajapintojen käyttö vähentää toteutukseen tehtävien muutoksen säteilyä toteuttavan luokan ulkopuolelle. Vesa Ollikainen & Outi Grotenfelt 3

Rajapinta luokkakaaviossa Luokkakaaviossa luokan ja sen toteuttaman rajapinnan suhde ilmaistaan katkoviivanuolella. Kuvan esimerkki sallii myös laulamattomien lintujen toteutuksen. Vesa Ollikainen & Outi Grotenfelt 4

Esimerkki rajapinnan määrittelystä Rajapinta Laulava määrää, että kaikissa sen toteuttavissa luokissa on toteutettava metodi laula(). Rajapinta määritetään avainsanalla interface. Kunkin metodin määreinä on public abstract. Määreet ovat voimassa vaikkei niitä kirjoittaisi. Vesa Ollikainen & Outi Grotenfelt 5

Esimerkki rajapinnan määrittelystä.. Talitiainen- ja Varis-luokat ovat Lintu-luokan aliluokkia. Aliluokat toteuttavat Laulava-rajapinnan. toteutus ilmaistaan implements-avainsanalla jos toteutettavia rajapintoja on useita, ne erotetaan pilkuin. Vesa Ollikainen & Outi Grotenfelt 6

Esimerkki rajapinnan määrittelystä.. Myös Iskelmätähti-luokka toteuttaa Laulavarajapinnan. Vesa Ollikainen & Outi Grotenfelt 7

Esimerkki rajapinnan määrittelystä.. Yllä laulavat-taulukko sisältää viittauksia rajapintoihin. Linnuille on määritetty muni()-metodi. Tarvitaan tyypinmuunnos alaspäin. Vesa Ollikainen & Outi Grotenfelt 8

Muuttujat rajapinnoissa Rajapintoihin voi määrittää myös muuttujia. Muuttujien määreinä on aina public static final. Nämäkin määreet ovat voimassa ilman kirjoittamista. Vesa Ollikainen & Outi Grotenfelt 9

Rajapintojen toteutus ja perintä public interface Kissa extends Nisäkäs, Kotieläin { } int elämät = 7; void kehrää(); // Rajapinnat voivat periä toisia rajapintoja. periytyminen kuvataan extends-avainsanalla kuten luokkien tapauksessa. Rajapinta voi samanaikaisesti periä monta rajapintaa. extends-avainsanan perässä määritettävät perittävät rajapinnat erotetaan pilkuilla. Huomaa, että muuttuja elämät on automaattisesti static ja final. Metodi kehrää on automaattisesti public ja abstract. Vesa Ollikainen & Outi Grotenfelt 10

Rajapinnat ja tehdasluokka Rajapinnan toteuttavien olioiden luonti voidaan piilottaa tehdasluokkiin. Esimerkissä tehdasluokka luo Laulava-rajapinnan toteuttavia olioita. Vuoron perään Talitiainen- ja Varis-olioita. Vesa Ollikainen & Outi Grotenfelt 11

Rajapinnat ja tehdasluokka.. Testiluokka ei missään vaiheessa tiedä, mitä rajapinnan toteuttajia on olemassa. Tämä on eristetty tehdasluokkaan. Uuden linnun lisäys ei aiheuttaisi muutoksia testiluokkaan.. Vesa Ollikainen & Outi Grotenfelt 12

Sisäluokat Sisäluokka on toisen luokan sisällä määritelty luokka. Vain ulkoluokasta (luokasta, jonka sisällä sisäluokka on), pääsee käsiksi sisäluokkaan. Ulkoluokassa on tehtävä ilmentymä sisäluokan oliosta. Sisäluokasta pääsee käsiksi ulkoluokan muuttujiin ja metodeihin. Koskee myös private-määreellä suojattuja. Vesa Ollikainen & Outi Grotenfelt 13

Esimerkki Tarkastellaan esimerkkinä noppapelin toteutusta: Pelaajat heittävät vuoron perään noppaa. Se voittaa, joka saavuttaa ensimmäisenä sovitun pisterajan. Jos useampi pelaaja saavuttaa pisterajan samalla kierroksella, heistä ensimmäisenä heittänyt voittaa pelin. Määritetään Pelaaja-luokalle nyt sisäluokka Pistelaskuri. Sisäluokka pitää sisällään pelaajan pistemäärän ja siihen liittyvät metodit (mm. nopanheitolla kasvatuksen). Ulkoluokka hyödyntää sisäluokan palveluja. Vesa Ollikainen & Outi Grotenfelt 14

Esimerkki.. Pistelaskuri on sisäluokka. Vesa Ollikainen & Outi Grotenfelt 15

Esimerkki.. Vesa Ollikainen & Outi Grotenfelt 16

Esimerkki.. Vesa Ollikainen & Outi Grotenfelt 17

Anonyymi sisäluokka Anonyymi sisäluokka on nimetön rajapinnan toteuttava luokka, joka sijaitsee toisen luokan sisällä. Toteutus annetaan samalla, kun olio luodaan new-avainsanalla. Anonyymiä sisäluokkaa käytetään yleisesti tapahtumakäsittelyn ohjelmointiin. esimerkiksi koodi, joka suoritetaan, kun käyttöliittymäobjektille tehdään jotain (kuten painetaan painiketta). Vesa Ollikainen & Outi Grotenfelt 18

Anonyymi sisäluokka, esimerkki Anonyymi sisäluokka määrittää Laulavarajapinnan toteutuksen Vesa Ollikainen & Outi Grotenfelt 19

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