Osion kaksi kertaus. Jukka Juslin. Jukka Juslin



Samankaltaiset tiedostot
Olio-ohjelmointi: Luokkien toteuttaminen. Jukka Juslin

Olio-ohjelmointi Javalla

UML ja luokkien väliset suhteet

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

Mikä yhteyssuhde on?

ict02d Osio2- luento 3 Olio-ohjelmointi: Luokkien kirjoittaminen

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

YHTEYSSUHDE (assosiation)

Oliot viestivät metodeja kutsuen

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

Javan perusteita. Janne Käki

Taulukot. Jukka Harju, Jukka Juslin

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

Aalto Yliopisto T Informaatioverkostot: Studio 1. Oliot ja luokat Javaohjelmoinnissa

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

2. Olio-ohjelmoinista lyhyesti 2.1

public static void main (String [] args)

Metodien tekeminen Javalla

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

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

1 Tehtävän kuvaus ja analysointi

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

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

Luokan muodostimet (Constructors)

Ohjelmoinnin jatkokurssi, kurssikoe

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

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

Luokat ja oliot. Ville Sundberg

P e d a c o d e ohjelmointikoulutus verkossa

9. Periytyminen Javassa 9.1

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

9. Periytyminen Javassa 9.1

TyontekijaOhjelma. +main() (käyttää) + = public - = private

Metodien tekeminen Javalla

Osio2: Taulukot Jukka Juslin

Vahva koostumussuhde (Composition)

String-vertailusta ja Scannerin käytöstä (1/2) String-vertailusta ja Scannerin käytöstä (2/2) Luentoesimerkki 4.1

Osio2, olio-ohjelmointi: Luokkien ja olioiden käyttäminen Jukka Juslin

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

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

UML -mallinnus LUOKKAKAAVIO EERO NOUSIAINEN

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

4. Olio-ohjelmoinista lyhyesti 4.1

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

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

Periytyminen (inheritance)

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

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

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

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

16. Javan omat luokat 16.1

KOHDELUOKAN MÄÄRITTELY

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

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

Rajapinta (interface)

812336A C++ -kielen perusteet,

Tietorakenteet. JAVA-OHJELMOINTI Osa 5: Tietorakenteita. Sisällys. Merkkijonot (String) Luokka String. Metodeja (public)

Ohjelmoinnin perusteet, kurssikoe

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

20. Javan omat luokat 20.1

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

Luokan sisällä on lista

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes)

Listarakenne (ArrayList-luokka)

T Olio-ohjelmointi Osa 3: Luokka, muodostin ja hajotin, this-osoitin Jukka Jauhiainen OAMK Tekniikan yksikkö 2010

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

UML Luokkakaavio 14:41

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Olioiden yhteistoiminta

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Luokkamalli LUOKKAKAAVIO. Tämän osan sisältö. Luokkamalli. Luokka ja olio. Luokkakaavio (class diagram)

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

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

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

15. Ohjelmoinnin tekniikkaa 15.1

5 Olio-ohjelmointi 133

Interaktiivinen tarinankerronta

Hakemistojen sisällöt säilötään linkitetyille listalle.

Olio-ohjelmointi Syntaksikokoelma

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

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

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

7. Oliot ja viitteet 7.1

Oliosuunnittelu ja luokkakohtaiset komponentit

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op

1. Olio-ohjelmointi 1.1

14. Poikkeukset 14.1

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

Sisällys. 19. Unified Modeling Language (UML) Johdanto. Johdanto. Johdanto. Luokkakaavio:

19. Olio-ohjelmointia Javalla 19.1

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

12. Monimuotoisuus 12.1

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat

15. Ohjelmoinnin tekniikkaa 15.1

Luokkakirjastot. esiintymämetodien käytöstä:

Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Ta

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

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

T Olio-ohjelmointi Osa 5: Periytyminen ja polymorfismi Jukka Jauhiainen OAMK Tekniikan yksikkö 2010

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Tietorakenneluokkia 2: HashMap, TreeMap

ITKP102 Ohjelmointi 1 (6 op)

Transkriptio:

Osion kaksi kertaus Jukka Juslin

Sisältö Taulukot ja Stringit Luokkien kirjoittaminen Oletusmuodostin UML

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

String String Javan merkkijonotietotyyppinä String nimi = Jukka Juslin ; Stringien vertailu equals metodilla, EI == operaattorilla tostring metodi tulostaa olion sisällön Stringinä niin että kaikkien attribuuttien arvoa konkatenoidaan yhdeksi Stringiksi ja erotetaan esim. välilyönneillä arvot toisistaan

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

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

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

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

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

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ä

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

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 kopin)

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;

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

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

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

UML Esimerkkiluokkakaavio luokan nimi attribuutin näkyvyys metodin palautusarvon tyyppi staattinen metodi attribuutin tyyppi (tässä tapauksessa inttaulukko)

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

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

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ä Opiskelijaluokassa täytyy olla yksi attribuutti, joka on Osoite-tyyppinen

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!

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

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

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