• Lukijalle
  • 1. Johdanto
    • 1.1 Ketterät menetelmät
    • 1.2 Extreme Programming
      • 1.2.1 Kurssilla sovellettavia XP:n käytäntöjä
    • 1.3 Ohjelman suunnittelu
    • 1.4 Työkalun valinta
    • 1.5 Koodaus
    • 1.6 Testaus
    • 1.7 Hyväksymistestaus ja palaute
    • 1.8 Käyttöönotto
    • 1.9 Ylläpito
    • 1.10 Yhteenveto
  • 2. Kerhon jäsenrekisteri
    • 2.1 Tehtävän tarkennus
    • 2.2 Työkalun valinta
    • 2.3 Tietorakenteet ja tiedostot
    • 2.4 Käyttöohje ja käyttöliittymä
      • 2.4.1 Ohjelman käynnistys
      • 2.4.2 Hakeminen
      • 2.4.3 Muokkaaminen
      • 2.4.4 Lisää uusi jäsen
      • 2.4.5 Poista jäsen
      • 2.4.6 Tulosta
      • 2.4.7 Lopeta
      • 2.4.8 Apua
      • 2.4.9 Tietoja
    • 2.5 Hyväksymistestaus
      • 2.5.1 Tyypillisiä vikoja
    • 2.6 Tarvittavien algoritmien hahmottaminen
      • 2.6.1 Ylemmän tason aliohjelmat
      • 2.6.2 Alemman tason aliohjelmat
    • 2.7 Koodaus ohjelmointikielelle
    • 2.8 Varautuminen tulevaan, eli relaatiotietomalli
      • 2.8.1 Kaikki samassa tietueessa
      • 2.8.2 Erimalliset tietueet
      • 2.8.3 Relaatiomalli
      • 2.8.4 XML-muotoinen tiedosto
    • 2.9 Graafiset käyttöliittymät
      • 2.9.1 Komponentit
      • 2.9.2 Omat komponentit
      • 2.9.3 Graafisten käyttöliittymien suunnittelutyökalut
      • 2.9.4 Tapahtumat
  • 3. Algoritmin suunnittelu
    • 3.1 Algoritmi
    • 3.2 Lajittelu
      • 3.2.1 Nimien ja numeroiden vertaus
      • 3.2.2 Algoritmin sanallinen versio on kuvaavampi!
      • 3.2.3 Numeroiden järjestäminen
      • 3.2.4 Kuplalajittelu
      • 3.2.5 Lajittelu avaimen mukaan
      • 3.2.6 Algoritmin parantaminen
    • 3.3 Algoritmin tarkentaminen
      • 3.3.1 Pienimmän etsiminen
      • 3.3.2 Paikalleen sijoittaminen
    • 3.4 Haku järjestetystä joukosta
      • 3.4.1 Suora haku
      • 3.4.2 Puolitushaku
    • 3.5 Yhteenveto
  • 4. Algoritmeissa tarvittavia rakenteita
    • 4.1 Ehtolauseet
    • 4.2 Valintalauseet
    • 4.3 Silmukat
    • 4.4 Muuttujat
      • 4.4.1 Yksinkertaiset muuttujat
      • 4.4.2 Pöytätesti
      • 4.4.3 Yksiulotteiset taulukot
      • 4.4.4 Osoittimet
      • 4.4.5 Moniulotteiset taulukot
      • 4.4.6 Sekarakenteet
    • 4.5 Osoittimista ja indekseistä
    • 4.6 Aliohjelmat
    • 4.7 Vaihtoehtojen tutkiminen totuustaulun avulla
      • 4.7.1 Kaikkien vaihtoehtojen kirjaaminen
      • 4.7.2 Vaihtoehtojen lukumäärä
      • 4.7.3 Useita vaihtoehtoja samalla muuttujalla
      • 4.7.4 Loogiset operaatiot
    • 4.8 Muistele tätä
  • 5. Esimerkkejä eri kielistä
    • 5.1 Esimerkkiohjelmat
      • 5.1.1 C
      • 5.1.2 C++
      • 5.1.3 Java
      • 5.1.4 C#
      • 5.1.5 Pascal
      • 5.1.6 Fortran
      • 5.1.7 ADA
      • 5.1.8 BASIC
      • 5.1.9 APL
      • 5.1.10 Modula–2
      • 5.1.11 Lisp
      • 5.1.12 FORTH
      • 5.1.13 Assembler
    • 5.2 Käytettävän kielen valinta
  • 6. Java –kielen alkeita
    • 6.1 C#:sta Javaan
    • 6.2 Hello World! Java ja C#–kielillä
    • 6.3 Tekstitiedostosta toimivaksi konekieliseksi versioksi
      • 6.3.1 Kirjoittaminen
      • 6.3.2 Kääntäminen
      • 6.3.3 Linkittäminen
      • 6.3.4 Ohjelman ajaminen
      • 6.3.5 Varoitus
      • 6.3.6 Integroitu ympäristö
    • 6.4 Ohjelman yksityiskohtainen tarkastelu
      • 6.4.1 Kommentointi
      • 6.4.2 Miten kommentoida
      • 6.4.3 JavaDoc
      • 6.4.4 Valmiin kommenttilohkon lukeminen
      • 6.4.5 Tarvittavien luokkien esittely
      • 6.4.6 Luokan esittely
      • 6.4.7 Pääohjelman esittely
      • 6.4.8 Lausesulut
      • 6.4.9 Tulostuslause
      • 6.4.10 Lauseen loppumerkki ;
      • 6.4.11 Isot ja pienet kirjaimet
      • 6.4.12 White spaces, tyhjä
      • 6.4.13 Vakiomerkkijonot
      • 6.4.14 Vakiolukuarvot
  • 7. Java–kielen muuttujista ja aliohjelmista
    • 7.1 Mittakaavaohjelman suunnittelu
    • 7.2 Muuttujat
      • 7.2.1 Matkan laskeminen
      • 7.2.2 Muuttujan nimeäminen
      • 7.2.3 Muuttujalle sijoittaminen =
      • 7.2.4 Muuttujan esittely ja alkuarvon sijoittaminen
    • 7.3 Muuttujan arvon lukeminen päätteeltä
      • 7.3.1 Lukeminen merkkijonoon
      • 7.3.2 Lukuarvon selvittäminen merkkijonosta
      • 7.3.3 Apumetodit
      • 7.3.4 Apuluokat
      • 7.3.5 Luokan testaaminen
      • 7.3.6 Luokan käyttäminen
    • 7.4 Viitteet
      • 7.4.1 Miksi viitteet?
      • 7.4.2 Lokaalit muuttujat
      • 7.4.3 Dynaaminen muisti
      • 7.4.4 Viitteiden vertaaminen
      • 7.4.5 Viitteeseen sijoittaminen
      • 7.4.6 null-viite
    • 7.5 Aliohjelmat (metodit, funktiot)
      • 7.5.1 Parametriton aliohjelma
      • 7.5.2 Funktiot ja parametrit
      • 7.5.3 Parametrin nimi kutsussa ja esittelyssä
      • 7.5.4 Nimessään arvon palauttavat funktiot
      • 7.5.5 Ketjutettu kutsu
      • 7.5.6 Yksinkertaisen aliohjelman kutsuminen
      • 7.5.7 Aliohjelmat tulostavat harvoin
      • 7.5.8 Jäsenten tulostaminen
    • 7.6 Parametrin välitys
      • 7.6.1 Useita parametrejä
      • 7.6.2 Parametrin paikka ratkaisee, ei nimi
      • 7.6.3 Metodin nimen kuormittaminen
      • 7.6.4 Muuttujien lokaalisuus
      • 7.6.5 Parametrinvälitysmekanismi
      • 7.6.6 Aliohjelmien kirjoittaminen
      • 7.6.7 Luokkamuuttujat ja suhde lokaaleihin muuttujiin
    • 7.7 Testipääohjelmat
    • 7.8 Yksikkötestaus
    • 7.9 JUnit
    • 7.10 ComTest
      • 7.10.1 ComTestin makrokieli
      • 7.10.2 ComTestin edistyneemmät ominaisuudet
    • 7.11 Mittakaavaohjelma graafisena
  • 8. Kohti olio-ohjelmointia
    • 8.1 Miksi olioita tarvitaan
    • 8.2 Hynttyyt yhteen, eli muututaan olioksi
      • 8.2.1 Terminologiaa
      • 8.2.2 Ensimmäinen olio-esimerkki
      • 8.2.3 toString()
      • 8.2.4 Luokka (class)  ja olio (object)
      • 8.2.5 Suojaustasot ja kapselointi
      • 8.2.6 Muodostajat (constructor)
      • 8.2.7 Oletusmuodostaja (default constructor)
      • 8.2.8 Sisäinen tilan valvonta
      • 8.2.9 Metodien kuormittaminen (lisämäärittely, overloading)
      • 8.2.10 this-osoitin
    • 8.3 Perintä
      • 8.3.1 Luokan ominaisuuksien laajentaminen
      • 8.3.2 Alkuperäisen luokan muuttaminen
      • 8.3.3 Saantimetodit
      • 8.3.4 Koostaminen
      • 8.3.5 Perintä
      • 8.3.6 Polymorfismi, eli monimuotoisuus
      • 8.3.7 Myöhäinen sidonta
    • 8.4 Kapselointi
      • 8.4.1 Rajapinta ja sisäinen esitys
    • 8.5 Rajapinta ja monimuotoisuus
    • 8.6 Object-luokan metodien korvaaminen
    • 8.7 Mistä hyviä luokkia
    • 8.8 Valmiita luokkia
      • 8.8.1 Merkkijonot
  • 9. Java–kielen ohjausrakenteista ja operaattoreista
    • 9.1 if–lause
      • 9.1.1 Ehdolla suoritettava yksi lause
      • 9.1.2 Ehdolla suoritettava useita lauseita
    • 9.2 Loogiset lausekkeet
      • 9.2.1 Vertailuoperaattorit
      • 9.2.2 Sijoitus palauttaa arvon!
    • 9.3 Loogisten lausekkeiden yhdistäminen
      • 9.3.1 Loogiset operaattorit &&, || ja !
      • 9.3.2 Loogisen lausekkeen suoritusjärjestys
      • 9.3.3 Loogiset operaattorit & ja |
    • 9.4 Bittitason operaattorit
    • 9.5 if – else –rakenne
      • 9.5.1 Sisäkkäiset if–lauseet
      • 9.5.2 Useat peräkkäiset ehdot
    • 9.6 do–while –silmukka
    • 9.7 while –silmukka
    • 9.8 for –silmukka, tavallisin muoto
    • 9.9 for-each silmukka
    • 9.10 Java–kielen lauseista
      • 9.10.1 Sijoitusoperaattori =
      • 9.10.2 Sijoitusoperaattori +=
      • 9.10.3 Lisäysoperaattori ++
    • 9.11 for –silmukka, yleinen muoto
    • 9.12 break ja continue
      • 9.12.1 break
      • 9.12.2 continue
    • 9.13 switch –valintalause
      • 9.13.1 | ei toimi switch –lauseessa!
    • 9.14 Ikuinen silmukka
      • 9.14.1 Yhteenveto silmukoista
  • 10. Oliosuunnittelu
    • 10.1 Olio on luokan esiintymä
    • 10.2 Tavoitteet
    • 10.3 Luokat
    • 10.4 CRC–kortit
      • 10.4.1 Jäsen-luokka (Jasen)
      • 10.4.2 Kerho-luokka (Kerho)
      • 10.4.3 Käyttöliittymä-luokka (Naytto)
      • 10.4.4 Luokkajaon tarkastelua
    • 10.5 Harrastukset mukaan
      • 10.5.1 "Oliomalli"
      • 10.5.2 Relaatiomalli
      • 10.5.3 Harrastus-luokka (Harrastus)
      • 10.5.4 Kerho-luokka (Kerho)
      • 10.5.5 Jäsenet-luokka (Jasenet)
      • 10.5.6 Harrastukset-luokka (Harrastukset)
  • 11. Jäsenrekisterin runko
    • 11.1 Runko ilman kommentteja
    • 11.2 Valittava tietorakenne
      • 11.2.1 Taulukko
      • 11.2.2 Linkitetty lista
      • 11.2.3 Sekarakenne
    • 11.3 Harrastukset mukaan
      • 11.3.1 Tiedot jäsenen yhteyteen
      • 11.3.2 Relaatiomalli
  • 12. Java–kielen taulukoista
    • 12.1 Yksiulotteiset taulukot
      • 12.1.1 Taulukon määrittely
      • 12.1.2 Taulukon alkioihin viittaaminen indeksillä
      • 12.1.3 Taulukon läpikäyminen for ja for-each–silmukoilla
      • 12.1.4 Taulukon alustaminen
    • 12.2 Merkkijonot
      • 12.2.1 Merkkityyppi
      • 12.2.2 String
      • 12.2.3 StringBuffer
    • 12.3 Moniulotteiset taulukot
      • 12.3.1 Kiinteä esittely
      • 12.3.2 Yksiulotteisen taulukon käyttäminen moniulotteisena
      • 12.3.3 Taulukko taulukoista
      • 12.3.4 Taulukko viitteistä
    • 12.4 Komentorivin parametrit (argv)
  • 13. Dynaaminen muistinkäyttö
    • 13.1 Muistin käyttö
    • 13.2 Dynaamisen muistin käyttö Javassa
      • 13.2.1 new
      • 13.2.2 Olion tuhoaminen
      • 13.2.3 Taulukon luominen new []
    • 13.3 Dynaamiset taulukot
      • 13.3.1 Poikkeukset
      • 13.3.2 Poikkeukset ja ComTest
    • 13.4 Geneerisyys
    • 13.5 Javan Collections Framework
      • 13.5.1 ArrayList
      • 13.5.2 Iteraattori
      • 13.5.3 ArrayList ja geneerisyys
      • 13.5.4 Algoritmit
    • 13.6 Tietovirta parametrinä
  • 14. Funktio-olio
    • 14.1 Numeerinen integrointi
      • 14.1.1 Sinifunktio integrointi
    • 14.2 Numeerinen integrointi ja rajapinta
    • 14.3 Rajapinnan käyttäminen
    • 14.4 C# ja delegaatti
  • 15. Tiedostot
    • 15.1 Tiedostojen käsittely
      • 15.1.1 Lukeminen
    • 15.2 Tiedostojen käsittely Javan tietovirroilla
      • 15.2.1 Tiedoston avaaminen muodostajassa
      • 15.2.2 Tiedostosta lukeminen
      • 15.2.3 Tiedoston lopun testaaminen
      • 15.2.4 Tiedostoon kirjoittaminen
      • 15.2.5 Tiedoston sulkeminen close
    • 15.3 Tiedoston yhdellä rivillä monta kenttää
      • 15.3.1 Ongelma
    • 15.4 Merkkijonon paloittelu
      • 15.4.1 parse
      • 15.4.2 erota
      • 15.4.3 Esimerkki erota-funktion käytöstä
      • 15.4.4 Erota funktion toiminta vaihe vaiheelta
      • 15.4.5 Luvun erottaminen
    • 15.5 Lukeminen ja paloittelu
      • 15.5.1 Olio joka lukee itsensä
    • 15.6 Esimerkki tiedoston lukemisesta
  • 16. Kerho-ohjelman rakenne
    • 16.1 Kerhon rakenne
      • 16.1.1 KerhoSwingin ja käyttöliittymän yhteistoiminta
    • 16.2 Jäsenien selaaminen
    • 16.3 Jäsenkenttien lisääminen
    • 16.4 Oikeellisuustarkistukset
      • 16.4.1 Säännölliset lausekkeet
      • 16.4.2 Säännöllisten lausekkeiden käyttäminen
    • 16.5 Kentät graafiseen käyttöliittymään
  • Hakemisto