Olio-ohjelmointi Javalla



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

Mikä yhteyssuhde on?

Periytyminen (inheritance)

Luokan sisällä on lista

public static void main (String [] args)

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

Metodien tekeminen Javalla

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

YHTEYSSUHDE (assosiation)

Vahva koostumussuhde (Composition)

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

KOHDELUOKAN MÄÄRITTELY

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

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

Rajapinta (interface)

Listarakenne (ArrayList-luokka)

Metodien tekeminen Javalla

Lista luokan sisällä

9. Periytyminen Javassa 9.1

9. Periytyminen Javassa 9.1

Olio-ohjelmointi: Luokkien toteuttaminen. Jukka Juslin

Poikkeustenkäsittely

2. Olio-ohjelmoinista lyhyesti 2.1

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

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

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

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

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

Luokat ja oliot. Ville Sundberg

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

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

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

Taulukoiden käsittely Javalla

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

UML ja luokkien väliset suhteet

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

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

Javan perusteita. Janne Käki

7. Oliot ja viitteet 7.1

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

Sisällys. 19. Olio-ohjelmointia Javalla. Yleistä. Olioiden esittely ja alustus

Luokan muodostimet (Constructors)

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

19. Olio-ohjelmointia Javalla 19.1

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

Oliot viestivät metodeja kutsuen

Ohjelmointi 2 / 2010 Välikoe / 26.3

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

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

Java kahdessa tunnissa. Jyry Suvilehto

1 Tehtävän kuvaus ja analysointi

16. Javan omat luokat 16.1

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

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

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

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

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 )

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

Ohjelmoinnin jatkokurssi, kurssikoe

1. Omat operaatiot 1.1

14. Poikkeukset 14.1

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

Ohjelmoinnin perusteet, kurssikoe

Ohjelmointi 2, välikoe

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Java-kielen perusteet

Java-kielen perusteita

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

7. Näytölle tulostaminen 7.1

14. Poikkeukset 14.1

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

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

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

Sisällys. 7. Oliot ja viitteet. Olion luominen. Olio Java-kielessä

Olio-ohjelmointi Syntaksikokoelma

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

Taulukot. Jukka Harju, Jukka Juslin

Java-kielen perusteita

4. Olio-ohjelmoinista lyhyesti 4.1

812347A Olio-ohjelmointi, X Reflektiivisyys

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

20. Javan omat luokat 20.1

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

17. Javan omat luokat 17.1

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

Ehto- ja toistolauseet

P e d a c o d e ohjelmointikoulutus verkossa

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

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

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

Java-kielen perusteet

C# olio-ohjelmointi perusopas

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

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

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

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

ict02d Osio2- luento 3 Olio-ohjelmointi: Luokkien kirjoittaminen

1. Olio-ohjelmointi 1.1

Taulukot. Taulukon käsittely. Tämän osan sisältö. Esimerkki. Taulukon esittely ja luonti. Taulukon alustaminen. Taulukon koko

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

Transkriptio:

1 Olio-ohjelmointi Javalla Olio-ohjelmointi Luokka Attribuutit Konstruktori Olion luominen Metodit Olion kopiointi Staattinen attribuutti ja metodi Yksinkertainen ohjelmaluokka Ohjelmaluokka 1 Olio-ohjelmointi Luokka mitä tietoja kohteesta on (attribuutit) miten tietoja voidaan käsitellä (metodit) attribuutti private double ; public void pano(double maara){ metodi Tili.java luokka Luokkaa käyttävä ohjelma luokkaa käytetään hyväksi luokasta tehdyllä oliolla olio public class TiliOhjelma { public static void main (String[] args) { Tili tili = new Tili(); tili.pano(200.0); TiliOhjelma.java

2 Luokka Luokka on kokonaisuus, joka sisältää tiedot ja niiden käsittelyn. Luokka talletetaan tiedostoon, minkä nimenä on LuokanNimi.java luokan nimi kirjoitetaan suurella public class LuokanNimi { // luokan attribuutit // luokan metodit määritellään luokan ominaisuudet määritellään luokan toiminnallisuus Luokan näkyvyys muille luokille public luokka näkyy kaikille luokille puuttuu luokka näkyy samassa paketissa oleville luokille 3 Attribuutti Attribuutti sisältää tiedon, jota käsitellään metodeilla. public class LuokanNimi { // attribuutti private tyyppi attribuutinnimi; attribuutin nimi kirjoitetaan pienellä attribuutin näkyvyys muille luokille private attribuutti näkyy vain kyseiselle luokalle eli attribuuttia voidaan käyttää vain kyseisen luokan metodeilla protected käsitellään periytymisen yhteydessä public attribuutti näkyy kaikille luokille eli attribuuttia voidaan käyttää mistä tahansa luokasta (ei suositella!) puuttuu attribuutti näkyy samassa paketissa oleville luokille 4

3 Tili-luokassa on attribuutit ja. Jokaisella Tililuokan oliolla on samat attribuutit, mutta jokaisella Tililuokasta tehdyllä oliolla on oma nsa ja nsa private String ; private double ; attribuutti määritellään yleensä privatetyyppiseksi, jolloin vain luokan metodeilla voidaan käsitellä attribuutin arvoja. Ideana on piilottaa luokan toteutus luokkaa käyttävältä ohjelmalta. Tili tili = null; tili null tili = new Tili(); esitellään Tili-luokan olio (syntyy viite) luodaan Tili-luokan olio, oliolla on Tili-luokassa määritellyt attribuutit tili null 0.0 arvo on null, koska -attribuutin tietotyyppi on String 5 Konstruktorilla alustetaan olion attribuutit. Konstruktori (muodostin) Jos luokkaan ei itse koodaa konstruktoria, luokassa on valmiina oletuskonstruktori, mikä alustaa luvut nolliksi, merkkijonot ja oliot null:ksi kuten kalvon 4 alin kuva esittää. Jos luokkaan koodataan itse yksikin konstruktori, oletuskonstruktoria ei enää ole luokassa. Luokkaan voidaan koodata itse yksi tai useampi konstruktori. 6

4 private String ; private double ; public Tili() { = ""; = 0.0; konstruktorilla on sama nimi kuin luokalla eikä sille ole paluuarvon tietotyyppiä (return-lausetta) parametriton konstruktori parametrillinen konstruktori public Tili(String, double ) { this. = ; this. = ; Tarkoittaa olion attribuuttia. this attribuutin edessä, koska olion attribuutti täytyy pystyä erottamaan samannimisestä parametrista. Parametriton konstruktori tili = new Tili(); tarkoittaa parametrina tullutta tietoa Parametrillinen konstruktori tili = new Tili("Fi06512",20.0); tili 0.0 tili Fi06512 20.0 Olion luominen private String ; private double ; public Tili () { = ""; = 0.0; public Tili (String, double ) { this. = ; this. = ; Tili-luokka public class TiliOhjelma { public static void main(string[] args) { kutsutaan parametritonta konstruktoria konstruktorilla luodaan olio Tili tili1 = new Tili(); kutsutaan parametrillista konstruktoria Tili tili2 = new Tili("2", 10.0); Tili-luokkaa käyttävä ohjelma 8

5 Metodit Metodi suorittaa tietyn tehtävän. Metodi käsittelee attribuuttia/attribuutteja. get-metodilla (kalvo 9) pyydetään olion tietoja, set-metodilla (kalvo 10) muutetaan olion tietoja ja tostringmetodilla (kalvo 11) palautetaan olion tiedot yhtenä merkkijonona. public class LuokanNimi { // luokan metodi metodin nimi kirjoitetaan pienellä public palautusarvo metodinnimi(parametrit) { lauseita; metodin näkyvyys muille luokille public metodi näkyy kaikille luokille protected metodi näkyy periytyville luokille private metodi näkyy vain kyseisen luokan metodeille puuttuu metodi näkyy samassa paketissa oleville luokille 9 get-metodi get-metodilla (getxx ) palauttaa tietyn attribuutin arvon public double getsaldo() { return ; public String getnumero() { return ; double, koska metodi palauttaa return-lauseella desimaaliluvun (-attribuutin arvon) String, koska metodi palauttaa return-lauseella merkkijonon (-attribuutin arvon) metodeja kutsutaan Tili tili = new Tili("Fi06512", 0.0); olio.metodi System.out.print("Saldo on " + tili.getsaldo()); System.out.print("Numero on " + tili.getnumero()); 10

6 set-metodi set-metodilla (setxx) muutetaan tietyn attribuutin arvoa. void, koska metodi ei palauta mitään return-lauseella public void setsaldo(double ) { this. = ; public void setnumero(string ) { this. = ; this attribuutin edessä, koska olion attribuutti täytyy pystyä erottamaan samannimisestä parametrista parametrina tullut arvo Tili tili = new Tili("Fi06512", 0.0); tili.setsaldo(20.0); tili.setnumero("fi065111111"); metodeja kutsutaan olio.metodi! Reaalimaailmassa kyseisiä metodeja ei voisi käyttää, koska tilin a ja a ei voida noin vain muuttaa. 11 tostring-metodi tostring-metodilla olion attribuuttien arvot muunnetaan merkkijonoksi, jolloin olion sisältö on helppo näyttää. tostring palauttaa returnlausella olion attribuuttien arvot yhtenä merkkijonona. public String tostring() { return "=" + + ", =" + ; Tili tili = new Tili("Fi06512", 20.0); System.out.println(tili.toString()); // tai System.out.println(tili); =Fi06512, =20.0 Tiedot voidaan näyttää myös get-metodeilla. System.out.println("Numero: " + tili.getnumero() + "\nsaldo: " + tili.getsaldo()); Numero: Fi06512 Saldo: 20.0 12

7 Muita metodeja Luokkaan voidaan koodata muita tarpeellisia metodeja. public void pano(double maara) { = + maara; public boolean otto(double maara) { if ( >= maara) { = - maara; return true; else { return false; otto-metodi palauttaa true, jos otto onnistuu, muuten false if (tili.otto(200.0)) { System.out.println("Otto onnistui"); else { System.out.println("Tilillä ei ole katetta"); 13 Olion kopiointi tili1 Fi11111 100.0 tili2 Fi22222 200.0 tili1 = tili2; sijoituslause kopio viitteen eli tiedon, missä olio on sijoituslauseen jälkeen tili1 ja tili2 viittaa samaan olioon Fi11111 100.0 tili2 tili1 Fi22222 200.0 Olion tietojen kopiointi voidaan tehdä muodostamalla olio toisen olion tiedoista tili1 = new Tili(tili2.getNumero(), tili2.getsaldo()); tili1 luodaan parametrillisella konstruktorilla, jolle annetaan parametrina kopioitavan olion tiedot. Konstruktori siis kopio luotavalle oliolle parametrina tulleen olion tiedot. 14

8 Staattinen attribuutti ja metodi Staattinen attribuutti on luokkakohtainen attribuutti eli yhteinen koko luokalle (kaikille olioille). Staattisella metodilla käsitellään staattisia attribuutteja. Se suoritetaan luokalla ei oliolla. private static double korkoprosentti = 0.2; public static double getkorkoprosentti() { return korkoprosentti; staattinen attribuutti on luokan attribuutti eli kaikille olioille yhteinen attribuutti public static void setkorkoprosentti(double korkoprosentti) { Tili.korkoprosentti = korkoprosentti; Tili (luokan nimi), koska korkoprosentti on luokka-attribuutti System.out.println("Korko on " + Tili.getKorkoprosentti()); staattista metodia kutsutaan luokalla 15 Yksinkertainen pääohjelma (ohjelmaluokka) public class TiliOhjelma { public static void main(string[] args) { Tili tili = new Tili(); Scanner input = new Scanner(System.in); System.out.print("Anna tilin: "); String = input.nextline(); System.out.print("Anna alku: "); double = input.nextdouble(); esitellään ja luodaan Tililuokan olio pääohjelman käyttöön tili.setnumero(); tili.setsaldo(); System.out.print("Panon määrä: "); double maara = input.nextdouble(); tili-olion käsittelyyn käytetään Tili-luokan metodeja tili.pano(maara); System.out.println("Saldo: " + tili.getsaldo()); 16

9 Ohjelmaluokka public class TiliSovellus { private Tili tili = new Tili(); esitellään ja luodaan Tililuokan olio sovellusluokan käyttöön public void teepano() { double maara;... tili.pano(maara); tehdään sovellusluokkaan metodi, joka hoitaa jonkin tehtävän (tässä panon) käyttäen Tili-luokan metodia tili-oliota voidaan käyttää vain sovellusluokan metodeissa public static void main(string args []) { Tilisovellus sovellus = new Tilisovellus(); sovellus.teepano(); luodaan sovellusluokan olio, millä kutsutaan sovellusluokan metodeja! tili-oliota ei voida käyttää pääohjelmassa, koska olio on esitelty TiliSovellusluokalle eikä pääohjelmalle. tili-oliota käytetään Tili-luokan metodeilla TiliSovellus-luokan metodeista. Jos olio esiteltäisiin pääohjelmaan, se pitäisi viedä parametrina TiliSovellus-luokan metodeihin.