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

Samankaltaiset tiedostot
Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 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

9. Periytyminen Javassa 9.1

Oliot viestivät metodeja kutsuen

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

9. Periytyminen Javassa 9.1

4. Olio-ohjelmoinista lyhyesti 4.1

19. Olio-ohjelmointia Javalla 19.1

2. Olio-ohjelmoinista lyhyesti 2.1

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

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

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

1. Omat operaatiot 1.1

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

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

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

Olio-ohjelmointi Javalla

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

7. Oliot ja viitteet 7.1

Mikä yhteyssuhde on?

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

Sisällys. 15. Lohkot. Lohkot. Lohkot

Metodien tekeminen Javalla

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

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

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

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

Javan perusteita. Janne Käki

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

Rajapinta (interface)

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

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

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

Olio-ohjelmointi: Luokkien toteuttaminen. Jukka Juslin

Pakkauksen kokoaminen

15. Ohjelmoinnin tekniikkaa 15.1

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

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

15. Ohjelmoinnin tekniikkaa 15.1

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

Sisällys. 16. Lohkot. Lohkot. Lohkot

14. Poikkeukset 14.1

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

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

Luokat ja oliot. Ville Sundberg

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

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

Java-kielen perusteet

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

1 Tehtävän kuvaus ja analysointi

KOHDELUOKAN MÄÄRITTELY

14. Poikkeukset 14.1

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

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

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

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

Periytyminen (inheritance)

public static void main (String [] args)

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

Listarakenne (ArrayList-luokka)

ITKP102 Ohjelmointi 1 (6 op)

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

16. Javan omat luokat 16.1

YHTEYSSUHDE (assosiation)

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

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

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

Luokan sisällä on lista

UML ja luokkien väliset suhteet

13. Hyvä ohjelmointitapa (osa 1) 13.1

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

Tietokannat II -kurssin harjoitustyö

20. Javan omat luokat 20.1

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

17. Javan omat luokat 17.1

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

14. Hyvä ohjelmointitapa 14.1

Ohjelmointi 2 / 2010 Välikoe / 26.3

Pakkauksen kokoaminen

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

ict02d Osio2- luento 3 Olio-ohjelmointi: Luokkien kirjoittaminen

Luokan muodostimet (Constructors)

11. Javan valintarakenteet 11.1

ITKP102 Ohjelmointi 1 (6 op)

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

17. Javan omat luokat 17.1

12. Monimuotoisuus 12.1

P e d a c o d e ohjelmointikoulutus verkossa

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

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

Luokassa määriteltävät jäsenet ovat pääasiassa tietojäseniä tai aliohjelmajäseniä. Luokan määrittelyyn liittyvät varatut sanat:

Java-kielen perusteet

Ohjelmistotekniikan menetelmät, koe

ITKP102 Ohjelmointi 1 (6 op)

13. Loogiset operaatiot 13.1

Metodien tekeminen Javalla

Transkriptio:

4. Attribuutit 4.1

Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 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 { // Kissan väri. private String vari; // Kissan hännän tyyppi. // Esimerkiksi kippura". private String hanta; // Metodit.... 4.3

Näkyvyys luokan sisällä Luokassa tulee olla vain luokan mallintaman käsitteen kannalta oleellisia attribuutteja, koska attribuutit näkyvät luokan kaikkiin metodeihin ja rikkovat siten modulaarisuustavoitetta. Parametreilla ja paluuarvoilla tapahtuvaa tiedonvälitystä ei saa korvata käyttämällä tarpeettomia attribuutteja. Vakiomuotoisia attribuutteja ei voi muuttaa metodeissa ja niitä voi siten käyttää vapaammin. private final int HENKIENMAXLKM = 7; 4.4

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, joka viittaa olioon itseensä ja on aina käytettävissä ilman esittelyä. Peittämiseen ei käytännössä ole koskaan 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.5

Tiedonkätkentä Luokan tiedot pyritään kätkemään ympäristöltä, jotta tietojen suora käsittely muista luokista käsin ei olisi mahdollista. Javassa tämä tehdään private-määreellä, jolloin attribuutti ei näy muihin luokkiin ja on siten käytettävissä vain luokkansa sisällä. Koska vakioiden arvoja ei voida muuttaa, asetetaan vakioidut attribuutit joskus näkyviin public-määreellä. Pakkausten ja periytymisen yhteydessä esitellään lisää keinoja näkyvyyden määrittelyyn. 4.6

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 mitään turhaa. Aksessoreita ei tarvitse kommentoida ellei jotain erityistä. Lukumetodit: Rungossa ainoastaan attribuutin arvon palauttava return-lause. Tyyppi tavallisesti sama kuin attribuutin tyyppi. 4.7

Aksessorit Asetusmetodit: 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.8

Aksessorit Aksessoreita kutsutaan usein settereiksi ja gettereiksi, koska englannin kielessä aksessorien nimet aloitetaan usein set- ja get-sanoilla. Person pete = new Person(); pete.setage(10); int age = pete.getage(); Suomeksi kirjoitetussa koodissa voi käyttää esimerkiksi aseta- ja lue-sanoja. Henkilo pete = new Henkilo(); pete.asetaika(10); int ika = pete.lueika(); 4.9

Aksessorit Älä käytä aksessoreiden nimissä kahta kieltä. Esimerkiksi getika ja setika ovat huonoja tunnuksia. Aksessorien nimet voi johtaa myös attribuutin tunnuksesta, koska kuormittamismekanismi sallii samannimisten metodien esittelyn erilaisia parametrilistoja käyttäen. Henkilo pete = new Henkilo(); // Kuormitettu metodi (int-tyyppinen parametri). pete.ika(10); // Kormitettu parametri (ei parametreja). int ika = pete.ika(); 4.10

Kissa-luokka (Kissa.java) public class Kissa { // Kissan väri. private String vari; // Kissan hännän tyyppi. private String hanta; // 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;... Static-määrettä ei tarvita, koska luokassa ei ole main-metodia. 4.11