Ensimmäinen painos julkaistu nimellä Java-ohjelmointi Pro Training

Samankaltaiset tiedostot
Ensimmäinen painos julkaistu nimellä Java-ohjelmointi Pro Training

P e d a c o d e ohjelmointikoulutus verkossa

Ensimmäinen painos julkaistu nimellä Java-ohjelmointi Pro Training

19/20: Ikkuna olio-ohjelmoinnin maailmaan

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op

Ensimmäinen painos julkaistu nimellä Java-ohjelmointi Pro Training

5/20: Algoritmirakenteita III

15. Ohjelmoinnin tekniikkaa 15.1

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

Algoritmit 1. Luento 3 Ti Timo Männikkö

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

9/20: Puhu mun stdinille

7/20: Paketti kasassa ensimmäistä kertaa

15. Ohjelmoinnin tekniikkaa 15.1

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

HOJ J2EE & EJB & SOAP &...

HOJ Haja-aiheita. Ville Leppänen. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/10

Java kahdessa tunnissa. Jyry Suvilehto

useampi ns. avain (tai vertailuavain) esim. opiskelijaa kuvaavassa alkiossa vaikkapa opintopistemäärä tai opiskelijanumero

Listarakenne (ArrayList-luokka)

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

JAVA-OHJELMOINTI 3 op A274615

Tietojen syöttäminen ohjelmalle. Tietojen syöttäminen ohjelmalle Scanner-luokan avulla

7. Oliot ja viitteet 7.1

HSMT J2EE & EJB & SOAP &...

Metodit Arvotyyppi. Metodit Arvotyyppi. Metodit Parametrit. Metodit Parametrit. Metodit Kuormittaminen. Metodit Kuormittaminen. Javan perusteet

Sopimuspohjainen olio-ohjelmointi

811120P Diskreetit rakenteet

16. Javan omat luokat 16.1

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

8/20: Luokat, oliot ja APIt

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

P e d a c o d e ohjelmointikoulutus verkossa

811120P Diskreetit rakenteet

Rajapinta (interface)

Olio-ohjelmointi Syntaksikokoelma

Kehitysohje. ETL-työkalu. ExtraTerrestriaLs / Aureolis Oy

Sisällys. 7. Oliot ja viitteet. Olion luominen. Olio Java-kielessä

UML -mallinnus Viestiyhteyskaavio EERO NOUSIAINEN

Ohjelmistotuotanto vs. muut insinööritieteet. (Usein näennäinen) luotettavuus ja edullisuus

12. Näppäimistöltä lukeminen 12.1

Järjestelmäarkkitehtuuri (TK081702)

Ohjelmoinnin perusteet Y Python

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä

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

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla.

Ohjelmoinnin perusteet Y Python

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

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen

Ohjelmoinnin perusteet Y Python

AS C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin

Ohjelmistojen mallintaminen viikon 4 laskareiden mallivastauksia

Ohjelmointi II. Erkki Pesonen Luennot ja harjoitukset. Itä-Suomen yliopisto Tietojenkäsittelytieteen laitos 2015

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

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

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

Helia Ohjelmointitaito Tuomas Kaipainen Mermit Business Applications Oy Mermit Business Applications

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

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

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

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

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

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

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

1. Omat operaatiot 1.1

Järjestelmäarkkitehtuuri (TK081702) Järjestelmäarkkitehtuuri. Järjestelmäarkkitehtuuri

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla.

11/20: Konepelti auki

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op)

2. Olio-ohjelmoinnin perusteita 2.1

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

A TIETORAKENTEET JA ALGORITMIT

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

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

1. Mitä tehdään ensiksi?

TIE PRINCIPLES OF PROGRAMMING LANGUAGES Eiffel-ohjelmointikieli

Ehto- ja toistolauseet

3 Verkkopalveluarkkitehtuuri

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. X Poikkeusten käsittelystä

Johdanto Javaan ja tietokantojen käsittelyyn Java Database Connectivity (JDBC)

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

Rutiinin muodostaminen. 2. Rutiinin muodostaminen. specification) Määrittely (specification( Määrittelyn osapuolet. Hyvän ohjelman tunnusmerkit

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

Tietokannat II -kurssin harjoitustyö

20. Javan omat luokat 20.1

Javan perusteita. Janne Käki

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

1. Olio-ohjelmointi 1.1

Integrointi. Ohjelmistotekniikka kevät 2003

ULLA SANNIKKA. SENIORIN TIETOKONEOPAS Windows 10

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.

12. Javan toistorakenteet 12.1

Eero Hyvönen. Semanttinen web. Linkitetyn avoimen datan käsikirja

4/20: Algoritmirakenteita II

Ehto- ja toistolauseet

Imperatiivisen ohjelmoinnin peruskäsitteet. Meidän käyttämän pseudokielen lauseiden syntaksi

17/20: Keittokirja IV

Ohjelmointi 1 / syksy /20: IDE

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

Transkriptio:

TALENTUM Helsinki 2008

7., uudistettu painos Ensimmäinen painos julkaistu nimellä Java-ohjelmointi Pro Training 2008 Talentum Media Oy ja tekijät Kansi: Outi Pallari Taitto: NotePad, www.notepad.fi ISBN 978-952-14-1356-8 Esa Print Oy 2008

Sisällys Johdanto 19 1 Johdanto Javaan 21 1.1 Taustaa 21 1.2 JavaScript ja Ajax 22 1.3 Java ja C/C++ 23 1.4 Javan ominaisuuksia pähkinänkuoressa 23 1.5 Javan kehittyminen 25 2 Ohjelmoinnin historiasta 28 2.1 Ohjelmointikielten historiasta 29 2.2 Oliokielten historiasta 31 3 Ensimmäiset ohjelmat 34 3.1 Ohjelman kirjoittaminen ja kääntäminen 34 3.2 Ensimmäinen sovellus 37 3.2.1 Ohjelmakoodin kirjoittaminen 37 3.2.2 Koodin rakenne 38 3.2.3 Välikielelle kääntäminen 39 3.2.4 Sovelluksen ajaminen 40 3.3 Työskentely Eclipsellä 41 3.3.1 Eclipseen tutustuminen 41 3.3.2 Ensimmäinen projekti 43 3.3.3 Sovellus Eclipsellä 46 3.4 Tehtäviä 48 4 Olioperustainen ohjelman kehittäminen 49 4.1 Johdatus olioperustaiseen ohjelman kehittämiseen 50 4.2 Esitutkimus 52 4.3 Vaatimusanalyysi 53 4.3.1 Käyttötapaukset 54 4.3.2 Luokkien ja attribuuttien tunnistaminen 56 4.3.3 Tietohakemisto 57 4.3.4 Assosiaatiot 59 4.3.5 Luokkakaavio 59

10 JAVA-OHJELMOINTI 4.4 Järjestelmäsuunnittelu 64 4.4.1 Arkkitehtuuri 64 4.4.2 Suunnittelumallit 66 4.5 Oliosuunnittelu 69 4.5.1 Luokkien toimintojen määrittäminen 70 4.5.2 Assosiaatioiden tarkastelu ja suunnittelu 71 4.5.3 Luokkakaavion viimeistely 73 4.5.4 Algoritmien suunnittelu 74 4.6 Toteutuksen kautta ylläpitoon 77 4.6.1 Toteutus ja testaus 77 4.6.2 Käyttöönotto ja ylläpito 77 4.7 Tehtäviä 78 5 Luokat ja oliot 79 5.1 Olio-ohjelmoinnin peruskäsitteitä 79 5.2 Luokkien määrittely 81 5.3 Tunnukset ja Javan avainsanat 83 5.4 Muuttujat ja attribuutit 84 5.4.1 Muuttujien määrittely ja tietotyypit 86 5.4.2 Muuttujien arvojen tulostaminen 91 5.4.3 Muotoiltu tulostus 92 5.4.4 Tyyppimuunnokset primitiivityyppien välillä 96 5.4.5 Literaalit ja lukujärjestelmät 97 5.4.6 Muunnokset lukujärjestelmien välillä 99 5.4.7 Attribuuttien määrittely 100 5.4.8 Operaattorit 103 5.4.9 Käyttäjän kanssa keskusteleva ohjelma 109 5.5 Metodit 111 5.5.1 Metodien määrittely 112 5.5.2 Metodien kutsuminen 115 5.5.3 Metodien kuormittaminen 119 5.6 Olioiden elinkaari 121 5.6.1 Olioiden luonti 121 5.6.2 Olion tilan alustaminen 122 5.6.3 Olioihin viittaavat muuttujat 123 5.6.4 Olion metodien kutsuminen 124 5.6.5 Olioiden tuhoaminen 127 5.6.6 Muistinhallinta 128 5.7 Koodin muotoilusta 129 5.8 Luokkakaavion luokan toteuttaminen 131 5.9 Tehtäviä 136

SISÄLLYS 11 6 Kontrollirakenteet 140 6.1 Logiikkaa ja ehtolausekkeita 140 6.1.1 Yhtäsuuruusoperaattorit 141 6.1.2 Vertailuoperaattorit 142 6.1.3 Loogiset operaattorit 143 6.2 Valintalauseet 145 6.2.1 if-lauseet 145 6.2.2 Ehto-operaattori 153 6.2.3 switch-lause 153 6.3 Toistolauseet 155 6.3.1 while 155 6.3.2 do while 159 6.3.3 for 162 6.3.4 Parannettu for-silmukka 165 6.3.5 Yleisiä virheitä 167 6.4 Hyppylauseet 168 6.4.1 return-lause 169 6.4.2 break-lause 171 6.4.3 continue-lause 171 6.5 Tehtäviä 172 7 Merkit ja merkkijonot 177 7.1 Merkit ja merkistöt 177 7.2 Merkkijonot ja String-luokka 179 7.3 Merkkien ja merkkijonojen käsittely 185 7.3.1 Character-luokka 185 7.3.2 StringBuilder ja StringBuffer 186 7.3.3 StringTokenizer 191 7.4 Merkkijonojen muuntaminen primitiivityypeiksi 192 7.5 Säännölliset lausekkeet 193 7.5.1 Merkkijoukot ja toisto 195 7.5.2 Javan regexp API 197 7.5.3 Rajahahmot ja tunnistajan ahneus 200 7.6 Tehtäviä 202 8 Taulukot 204 8.1 Taulukkoon viittaavat muuttujat ja taulukon luonti 204 8.2 Taulukon alkioon viittaaminen 206 8.3 Taulukko metodin parametrina 209 8.4 Taulukon sisällön kopiointi toiseen taulukkoon 211

12 JAVA-OHJELMOINTI 8.5 2-ulotteiset taulukot 212 8.6 Vaihteleva määrä metodin parametreja 214 8.7 Esimerkki: ajat järjestyksessä 216 8.8 Tehtäviä 218 9 Javan perusteet 221 9.1 Luokkakohtaiset piirteet 221 9.1.1 Vakioarvot ja vakiomuuttujat 224 9.1.2 Tehdasmetodit ja ainokaiset 226 9.2 Pakkaukset ja luokkien tuonti 228 9.3 Luokkakohtaisten piirteiden tuonti 231 9.4 Kääreluokat ja primitiivityyppien automaattinen käärintä 232 9.5 Liittymät 234 9.6 Periytyminen 238 9.6.1 Abstraktit luokat 243 9.6.2 Dynaaminen sidonta ja monimuotoisuus 250 9.6.3 Rakentajien kutsuminen 252 9.6.4 Luokan muiden rakentajien kutsuminen 253 9.6.5 this ja super 254 9.6.6 Object-luokan metodit 256 9.7 Tyyppimuunnokset ja olion tyypin tutkiminen 256 9.8 Geneeriset tyypit 258 9.8.1 Geneeristen tyyppien määrittely 259 9.8.2 Geneeristen tyyppien alityypitys ja jokerityyppi 261 9.8.3 Uuden ja vanhan koodin yhteiskäyttö 263 9.9 Sisäkkäiset luokat 263 9.10 Lueteltu tietotyyppi 266 9.11 Rekursio 268 9.12 Metapiirteet 269 9.13 Sivuhuomautukset 271 9.14 Tehtäviä 272 10 Kokoelmat olioiden säilyttäjät 275 10.1 Tiedon lajittelu 275 10.1.1 Kuplalajittelu 276 10.1.2 Valintalajittelu 276 10.1.3 Lisäyslajittelu 277 10.1.4 Lomituslajittelu 277 10.1.5 Pikalajittelu 278 10.2 Tiedon haku 279 10.3 Algoritmien vaativuus 280

SISÄLLYS 13 10.4 Yleisiä tietorakenteita 281 10.5 Kokoelmat ja olioiden vertailu 285 10.5.1 Object.equals 285 10.5.2 Object.hashCode 287 10.5.3 Comparable 289 10.5.4 Comparator 292 10.6 Kokoelmakehys 294 10.7 Yleinen kokoelma Collection 296 10.8 Iteraattori Iterator 297 10.9 Joukot HashSet ja TreeSet 300 10.10 Javan listarakenteet ArrayList ja LinkedList 301 10.11 Avainnetut kokoelmat HashMap ja TreeMap 305 10.12 Yhteenveto kokoelmista 308 10.13 Kokoelmakehyksen algoritmit 310 10.14 Luokkakaavion viittausten toteuttaminen 312 10.15 Ohjelman suorituskyvyn parantaminen 316 10.15.1 Pullonkaulojen tunnistaminen 317 10.15.2 Yleisiä ohjeita 317 10.15.3 Turhien olioiden välttäminen 319 10.15.4 Merkkijonojen käsittely 321 10.15.5 Vältä muistin turhaa varaamista 323 10.15.6 Välimuistit ja resurssivarannot 324 10.16 Tehtäviä 324 11 Kun jokin menee kuitenkin pieleen poikkeukset 326 11.1 Erilaisia poikkeuksia 326 11.2 Poikkeuksen aiheuttajan paikallistaminen 328 11.3 Poikkeustilanteen käsittely try, catch ja finally 329 11.4 Käsiteltävät poikkeukset 332 11.5 Omat poikkeukset ja poikkeuksen aiheuttaminen 333 11.6 Ohjeita poikkeusten käyttämiseen 335 11.7 Tehtäviä 337 12 Testaus ja virheiden etsintä 339 12.1 Käännösaikaiset virheet 340 12.2 Ajonaikaiset ja loogiset virheet bugit 341 12.3 Virheiden etsintää testaamalla 342 12.4 Ohjelman virheiden korjaaminen 345 12.5 Assert ja sopimuspohjainen suunnittelu 349 12.6 Tehtäviä 351

14 JAVA-OHJELMOINTI 13 Mistä apua? 352 13.1 JDK:n dokumentaatio 352 13.2 Omien luokkien dokumentointi 354 13.3 Tehtäviä 357 14 Graafiset käyttöliittymät 359 14.1 Tapahtumapohjainen ohjelmointi 360 14.2 Swingin komponentit 361 14.3 Ensimmäinen ohjelma 363 14.4 Tapahtumien käsittely 364 14.5 Säiliöt ja asettelijat 368 14.5.1 FlowLayout 371 14.5.2 BorderLayout 372 14.5.3 GridLayout 372 14.5.4 GridBagLayout 373 14.5.5 BoxLayout 375 14.6 Muut komponentit 376 14.6.1 Ikkuna 377 14.6.2 Viestiruudut 379 14.6.3 Tekstikomponentit 382 14.6.4 Painikkeet ja napit 384 14.6.5 Luettelo- ja yhdistelmäruutu 385 14.6.6 Puukomponentti JTree 386 14.6.7 Taulukkokomponentti JTable 387 14.7 Valikot ja välinepalkki 389 14.7.1 Valikkopalkki JMenuBar 389 14.7.2 Ponnahdusvalikko JPopupMenu 390 14.7.3 Välinepalkki JToolBar 391 14.7.4 Komponenttien yhdistetyt toimet 391 14.8 Näytölle piirtäminen 392 14.8.1 Komponentin piirtämisen pelisäännöt 392 14.8.2 Piirtämisen perusteet 394 14.8.3 Java 2D API 396 14.8.4 Tekstin piirtäminen 398 14.8.5 Kuvien piirtäminen 400 14.8.6 Animointi 402 14.9 Tehtäviä 405

SISÄLLYS 15 15 Käyttöliittymän ohjelmointi Eclipsellä 406 15.1 Ohjelman perustukset 406 15.2 Komponenttien lisäys käyttöliittymään 407 15.3 Komponenttien ominaisuuksien muuttaminen 410 15.4 Asettelijoiden muuttaminen 410 15.5 Tapahtumien käsitteleminen 411 15.6 Oma dialogi 411 15.7 Tehtäviä 413 16 Sovelmat 414 16.1 JApplet-luokka 415 16.2 Sovelman tekeminen 416 16.3 Kuvat ja äänet 418 16.4 Sovelma sovelluksena 419 16.5 Luokkien paketointi 420 17 Ohjelman kansainvälistäminen 423 17.1 Kielen ja maan määrittely 423 17.2 Merkkijonojen eristäminen 425 17.3 Tulostuksen muotoilu 429 17.4 Merkkijonojen vertailu 431 17.5 Esimerkki: Lintubongari 432 17.6 Tehtäviä 433 18 JavaBeans 434 18.1 Ominaisuudet 434 18.2 Tapahtumat 436 18.3 Pavun paketointi ja käyttö Eclipsessä 438 18.4 Tehtäviä 440 19 Tehtävien samanaikainen suorittaminen säikeet 441 19.1 Johdatus rinnakkaisuuteen 441 19.2 Prosessit ja säikeet 443 19.3 Säikeiden suorituksen hallinta 446 19.4 Tehtävien ajastaminen 450 19.5 Kommunikointi 452 19.6 Toiminnan tahdistaminen 459 19.7 Rinnakkaisuuden sudenkuopat 463 19.8 Swing ja säikeet 466 19.9 Tehtäviä 467

16 JAVA-OHJELMOINTI 20 Tiedostot ja tietovirrat 468 20.1 Tietovirtaan kirjoittaminen 468 20.2 Tiedostosta lukeminen 471 20.3 Muita tietovirtoja 473 20.4 Olioiden tallentaminen ja lukeminen 474 20.5 Tiedostojen käsittelyä 476 20.6 Tehtäviä 478 21 Tietoliikenne verkossa 480 21.1 Johdatus tietoliikenteeseen 480 21.2 Tietoliikenne HTTP-protokollaa käyttäen 483 21.3 Asiakas ja palvelin 484 21.4 Rupattelusovellus 487 21.5 Tehtäviä 492 22 Järjestelmäohjelmointi 493 22.1 Sovelluksen parametrit 493 22.2 Sovelman parametrit 495 22.3 System ja Runtime 496 22.4 Tehtäviä 500 23 Tietokantojen käyttö 501 23.1 Johdatus tietokantoihin 501 23.2 JDBC yhteys tietokantaan Javalla 504 23.3 Johdatus SQL-kieleen 506 23.4 Java DB 509 23.5 Tietokantayhteyden muodostaminen 510 23.6 Tietokannan tietojen muuttaminen 513 23.7 Tietojen hakeminen kannasta 515 23.8 Valmistellut kyselyt 517 23.9 SQL ja sovelluksen tietoturva 517 23.10 Tapahtumat 519 23.11 Taulujen väliset liitokset 522 23.12 Java Persistence API 523 23.12.1 Sovelluksen arkkitehtuuri 526 23.12.2 Entiteettiolioiden suhde tietokantaan 527 23.12.3 Optimistinen lukitus 532 23.12.4 Olioiden etsiminen kyselyin 534 23.12.5 Suhteet 536 23.13 Tehtäviä 540

SISÄLLYS 17 24 Verkkopalvelut 541 24.1 Johdatus HTTP-protokollaan 541 24.2 Javan Web-sovelluksen rakenne 543 24.3 Johdatus palvelinsovelmiin 544 24.4 Ensimmäinen palvelinsovelma 545 24.5 Pyynnön otsikon tiedot 548 24.6 POST-viestin käsittely ja parametrit 549 24.7 Evästeet 552 24.8 Istunnot 554 24.9 Tietokannan käyttö palvelinsovelmassa 558 24.10 Johdatus JSP-teknologiaan 560 24.11 Yksinkertainen JSP-sivu 561 24.12 Sivua koskevat attribuutit 562 24.13 Sivulla käytössä olevat oliot 563 24.14 Sivujen sisällyttäminen 565 24.15 Olioiden käyttäminen sivuilla 566 24.16 Olioiden arvojen tulostus ja automaattinen asettaminen 568 24.17 Virheiden käsittely 569 24.18 JavaServer Faces 570 24.19 Tehtäviä 575 25 Java Enterprise Edition 576 25.1 Enterprise JavaBeans 578 25.1.1 Session Beans 578 25.1.2 Message Driven Beans 580 25.1.3 Ajoympäristön palvelut 582 25.2 Web Services Www-sovelluspalvelut 583 25.2.1 Www-sovelluspalvelujen standardit 584 25.2.2 Www-sovelluspalvelun toteuttaminen 585 25.2.3 Www-sovelluspalvelun käyttäminen 587 26 Viimeinen luku 589 26.1 Javan juuret 589 26.2 Java ja C# 590 26.3 Javan tulevaisuus 591 26.4 Loppulause 592

18 JAVA-OHJELMOINTI Liite 1: Oheisrompun käyttö 593 Liite 2: UML yhdellä sivulla 595 Liite 3: Yleisiä virheitä 596 Hakemisto 602