Periytyminen (inheritance)

Samankaltaiset tiedostot
Olio-ohjelmointi Javalla

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

Mikä yhteyssuhde on?

Luokan sisällä on lista

public static void main (String [] args)

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

YHTEYSSUHDE (assosiation)

Metodien tekeminen Javalla

Vahva koostumussuhde (Composition)

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

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

Poikkeustenkäsittely

Rajapinta (interface)

9. Periytyminen Javassa 9.1

9. Periytyminen Javassa 9.1

Lista luokan sisällä

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

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

KOHDELUOKAN MÄÄRITTELY

Listarakenne (ArrayList-luokka)

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

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

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

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

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

Metodien tekeminen Javalla

Java kahdessa tunnissa. Jyry Suvilehto

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

Luokan muodostimet (Constructors)

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

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

Luokat ja oliot. Ville Sundberg

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

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

Taulukoiden käsittely Javalla

Ohjelmointi 2, välikoe

14. Poikkeukset 14.1

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

UML ja luokkien väliset suhteet

Java-kielen perusteita

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

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

1 Tehtävän kuvaus ja analysointi

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

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Ohjelmointi 2 / 2010 Välikoe / 26.3

Olio-ohjelmointi Syntaksikokoelma

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

16. Javan omat luokat 16.1

Ehto- ja toistolauseet

Ohjelmoinnin jatkokurssi, kurssikoe

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

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

Oliot viestivät metodeja kutsuen

Tietokannat II -kurssin harjoitustyö

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

14. Poikkeukset 14.1

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

Ohjelmoinnin perusteet, kurssikoe

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

Olio-ohjelmointi: Luokkien toteuttaminen. Jukka Juslin

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

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti

7. Näytölle tulostaminen 7.1

C# olio-ohjelmointi perusopas

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

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 )

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

Ohjelmointityö 3. Mikko Laamanen

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

20. Javan omat luokat 20.1

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

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

Javan perusteita. Janne Käki

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

Luokkakirjastot. esiintymämetodien käytöstä:

Rinnakkaisohjelmointi, Syksy 2006

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

Javan GUI Scratchaajalle

1. Omat operaatiot 1.1

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

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

Mitä poikkeuskäsittely tarkoittaa?

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

Merkkien ja merkkijonojen käsittelyä Javalla

812347A Olio-ohjelmointi, X Reflektiivisyys

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

2. Olio-ohjelmoinista lyhyesti 2.1

Ohjelmistojen mallintaminen, syksy 2011, laskuharjoitus 2

Taulukot. Jukka Harju, Jukka Juslin

Java-kielen perusteita

812341A Olio-ohjelmointi, Olio-ohjelmoinnin peruskäsitteet ja Java-kieli

OHJ2k12 välikoe

7. Oliot ja viitteet 7.1

Kooste. Esim. Ympyrän keskipiste voidaan ajatella ympyrän osaksi.

19. Olio-ohjelmointia Javalla 19.1

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

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

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

Transkriptio:

1 Periytyminen (inheritance) Mitä periytyminen on? Yli- ja aliluokka Konstruktorit Get- ja set-metodi Muut metodit tostring Yksinkertainen pääohjelma 1 Mitä periytyminen on? Periytymisen avulla olemassa olevasta luokasta voidaan johtaa uusi luokka tai jos luokkien suunnitteluvaiheessa havaitaan, että usealla luokalla on yhteisiä ominaisuuksia, tehdään yhteisistä ominaisuuksista yliluokka josta muut luokat periytetään Esim. Tili Asiakas asiakasnro etunimi sukunimi osoite Luottotili KantaAsiakas bonuskuukausi bonusvuosi 2

2 Periyttäminen Tili-luokasta (yliluokka) voidaan periyttää Luottotili-luokka (aliluokka), jolla on -attribuutti. Aliluokalla voi olla uusia attribuutteja ja metodeja yliluokan metodeja uusiksi koodattuna 3 public class Tili { private String tili; private double ; Periyttäminen Yliluokka Aliluokka private double ; kertoo, minkä luokan tämä luokka perii Aliluokka perii kaikki yliluokan attribuutit ja metodit. Aliluokkaan voidaan määritellä uusia attribuutteja, metodeja sekä korvata yliluokan metodeja. Jos Yliluokan attribuutit on määritelty protected-määreellä, niihin voidaan viitata suoraan aliluokasta. Tämä ei kuitenkaan ole suositeltavaa. 4

3 Konstruktori private double ; public Luottotili() { super(); = 2000.0; kutsutaan yliluokan (Tili-luokan) parametritonta konstruktoria Tili() public Luottotili(String, double, double ) { super(, ); this. = ; Parametriton konstruktori Luottotili luottotili = new Luottotili(); luottotili kutsutaan yliluokan (Tili-luokan) parametrillista konstruktoria Tili(String, double ) 0.0 2000.0 Parametrillinen konstruktori Luottotili luottotili= new Luottotili("Fi06512", 20.0, 3000.0); luottotili Fi06512 20.0 3000.0 Aliluokan konstruktori alustaa vain aliluokan attribuutit. Yliluokan attribuutit alustetaan yliluokan konstruktorilla. Aliluokan konstruktori kutsuu oletuksena yliluokan parametritonta konstruktoria, jos aliluokkaan ei erikseen ole laitettu yliluokan konstruktorin kutsua Yliluokan konstruktorin kutsu on oltava ensimmäisenä käskynä aliluokan konstruktorissa Jos aliluokassa halutaan kutsua yliluokan parametrillista konstruktoria aliluokan konstruktoriin on laitettava yliluokan parametrillisen konstruktorin kutsu. super() kutsuu aliluokasta yliluokan konstruktoria super.metodi() kutsuu aliluokasta yliluokan metodia 6

4 get- ja set-metodit Aliluokkaan koodataan set- ja get-metodit private double ; public double getluottoraja() { return ; public void setluottoraja(double ) { this. = ; Luottotili luottotili = new Luottotili("Fi06512", 20.0, 0.0); luottotili.setluottoraja(1500.0); System.out.print("Luottoraja on " + luottotili.getluottoraja()); Muut metodit Aliluokassa voidaan korvata yliluokan metodi public boolean otto(double maara) { if ((+) >= maara) { = - maara; return true; else { return false; Luottotili luottotili = new Luottotili("Fi06512", 20.0, 3000.0); if (luottotili.otto(3000.0)) { System.out.println("Otto onnistui"); else { System.out.println("Tilillä ei ole katetta"); Luokkaan on koodattu ottometodi uusiksi, koska luottotilin saa mennä n verran negatiiviselle

5 tostring-metodi tostring-metodilla olion attribuutit muunnetaan merkkijonoksi. Metodia käytetään tietojen näyttämiseen. public String tostring() { kutsutaan yliluokan tostring-metodia return super.tostring() + ", =" + ; Luottotili tili = new Tili("Fi06512", 20.0, 3000.0); System.out.println(tili.toString()); =Fi06512, =20.0, =3000.0 Tiedot voidaan näyttää myös get-metodeilla. System.out.println("Numero: " + luottotili.getnumero() + "\nsaldo: " + luottotili.getsaldo() + "\nluottoraja: " + luottotili.getluottoraja()); Numero: Fi06512 Saldo: 20.0 Luottoraja: 3000.0 9 Yksinkertainen pääohjelma public class TiliOhjelma { esitellään ja luodaan public static void main(string[] args) { Luottotili-luokan olio Luottotili luottotili = new Luottotili(); pääohjelman käyttöön Scanner input = new Scanner(System.in); System.out.print("Anna tilin: "); String = input.nextline(); System.out.print("Anna alku: "); double = input.nextdouble(); System.out.print("Anna : "); double = input.nextdouble(); luottotili.setnumero(); luottotili.pano(); luottotili.setluottoraja(); käytetään Tili-luokan metodeja käytetään Luottotililuokan metodia 10