Olio-ohjelmoinnin perusteet (5 op), 2016
Päivitetty 19.2.2016 Jorma Boberg
Ohjelmoinnin oppimisen yhteydessä ei voi liikaa korostaa itsenäisen opiskelun osuutta. Viikolle merkittyjen harjoitustehtävien miettiminen, tekeminen ja koneella suorittaminen on todella tärkeätä. Laskemalla suoraan opintojakson laajuus opintoviikkoina ja sen kesto, niin voimme arvioida, että opiskelijan tulisi käyttää tämän opintojakson opiskeluun keskimäärin n. 14 tuntia viikossa ja kokemuksieni mukaan tämä on aika oikeaan osuva arvio. Tämä arvio edellyttää sen, että jakson AOP asiat ovat 'hallinnassa'. On tietenkin selvää, että em. tuntimäärä vaihtelee hyvinkin paljon riippuen opiskelijasta.
Huomaa jälleen, että käsitteet ovat hyvin tärkeitä. Ne tarkoittavat tarkasti määriteltyä asiaa tai ominaisuutta. Sinun kannattaa tehdä itsellesi käsiteluettelo, johon kirjaat aina vastaantulevat uudet käsitteet.
Ohjelmointia opeteltaessa on erittäin tärkeätä testata ohjelmia koneella. Pelkällä ohjelmien lukemisella ei opi ohjelmoimaan. Sen vuoksi sinun kannattaakin kirjoittaa ohjelmia koneella, muuttaa niitä usealla eri tavalla ja katsoa mitä muutoksesi saa aikaan. Tällöin on kuitenkin erityisen tärkeätä se, että ymmärrät miten ohjelma toimii. Ohjelmasi sisältää usein syntaktisia virheitä ja myös loogisia virheitä. Tämä sivun loppupuolella on linkki Java-kääntäjän antamien tyypillisten syntaktisten virheilmoitusten suomennoksiin ja seuraavassa puhutaan yleisesti ohjelman testauksesta ja virheiden jäljittämisestä
Huom. Kurssista saa suoritusmerkinnän kun sekä tentti että Tietokonetyö on hyväksytty.
Kurssiin liittyvät tärkeät linkit:
Kurssilla ei ole opintomonistetta, vaan opiskeluopas on kurssin päämateriaali.
Näillä sivuilla olevaa materiaalia voi käyttää omilla kursseillaan, kunhan ilmoittaa lähteen omissa materiaaleissaan. Myös tätä sivua voi jakaa opiskelijoille.
Opiskeluopas pdf ja kansisivu. Opas on tarkoitettu henkilökohtaiseen käyttöön tällä opintojaksolla.
Tulosta aina pdf ja 2-puolisesti. Oppaasen tehdyt korjaukset ovat Moodlessa OOP-foorumilla.
Lisäksi kurssilla käsitellään
liitteet: Liite 1 ja
Liite 2. Liitteet eivät noudata opiskeluoppaan mukaista
luokkien tietokenttien ryhmittely- ja kommentointitapaa, joten älä ota
niistä mallia näissä asioissa. Liitteessä 2 on virheitä:
1) s. 115 keskellä sanotaan ... joukko funktioita(=metodeja) ..., muuta tämä
muotoon: ... joukko metodeja ...
2) s. 125 puhutaan metodista
merkkijonoksi vaikka sen nimi luokassa on mjonoksi.
3) s. 126 metodin aseta viimeisessä ehdossa on uusiX <= maxY, mutta siinä
pitää olla uusiY <=maxY.
Jos opiskeluoppaasta löytyy virheitä, niin tiedotan niistä moodlessa OOP-foorumilla. Jos sinusta tuntuu siltä, että oppaassa on virhe/epätarkkuus, niin kerrothan siitä Jormalle.
Javan luokkakirjastojen (API) kuvaukset ovat koneessasi
hakemistossa docs, jos olet installoinut myös dokumentoinnin ohjeiden mukaan. Ne
ovat myös verkossa. Luokkakirjastojen toteutukset (koodit) löytyvät koneeltasi jdk-hakemistosta ja ne ovat tiedostossa src.zip ja täällä. Niitä on hyödyllistä tutkia.
Seuraavassa luettelossa ovat kurssin lisämateriaalit. Suluissa kerrotaan vaaditaanko asia tentissä. Merkintä * tarkoittaa, että tätä asiaa ei ole kurssin materiaaleissa (=opiskeluopas ja sen liitteet sekä harjoitustehtävien malliratkaisut). Muut ovat lisäesimerkkejä eivätkä sisällä uusia asioita, vaan havainnollistavat samoja asioita, joita on kurssin materiaaleissa. Huomaa kuitenkin, että niistä on opiskelussa apua ja jotain saman tyyppistä voi esiintyä myös tenttitehtävissä, joskin useimmat alla olevista esimerkeistä ovat liian laajoja tentissä kysyttäväksi.
Koko kurssi: Seija Lahtisen (Helia) ohjeet luokan
Scanner käytöstä* (vaaditaan). Materiaalissa on pieni virhe
sivuilla 2 ja 3 kohdassa 2). Nimittäin syöttöpuskurin seuraava
yhtenäinen merkkien jono (tokeni, joka siis päättyy white-space
-merkkiin) pitää edustaa joko int-lukua (sivulla 2) tai double-lukua
(sivulla 3). Esim. puskurissa ei saa olla esim. 5x, vaan numeron 5
jälkeen tulee olla white-space -merkki (esim. välilyönti tai enter).
Viikot 5-: Lottoarvonta (Sami Pyöttiälä) käyttäen
rakennetta ArrayList<Pallo>. Tässä määritellään luokat Pallo ja Pallokone ja
varsinaisen arvonnan suorittaa luokka Lottoarvonta.
Viikko 11: Esimerkki graafisesta
käyttöliittymästä* (GUI) (Sami Pyöttiälä). Ohjelmassa luodaan varustelista.
Lueteltu tyyppi enum*: linkki 1 ja linkki2.
Jälkimmäisessä annetaan esimerkki siitä, miten kortit voidaan toteuttaa
selväkielisesti käyttäen lueteltua tyyppiä enum. Usein se kirjoitetaan
sisäluokaksi toisen luokan sisälle kuten korttiesimerkissä. Tällöin se
on käytettävissä vain siinä luokassa, jonka sisällä tämä tyyppi on
esitelty. Lueteltua tyyppiä voisi halutessaan käyttää pokeripeliä mallintavassa Tietokonetyössä ja sehän myös selkeyttäisi ohjelmakoodia.
Koko kurssi: UML ja Java*
Harjoitustehtävien malliratkaisuisut ovat laajoja ja niissä esitetyt asiat tulee myös osata, ellei toisin mainita.
Luentopäivä on 5.3.2016 klo
10:15 - n. 14:30 ja sen pitää Jorma Boberg. Päivän
sisältö on kuvattu opiskeluoppaassa ja sen materiaali on
tässä.
Saat tästä paperiversion, mutta tutustu siihen etukäteen.
Materiaali sisältää paljon opiskeluoppaan asioita, mutta ne ovat
esitetty tässä kootusti ja hiukan eri järjestyksessä. Materiaalissa
olevat Tehtävät tarkoittavat opiskeluoppaan tehtäviä, jotka ovat
opiskeluoppaassa luentopäivän tekstiosuuden lopussa. Tärkeässä asemassa luentopäivällä
on opiskeluoppaassa oleva pankkisovellus ja pankkia tileineen havainnollistava
piirros, jonka teemme yhdessä taululle.
Luentopäivä pidetään ICT-talossa
(nykyään nimeltään ICT-City) salissa beta (b)
Joukahaisenkatu 3-5 eli sama paikka missä pidettiin jakson TTP I
ja AOP luentopäivät. Katso talon
sijainti
oheisesta kartasta (nuoli osoittaa sisäänkäynnin). Sali beta on samassa
kerroksessa kuin aula ja salin sijainti löytyy aulan kartoista. Tässä on
Turun kartta. Ulko-ovi on kiinni, mutta se tullaan avaamaan
n. klo 10:13. Tule
ajoissa, koska 10:15 jälkeen ovi on kiinni. Pidän
kännykkäni (0452770593) auki, joten soita jos myöhästyt (joka ei
tietenkään ole hyvä :)
Tentistä Ks. myös tenttivaatimukset pääsivulla olevasta linkistä.
Harjoitustehtävien malliratkaisut: Tulevat moodleen. Jokaisen tulee kopioida niistä luokat omalle koneelleen ja tutkia/muuttaa/suorittaa ohjelmia. Näin ollen pelkät paperilla olevat ratkaisut eivät riitä.
Luokka OmaIO.java Kopioi (paina hiiren oikeata korvaa eo. linkin kohdalla) luokka OmaIO.java samaan hakemistoon, jossa säilytät Java-ohjelmiasi. Käännä se, jolloin muodostuu tiedosto OmaIO.class. Sen jälkeen saat käyttöösi alla kuvatut syöttö/tulostusmetodit. Luokan OmaIO sijasta voit tietenkin käyttää myös Javan valmisluokkaa Scanner (katso opiskeluopas).
Javan
kopiointi- ja asennusohjeet sekä Java-ohjelmien kehitysympäristöjä
Muita hyödyllisiä linkkejä:
Alla on joitakin hyviä linkkejä, joista voi olla apua opiskelussa.
Kirja: Simo Silander, Vesa Ollikainen, Juha Peltomäki: Java, ISBN:
978-951-0-36081-1. Julkaistu: 03/2010, Sivuja: 498.
Kirjan painos on loppu, mutta sitä voi löytyä kirjastoista. Kirja on aika hyvä, joskin kaikki asiat käsitellään lyhyesti ja
pintapuolisesti
verrattuna esim. meidän kurssimateriaaleihin. Näin ollen tämä kirja ei
pelkästään riitä. Kirja on kuitenkin laaja ja se sisältää myös paljon tällä kurssilla
ja myös kurssilla Olio-ohjelmoinnin perusteet käsittelemättömiä mutta tärkeitä asioita, mm. appletit ja
grafiikkaohjelmointi, säikeet, Swing, servletit ja JSP, JDBC. Tätä voi käyttää sekä jaksolla AOP että
OOP.
Arto
Wikla: Ohjelmoinnin perusteet
Java-kielellä, 2012 Helsingin yliopiston Java-kurssin
kirja. Sen käyttö on sallittu vain yksityishenkilöille opiskelutarkoituksissa. Sisältää sekä jakson AOP että OOP asioita. Kannattaa tutustua! Mukana on myös tiedostojen käsittely.
Helsingin yliopiston Ohjelmoinnin jatkokurssi 2013. Vastaa osittain jaksoa OOP,
mutta menee sen yli.
Helsingin yliopiston Ohjelmoinnin jatkokurssi 2014 Vastaa osittain jaksoa OOP, mutta menee sen yli.
Helsingin yliopiston ohjelmoinnin kurssit 2015. Vastaa jaksoja AOP ja OOP. Valitse viikko ja kysyttäessä TMC-tunnusta, klikkaa vain Ok. Kannattaa tutustua!
Helsingin
teknillisen korkeakoulun Ohjelmoinnin peruskurssin sivut. Katso linkki
Luennot. Vastaa lähinnä jaksoa OOP.
Kirjan
Lewis and Loftus: Java Software Solutions sivuilta löytyy kirjan pohjalta
tehdyt kalvot ja paljon hyviä esimerkkejä. Kannattaa tutustua, jos
englannin kieli on kutakuinkin hallinnassa.
Java kääntäjä tuottaa usein aikamoisen määrän syntaksivirheitä, jotka vielä kumuloituvat. Niinpä sinun kannattaa korjata kääntäjän antamasta virhelistasta muutama alkupään virhe ja kääntää ohjelma uudestaan. Kääntäjä antaa sen rivinumeron (laita editorissa rivinumerot näkyviin), jolla virhe sijaitsee ja kertoo mikä virhe ko. kohdassa on. Aluksi virheilmoituksia ei tahdo ymmärtää, joten seuraavan linkin takana on 'suomennettu' Java-virheilmoitusopas aloittelijoille, joka on taatusti hyödyllinen.
Oraclen omilla sivuilla on melko hyvä tutorial, jossa esitetään Javan perusteet.