Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

Osion kaksi kertaus Jukka Juslin © Jukka Juslin.

Samankaltaiset esitykset


Esitys aiheesta: "Osion kaksi kertaus Jukka Juslin © Jukka Juslin."— Esityksen transkriptio:

1 Osion kaksi kertaus Jukka Juslin © Jukka Juslin

2 Sisältö Taulukot ja Stringit Luokkien kirjoittaminen Oletusmuodostin
UML © Jukka Juslin

3 Taulukot Taulukot luodaan Java-kielessä seuraavanlaisesti:
int [] arvosanat = {1,2,3,4,5}; Taulukon pituus saadaan length arvosanat.length; // mikä on eo. taul. pituus? Taulukosta alkion poimiminen: esimerkiksi jos halutaan arvosanan viisi alkio: int vitonen = arvosanat[4]; © Jukka Juslin

4 String String Javan merkkijonotietotyyppinä
String nimi = ”Jukka Juslin”; Stringien vertailu equals metodilla, EI == operaattorilla, if(nimi.equals(” ”)) { …} toString metodi tulostaa olion sisällön Stringinä niin että kaikkien attribuuttien arvoa konkatenoidaan yhdeksi Stringiksi ja erotetaan esim. välilyönneillä arvot toisistaan public String toString() { return(nimi); } © Jukka Juslin

5 Luokkien kirjoittaminen
Luokan kirjoittaminen esim. public class MummuKello { private String kellonAika; private Pvm pvm = new Pvm(); private String viikonPaiva; public MummuKello() { kellonAika = ”00:00:00”; } public int getviikonPaiva() { return(viikonPaiva); } public void setviikonPaiva( String viikonPaiva) { this.viikonPaiva=viikonPaiva; } © Jukka Juslin

6 Luokkien kirjoittaminen
Muista laittaa kaikki attribuutit private tyyppisiksi, jotta kapsuloinnin idea toteutuu! Oletusmuodostin alkaa public LuokanNimi() – mitään palautustyyppiä ei saa olla! © Jukka Juslin

7 Luokkien kirjoittaminen - this
Muista this-avainsanan käyttö This-sanalla viitataan olion attribuuttiin Ilman this sanaa metodille tulevat parametrit on nimettävä erinimisiksi kuin luokan attribuutit © Jukka Juslin

8 Lisää this-sanasta This-viittaa aina kyseisellä hetkellä käytössä olevaan olioon Koko nykyinen olio voidaan palauttaa kirjoittamalla return(this); © Jukka Juslin

9 toString metodi Pääsääntöisesti kaikille luokille pitää kirjoittaa toString metodi toString konkatenoi Stringiksi olion attribuuttien arvon tällähetkellä Eli kyseessä on ns. olion tilan tulostaminen Ilman toString metodia saadaan oliosta tulostumaan ns. OID numero, joka on muistiosoite viitaten missä itse olio sijaitsee © Jukka Juslin

10 Konstruktoreista eli muodostimista
Java-kieli tekee automaattisesti ns. oletuskonstruktorin, jonka voimme itse korvata omalla. Korvaava konstruktori ei saa mitään parametrejä() Konstruktoreita voidaan ns. ylikuormittaa, eli samalla luokalla voi olla useita konstruktoreita – eri parametrimäärillä © Jukka Juslin

11 Konstruktoreista eli muodostimista
Konstruktoreissa kannattaa usein antaa mahdollisuus asettaa esim. tietyn olion alkuarvot public Pvm(int kk, int pp, int vv) Attribuuttien arvot on paras asettaa yksitellen ns. settereissä (muista ns. SEVO sääntö) Pääsääntöisesti ei ole hyvä tehdä setPvm nimistä setteriä, vaan asettaa attribuutit yksitellen tai konstruktorissa © Jukka Juslin

12 Konstruktoreista eli muodostimista
Synonyymi konstruktori-sanalle on muodostin On tärkeää osata seuraavat käsitteet: Oletuskonstruktori (oletusmuodostin) Korvaa Javan oletusarvoisen konstruktorin – ilman parametrejä() olevan konstruktorin Parametrillinen konstruktori (parametrillinen muodostin) Saa vaihtelevan määrän parametrejä Kopiokonstruktori (kopiomuodostin) Saa parametrinä oman luokan olion ja kopio olion nykyiseen olioon (eli tekee kopion) public Pvm(Pvm pvm) { this.pp = pvm.pp; this.kk = pvm.kk; this.vv = pvm.vv; } © Jukka Juslin

13 Luokka-attribuutit Luokka-attribuutteja voidaan kutsua myös staattisiksi attribuuteiksi Luokka attribuuttia muutettaessa kaikki ko. luokan oliot saavat uuden arvon välittömästi Tämä ei tosin ole aina olio-ohjelmoinnin kannalta aina toivottavaa Katso esimerkiksi Deitel&Deitel sivulta 383 (kuudes painos) kuinka Employee-luokan luokka-attribuutin count arvo haetaan (Employee.getCount()); private static int count = 0; © Jukka Juslin

14 Luokkametodit Luokka-attribuuteilla (staattisilla attribuuteilla) täytyy yleensä olla parina ns. luokkametodi (staattinen metodi) Staattista arvoa ei ole tarkoitus päästä lukemaan suoraan, vaan se luetaan esim. getterin kautta (Deitel, Deitel s. 382); public static int getCount() { return(count); } © Jukka Juslin

15 UML Opettelimme myös UML luokkakaavioiden piirtämistä ja niiden tulkitsemista Kaavioita voi piirtää ainakin kolmella eri tavalla: käsin paperille, dia-ohjelmalla ja MS Visio-ohjelmalla Luokkakaavioissa ilmoitetaan luokan attribuuttien nimet ja tyypit sekä metodit © Jukka Juslin

16 UML filosofiaa UML luokkakaaviot olisi hyvä tehdä ns. ”forward engineeringin” kautta eli ensin piirretään kaaviot Myöhemmin kaavioiden päivittämiseen kannattaa käyttää esim. ”reverse engineering” työkaluja, jotka generoivat kaaviot ohjelmakoodin perusteella © Jukka Juslin

17 UML Esimerkkiluokkakaavio luokan nimi attribuutin näkyvyys
metodin palautusarvon tyyppi attribuutin tyyppi (tässä tapauksessa int- taulukko) staattinen metodi © Jukka Juslin

18 Koostumussuhde kerrannaisuus
Opiskelijaluokkaan tulee kaksi Osoite-luokan oliota luodaan sinne siis koodissa: Osoite kotiosoite = new Osoite(); © Jukka Juslin

19 Koostumussuhde Koostumussuhde voi olla ns. vahva tai heikko
Vahvaa koostumussuhdetta merkitään mustatulla timantti Esimerkiksi voidaan ajatella, että auto on vahva koostumus pyöristä, korista ja moottorista – ilman näitä auto-oliosta ei voi puhua Sinänsä musta timantti on suunnitteluyksityiskohta, jolla ei kannata tässä vaiheessa juuri päätä vaivata © Jukka Juslin

20 Koostumussuhteen toteuttaminen
Tarkastellaan edellistä tilannetta, jossa yhdellä opiskelijalla oli kaksi osoitetta Toteutus jakaantuu kahteen tiedostoon Osoite.java ja Opiskelija.java. Opiskelija.javan sisältämässä Opiskelija-luokassa täytyy olla kaksi attribuuttia, jotka ovat Osoite-tyyppisiä © Jukka Juslin

21 Koostumussuhteen toteuttaminen
Esimerkki: Opiskelija-luokka sisältää yhtenä attribuuttina koostumussuhteen ilmoittaman olion (Osoite) Osoite attribuutti on private ja Osoite-tyyppinen Muista aina toteuttaessa private määreet! © Jukka Juslin

22 UML kerrannaisuus ja assosiaatiot
Olemme opetelleet koostumussuhteen ja kontrollin siirtymän (Dependency) Assosiaatioiden määrittäminen ei aina ole aivan helppoa Koostumussuhde ja kontrollin siirtymä ovat kuitenkin onneksi aika yksiselitteisiä asioita © Jukka Juslin

23 Kontrollin siirtyminen
Ohjelmassa kontrollin siirtyminen kuvataan pääsääntöisesti avokärkisellä nuolella: Kontrolli lähtee aina liikkeelle main-metodin sisältävästä luokasta (tiedostosta). © Jukka Juslin

24 Summa summarum Seuraavaksi on edessä tiimityön tekeminen, joka antaa osion perusarvosanan Eikun tekemään! © Jukka Juslin


Lataa ppt "Osion kaksi kertaus Jukka Juslin © Jukka Juslin."

Samankaltaiset esitykset


Iklan oleh Google