Osion kaksi kertaus Jukka Juslin © Jukka Juslin.

Slides:



Advertisements
Samankaltaiset esitykset
Luokkien ja olioiden käyttäminen Jukka Juslin
Advertisements

Tuloksellinen Java-ohjelmointi Luku 3 Luokkien käyttäminen
Minimaalinen Java-ohjelma •Kaikki ohjelmakoodi on luokkamäärityksen sisällä •Ohjelma käynnistyy ”public static void main(String[] args)”-metodista •System.out.print()
Koostumussuhde Jukka Juslin © Jukka Juslin.
Olio-ohjelmoinnin perusteet luento 3: Muuttujista ja funktioista Sami Jantunen LTY/Tietotekniikan osasto.
6. Metodit.
© Jukka Harju, Viittausmuuttujat. © Jukka Harju, Viittaukset •Viittausmuuttuja sisältää tiedon siitä missä muistipaikassa olio.
© Jukka Harju, Jukka Juslin1 Java-ohjelmointi opas ammattimaiseen osaamiseen Luku 12 Periytyminen.
16. Javan omat luokat.
© 2004 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice Java-perusteet Kari Kujansuu
Ict1td002: Ohjelmointitaito Kertaus Osio 2 - luokat - ilmentymät - viittaus- ja arvomuuttuja - ilmentymien taulukointi HAAGA-HELIA IltaTiko.
Tuloksellinen Java-ohjelmointi Luku 9 Taulukot ja perustietorakenteet
Jukka Juslin Poikkeukset ja niiden paikallistaminen * Jukka Juslin * Liittyy oppikirjan lukuun 11.
Taulukot Jukka Juslin © Jukka Juslin 2006.
Taulukot: Array Taulukko Javassa pitää aina perustaa (new)
22. Taulukot.
Johdetun luokan määrittely tMyn1 Johdetun luokan määrittely •Kun johdettu luokka periytetään kantaluokasta, saadaan kantaluokan jäsenet enemmän tai vähemmän.
13. Pakkaukset.
Perintä. Yleistä Olio-ohjelmoinnin menetelmä muodostaa uusia luokkia aiemmin määriteltyjen luokkien avulla Luokka saa automaattisesti käyttöönsä kaikki.
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.
Olio-ohjelmoinnin perusteet luento 3
© Jukka Harju, Jukka Juslin Java-ohjelmointi Opas ammattimaiseen osaamiseen Luku 9 Poikkeuskäsittely.
Poikkeustenkäsittely  Mitä poikkeustenkäsittely tarkoittaa?  Poikkeuksen käsitteleminen  Poikkeusluokkien hierarkia  Poikkeuksen heittäminen 1.
Olio-ohjelmointi: Luokkien kirjoittaminen
9. Periytyminen Javassa.
TAULUKKO YKSIULOTTEINEN TAULUKKO. TAULUKKO  Taulukon tarkoitus Ohjelmassa tarvitaan paljon samantyyppisiä samaan kohdealueeseen kuuluvia muuttujia Näitä.
© Jukka Harju, Jukka Juslin
1 Kertaus koetta varten oleellisista asioista Jukka Juslin.
Johdetun luokan olion alustus tMyn1 Johdetun luokan olion alustus määrätyillä arvoilla Kun ohjelmassa esiintyy johdetun luokan olion määrittely, järjestelmä.
Java Java on Sun Microsystems yhtiön kehittämä laaja olio-pohjainen ohjelmointikieli, joka on laitteistoriippumaton. Laitteistoriippumattomuudessa on.
UML-luokkakaaviot ja Java
String-vertailusta ja Scannerin käytöstä (1/2)
19. Olio-ohjelmointia Javalla
20. Javan omat luokat.
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.
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.
@ Leena Lahtinen TIETOKONEOHJELMAN RAKENNE OHJELMALLA ON KAKSI OSAA:  MÄÄRITYSOSA TIETOJEN KUVAUKSIA VARTEN  SUORITUSOSA TIETOJEN KÄSITTELYÄ.
© Jukka Juslin1 Osio2 Olio-ohjelmointi: Merkkijonot eli Stringit Jukka Juslin.
Oliot ja luokat Oliot ja luokat Oliot (object) ja luokat (class) ovat keskeisiä olio- ohjelmoinnin käsitteitä. Olio-ohjelmointi on ohjelmointiparadigma,
© Jukka Harju, Sisältö 1. Mitä on periytyminen Javassa? 2. Periytyminen UML-luokkakaaviossa 3. Termejä 4. Periytymishierarkia 5. Periytyminen vs.
Vesa Ollikainen & Outi Grotenfelt
Olioiden taulukointi Perustaulukon käyttö Luokan ilmentymät voidaan tallettaa taulukkoon samoin kuin muuttujat Esimerkki talletetaan taulukkoon opintojaksojen.
11. Rajapinnat Sisällys Mitä rajapinnat ovat? Kuinka ne määritellään ja otetaan käyttöön? Moniperiytyminen rajapintojen avulla. Varoituksen.
Javan oliovirrat eli oliotiedostojen käsittely. Olio- eli objektitiedostojen käsittely Käsittely täysin samanlaista kuin muiden tiedostojen 1.Otetaan.
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.
Sähköpostin lähetys Java- ohjelmasta Jukka Juslin.
15. Ohjelmoinnin tekniikkaa
String-vertailusta ja Scannerin käytöstä (1/2)
5. Kapselointi.
6. Metodit.
Harjoitustyö.
2. Taulukot.
4. Komentoriviparametrit
7. Hyvä ohjelmointitapa..
15. Ohjelmoinnin tekniikkaa
3. Luokat, oliot ja metodit Java-kielessä (Lausekielinen ohjelmointi I ja II –kursseilla opitun kertausta.)
Aakkosnumeerinen tieto
2. Taulukot.
6. Metodit.
4. Attribuutit.
3. Attribuutit.
4. Luokan testaus ja käyttö olion kautta
eli oliotiedostojen käsittely
Esityksen transkriptio:

Osion kaksi kertaus Jukka Juslin © Jukka Juslin

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Koostumussuhteen toteuttaminen Esimerkki: http://myy.helia.fi/~ict02d/luennot/Koodit/Osoite.java http://myy.helia.fi/~ict02d/luennot/Koodit/Opiskelija.java http://myy.helia.fi/~ict02d/luennot/Koodit/OsoiteTesteri.java 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

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

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

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