Skip to content

Commit a118c10

Browse files
author
avihavai
committed
kuvat paikallaan, pdf-slideshow paikallaan
1 parent c12382d commit a118c10

5 files changed

Lines changed: 24 additions & 18 deletions

File tree

data/img/rintamamiestalo.jpg

-661 KB
Loading

data/osa-4/2-johdatus-olio-ohjelmointiin.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,14 @@ hidden: true
1212

1313
</text-box>
1414

15+
TODO: lead in
16+
17+
<pdf-slideshow>
18+
19+
[a](../slideshows/johdatus-olio-ohjelmointiin.pdf)
20+
21+
</pdf-slideshow>
1522

16-
<pdfslideshow path='../slideshows/johdatus-olio-ohjelmointiin.pdf'></pdfslideshow>
1723

1824
TODO: quiz
1925

data/osa-4/3-luokka-ja-olio.md

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,11 @@ Luokasta luodaan olio aina kutsumalla olion luovaa metodia eli **konstruktoria**
5454

5555
Luokka kuvaa siitä luotavien olioiden "rakennuspiirustukset". Otetaan analogia tietokoneiden ulkopuoleisesta maailmasta. Rintamamiestalot lienevät monille tuttuja. Voidaan ajatella, että jossain on olemassa piirustukset jotka määrittelevät minkälainen rintamamiestalo on. Piirrustukset ovat luokka, eli ne määrittelevät minkälaisia olioita luokasta voidaan luoda:
5656

57-
<img src="/img/rintamamiestalo-rakennuspiirrustus.jpg"/>
57+
<img src="../img/rintamamiestalo-rakennuspiirrustus.jpg"/>
5858

5959
Yksittäiset oliot eli rintamamiestalot on tehty samojen piirustusten perusteella, eli ne ovat saman luokan ilmentymiä. Yksittäisten olioiden tila eli ominaisuudet (esim. seinien väri, katon rakennusmateriaali ja väri, kivijalan väri, ovien rakennusmateriaali ja väri, ...) vaihtelevat. Seuraavassa yksi "rintamamiestalo-luokan olio":
6060

61-
<img src="/img/rintamamiestalo.jpg" height=250 />
61+
<img src="../img/rintamamiestalo.jpg" />
6262

6363
</text-box>
6464

@@ -149,11 +149,11 @@ public class Henkilo {
149149

150150
NetBeansissa uuden tiedoston luomisen jälkeinen tilanne näyttää seuraavalta. Alla olevassa kuvassa Hiekkalaatikkotehtävään on lisätty luokka `Henkilo`.
151151

152-
<img src="/img/material/luokka-luotuna.png">
152+
<img src="../img/material/luokka-luotuna.png">
153153

154154
Luokkaa kuvaamaan voi piirtää myös luokkakaavion, jonka merkintätekniikkaan tutustutaan tässä samalla. Henkilo-niminen luokka, jossa ei ole mitään sisällä näyttää seuraavalta:
155155

156-
<img src="/img/diagrams/luokkakaavio-henkilo.png">
156+
<img src="../img/diagrams/luokkakaavio-henkilo.png">
157157

158158
Luokka määrittelee luokasta luotavien olioiden ominaisuudet ja toiminnallisuudet. Päätetään, että jokaisella henkilöoliolla on nimi ja ikä. Nimi on luonnollista esittää merkkijonona, eli Stringinä, ja ikä taas kokonaislukuna. Lisätään nämä rakennuspiirustuksiimme:
159159

@@ -170,7 +170,7 @@ Oliomuuttujat kirjoitetaan luokan määrittelyä `public class Henkilo {` seuraa
170170

171171
Luokkaakaaviossa luokkaan liittyvät muuttujat määritellään muodossa "muuttujanNimi: muuttujanTyyppi". Miinusmerkki ennen muuttujan nimeä kertoo, että muuttuja on kapseloitu (sillä on avainsana private).
172172

173-
<img src="/img/diagrams/luokkakaavio-henkilo-ika-ja-nimi.png">
173+
<img src="../img/diagrams/luokkakaavio-henkilo-ika-ja-nimi.png">
174174

175175
Olemme nyt määritelleet rakennuspiirustukset -- luokan -- henkilöoliolle. Jokaisella uudella henkilöolioilla on muuttujat `nimi` ja `ika`, joissa voi olla oliokohtainen arvo. Henkilöiden "tila" koostuu niiden nimeen ja ikään asetetuista arvoista.
176176

@@ -181,7 +181,7 @@ Uuden luokan saa lisättyä NetBeansissa seuraavasti: Ruudun vasemmalla reunalla
181181

182182
Tässä tehtävässä harjoittelet luokan luomista. Luo tehtäväpohjaan luokka nimeltä `Koira` ja lisää sille oliomuuttujat `private String nimi`, `private String rotu` ja `private int ika`. Luokkakaaviona luokka näyttää seuraavalta:
183183

184-
<img src="/img/diagrams/luokkakaavio-teht-koira.png" alt="[Koira|-nimi:String;-rotu:String;-ika:int]">
184+
<img src="../img/diagrams/luokkakaavio-teht-koira.png" alt="[Koira|-nimi:String;-rotu:String;-ika:int]">
185185

186186
Luokalla ei vielä oikeastaan tee mitään, mutta tämän askeleen harjoittelusta on hyötyä myöhempää ajatellen.
187187

@@ -225,7 +225,7 @@ Koska oliomuuttujat on määritelty konstruktorin aaltosulkujen ulkopuolella, vo
225225

226226
Nyt luokkakaavioon on merkitty luokan nimen ja muuttujien lisäksi myös konstruktori. Konstruktori saa public-näkyvyysmääreen takia eteen plussan, jonka lisäksi siitä merkitään sen nimi ja parametrin tyypit (tässä `+ Henkilo(String)`).
227227

228-
<img src="/img/diagrams/luokkakaavio-henkilo-ika-ja-nimi-ja-konstruktori.png">
228+
<img src="../img/diagrams/luokkakaavio-henkilo-ika-ja-nimi-ja-konstruktori.png">
229229

230230

231231
<programming-exercise name='Huone' tmcname='osa04-Osa04_14.Huone'>
@@ -234,7 +234,7 @@ Uuden luokan saa lisättyä seuraavasti: Ruudun vasemmalla reunalla on projektil
234234

235235
Luo luokka nimeltä `Huone`. Huoneella on oliomuuttujina `private String koodi`, esimerkiksi "B221", ja `private int istumapaikat`, esimerkiksi 30. Luo tämän jälkeen konstruktori `public Huone(String luokanKoodi, int istumapaikkojenMaara)`, minkä avulla oliomuuttujiin asetetaan arvot.
236236

237-
<img src="/img/diagrams/luokkakaavio-teht-huone.png" alt="[Huone|-koodi:String;-istumapaikat:int|+Huone(String‚ int)]">
237+
<img src="../img/diagrams/luokkakaavio-teht-huone.png" alt="[Huone|-koodi:String;-istumapaikat:int|+Huone(String‚ int)]">
238238

239239
Tälläkään luokalla ei vielä oikeastaan tee mitään, mutta seuraavassa tehtävässä luokastamme tehty olio osaa jo tulostaa tekstiä.
240240

@@ -308,7 +308,7 @@ Metodeistamme puuttuu jatkossa määre `static` mikäli ne käsittelevät kyseis
308308

309309
Luokkakaavioon on merkitty luokan nimen, oliomuuttujien ja konstruktorin lisäksi nyt myös metodi `tulostaHenkilo`. Koska metodilla on `public`-määre, tulee sille alkuun plus, jota seuraa metodin nimi. Metodille ei ole määritelty parametreja, joten ei myöskään piirretä metodin sulkujen sisälle. Metodille merkitään myös tieto siitä, että se ei palauta arvoa, tässä `void`.
310310

311-
<img src="/img/diagrams/luokkakaavio-henkilo-ika-ja-nimi-ja-konstruktori-ja-tulosta.png">
311+
<img src="../img/diagrams/luokkakaavio-henkilo-ika-ja-nimi-ja-konstruktori-ja-tulosta.png">
312312

313313
Metodin `tulostaHenkilo` sisällä on yksi koodirivi joka käyttää hyväkseen oliomuuttujia `nimi` ja `ika` -- luokkakaavio ei kerro sisäisestä toteutuksesta. Olion sisäisiin muuttujiin viitataan etuliitteellä `this`. Kaikki olion muuttujat ovat siis näkyvillä ja käytettävissä metodin sisällä.
314314

@@ -441,7 +441,7 @@ Metodi kirjoitetaan `tulostaHenkilo`-metodin tapaan luokan `Henkilo` sisälle. M
441441

442442
Myös luokkakaavio päivittyy.
443443

444-
<img src="/img/diagrams/luokkakaavio-henkilo-ika-ja-nimi-ja-konstruktori-ja-tulosta-ja-vanhene.png" alt="[Henkilo|-nimi:String;-ika:int|+Henkilo(String);+tulostaHenkilo():void;+vanhene():void]">
444+
<img src="../img/diagrams/luokkakaavio-henkilo-ika-ja-nimi-ja-konstruktori-ja-tulosta-ja-vanhene.png" alt="[Henkilo|-nimi:String;-ika:int|+Henkilo(String);+tulostaHenkilo():void;+vanhene():void]">
445445

446446
Kutsutaan metodia ja katsotaan mitä tapahtuu:
447447

@@ -825,7 +825,7 @@ public class Henkilo {
825825

826826
Luokka kokonaisuudessaan:
827827

828-
<img src="/img/diagrams/luokkakaavio-henkilo-ika-ja-nimi-ja-konstruktori-ja-tulosta-ja-vanhene-ja-palautaika.png" alt="[Henkilo|-nimi:String;-ika:int|+Henkilo(String);+tulostaHenkilo():void;+vanhene():void;+palautaIka():int]">
828+
<img src="../img/diagrams/luokkakaavio-henkilo-ika-ja-nimi-ja-konstruktori-ja-tulosta-ja-vanhene-ja-palautaika.png" alt="[Henkilo|-nimi:String;-ika:int|+Henkilo(String);+tulostaHenkilo():void;+vanhene():void;+palautaIka():int]">
829829

830830
Havainnollistetaan metodin toimintaa:
831831

@@ -861,16 +861,16 @@ Pekka ja Antti yhteensä 3 vuotta
861861
</sample-output>
862862

863863

864-
<quiznator id='59bd00596ee1930004e5f921'></quiznator>
864+
<quiznator id='5c409ea9fd9fd71425c5f871'></quiznator>
865865

866-
<quiznator id='5a57bcce574f0b000439a331'></quiznator>
866+
<quiznator id='5c409ecd017ffc13eddc6d37'></quiznator>
867867

868868

869869
<programming-exercise name='Henkilo' tmcname='osa04-Osa04_20.Henkilo'>
870870

871871
Luo luokka Henkilo (ei öötä!). Luokan Henkilo tulee sisältää seuraavan luokkakaavion määrittelemät ominaisuudet.
872872

873-
<img src="/img/diagrams/luokkakaavio-henkilo-ika-ja-nimi-ja-konstruktori-ja-tulosta-ja-vanhene-ja-palautaika.png">
873+
<img src="../img/diagrams/luokkakaavio-henkilo-ika-ja-nimi-ja-konstruktori-ja-tulosta-ja-vanhene-ja-palautaika.png">
874874

875875
Luokkakaaviossa ei kuitenkaan kerrota *miten* esimerkiksi metodien tulee toimia. Tässä vielä tarkennus luokkakaavion lisäksi.
876876

@@ -1018,7 +1018,7 @@ Metodi `getNimi` palauttaa oliomuuttujan `nimi` kutsujalle. Metodin nimi on hiem
10181018

10191019
Luokka kokonaisuudessaan:
10201020

1021-
<img src="/img/diagrams/luokkakaavio-henkilo-getterit.png" alt="[Henkilo|-nimi:String;-ika:int|+Henkilo(String);+tulostaHenkilo():void;+vanhene():void;+palautaIka():int;+taysiIkainen():boolean;+getNimi():String]">
1021+
<img src="../img/diagrams/luokkakaavio-henkilo-getterit.png" alt="[Henkilo|-nimi:String;-ika:int|+Henkilo(String);+tulostaHenkilo():void;+vanhene():void;+palautaIka():int;+taysiIkainen():boolean;+getNimi():String]">
10221022

10231023
Muotoillaan pääohjelma käyttämään uutta "getteri"-metodia:
10241024

@@ -1199,7 +1199,7 @@ My name is Bond, Ionic Bond
11991199

12001200
Helsingin Yliopiston opiskelijaruokaloissa eli Unicafeissa opiskelijat maksavat lounaansa käyttäen maksukorttia. Lopullinen Maksukortti tulee näyttämään luokkakaaviona seuraavalta:
12011201

1202-
<img src="/img/diagrams/luokkakaavio-teht-maksukortti.png" alt="[Maksukortti|-saldo:double|+Maksukortti(double);+syoEdullisesti():void;+syoMaukkaasti():void;+lataaRahaa(double):void;+toString():String]">
1202+
<img src="../img/diagrams/luokkakaavio-teht-maksukortti.png" alt="[Maksukortti|-saldo:double|+Maksukortti(double);+syoEdullisesti():void;+syoMaukkaasti():void;+lataaRahaa(double):void;+toString():String]">
12031203

12041204
Tässä tehtäväsäsarjassa tehdään luokka `Maksukortti`, jonka tarkoituksena on jäljitellä Unicafeissa tapahtuvaa maksutoimintaa.
12051205

data/osa-4/6-yhteenveto.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,4 @@ Neljännessä osassa tutustuttiin tiedon lukemiseen tiedostosta ja otettiin ensi
1010

1111
Vastaa vielä alla olevaan kyselyyn.
1212

13-
<quiznator id="5ba556da0f41894872bf2944"></quiznator>
13+
<quiznator id="5c409e78017ffc13eddc6d34"></quiznator>
515 KB
Binary file not shown.

0 commit comments

Comments
 (0)