Ohjelmointi 2, Java, kevät 2016
Luennot ovat alempana käännetyssä aikajärjestyksessä. Yleensä kaksi tulevaa odottamassa ja sen alapuolella tänä vuonna pidetyt luennot.
Linkkejä:
- Live luennolle kirjaantuminen - tee tämä aina salissa luennon aluksi.
- Luentotallenteet tiedostoina (ensisijaisesti katso alla olevista luentojen linkeistä tai videoiden hakemistosta)
- Demotehtävät ja vastaukset omalla sivullaan
- Luentojen koodihakemistot (joskus samassa hakemistossa on tehty useampia luentoja)
- Videoiden hakemisto aihepiireittäin (muokkaa tätä, niin saat demopisteitä)
- Videoiden hakemisto aihepiireittäin kevät 2015
Kevään 2016 aikataulu ja aiheet sekä videot
- tarkista että videon osoitteessa on 2016k (ei siis 2015k), silloin video on päivittynyt uudeksi. Yleensä aikaisintaan 2 tuntia ko. tapahtuman jälkeen. Siihen asti kullakin luennolla on edellisen vuoden video.
- JOS luennon jälkeen en ole muistanut vaihtaa luennon linkkiä, niin vaihda se viimeiseen luentoon vuodella 2016 (ks mallia edellisen luennon linkit)
- videon nimi on muotoa luentoXXy.mp4, jossa XX on luennon numero, esim 01 ja y=a jos ensimmäinen luennon puolisko (tai luento pidetty kokonaan yhteen) ja y=b jos luennon toinen puolisko. Videon mobiiliversion on nimellä luentoXXy_m.mp4.
- Pääsiäisloma 21.3.- 28.3.2016 (eli luentoja ei ole ma 21.3- ma 28.3)
- Opetuksen pääsiäistauko on 10.4.- 17.4.2017
Tulossa olevat luennot:
C4. ti 26.04.2016 klo 14:15-16:00: Aihe: C++ - tietorakenteet, STL
- 3. C++ vaarat
- 4.3 STL = Standard Template Library
- Moniperintä vastaan rajapinnat
- 4 tapaa tehdä dynaaminen taulukko C++:ssa (yhteenveto)
- Luennolle 2014 tehdyt C/C++ -koodit
- taulukko1.cpp - kaikki staattisesti
- taulukko2.cpp - taulukko dynaamisesti
- taulukko3.cpp - kaikki osoitteina
- taulukko4.cpp - alkiot osoitteina
- listat.cpp - esimerkki listoista
- foreach.cpp - esimerkkejä algoritmeistä
- stdmap.cpp - esimerkki mapin käytöstä
- stdset.cpp - esimerkki setin käytöstä
- Luennolla 2014 tehdyt C/C++ -koodit
- 1. luentotunti videona [.mp4] [.mp4-mobiili]
C3. ma 25.04.2016 klo 10:15-12:00: Aihe: C++ - oliot, automaattiset muuttujat
- elukat.cpp - esimerkki perinnästä ja polymorfismista
- Luku 9. Kohti olio- ohjelmointia
- Luku 13.7 Tietueet, union ja enum
- 2. C++:n tärkeimmät erot C- kieleen
- Luennolle k2016 tehdyt C/C++ -koodit
- aikalisa.cpp - 1. C++ olio
- elain.hpp - eläimen esittely
- elain.cpp - eläimen toteutus
- kissa.hpp - eläimen perivä kissa
- kissa.cpp - kissan toteutus
- kissamain.cpp - pääohjelma jossa luodaan kissoja
- Luennolla 2016 tehdyt C/C++ -koodit
- 1. luentotunti videona [.mp4] [.mp4-mobiili]
C2. ti 19.04.2016 klo 14:15-16:00: Aihe: C/C++ - osoittimet, taulukot, merkkijonot
- Luku 13. C-kielen taulukoista
- Luku 8.6.4 Parametrinvälitysmekanismi
- Merkkijonot ja C++ (Antti-Juhani Kaijanaho)
- vaihda.cpp - esimerkkejä C++:n osoittimista
- Luennolle k2016 tehdyt C/C++ -koodit
- aikalisa.cpp - esimerkki parametrin välityksestä
- kissaoso.cpp - esimerkki osoittimista
- vaihdamain.cpp - esimerkki parametrin välityksestä
- kuut.c - esimerkki C:n taulukoista
- Luennolla k2016 tehdyt C/C++ -koodit
- 1. luentotunti videona [.mp4] [.mp4-mobiili]
C1. ma 18.04.2016 klo 10:15-12:00: Aihe: C/C++ -alkeet, makrot, viitteet, osoittimet
- C++ IDEt
- C++ -sivu
- Yksi C++-kirjaston dokumentti
- 7. C/C++
- 8. C++- kielen muuttujista ja aliohjelmista
- c-opetus.zip -multimedia ohjelma C-kielestä, pura johonkin ja käynnistä C_OPETUS.EXE
- täytyy ajaa XP-tsaoisessa koneessa, eli esim. virtuaalikoneessa toimii jos ei suoraan käyttiksessä.
- Uusin versio C11, C++14
- Luennolle k2016 tehdyt C/C++ -koodit
- hello.c - yksinkertainen C-esimerkki
- hello.ii - esikääntäjän käännös
- hello.s - assembler käännös
- hello.cpp - Hello C++:lla
- summa.c - aliohjelman joka laskee yhteenkaksi lukua
- summa.h - edellisen otsikkotiedosto
- summamain.c - pääohjelma jossa kutsutaan summaa
- toiseen.cpp - makroja ja aliohjelmia
- Luennolla k2016 tehdyt C/C++ -koodit
- 1. luentotunti videona [.mp4] [.mp4-mobiili]
Kevät 2016 Pidetyt luennot:
25. Itse videolta katsottavaksi: Aihe: W8 kehitys, Yleistämistä, Mobiili: Java vastaan Windows Phone 7
- Jatkokurssit: TIEP112 C++, TIE113 JSP
- Windows 8 ohjelmointi
- WP7-FAQ
- JyPeli about katso ko. video miten alle 10 min tehdään "peli"
- Google Android -ohjelmointi
- Android seminaariesitelmän teksti
- Katso myös Googlen AppInventor - erityisesti tuo video
- WP7 seminaariesitelmän teksti ja kalvot
- Vuoden 2010 luento J2ME-ohjelmoinnista
- iPhone Stanfordin kurssi iPhone ohjelmoinista
- WP7 käyttöliittymä - ks. myös Ohj1 kurssin viimeinen luento
- Luennolle tehdyt koodit
- Luennolla tehdyt koodit
- 1. luentotunti videona [.mp4] [.mp4-mobiili]
- Vuoden 2011 1. luentotunti videona (Android+Wp7): [.wmv] [.mp4]
T1. Java ja tietokannat ti 5.4.2016 klo 16:15-17:45
- Lisäkurssin kotisivu
- 1. luentotunti videona: .mp4 .mp4-mobiili
Tentin palautus ti 5.4.2016 klo 15:45-16:15
- Tehtävät, jakaumat, mallivastaukset ja arvosteluperusteet
- Tentin palautus: .mp4 .mp4-mobiili
24. ti 05.04.2016 klo 14:15-15:45:
Aihe: Virheistä selviäminen, yleistämistä {#L24} * Luennon aluksi opiskelijat rikkoivat koodia 15 min ja sitten näytetään millä strategioilla virheistä selvitään * debuggeri (breakpoint kohtaan, jossa virhettä epäillään ja sitten steppailemaan välillä Step Over ja välillä Step Into) * testit (onneksi kukaan ei rikkonut testejä, se olisi hankaloittanut hommaa) * versionhallinta (näyttää missä tiedostoissa muutoksia ja mitä muutoksia) * yleistämistä, * KerhonNimiController.java - dialogi, jolla kysytään kerhon nimi * TietueDialogController.java - dialogi, jolla voidaan muokata jäseniä, harrastuksia tms. * vaihe 8.1 - tietueen ja tietueiden yleistäminen * Perintä vs. rajapinta * StringGrid lajittelu kuntoon * ks. JasenStringGrid.java - malli miteb StringGridiä voi käyttää. Tietuessa on oma getAvain(k)
jolloin lajittelu menee oikein. * Luennolla tehdyt Java-koodit
* 1. luentotunti videona [.mp4] [.mp4-mobiili]
23. ma 04.04.2016 klo 10:15-14:00:
Aihe: Yhteistyö, Oikeellisuustarkistukset. Etsiminen, lajittelu {#L23} * Jäsenen ja harrastusten välinen yhteistyö * etsiminen ja lajittelu * 16.6 Oikeellisuustarkistukset * 16.7 Kentät graafiseen käyttöliittymään * 16.8 Etsiminen * 16.9 Lajittelu avaimen kentän mukaan * 22. Etsiminen ja lajittelu - C++ monisteesta
* 22.3 Lajittelu - C++ monisteesta
* yksinkertainenvaihe 7.5 - etsiminen toteutettu * KerhoGuiController.java - ks. hae * Jasenet.java * yksinkertainenvaihe 7.6 - lajittelu toteutettu * Jasen.java * Jasenet.java * kuvaamuunnokset * ks: 3D ja linkku ja sieltä joku videoista (ehkä marraskuu on parempi?) * Luennolla tehdyt Java-koodit
* 1. luentotunti videona [.mp4] [.mp4-mobiili]
22. ke 30.03.2015 klo 12:15-14:00:
Aihe: Päätesyöttö, Tietue-rajapinta {#L22} * Rekursio, ks Ohj1 luento * 16. Kerho-ohjelman rakenne
* HT vaiheet yksinkertaistettuna * yksinkertainen vaihe 7.3 (muutokset yv7.2 -> yv7.3) - tietojen syöttö päätteltä. Harrastukset mukaan * Harrastus.java
* KerhoGUIController.java
* varsinainen vaihe 7 (muutokset 7.3 -> 7) - viilausta, mm harrastukset kenttätaulukolla. (ei käytetty StringGridiä, Harrastukset hieman eri tavalla). * Piirtäminen: * PiirtoMalliAWT.java - esimerkki piirtämisestä Javalla (AWT) * PiirtoMalliSwing.java - esimerkki piirtämisestä Javalla (Swing) * PiirtoMalliGraphics.java - sama esimerkki Graphics-luokalla * KolmioPiirtoAWT.java - esimerkki piirtämisestä ja rekursiosta (AWT) * KolmioPiirtoSwing.java - esimerkki piirtämisestä ja rekursiosta (Swing) * KolmioPiirtoSWT.java - esimerkki piirtämisestä ja rekursiosta (SWT) * Luennolla tehdyt Java-koodit
* Muutokset harrastusten näyttämiseksi * Muutokset harrastusten muokkaamiseksi * 1. luentotunti videona [.mp4] [.mp4-mobiili]
21. ti 29.03.2016 klo 14:15-16:00:
Aihe: Käyttöliittymä {#L21} * Tapahtuman käsittely Swing-ikkunoissa (ulko, sisä- ja nimettömät luokat, adapterit, perusajatus toimii myös JavaFX:lle) * Katso itsenäisesti väliltä 1:36 - 45:10 * FrameMalliKutsuista.java - frame josta kutsutaan eri tavoin tehtyjä käsittelijöitä * NappulaPainettuUlko.java - esimerkki ulkoisesta käsittelijä-luokasta * HiiriUlko.java - esimerkki ulkoisesta käsittelijä-luokasta jossa monta toteutettavaa metodia * Tentit ja viivakoodit * Yleistäminen * HT vaiheet yksinkertaistettuna * vaihe 6 muutokset 5 -> 6 - Tiedostojen käsittely
* Kerho.java
* Jasenet.java
* Jasen.java
* 16. Kerho-ohjelman rakenne * Yksinkertaiset vaiheet TIMissä * Vaihe 7.1 6 -> 7.1 TIMissä * "Tyhmä" versio tietojen lukemisesta päätteeltä * Vaihe 7.2 6 -> 7.2 - dialogilla * Jasen.java - tietojen hakeminen indeksin avulla * KerhoGUIController.java - Käyttöliittymä-luokkaan jäsenen käsittelyä * JasenDialogController.java - Käyttöliittymä-luokkaan jäsenen käsittelyä * Luennolle tehdyt valmiit java-koodit
* Luennolla tehdyt Java-koodit
* 1. luentotunti videona [.mp4] [.mp4-mobiili]
20. ti 17.03.2015 klo 14:15-16:00:
Aihe: Funktio-oliot {#L20}
- Sanalaskuri:
- sanat.txt - Kalevala tekstitiedostona
- Sanalaskuri.java - esimerkki luokasta joka lukee ja laskee sanoja tiedostosta
- Sanat.java - sanoja laskeva luokka
- Sana.java - yhden sanan lukumäärälaskuri
- SanatMapGen.java - toisenlainen ratkaisu Sanat-luokkaan
- SanatSortedMap.java - lajiteltu ratkaisu Sanat-luokkaan
- Luku 14. Funktio-osoitin
- SinKuva.java - havainnollistava kuva ongelmasta
- Integroi.java - esimerkki numeerisesta integroinnista
- Integroi2.java - esimerkki funktio-oliosta
- Luennolle tehdyt valmiit java-koodit
- Luennolla tehdyt Java-koodit
- 1. luentotunti videona [.mp4] [.mp4-mobiili]
19. ma 14.03.2016 klo 10:00-12:00:
Aihe: Kertaus olioista, pidetään käyttäen TIMin luentokysymyksiä {#L19} * HUOM! Ajoissa paikalle klo 10 TASAN * Ottakaan laitteet (kannettava, tabletti tai älykänny) mukaan * Kortti.java * Luennolla tehdyt Java-koodit
* 1. luentotunti videona [.mp4] [.mp4-mobiili] * luentoseinä
18. ti 08.03.2015 klo 14:15-16:00:
Aihe: Kertausta tiedostoista, oliosta ja dynaamisuudesta, linkitetty lista, Kerho {#L18} * Luku 15 Tiedostot
* Kertotaulu.java - esimerkki tiedostoon kirjoittamisesta * Kertotaulu7.java - esimerkki tiedostoon kirjoittamisesta (Java 1.7 try-lauseella + ComTest testit) * Linkitetyt listat * Kuva linkitetystä listasta
* Muuteltava kuva linkitetystä listasta * LinLista.java - esimerkki linkitetystä listasta * LinListaGen.java - esimerkki linkitetystä listasta * Java-harjoituksia linkitetyistä listoista (englanniksi, vaatii Java-applettien suorittamisoikeuden) * C++ -harjoituksia linkitetyistä listoista (suomeksi, vaatii Java-applettien suorittamisoikeuden)) * HT5 - aloitettu luokkien välisen yhteistyön tekeminen
* vaihe5 - osaa lisätä vakioharrastuksen ja etsiä tietyn jäsenen harrastukset * Harrastukset.java - osaa etsiä tietyn jäsenen harrastukset * Erot versio 5.1 ja 5 välillä * HT6 - tiedostot
* Luennolla tehdyt Java-koodit
* 1. luentotunti videona [.mp4] [.mp4-mobiili]
17. ma 07.03.2016 klo 10:15-12:00:
Aihe: Tiedostot. {#L17} * TaulukkoIter.java - dynaaminen taulukko yksinkertaisimmillaan, jossa iteraattori * Luku 15: Tiedostot
* Kovalevy * Monisteen Tiedosto-luvun esimerkkien lähdekoodit * luvut.dat - esimerkkitiedosto jota seuraavat ohjelmat lukevat * TiedKaLista.java - esimerkki tiedoston lukemisesta listaan yhdellä kertaa, huono jos tiedosto on iso * TiedKa.java - esimerkki tiedoston lukemisesta * TiedKa7.java - esimerkki tiedoston lukemisesta (Java 1.7 try-lauseella + ComTest testit) * TiedKaScanner.java - esimerkki tiedoston lukemisesta Scanner-luokan avulla * TiedKaScanner7.java - esimerkki tiedoston lukemisesta Scanner-luokan avulla (Java 1.7 try-lauseella + ComTestit) * TiedKaScannerI7.java - esimerkki tiedoston lukemisesta ForEach -silmukalla (Java 1.7 try-lauseella) * Kertotaulu.java - esimerkki tiedostoon kirjoittamisesta * Kertotaulu7.java - esimerkki tiedostoon kirjoittamisesta (Java 1.7 try-lauseella + ComTest testit) * Suoritusnopeus * Nopeustesti.java - esimerkki suoritusnopeuden testaamisesta tietorakenneluokille * ajat.txt - esimerkkiajoja edellisellä testillä * Luennolla tehdyt Java-koodit
* 1. luentotunti videona [.mp4] [.mp4-mobiili]
* luentoseinä
16. ti 03.03.2015 klo 14:15-16:00: Aihe: Dynaamiset taulukot ja Javan valmiit tietorakenteet
- Luku 13: Dynaaminen muistinkäyttö
- dynaaminen - esimerkkejä dynaamisesta muistinkäytöstä
- VectorMalliGen.java - Javan Vektori-luokka
- ArrayListMalliGen.java - Javan ArrayList-luokka
- AlgoritmiMalliGen.java - Javan algortimit tietorakenteille
- reaali/Taulukko.java - maanantain Taulukko muutettuna reaaliluvuille
- TaulukkoIter.java - dynaaminen taulukko yksinkertaisimmillaan, jossa iteraattori
- TaulukkoGen.java - samasta geneerinen versio (+testit)
- dynaaminen - esimerkkejä dynaamisesta muistinkäytöstä
- Luennolla tehdyt Java-koodit
- 1. luentotunti videona [.mp4] [.mp4-mobiili]
- luentoseinä
15. ma 02.03.2015 klo 10:15-12:00:
Aihe: Javan taulukot ja merkkijonot, Dynaamiset taulukot {#L15} * Luku 12: Java-kielen taulukoista
* taulukot - esimerkkejä Javan taulukoista * Kuut.java - esimerkki 1-ulotteisesta taulukosta ja sen läpikäynnistä * Mat2.java - esimerkki 2-ulotteisesta taulukosta ja sen käymisestä kokonaan lävitse * Mat3.java - esimerkki 2-ulotteisesta taulukosta ja sen käymisestä osittain lävitse * Argv.java - esimerkki pääohjelman argumenttien käytöstä * Luku 13: Dynaaminen muistinkäyttö
* dynaaminen - esimerkkejä dynaamisesta muistinkäytöstä * Taulukko.java - dynaaminen taulukko yksinkertaisimmillaan * TaulukkoGen.java - dynaaminen taulukko yksinkertaisimmillaan Java 1.5:n geneerisyyttä käyttäen * Luennolla tehdyt Java-koodit
* 1. luentotunti videona [.mp4] [.mp4-mobiili]
* luentoseinä
14. ti 23.02.2015 klo 14:15-16:00:
Aihe: Käyttöliittymän ja tietorakenteen yhteistyö {#L14} * Menusta rungoksi - kuinka etenen HT3 vaiheen muuttamisessa HT5 vaiheeseen * HT5 vaiheen alku, yksi tietorakenne
* KerhoGUIController.java - käyttöliittymän ulkoasusta riippumaton osa, perustuu kuitenkin JavaFX-kirjastoon * käyttöliitymä mukaan * KerhoGUI.java - Super-yksinkertaistettu malli Kerhon käyttöliittymästä * KerhoSwing.java - Super-yksinkertaistettu malli Kerhon GUI:in tulostavasta luokasta * ht 5.1 - käyttöliittymä mukaan * Versio jossa kysytään dialogilla * KerhoGUIController.java - käyttöliittymäkoodista ulkoasusta riippumaton osa, perustuu kuitenkin JavaFX-kirjastoon * JasenDialogController.java - jäsenen tietojen "kysyminen", toistaiseki vain tulostaa
- AstiaPeli.java - esimerkki oliotaulukosta
- Vaihtoehtoiset pääteohjaustehtävät:
- Huone.java - pääteohjaustehtävän ensimmäinen osa
- HuoneTest.java - JUnit-testi huoneelle
- Asunto.java - pääteohjaustehtävän toinen osa
- Huone2.java - tehtävien vastauksia
- Asunto2.java - tehtävien vastauksia
- Asunto2Test.java - JUnit-testi asunnolle
- Asunto3.java - huoneet taulukoksi
- Luennolla tehdyt Java-koodit
- 1. luentotunti videona [.mp4] [.mp4-mobiili]
- luentoseinä
13. ma 22.02.2015 klo 10:15-12:00:
Aihe: Kuvasta toimivaksi ohjelmaksi {#L13} * Menusta rungoksi - kuinka etenen HT3 vaiheen muuttamisessa HT5 vaiheeseen * HT5 vaiheen alku, yksi tietorakenne
* yksinkertaistettu versio * Jasen.java - lisätty luokka Jasen ja testattu * Jasenet.java - lisätty luokka Jasenet ja testattu * Kerho.java - lisätty Kerho ja testattu * Luennolla tehdyt Java-koodit
* kehitysaskeleet versionhallinnasta * 1. luentotunti videona [.mp4] [.mp4-mobiili]
* Oheislukemistoa: * Esimerkki TDD:stä, Keilailu. - aja se PPT-tiedosto tuolta * JUnit Ohjelmointi 2-kurssilla
* ComTest Ohjelmointi 2-kurssilla
* luentoseinä
12. ti 16.02.2016 klo 14:15-16:00:
Aihe: , Polymorfismi, rajapinnat {#L12} * Luku 8.5 Rajapinta ja monimuotoisuus
* AikaRajapinta.java - esimerkki rajapinnasta * Aika.java - rajapinnan toteuttava luokka * AikaSek.java - - esimerkki rajapinnan toteuttavasta luokasta * AikaSekunteina.java - - esimerkki rajapinnan toteuttavasta luokasta, toteutus pelkillä sekunneilla * AikaSekMin.java - esimerkki rajapinnan toteuttavasta luokasta, minimaalinen versio * AstiaPeliTaikaAstialla.java - esimerkki TaikaAstiasta * Mikroluokkien koneiden etäkäyttö
* Luennon etukäteen tehdyt Java-koodit
* Luennolla tehdyt Java-koodit
* 1. luentotunti videona [.mp4] [.mp4-mobiili]
11. ma 15.02.2016 klo 10:15-12:00:
Aihe: Luokkien suunnittelu ja tietorakenteet, modaalit dialogit {#L11} * CRC-kortit * Luku 10: Oliosuunnittelu
* crc.html - tyhjä CRC-kortti HTML-muodossa * crc.txt - tyhjä CRC-kortti ASCII-tekstinä * CRC_kortit Wikiin
* Anaalyysi- ja toteutusvaiheen UML-kaaviot
* Jonne I:n näkemys UML:nä
* Olio-kaavio: * Luku 11: Jäsenrekisterin runko - oliokaavio * kerhohar.png - esimerkki oliokaaviosta * kerhoharvika.png - yleisimmät virheet oliokaaviossa * kerhohar.vsd - edellisen Visio -pohja * Ohjeita MS-ohjelmien hakemiseen
* Harjoitustyön 4. vaihe * Luennolla tehdyt java-koodit
* 1. luentotunti videona [.mp4] [.mp4-mobiili]
Luento 10. ti 09.02.2016 klo 14:15-16:00:
Aihe: Luokat ja oliot {#L10} * Ajettavan Jar-tiedoston tekeminen * Esimerkki olioista jotka "keskustelevat keskenään". Astia: * astia1/Astia.java - esimerkki yksinkertaisesta luokasta, joka kommunikoi toisen saman luokan edustajan kanssa ( astia8l.kaada(astia5l)
) * astia/Astia.java - edelliseen enemmän toimintoja ja tarkastuksia sekä oliotaulukko + lisätehtävä demo 5:een * GraafinenAstiaPeli.jar - "pelin" graafinen versio Javalla * Kuva graafisesta versiosta * astia - "pelin" graafinen versio Delphillä tehtynä. * Harjoitustyön 3. vaihe
* KerhoGUIController.java - Käyttöliittymäluokka jäsenrekisteriin * Luennolla tehdyt java-koodit
* 1. luentotunti videona [.mp4] [.mp4-mobiili]
* luentoseinä
Eikö olisi järkevä laittaa joku "aloita tehtävän teko" -nappi, joka tois sen tehtävän tekstin näkyviin ja aloittaisi ajan oton. Siitä saisitte varmaan tosi hyvin tilastoa, miten paljon ihmisillä kuluu aikaa tehtävien tekoon.
—Luento 9. ma 08.02.2016 klo 10:15-12:00:
Aihe: Luokat ja oliot, RadioButton, switch {#L09} * USA top 100 ammatit * Eri kieliä TIMissä * Ohj 1 -kurssin grafiikkakirjasto (ks. mm Line
, Circle
, Marker
, RPoint
, Drawable
) * Lumiukot.java - Esimerkki Graphics-kirjaston käytöstä. * Luku 6.3.2 Kääntäminen ja ajaminen komentoriviltä:
javac -cp \kurssit\ohj1\graphics\Graphics.jar lumiukkoCmd\Lumiukot.java
java -cp \kurssit\ohj1\graphics\Graphics.jar;. lumiukkoCmd.Lumiukot
tai
set classpath=\kurssit\ohj1\graphics\Graphics.jar;.
javac lumiukkoCmd\Lumiukot.java
java lumiukkoCmd.Lumiukot
- Lumiukko.java - vastaava WindowBuilderillä tehtynä, esimerkissä myös Midi-soitinta
- Music - kirjasto MIDI-soittamiseen
- Katso 3D ja lineaarialgebra
- Luku 9.13 switch -valintalause, äänestys - erilaisia tapoja tehdä valintoja
- AanestysMain.java - Äänestyksen pääohjelma
- AanestysView.fxml - Käyttöliittymä
- AanestysController.java - Äänestyksen käsittelijä
- FXAanestys.png - Kuva äänestysohjelman käyttöliittymästä
- FXAanestysTytto.png - Kuva millainen tehtävän ohjelmasta pitäisi tulla.
- AanestysMain2.java - Äänestyksen pääohjelma, kaikki Javalla
- AanestysMain3.java - Äänestyksen pääohjelma, kaikki Javalla, oma komponentti
- AanestysMain4.java - Äänestyksen pääohjelma, RadioButtonChooserilla
- AanestysView4.fxml - Käyttöliittymä, RadioButtonChooserilla
- AanestysController4.java - Äänestyksen käsittelijä, RadioButtonChooserilla
- AanestysMain5.java - Äänestyksen pääohjelma, RadioButtonChooserilla, kaikki Javalla
- Aanestys.java - yhden näppäimen lukeminen ja tarkistaminen, edellinen komentoriviversiona
- tavoite.txt - tavoitteita em. koodien ylläpidon parantamiselle
- HT3, Luku 16.3 Kerhon rakenne:
- KerhoGUIController.java - yksinkertainen aloitus käyttöliittymälle
- FXGui - kirjasto graafisia elementtejä varten
- Harjoitustyön 3. vaihe
- Luennon esimerkkikoodit
- Luennolla tehdyt java-koodit
- 1•. luentotunti videona [.mp4] [.mp4-mobiili]
- luentoseinä
Luento 8. ti 02.02.2016 klo 14:15-16:00
Aihe: pöytätesti, tavukoodi, oliot {#L08} * Luku 7.6.4 Muuttujien lokaalisuus * Luku 7.6.5 Parametrinvälitysmekanismi
* Tavukoodista
* Aikalisa.java.pdf - Esimerkki Java-virtuaalikoneen "konekielestä" * Luku 7.6.7 Luokkamuuttujat ja suhde lokaaleihin muuttujiin (pöytätesti) * Luku 8. Kohti olio-ohjelmointia
* Aika.java - * Älä luule, että aikojen kanssa toiminen on helppoa - katso video Yksinkertainen olio-esimerkki * Luennolla tehdyt java-koodit
* 1. luentotunti videona [.mp4] [.mp4-mobiili]
* luentoseinä
Luento 7. ma 01.02.2016 klo 10:15-12:00:
Aihe: aliohjelmat, testaaminen, oliot ja perintä, HT3 {#L07} * Luku 7: Java- kielen muuttujista ja aliohjelmista
* Testaaminen: * Luku 7.7 Testipääohjelmat * Luku 7.8 Yksikkötestaus * Luku 7.9 JUnit * Luku 7.10 ComTest * Poista.java - esimerkki ComTest- testaamisesta * PoistaTest.java - esimerkki JUnit testaamisesta * JUnit Ohjelmointi 2-kurssilla
* ComTest Ohjelmointi 2-kurssilla
* Kalvot JUnitista
* Luku 8. Kohti olio-ohjelmointia * Kissa.java - yksinkertainen olio * Elain.java - kantaluokka kaikille eläimille * Kissa.java - peritty Kissa * Koira.java - peritty Koira * Luennolla tehdyt java-koodit
* 1. luentotunti videona [.mp4] [.mp4-mobiili]
* luentoseinä
LUENTO 6 - TI 27.01.2015 (klo 14:15-16:00)
Aihe: viitteet, perintä, graafinen käyttöliittymä {#L06}
- Katso näytelmä aliohjelman kutsumisesta mikäli et ole sitä nähnyt.
- Luku 7: Java- kielen muuttujista ja aliohjelmista
- Jonotesti.java - esimerkki viitteistä
- Luku 7.11 Mittakaavaohjelma graafisena
- Mittakaava.java - mittakaava aliohjelmineen
- Kuva mittakaava-ohjelmasta
- Kissa.java - toinen olioesimerkki
- Luennon esimerkkikoodit
- Luennolla tehdyt koodit
- 1. luentotunti videona [.mp4] [.mp4-mobiili]
- (2010 L6: [.mp4] kohdasta 48:13 Matka-ohjelman komentoriviversion tekeminen, vertaa luennon graafiseen versioon)
- luentoseinä
LUENTO 5 - MA 25.01.2016 (klo 10:15-12:00)
Aihe: Kvanttitietokoneet, DNA-tietokoneet, Ohjelmointikielet, kääntäminen ja linkittäminen, vakiot, aliohjelmat, testaaminen, oliot {#L05}
- M: Luku 6: Java - kielen alkeita
- M: Luku 5: Esimerkkejä eri kielistä
- "Hello World!" eri kielillä
- Eri kielten syntaksien vertailua
- Haskell - katso "Pallopelistä" erilainen versio
- Kvanttilaskenta
- Mikko Möttönen QCD Labs: kalvot, pdf
- Timo Männikkö: kalvot, pdf
- DNA:
- Esimerkki "tietokoneesta" (.jpg))
- Mika Kallion gradu: Kuvatietokanta DNA-molekyylissa, pdf
- DNA-Wikipediassa
- Tiedetuubi: DNA ja muisti
- Science 11 November 1994
- Esimerkki "tietokoneesta" (.jpg))
- Regular Expressions
- Regex Coach - apu säännöllisten lausekkeiden opetteluun
- RegExr - vastaava JavaScript väline
- Debuggex - toinen vastaava, piirtää automaatin
- lue myös pääsykoe RegExpistä
- Johdatus Javan RegExpiin
- Javan RexExp yhteenveto
- RegExp tietotekniikan kilpailussa
- Alice - ympäristö 3D-animaatioiden tekemiseen
- Lego Mindstorm Next - Lego robotti, löytyy mm. Linkin tiloista
- Kuva Lego Mindstorm Next ympäristöstä
- Luennon esimerkkikoodit
- Alkuluku.java - 3 tapaa testata automaattisesti (ComTest, JUnit sekä itse kirjoitettu automaattinen testi)
- M: Luku 7.4: Viitteet
- M: Luku 7.6.5: Parametrinvälitysmekanismi
- Aikalisa.java - miksi olioita tarvitaan
- Aika.java - ensimmäinen olioesimerkki
- Monisteen luku 8. Kohti olio-ohjelmointia
- 1. luentotunti videona [.mp4] [.mp4-mobiili]
- luentoseinä
LUENTO 4 - TI 19.01.2016 (klo 14:15-15:45)
Aihe: Taulukot, totuustaulut, Eclipse, debuggaus
- Demo2 tehtävät
- HT:n palauttaminen
- M: Luku 4: Algoritmeissa tarvittavia rakenteita
- Luennolla tehty Alkuluku.java
- YhdistaJonot.java
- yhdista.png - kuva ohjelmasta kun on painettu Isoksi -nappia.
- Pöytätesti Excelillä tehtynä: .xls-tiedosto, Kuva pöytätestistä
- Ville - kerratkaa Villen avulla!
- Luennon esimerkkikoodit
- Luennolla tehdyt koodit
- 1. luentotunti videona [.mp4] [.mp4-mobiili]
LUENTO 3 - MA 18.01.2016 (klo 10:15-11:45)
Aihe: Algoritmit
- Demojen itsearviointi
- M: Luku 3: Algoritimin suunnittelu
- Excel-esimerkki kompleksisuuden käyttäytymisestä
- Video: 15 erilaista lajittelualgoritmia visualisoituna
- Wikipedia: Travelling Salesman Problem (TSP)
- Wikipedia: P ? NP
- Wikipedia: P versus NP
- O(n) eri algoritmeille
- Kerho-esimerkkiojelman graafinen käyttöliittymä (GUI) SceneBuilderilla tehtynä
- Omat komponentit helpottamaan
- OpenMP - helppokäyttöiset säikeet mm. C/C++/Fortran
- Luennolla tehdyt koodit
- 1. luentotunti videona [.mp4] [.mp4-mobiili]
- luentoseinä
LUENTO 2 - TI 12.01.2016 (klo 14:15-16:00)
Aihe: Ohjelman suunnittelu, algoritmit, nyky-IDEt
- Alkukurssin ohjelma
- Pikayhteenveto Agilesta (vertaa erityisesti XP ja harjoitustyö)
- Demoja tehdään ja palautetaan TIMillä
- HT:n suunnitelman kirjoittaminen ja palauttaminen
- Ohj2:n svn-sivut
- Malliharjoitustyön vaihe 2
- M: Luku 2: Kerhon jäsenrekisteri
- Myös XML on mahdollinen tiedostomuoto
- Esimerkki jossa harrastusten nimille on oma tiedosto
- kerhoGUI - kerhon käyttöliittymä SceneBuilderillä tehtynä
- M: Luku 3: Algoritmien suunnittelu
- Ohjelmistotuotannon prosesseja Wikistä
- 1. luentotunti videona [.mp4] [.mp4-mobiili]
- luentoseinä
LUENTO 1 - MA 11.01.2016 (klo 10:15-11:45)
Aihe: Alkubyrokratia, ohjelman suunnittelu
- Ennen luentoa pyörineet kalvot, pdf
- Kurssin kotisivujen ja pelisääntöjen läpikäynti
- Kurssit tavoitteet ja työmäärä (Korppi)
- Kurssien vaativuuksista Jylkkärissä 12/2004 (13.10.2004)
- Kielistä:
- Esiintyminen työpaikkailmoituksissa
- http://code2015.herokuapp.com/
- http://spectrum.ieee.org/computing/software/the-2015-top-ten-programming-languages
- http://blog.codeeval.com/codeevalblog/2015
- http://www.codingdojo.com/blog/8-most-in-demand-programming-languages-of-2015/
- http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
- Käsitekartta kurssin asioista (.png)
- Kalvot ohjelmistotuotantoprosessista, pdf
- Kalvot ekan luennon alusta, pdf
- M: Luku 1: Johdanto
- M: Luku 2: Kerhon jäsenrekisteri
- Harjoitustyön teko-ohje
- Malli vaiheen 1 suunnitelmasta
- Malli vaiheen 2 suunnitelmasta
- Harjoitustyön kehitys SVN:ssä
- Mahdollisimman paljon koneen käyttöä muuten kuin hiirellä
- Kertaa Villellä Ohj1 asioita
- Kertaa myös lukemalla Ohj1 Java-moniste
- Kertaa myös lukemalla Ohj1 C#-moniste
- 1. luentotunti videona [.mp4] [.mp4-mobiili]
- luentoseinä
Kevään 2015 luennot
W4. ti 12.05.2015 klo 14:15-16:00: Aihe: synkronoinnista, Ajax, Vaadin
- Esimerkki säikeistä
- ajaxRahanVaihto.jsp - JSP-sivu rahan vaihtamiseksi Ajax-toteutuksena
- AjaxVaihtajaServlet.java - Ajax-servletti ottamaan vastaan asynkronisia pyyntöjä.
- AjaxVaihtaja.jsp - edellinen JSP-versiona.
- FireBug - kannattaa ladata FireFoxiin jotta voi debugata !JavaScriptiä ja tutkia DOM-puuta
- Vaadin - toisenlainen tapa tehdä rikkaita sovelluksia.
- Muita vaihtoehtoja:
- GWT - Google Web Toolkit
- PHP
- Python
- Ruby on rails
- JQuery
- AngularJS
- .net (ks myös: MSDNAA - ohjelmien lataaminen)
- Erilaiset pilvipalvelut - ks esim. luento07
- Luennolle tehdyt koodit (2014)
- Luennolla tehdyt koodit (2013, 2014 ei tehty uusia)
- luentotunti videona [.mp4]
[.mp4-mobiili]
- luentotunti videona [.mp4]
W3. ma 11.05.2015 klo 10:15-12:00: Aihe: Kerho-ohjelma JSP:llä
- Harjoitustyön ohjeet - harjoitustyöstä, tietoturvasta ja malli synkronoinnista
- Korpin sivut tietoturvasta
- vaihe1/kerho.jsp - Kerhon ensimäinen versio [html-lähdekoodi]
- vaihe1/jasen.jsp - Jäsenen ensimäinen versio [html-lähdekoodi]
- vaihe2/kerho.jsp - Kerhon toinen versio
- vaihe2/jasen.jsp - Jäsenen toinen versio
- kerho.jsp - Kerhon "toimiva" versio [html-lähdekoodi] [kuva sivusta]
- jasen.jsp - Jäsenen "toimiva" versio [html-lähdekoodi] [kuva sivusta]
- kerho.jsp - Kerhon "toimiva" versio haku-formilla tehtynä
- jasen.jsp - Jäsenen "toimiva" versio. Tietorakenteen kuva.
- KerhoBean.java - Tietorakenteen "singleton"-mallin hoitava luokka
- HakuForm.java - Papu hakuformin tekemistä varten
- Malliharjoitustyön web-version
- Malliharjoitustyö - käyttöliittymästä riippumattomat luokat, Kerho, Jasenet, Jasen jne...
- Pääteohjaus 2 - katso pääteohjausten ohjeita
- Luennolla tehdyt koodit (2014)
- luentotunti videona [.mp4]
[.mp4-mobiili]
- luentotunti videona [.mp4]
W2. ma 4.05.2015 klo 16:15-18:00: Aihe: Omien komponenttien käyttö JSP-sivuilla
- Wiki-ohjeet Eclipseä varten
- jspRahanVaihto.jsp - jsp-sivu rahan vaihtamiseksi
- EditBox.java - komponentti Edit-lotjun tekemiseksi
- ComboBox.java - komponentti alasvetolistan tekemiseksi
- VaihtajaBean.java - luokka tietorakenteen luomiseksi yhden kerran ohjelman aikana
- JSP:stä kääntyneet Java-tiedostot
- Luennolle etukäteen tehdyt koodit (2013)
- Luennolla tehdyt koodit (2014)
- luentotunti videona [.mp4]
[.mp4-mobiili]
- luentotunti videona [.mp4]
W1. ma 4.5.2015 klo 10:15-12:00: Aihe: TCP/IP, Servlet, JSP
- TCP /IP:
- Varatut porttinumerot
- Sockettien käsittely Javalla
- Hakemisto winohj/vclclx/comps/tcpip - käynnistä ohjelma tcpiptestVCL.exe
ja lue ohjeita tcpiptest.pas
- Hakemisto winohj/delphi/comps/tcpip
- SimpleChatClient.java - yksinkertainen Chat-asiakas
- SimpleUpperCaseServer.java - yksinkertainen palvelin joka muuttaa lähetetyn tekstin isoksi
- SimpleMailClient.java - yksinkertainen SMTP-asiakas jolla voi lähettää postia
- SimpleHttpUpperCaseServer.java - yksinkertainen HTTP-palvelin joka muuttaa tekstin isoksi
- TCPServer.java - pieni takaisinkutsuihin perustuva TCP/IP palvelin
- UppercaseServer.java - edellisestä luotu UpperCase palvelin
- ChatServer.java yksinkertainen Chat-palvelin käyttäen TCPServeriä
- HttpUppercaseServer.java - yksinkertainen HTTP-palvelin käyttäen TCPServeriä
- HttpTextHandler.java - HTTP käsittelijä, joka kutsuu erillistä doGet käsittelijää
- HttpUppercaseTextServer.java - yksinkertainen doGet käsittelijä, joka muuttaa parametrin isoksi
- Varatut porttinumerot
- Servlet:
- Hakemisto ohj2/jsp/servlet jossa on servlet- ja jsp -esimerkkejä
- Wiki ohjeet Eclipsen asetuksiin
- pääteohjaus 1 - ohjeet Servletin tekoon
- ServletEka.java - ensimmäinen esimerkki servletistä
- ServletValinta.java - servletti joka tuottaa alasvetolistan
- WebContent/WEB-INF/web.xml - servletin mäppäys URL-osoitteeksi
- JSP (Jave Server Pages):
- JspEka.jsp - ensimmäinen jsp-esimerkki
- JspValinta.jsp - jsp-sivu jossa tehdään alasvetolista
- Pavut:
- ComboBox.java - komponentti alasvetolistan tekemiseksi
- ServletValintaWithBean.java - servletti jossa käytetty komponenttia
- jspValintaWithBean.jsp - jsp-sivu jolla käytetään komponettia
- Luennolle etukäteen tehdyt koodit (2014)
- Luennolla tehdyt koodit (2014)
- avausluento videona (2015) [.mp4]
[.mp4-mobiili] - luentotunti videona (2014) [.mp4]
[.mp4-mobiili]
- luentotunti videona (2014) [.mp4]
Pidetyt luennot
Vanhojen Ohjelmointi 2 kurssien aiheet
- Ohjelmointi 2, 2015 luennot/jaettu lisämateriaali
- Ohjelmointi 2, 2014 luennot/jaettu lisämateriaali
- Ohjelmointi 2, 2013 luennot/jaettu lisämateriaali
- Ohjelmointi 2, 2012 luennot/jaettu lisämateriaali
- Ohjelmointi 2, 2011 luennot/jaettu lisämateriaali
- Ohjelmointi 2, 2010 luennot/jaettu lisämateriaali
- Ohjelmointi 2, 2009 luennot/jaettu lisämateriaali
- Ohjelmointi 2, 2008 luennot/jaettu lisämateriaali
- Ohjelmointi 2, 2007 luennot/jaettu lisämateriaali
- Ohjelmointi 2, 2006 luennot/jaettu lisämateriaali
- Ohjelmointi 2, 2005 luennot/jaettu lisämateriaali
- Ohjelmointi 2, 2004 luennot/jaettu lisämateriaali
- Ohjelmointi 2, 2003 luennot/jaettu lisämateriaali
- Ohjelmointi++ 2002 luennot/jaettu lisämateriaali
- Ohjelmointi++ 2001 luennot/jaettu lisämateriaali
- Ohjelmointi++ 2000 luennot/jaettu lisämateriaali
- Ohjelmointi++ 1999 jaettu lisämateriaali
Ohjelmointi 1 kurssien aiheet
- Syksy 2015 - C# / Vesa Lappalainen
- Kevät 2015 - C# / Antti-Jussi Lakanen
- Syksy 2014 - C# / Vesa Lappalainen
- Kevät 2014 - C# / Antti-Jussi Lakanen
- Syksy 2011 - C# / Vesa Lappalainen
- Kevät 2011 - C# / Antti-Jussi Lakanen
- Syksy 2010 - Java / Vesa Lappalainen
- Kevät 2010 - C# / Antti-Jussi Lakanen
- Syksy 2009 - Java / Vesa Lappalainen
- Syksy 2008 - Java / Vesa Lappalainen
These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.