Outi Grotenfelt & Vesa Ollikainen

Slides:



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

18. Abstraktit tietotyypit
Rajapintaluokat Rajapintaluokka luettelee metodit, joille tulee löytyä toteutus asianomaisen rajapinnan toteuttavista luokista. Rajapintaluokka on siis.
– Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä.
Koostumussuhde Jukka Juslin © Jukka Juslin.
Olio-ohjelmoinnin perusteet luento 3: Muuttujista ja funktioista Sami Jantunen LTY/Tietotekniikan osasto.
Osion kaksi kertaus Jukka Juslin © Jukka Juslin.
6. Metodit.
@ Leena Lahtinen Helia TIETO JA TIETOKONEOHJELMA  TIETOKONEOHJELMA KÄSITTELEE TIETOJA  TIETOJA VOIDAAN KÄSITELLÄ OHJELMASSA VAIN SALLITUILLA.
© Jukka Harju, Viittausmuuttujat. © Jukka Harju, Viittaukset •Viittausmuuttuja sisältää tiedon siitä missä muistipaikassa olio.
Luokkien väliset koostesuhteet
© 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.
Nämä kalvot on lisensoitu Creative Commons Attribution-ShareAlike 1
Taulukot Jukka Juslin © Jukka Juslin 2006.
Taulukot: Array Taulukko Javassa pitää aina perustaa (new)
Taulukoiden määrittely, käsittely ja kopiointi Vaihtoehdot taulukoille
Olio-mallinnus Tietojärjestelmien suunnittelu KYAMK, Liiketalous, Kouvola Jarkko Ansamäki, 2002.
Antti-Jussi Lakanen Nuorten peliohjelmointi 2009 / Jyväskylän yliopisto.
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
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Tietorakenneluokkia 2: HashMap, TreeMap.
Poikkeustenkäsittely  Mitä poikkeustenkäsittely tarkoittaa?  Poikkeuksen käsitteleminen  Poikkeusluokkien hierarkia  Poikkeuksen heittäminen 1.
Luokkien löytyminen käytännössä tMyn1 Luokkien löytyminen käytännössä Kun aletaan ratkaista elävän elämän ohjelmointitehtäviä, niin ensimmäisten asioiden.
Olio-ohjelmointi: Luokkien kirjoittaminen
TAULUKKO YKSIULOTTEINEN TAULUKKO. TAULUKKO  Taulukon tarkoitus Ohjelmassa tarvitaan paljon samantyyppisiä samaan kohdealueeseen kuuluvia muuttujia Näitä.
TIETO JA TIETOKONEOHJELMA TIETOKONEOHJELMA KÄSITTELEE TIETOJA TIETOJA VOIDAAN KÄSITELLÄ OHJELMASSA VAIN SALLITUILLA MENETELMILLÄ.
Olioon kohdistuvia perustoimintoja tMyn1 Olioon kohdistuvia perustoimintoja Kopiointimuodostin (copy constructor) alustaa olion tietojäsenet saman luokan.
Virtuaaliset jäsenfunktiot tMyn1 Virtuaaliset jäsenfunktiot Virtuaalinen jäsenfunktio on esiteltävä monimuotoisessa kantaluokassa. Virtuaalisen jäsenfunktion.
© Jukka Harju, Jukka Juslin
1 Kertaus koetta varten oleellisista asioista Jukka Juslin.
Kuinka tehdä blogi o365:ssä
Miika Nurminen, Kerho -alusta() : void +lue_tiedostosta(tied : String) : String +talleta() : String +kerhon_nimi(): String +jasenia() : int +poista(nro:
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.
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Standardi- ja tietorakenneluokkia.
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.
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.
Ohjelmointitaito (ict1td002, 12 op) Kevät 2008 Raine Kauppinen
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op.
Komponenttipohjainen ohjelmistotekniikka (TJTSS56) Osa 4 Kevätlukukausi 2010 Jyväskylän yliopisto Tietojenkäsittelytieteiden laitos Markku Sakkinen.
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Pakkaukset ja määreet.
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Poikkeukset ja tietovirrat: Virhetilanteiden ja syötevirtojen käsittely.
Oliot ja luokat Oliot ja luokat Oliot (object) ja luokat (class) ovat keskeisiä olio- ohjelmoinnin käsitteitä. Olio-ohjelmointi on ohjelmointiparadigma,
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.
Monimuotoinen luokka tMyn1 Monimuotoinen luokka Monimuotoinen luokka mahdollistaa saman jäsenfunktion toteutuksen monella tavalla. Tällöin puhutaan virtuaalisesta.
Graafinen käyttöliittymä, osa 1
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.
15. Ohjelmoinnin tekniikkaa
Ohjelmistojen mallintaminen, sekvenssikaaviot
UML-luokkakaavio ● Luokkakaavio (class diagram) kuvaa järjestelmän luokkarakennetta ● Mitä luokkia on olemassa ● Minkälaisia luokat ovat ● Luokkien suhteet.
Olio-ohjelmoinista lyhyesti. 2.2 Sisällys Yleistä. Oliot ja luokat. Attribuutit. Olioiden esittely ja alustus. Rakentajat. Olion operaation kutsuminen.
5. Kapselointi.
6. Metodit.
3. Olio-ohjelmoinista lyhyesti
3. Luokat, oliot ja metodit Java-kielessä (Lausekielinen ohjelmointi I ja II –kursseilla opitun kertausta.)
Rajapintaluokat Rajapintaluokka luettelee metodit, joille tulee löytyä toteutus asianomaisen rajapinnan toteuttavista luokista. Rajapintaluokka on siis.
6. Metodit.
4. Attribuutit.
3. Attribuutit.
4. Luokan testaus ja käyttö olion kautta
2. Olio-ohjelmoinnin perusteita
eli oliotiedostojen käsittely
Esityksen transkriptio:

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

Outi Grotenfelt & Vesa Ollikainen Tausta Aiemmin todettiin, että Luokat sisältävät instanssimuuttujia ja metodeja. Instanssimuuttujat kapseloidaan (private). Instanssimuuttujiin pääsee käsiksi asetus- ja saantimetodien kautta. Metodit ovat julkisia (public), jos halutaan, että niitä voi käyttää kaikista muista luokista. Kun olio luodaan, kutsutaan konstruktoria (alustajaa). Esimerkissä tyhjä, parametriton oletuskonstruktori sekä parametrillinen konstruktori Rectangle - length : double width : double + Rectangle() + Rectangle(len : double, wid : double) + setLength(len : double) : void + setWidth(wid : double) : void + getLength() : double + getWidth() : double + getArea() : double 5.9.2012 Outi Grotenfelt & Vesa Ollikainen

Tausta.. 5.9.2012 Outi Grotenfelt

Esimerkki BankAccount balance: double + BankAccount() + BankAccount(startBalance: double) + BankAccount(str: String) + deposit(amount : double) : void + deposit(str: String) : void + withDraw(amount: double) : void + withDraw(str: String) : void + setBalance(b: double) : void + setBalance(str: String) : void + setBalance() : double Overloaded constructors Overloaded other methods 5.9.2012 Outi Grotenfelt

Esim..(jatkuu) 5.9.2012 Outi Grotenfelt

Esim..(jatkuu) Overloaded deposit methods Overloaded withdraw methods 5.9.2012 Outi Grotenfelt

Esim..(jatkuu) Overloaded setBalance methods 5.9.2012 Outi Grotenfelt

3/4/17 8

Kuinka luokat löydetään? Kuvaus: Jaskan autokorjaamo palvelee erityisesti automerkkejä kuten Mercedes, Porche, ja BMW. Kun asiakas tuo auton huoltoon, työnjohtaja saa asiakkaan nimen, osoitteen ja puhelinnumeron. Sitten työnjohtaja kirjaa auton merkin, mallin ja valmistusvuoden ja antaa asiakkaalle huoltokuitin. Kuitti sisältää huollon hinnan, arvioidut tarvittavat varaosat, mahdolliset muut työkustannukset, veron sekä palvelun kokonaishinnan. Tarkoituksena on tehdä sovellus, joka antaisi työnjohtajan tulostaa asiakkaan tarvitseman kuitin.. 5.9.2012 Outi Grotenfelt

Luokat? Identifioidaan substantiivit: Jaskan autokorjaamo palvelee erityisesti automerkkejä kuten Mercedes, Porche, ja BMW. Kun asiakas tuo auton huoltoon, työnjohtaja saa asiakkaan nimen, osoitteen ja puhelinnumeron. Sitten työnjohtaja kirjaa auton merkin, mallin ja valmistusvuoden ja antaa asiakkaalle huoltokuitin. Kuitti sisältää huollon hinnan, arvioidut tarvittavat varaosat, mahdolliset muut työkustannukset, veron sekä palvelun kokonaishinnan. Melko monet substantiiveista esiintyvät useaan kertaan! 5.9.2012 Outi Grotenfelt

Luokat? Substantiivilista: Todella mielenkiintoiset substantiivit: auto asiakas huoltokuitti Luokat? Substantiivilista: osoite BMW auto asiakas Arvioitu työkustannus Arvioitu varaosakustannus Jaskan korjaamo merkki työnjohtaja Mercedes malli nimi Porche vero huoltokuitti puhelinnumero Palvelun kokonaishinta vuosi HUOM: jotkut substantiivit todellakin tarkoittavat samaa asiaa! Toiset taas eivät ole kiinnostavia! Jotkut tarkoittavat olioita eivätkä luokkia! 5.9.2012 Outi Grotenfelt

Luokat: Asiakas nimi: String Auto osoite: String puhelin: String +setNimi(n:String) : void +setOsoite(a:String) : void +setPuhelin(p:String) : void +getNimi () : String +getOsoite () : String +getPuhelin() : String Auto merkki: String malli: String valmistusvuosi: int + Auto() +setMerkki(m:String) : void +setMalli(m:String) : void +setVuosi(y:int) : void +getMerkki() : String +getMalli () : String +getVuosi() : int Huoltokuitti osaHinta: double tyoHinta: double + Huoltokuitti() +setOsaHinta(c:double) : void +setTyoHinta(c:double) : void +getOsaHinta:() : double +getTyoHinta () : double +getVero() : double +getKokoHinta () : double 5.9.2012 Outi Grotenfelt

Outi Grotenfelt & Vesa Ollikainen Olioiden yhteistyö Olioiden yhteistoiminta edellyttää, että oliot tuntevat toisensa. Olioiden välinen yhteys toteutetaan instanssimuuttujien avulla. Tarkastellaan esimerkkinä henkilön ja polkupyörän suhdetta. Miten toinen olio saa tiedon toisesta oliosta? olion luonnin yhteydessä metodikutsun parametrina 5.9.2012 Outi Grotenfelt & Vesa Ollikainen

Ratkaisu 1: tieto luonnin yhteydessä Henkilö-luokassa ei ole viittausta polkupyörään 5.9.2012 Outi Grotenfelt & Vesa Ollikainen

Outi Grotenfelt & Vesa Ollikainen …jatkoa Polkupyörä-luokassa on instanssimuuttujana viittaus Henkilö- luokan olioon. Kun polkupyörä luodaan, alustaja asettaa viittauksen parametrina saatuun omistajaan. Polkupyörän omistaja on pakko antaa. voi tosin olla null. 5.9.2012 Outi Grotenfelt & Vesa Ollikainen

Outi Grotenfelt & Vesa Ollikainen …jatkoa Pääohjelma luo henkilön ja polkupyörän. Polkupyörä-olion alustajalle välitetään viittaus jo luotuun henkilöön. 5.9.2012 Outi Grotenfelt & Vesa Ollikainen

Ratkaisu 2: tieto metodikutsussa Henkilö-luokan instanssimuuttujissa ei ole polkupyörää. Henkilö-luokan metodi aja saa parametrinaan viittauksen Polkupyörä-luokan olioon 5.9.2012 Outi Grotenfelt & Vesa Ollikainen

Outi Grotenfelt & Vesa Ollikainen …jatkoa Polkupyörä-luokka ei sisällä viittausta henkilöön 5.9.2012 Outi Grotenfelt & Vesa Ollikainen

Outi Grotenfelt & Vesa Ollikainen …jatkoa Pääohjelma luo henkilön ja polkupyörän. Ne eivät luonnin jälkeen tunne toisiaan. Henkilö-olion aja-metodille välitetään viittaus polkupyörään.. 5.9.2012 Outi Grotenfelt & Vesa Ollikainen

Outi Grotenfelt & Vesa Ollikainen Assosiaatio Tilannetta, jossa toisen luokan olio tuntee toisen luokan olion, kutsutaan assosiaatioksi. Edellä: polkupyörä tuntee henkilön (esimerkki 1) henkilö tuntee polkupyörän (esimerkki 2) Yhteys voisi olla myös molempiin suuntiin 5.9.2012 Outi Grotenfelt & Vesa Ollikainen

UML-luokkakaaviomerkintä ”Polkupyörä tuntee omistajan” Lisäksi voidaan kuvata lukumääräsuhteita: Polkupyörällä on aina yksi omistaja Henkilöllä on mielivaltaisen monta polkupyörää (esimerkissämme). 5.9.2012 Outi Grotenfelt & Vesa Ollikainen

Outi Grotenfelt & Vesa Ollikainen Kooste Edellisen esimerkin henkilöt ja omistajat ovat itsenäisiä olioita. Olio voi koostua toisista olioista. Toteutetaan instanssimuuttujien avulla kuten assosiaatio. Löyhä kooste: Tietokone koostuu komponenteista. Jos tietokone tuhotaan, komponentit voivat jäädä olemaan. Aito kooste Talo koostuu huoneista. Jos talo tuhotaan, huoneetkin tuhoutuvat. 5.9.2012 Outi Grotenfelt & Vesa Ollikainen

Esimerkkejä (UML-luokkakaavio) 5.9.2012 Outi Grotenfelt & Vesa Ollikainen

Esimerkki: aito kooste Talo-luokalla on instanssimuuttujina huoneet, joista talo koostuu. 5.9.2012 Outi Grotenfelt & Vesa Ollikainen

Outi Grotenfelt & Vesa Ollikainen …jatkoa Huone-luokan oliot ovat Talo-luokan olioiden luomia. Huoneet eivät tiedä taloa, johon ne kuuluvat. 5.9.2012 Outi Grotenfelt & Vesa Ollikainen

Outi Grotenfelt & Vesa Ollikainen …jatkoa Pääohjelmassa luodaan Talo-luokan olio. Huone-luokasta ei tiedetä mitään, ei edes sen olemassaoloa! Huoneisiin päästäisiin käsiksi vain talon kautta. 5.9.2012 Outi Grotenfelt & Vesa Ollikainen

KIITOS! www.metropolia.fi www.facebook.com/MetropoliaAMK outi.grotenfelt@metropolia.fi