4. Attribuutit.

Slides:



Advertisements
Samankaltaiset esitykset
Tuloksellinen Java-ohjelmointi Luku 3 Luokkien käyttäminen
Advertisements

Osion kaksi kertaus Jukka Juslin © Jukka Juslin.
6. Metodit.
© Jukka Harju, Viittausmuuttujat. © Jukka Harju, Viittaukset •Viittausmuuttuja sisältää tiedon siitä missä muistipaikassa olio.
16. Javan omat luokat.
Ict1td002: Ohjelmointitaito Kertaus Osio 2 - luokat - ilmentymät - viittaus- ja arvomuuttuja - ilmentymien taulukointi HAAGA-HELIA IltaTiko.
Taulukot: Array Taulukko Javassa pitää aina perustaa (new)
22. Taulukot.
13. Pakkaukset.
Näytölle tulostaminen. 7.2 Sisällys System.out.println - ja System.out.print -operaatiot. Tulostus erikoismerkeillä. Edistyneempää tulosteiden.
OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT. LUOKKA JAVA ohjelma koostuu luokista LUOKKA sisältää metodeja molemmat sisältävät attribuutteja eli muuttujia.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
Poikkeustenkäsittely  Mitä poikkeustenkäsittely tarkoittaa?  Poikkeuksen käsitteleminen  Poikkeusluokkien hierarkia  Poikkeuksen heittäminen 1.
9. Periytyminen Javassa.
13. Hyvä ohjelmointitapa (osa 1)
© Jukka Harju, Jukka Juslin
Funktion esittely eli prototyyppi tMyn1 Funktion esittely eli prototyyppi Funktion esittely (function declaration) kertoo funktion nimen, parametrien tyypit.
1 Kertaus koetta varten oleellisista asioista Jukka Juslin.
7. Oliot ja viitteet.
Luokan määrittely class-määreellä tMyn1 Luokan määrittely class-määreellä Luokan määrittely tarkoittaa luokan tietojäsenten esittelyä ja jäsenfunktioiden.
String-vertailusta ja Scannerin käytöstä (1/2)
Metodit – Arvotyyppi Ellei metodi palauta arvoa, sen arvotyyppi on void Tällöin ”return;”-lauseke ei ole metodissa pakollinen, vaikka sen käyttö on sallittua.
19. Olio-ohjelmointia Javalla
4. Attribuutit 4.1. Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2.
5. Kapselointi Yleistä Kapseloinnilla (encapsulation) tarkoitetaan luokan tietojen ja toimintojen pakkaamista yhdeksi suojatuksi kokonaisuudeksi.
10. Abstrakti luokka Johdanto Abstrakti luokka (abstract class) poikkeaa konkreettisesta luokasta (ei-abstrakti luokka) siten, että siitä ei.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
Hyvä ohjelmointitapa (osa 2) Yleistä Lisää hyviä ohjelmointikäytäntöjä: − Jaa pitkä koodi osiin. − Käytä attribuutteja säästeliäästi.
22. Taulukot.
Poikkeukset Yleistä Virheeseen varautuminen tarkoittaa sitä, että ohjelmoija huomioi koodia kirjoittaessaan ajonaikaisen virheen mahdollisuuden.
17. Kooste Kooste Kooste (aggregation) on luokkien A ja B välinen suhde, joka tarkoittaa “A on B:n osa” tai “A kuuluu B:hen”. − Koostesuhteessa.
Oliot ja luokat Oliot ja luokat Oliot (object) ja luokat (class) ovat keskeisiä olio- ohjelmoinnin käsitteitä. Olio-ohjelmointi on ohjelmointiparadigma,
Olioiden taulukointi Perustaulukon käyttö Luokan ilmentymät voidaan tallettaa taulukkoon samoin kuin muuttujat Esimerkki talletetaan taulukkoon opintojaksojen.
1 © Jukka Juslin Luokat, attribuutit ja metodit Yleistietoa: seuraavalla koulutusviikolla tarkempi käsittely.
14. Poikkeukset Sisällys Johdanto poikkeuksiin. Poikkeusten käsittely: − Poikkeusten käsittely paikallisesti. − Poikkeusten heittäminen. Exception.
Olio-ohjelmoinista lyhyesti. 2.2 Sisällys Yleistä. Oliot ja luokat. Attribuutit. Olioiden esittely ja alustus. Rakentajat. Olion operaation kutsuminen.
String-vertailusta ja Scannerin käytöstä (1/2)
17. Kooste.
5. Kapselointi.
6. Metodit.
3. Olio-ohjelmoinista lyhyesti
1. Omat operaatiot.
7. Oliot ja viitteet.
13. Pakkaukset.
11. Rajapinnat.
Poikkeustenkäsittelylohkot try-catch
2. Taulukot.
17. Javan omat luokat.
8. Näppäimistöltä lukeminen
7. Hyvä ohjelmointitapa..
3. Luokat, oliot ja metodit Java-kielessä (Lausekielinen ohjelmointi I ja II –kursseilla opitun kertausta.)
15. Lohkot.
Luokan määrittely class-määreellä
7. Näytölle tulostaminen
8. Näppäimistöltä lukeminen
14. Hyvä ohjelmointitapa.
11. Javan valintarakenteet
2. Taulukot.
15. Lohkot.
6. Metodit.
7. Oliot ja viitteet.
3. Komentoriviparametrit
13. Pakkaukset.
15. Ohjelmoinnin tekniikkaa
7. Hyvä ohjelmointitapa..
7. Näytölle tulostaminen
3. Attribuutit.
13. Pakkaukset.
8. Periytyminen.
4. Luokan testaus ja käyttö olion kautta
Esityksen transkriptio:

4. Attribuutit

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

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. ... }

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;

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); }

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.

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.

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.

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();

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();

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.