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

Samankaltaiset tiedostot
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op

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

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

Mikä yhteyssuhde on?

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

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

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

Olio-ohjelmointi Javalla

YHTEYSSUHDE (assosiation)

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

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

Luokan sisällä on lista

UML ja luokkien väliset suhteet

Oliot viestivät metodeja kutsuen

1 Tehtävän kuvaus ja analysointi

Javan perusteita. Janne Käki

Taulukot. Jukka Harju, Jukka Juslin

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Standardi- ja tietorakenneluokkia

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

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Poikkeukset ja tietovirrat: Virhetilanteiden ja syötevirtojen käsittely

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

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

UML -mallinnus LUOKKAKAAVIO EERO NOUSIAINEN

UML Luokkakaavio 14:41

Metodien tekeminen Javalla

Periytyminen (inheritance)

Vahva koostumussuhde (Composition)

Ohjelmistojen mallintaminen, sekvenssikaaviot

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

Java kahdessa tunnissa. Jyry Suvilehto

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

Luokan muodostimet (Constructors)

Ohjelmoinnin perusteet, kurssikoe

Ohjelmointi 2, välikoe

2. Olio-ohjelmoinista lyhyesti 2.1

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

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

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

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

Java-API, rajapinnat, poikkeukset, UML,...

1. Olio-ohjelmointi 1.1

Osion kaksi kertaus. Jukka Juslin. Jukka Juslin

812336A C++ -kielen perusteet,

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

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

Ohjelmointi 2 / 2010 Välikoe / 26.3

1. Mitä tehdään ensiksi?

Osio2: Taulukot Jukka Juslin

ict02d Osio2- luento 3 Olio-ohjelmointi: Luokkien kirjoittaminen

Luokat ja oliot. Ville Sundberg

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

KOHDELUOKAN MÄÄRITTELY

Java ja grafiikka. Ville Sundberg

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

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

8/20: Luokat, oliot ja APIt

4. Olio-ohjelmoinista lyhyesti 4.1

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

Ohjelmoinnin jatkokurssi, kurssikoe

POLKU LUOKKAKAAVIOISTA TAULUJEN TOTEUTUKSEEN

C# olio-ohjelmointi perusopas

Oliosuunnittelu ja luokkakohtaiset komponentit

Java-kielen perusteet

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

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

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

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

public static void main (String [] args)

Tietokannat II -kurssin harjoitustyö

Jouni Huotari & Ari Hovi. Käsitemallinnuksesta relaatiokantaan KÄSITEMALLI. LOOGINEN MALLI: tietomalli valittu. FYYSINEN MALLI: DBMS valittu

812341A Olio-ohjelmointi, IX Olioiden välisistä yhteyksistä

TIE Samuel Lahtinen. Lyhyt UML-opas. UML -pikaesittely

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

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

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

Ohjelmointi 2 / 2011 Välikoe / 25.3

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

Antti-Jussi Lakanen Ohjelmointi 1, C# / kevät 2011

19. Olio-ohjelmointia Javalla 19.1

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

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

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Taulukot. Taulukon määrittely ja käyttö. Taulukko metodin parametrina. Taulukon sisällön kopiointi toiseen taulukkoon. Taulukon lajittelu

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

Yhteydelle voi antaa nimen kumpaankin suuntaan Sille ei tarvise antaa lainkaan nimeä Yhteysnimen asemasta tai lisäksi voidaan käyttää roolinimiä

Kooste. Esim. Ympyrän keskipiste voidaan ajatella ympyrän osaksi.

Ohjelmistojen mallintaminen. Luento 3, 9.11.

Olio-ohjelmointi: Luokkien toteuttaminen. Jukka Juslin

9. Periytyminen Javassa 9.1

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

7. Oliot ja viitteet 7.1

Olio-ohjelmoinnissa luokat voidaan järjestää siten, että ne pystyvät jakamaan yhteisiä tietoja ja aliohjelmia.

HARJOITUKSIA ios-ohjelmointiin LIITTYEN

Tietokannat II -kurssin harjoitustyö

Listarakenne (ArrayList-luokka)

Ohjelmistotekniikan menetelmät, koe

58131 Tietorakenteet ja algoritmit (syksy 2015)

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

Osa III. Olioiden luominen vapaalle muistialueelle

Transkriptio:

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

Tausta 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 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 Outi Grotenfelt & Vesa Ollikainen 2

Tausta.. Outi Grotenfelt 3

Esimerkki -balance: double BankAccount + 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 Outi Grotenfelt 4

Esim..(jatkuu) Outi Grotenfelt 5

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

Esim..(jatkuu) Overloaded setbalance methods Outi Grotenfelt 7

20/9/12 8 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.. Outi Grotenfelt 9

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! Outi Grotenfelt 10

Luokat? Todella mielenkiintoiset substantiivit: auto asiakas huoltokuitti 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! Outi Grotenfelt 11

Luokat: Asiakas - nimi: String - osoite: String - puhelin: String + Asiakas() +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 Outi Grotenfelt 12

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 Outi Grotenfelt & Vesa Ollikainen 13

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

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. Outi Grotenfelt & Vesa Ollikainen 15

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

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

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

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.. Outi Grotenfelt & Vesa Ollikainen 19

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 Outi Grotenfelt & Vesa Ollikainen 20

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). Outi Grotenfelt & Vesa Ollikainen 21

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. Outi Grotenfelt & Vesa Ollikainen 22

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

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

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

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. Outi Grotenfelt & Vesa Ollikainen 26

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