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

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

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

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

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

9. Periytyminen Javassa 9.1

9. Periytyminen Javassa 9.1

Oliot viestivät metodeja kutsuen

4. Olio-ohjelmoinista lyhyesti 4.1

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

2. Olio-ohjelmoinista lyhyesti 2.1

19. Olio-ohjelmointia Javalla 19.1

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

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

Mikä yhteyssuhde on?

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

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

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

1. Omat operaatiot 1.1

7. Oliot ja viitteet 7.1

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

Olio-ohjelmointi Javalla

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

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

Metodien tekeminen Javalla

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

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

Sisällys. 15. Lohkot. Lohkot. Lohkot

Rajapinta (interface)

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

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

Javan perusteita. Janne Käki

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

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

15. Ohjelmoinnin tekniikkaa 15.1

Olio-ohjelmointi: Luokkien toteuttaminen. Jukka Juslin

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

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

15. Ohjelmoinnin tekniikkaa 15.1

Sisällys. 16. Lohkot. Lohkot. Lohkot

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

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

Pakkauksen kokoaminen

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

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

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

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

Luokat ja oliot. Ville Sundberg

14. Poikkeukset 14.1

16. Javan omat luokat 16.1

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

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

11. Javan valintarakenteet 11.1

7. Näytölle tulostaminen 7.1

Java-kielen perusteet

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

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

KOHDELUOKAN MÄÄRITTELY

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

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

12. Monimuotoisuus 12.1

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

YHTEYSSUHDE (assosiation)

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

20. Javan omat luokat 20.1

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

public static void main (String [] args)

14. Poikkeukset 14.1

Periytyminen (inheritance)

1 Tehtävän kuvaus ja analysointi

UML ja luokkien väliset suhteet

Listarakenne (ArrayList-luokka)

Luokan sisällä on lista

Pakkauksen kokoaminen

Metodit Arvotyyppi. Metodit Arvotyyppi. Metodit Parametrit. Metodit Parametrit. Metodit Kuormittaminen. Metodit Kuormittaminen. Javan perusteet

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

12. Monimuotoisuus 12.1

17. Javan omat luokat 17.1

Luokan muodostimet (Constructors)

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

Ohjelmointi 2 / 2010 Välikoe / 26.3

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

ITKP102 Ohjelmointi 1 (6 op)

Java-kielen perusteet

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

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

ict02d Osio2- luento 3 Olio-ohjelmointi: Luokkien kirjoittaminen

13. Hyvä ohjelmointitapa (osa 1) 13.1

11. Javan valintarakenteet 11.1

Tietokannat II -kurssin harjoitustyö

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. X Poikkeusten käsittelystä

ITKP102 Ohjelmointi 1 (6 op)

14. Hyvä ohjelmointitapa 14.1

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

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

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

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

Ohjelmistotekniikan menetelmät, koe

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

Metodien tekeminen Javalla

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

Transkriptio:

4. Attribuutit 4.1

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

Yleistä Luokan lohkossa, mutta metodien ulkopuolella esiteltyjä muuttujia ja vakioita. Esittely tyypillisesti ennen metodeja. Esitellään lähes kuten tavalliset muuttujat tai vakiot. Lisänä näkyvyysmääreitä. public class Kissa { // Attribuutit. private String vari; private String hanta; // Metodit. public void aantele(string s) { System.out.println(s); 4.3

Näkyvyys luokan sisällä Metodien tapaan attribuuttien näkyvyyttä voidaan tarkastella luokan sisä- ja ulkopuolelta. Attribuutit näkyvät kaikkialla luokan sisällä (globaalisti): Luokassa voi olla vain yksi tietyn niminen attribuutti. Attribuutti on käytettävissä kaikissa luokan metodeissa. Muistuttavat proseduraalisten ohjelmointikielien globaaleja muuttujia. 4.4

Näkyvyys luokan sisällä Attribuutit rikkovat modulaarisuustavoitetta samoin kuin globaalit muuttujat proseduraalisissa kielissä. Runsaasti attribuutteja sisältävästä koodista on mahdoton nähdä, missä kaikkialla tietoja muutetaan. Parametreilla ja paluuarvoilla tapahtuvan tiedonvälityksen saa korvata attribuuteilla vain hyvästä syystä. Vakiomuotoisia attribuutteja voi käyttää vapaammin. Esim. private final int HENKIENMAXLKM = 7; 4.5

Näkyvyys luokan sisällä Jos metodin muuttujalla tai parametrilla on sama tunnus kuin attribuutilla, ei tapahdu nimikonfliktia, vaan metodin tunnus peittää (hide) attribuutin tunnuksen. Peitetty tunnus saadaan käyttöön this-attribuutilla. this viittaa olioon itseensä ja on aina käytettävissä automaattisesti ilman esittelyä. Peittämiseen harvoin tarvetta. public class Peittodemo { // Esitellään ja alustetaan attribuutti. private int x = 1; // Peitetään ja näytetään attribuutti. public void tulosta() { // Attribuutin peittävä muuttuja. int x = 2; // Tulostaa muuttujan arvon (2). System.out.println(x); // Tulostaa attribuutin arvon (1). System.out.println(this.x); 4.6

Näkyvyys luokan ulkopuolelta Luokan tiedot pyritään kätkemään, jotta tietojen muuttaminen ympäristöstä käsin ei olisi mahdollista. Javassa tämä tehdään private-määreellä, jolloin attribuutti on käytettävissä vain luokkansa sisällä. Koska vakioiden arvoja ei voida muuttaa, asetetaan vakioidut attribuutit joskus suoraan näkyviin publicmääreellä. Pakkausten ja periytymisen yhteydessä esitellään lisää keinoja näkyvyyden määrittelyyn. 4.7

Aksessorit Piilotetun datan käsittelyyn tarvitaan niin sanotut aksessorit (accessors), jotka ovat metodeja attribuutin arvojen lukemiseen ja asettamiseen. Vain attribuuteille, joita on tarpeen käsitellä luokan ulkopuolelta. Mahdollisimman lyhyitä metodeja, joissa ei tehdä mitään turhaa. Ei tarvitse kommentoida ellei jotain erityistä. 4.8

Aksessorit Lukumetodi: Rungossa ainoastaan attribuutin arvon palauttava return-lause. Tyyppi tavallisesti sama kuin attribuutin tyyppi. Asetusmetodi: Attribuutin arvo välitetään parametrina. Arvoa ei siis koskaan lueta metodissa. Tulisi tarkistaa tiedon oikeellisuus. (Esimerkiksi arvoalueelle kuulumisen tai muistinvarauksen tarkistus.) Virheellinen tieto voidaan jättää huomiotta, jolloin metodi on tyypitön (void). Virheestä voidaan ilmoittaa myös paluuarvolla, mutta tämä on harvinaista. 4.9

Aksessorit Aksessoreita kutsutaan usein settereiksi ja gettereiksi, koska englannin kielessä aksessorien nimet aloitetaan setja get-sanoilla. Esim. Person pete = new Person(); pete.setage(10); int age = pete.getage(); Suomeksi kirjoitetussa koodissa voi käyttää esimerkiksi vastaavia aseta- ja lue-sanoja. Nimen voi myös johtaa attribuutin tunnuksesta kuormittaen. Esim. Henkilo pete = new Henkilo(); pete.asetaika(10); int ika = pete.lueika(); pete.ika(10); int ika = pete.ika(); // kuorimittaen 4.10

Kissa-luokka (Kissa.java) public class Kissa { /* Attribuutit ***************/ private String vari; private String hanta; /* Aksessorit ***************/ // Värin lukeminen. public String vari() { return vari; // Värin asetus. public void vari(string v) { if (v!= null) vari = v; // Hännän tyypin lukeminen. public String hanta() { return hanta; // Hännän tyypin asetus. public void hanta(string h) { if (h!= null) hanta = h;... Huom! Metodeissa ei tarvita static-määrettä, koska luokassa ei ole main-metodia. 4.11