Ohjelmointi 2, Java, kevät 2025
Luennot ovat alempana käännetyssä aikajärjestyksessä. Yleensä kaksi tulevaa odottamassa ja sen alapuolella tänä vuonna pidetyt luennot. Luentojen mobiiliversio valmistuu yleensä paljon nopeammin kuin paremman resoluution video.
Linkkejä:
- Live luennolle kirjaantuminen tim.pm/ohj2 - tee tämä aina salissa luennon aluksi.
- Demotehtävät ja vastaukset omalla sivullaan
- Luentojen koodihakemistot (joskus samassa hakemistossa on tehty useampia luentoja)
- Videoiden hakemisto aihepiireittäin 2025 (muokkaa tätä, niin saat demopisteitä)
- Vanhat: 2024k, 2023k, 2022k, 2021k, 2020k, 2019k, 2018k, 2017k, 2016k, 2015k
Kevään 2025 aikataulu ja aiheet sekä videot
- tarkista että videon osoitteessa on 2025 (ei siis 2024), 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 2025 (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.
- Jälkimmäistä demokäsittelytilaisuutta (maanantait klo 16-18) ei pidetä enää 3.3.2025 jälkeen. Kiitos keskustelijoille tähän astisista! Klo 14-16 tilaisuudet jatkuvat normaalisti.
- Opetuksen pääsiäistauko on 14.-21.4.2025
Tulossa olevat luennot:
Kevät 2025 pidetyt luennot:
C4. ke 23.04.2025 klo 10:15-12: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 2021 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
- luentoseinä
- 1. luentotunti videona [.mp4]
C3. ti 22.04.2025 klo 12:15-14: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 k2021 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 2019 tehdyt C/C++ -koodit
- luentoseinä
- 1. luentotunti videona [.mp4]
C2. ti 08.04.2025 klo 12:15-14:00: Aihe: C/C++ - osoittimet, taulukot, merkkijonot
- C/C++ kohdasta osoittimet
- Luku 13. C-kielen taulukoista
- Luku 8.6.4 Parametrinvälitysmekanismi
- Merkkijonot ja C++ (Antti-Juhani Kaijanaho)
- vaihda.cpp - esimerkkejä C++:n osoittimista
- Luennolle k2022 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 k2018 tehdyt C/C++ -koodit
- luentoseinä
- 1. luentotunti videona [.mp4]
C1. ma 07.04.2025 klo 10:15-12:00: Aihe: C/C++ -alkeet, makrot,viitteet, osoittimet
- TIEP112 - kurssin omat sivut
- C ja C++ Javan jälkeen - luentojen materiaalit
- C++ IDEt
- C++ -sivu
- Yksi C++-kirjaston dokumentti
- 7. C/C++
- Monisteen esimerkkikoodit
- 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-tasoisessa koneessa, eli esim. virtuaalikoneessa toimii jos ei suoraan käyttiksessä.
Luennolle k2022 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
- hello.c
2022 luennon alun "pelisäännöt" videona [.mp4] (erona 2025k on, että tullaan sisään tim.pm/ohj2 osoitteesta.)
1. luentotunti videona [.mp4]
24. luento: ti 1.4.2025 klo 12:15-13:45: Virheistä selviäminen, yleistämistä
- Luennon aluksi opiskelijat rikkoivat koodia 10 min ja sitten näytetään millä strategioilla virheistä selvitään
- pöytätestimäinen ajattelu
- 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)
- Mallivaiheet: yleistamista,
- KerhonNimiController.java - dialogi, jolla kysytään kerhon nimi
- vaihe 8.2 - tietueen ja tietueiden yleistäminen
- Kentta.java - rajapinta kentille
- Jasen.java - jäsen joka käyttää kenttiä
- Jasenet.java - jäsenet perivät PerusTietueet
- Perintä vs. rajapinta
- StringGrid lajittelu kuntoon
- ks. JasenStringGrid.java - malli miten StringGridiä voi käyttää. Tietuessa on oma
getAvain(k)
jolloin lajittelu menee oikein.
- ks. JasenStringGrid.java - malli miten StringGridiä voi käyttää. Tietuessa on oma
- Luennolla tehdyt Java-koodit
- 1. luentotunti videona 2024 [.mp4]
- 1. luentotunti videona 2025 [.mp4]
23. luento: ma 31.3.2025 klo 10:15-11:45: Yhteistyö, Oikeellisuustarkistukset. Etsiminen, lajittelu
- Mallivaiheet: Jäsenten ja harrastusten välinen yhteistyö
- etsiminen ja lajittelu
- M: 16.6 Oikeellisuustarkistukset 🕮
- M: 16.7 Kentät graafiseen käyttöliittymään 🕮
- M: 16.8 Etsiminen 🕮
- M: 16.9 Lajittelu avaimen kentän mukaan 🕮
- M: 22. Etsiminen ja lajittelu - C++ monisteesta
- M: 22.3 Lajittelu - C++ monisteesta
- M: 22. Etsiminen ja lajittelu - C++ monisteesta
- Mallivaiheet: 7.5 Etsiminen - etsiminen toteutettu
- KerhoGuiController.java - ks. hae
- Jasenet.java
- Mallivaiheet: 7.6 Lajittelu - lajittelu toteutettu
- kuvaamuunnokset
- ks: 3D ja linkku ja sieltä joku videoista (ehkä marraskuu on parempi?)
- Luennolla tehdyt Java-koodit
- 1. luentotunti videona 2024 [.mp4]
- 1. luentotunti videona 2025 [.mp4]
22. luento: ti 25.3.2025 klo 12:15-13:45: Päätesyöttö, Tietue-rajapinta
- Rekursio, ks Ohj1 luento
- StringGrid-luokan käyttäminen
- 16. Kerho-ohjelman rakenne 🕮
- HT vaiheet
- vaihe 7.2 (muutokset 7.1.4 -> 7.2) - kentät indeksoidusti
- vaihe 7.3 (muutokset 7.2 -> 7.3) - Harrastusten näyttäminen
- vaihe 7.4 (muutokset 7.3 -> 7.4) - Harrastusten kysyminen
- Luennon muutokset 2023
- Luennon muutokset 2024
- 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)
21. luento: ma 24.3.2025 klo 10:15-11:45: Käyttöliittymä, vaihe7
- Vapaaehtoinen: 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
- Jatketaan kohdasta yksinkertainen tiedonnäyttö kohtaan yksinkertainen tiedonsyöttö
- M: 16. Kerho-ohjelman rakenne 🕮
- Malliohjelman vaiheet TIMissä
- Tiedon näyttö dialogissa Vaihe 7.1.1 (6 -> 7.1.1)
- Tiedon näyttö päädialogissa Vaihe 7.1.2 (7.1.1 -> 7.1.2)
- Harrastusten näyttö päädialogissa Vaihe 7.1.3 (7.1.2 -> 7.1.3)
- Tietojen syöttö 4:ään kenttään Vaihe 7.1.4 (7.1.3 -> 7.1.4)
- Syöttö indeksoidusti Vaihe 7.2 (7.1.4 -> 7.2)
- Mallivaiheet: 7.2 Kentät indeksoidusti
- 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ä
20. luento: ti 18.3.2025 klo 12:15-13:45: Funktio-oliot
- Luku 14. Funktio-osoitin 🕮
- Erillaisia tapoja tehdä tapahtuman käsitetly
- SinKuva.java - havainnollistava kuva ongelmasta
- Integroi.java - esimerkki numeerisesta integroinnista
- Integroi2.java - esimerkki funktio-oliosta
- Muita lambda esimerkkejä
- Luennolle tehdyt valmiit java-koodit
- Luennolla tehdyt Java-koodit
- 1. luentotunti videona 2024 [.mp4]
- 1. luentotunti videona 2025 [.mp4]
- luentoseinä
19. luento: ma 17.3.2025 klo 10:15-11:45: Kertaus olioista, pidetään käyttäen TIMin luentokysymyksiä
- HUOM! Ajoissa paikalle klo 10 TASAN
- Ottakaan laitteet (kannettava, tabletti tai älykänny) mukaan
- Enum: Kortti.java (tutustu itse, ei käsitellä luennolla)
- Luennon käsikirjoitus - tosin tätä ei ole tarkoitusta lukea, vaan tehdä itsenäisesti videon tahtiin
- Luennolle tehdyt Java-koodit
- Luennolla tehdyt Java-koodit
- 1. luentotunti videona [.mp4]
- luentoseinä
18. luento: ti 11.3.2025 klo 12:15-13:45: Kertausta tiedostoista, oliosta ja dynaamisuudesta, linkitetty lista, Kerho
- 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))
- Kuva linkitetystä listasta
- HT 5, jäsenten ja harrastusten välinen yhteistyö
- Malli 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
- Erot versio 5 ja 6 välillä
- Luennon 18 vaiheet GITissä - katso erityisesti kerho ja fxKerho hakemistojen muutokset
17. luento: ma 10.3.2025 klo 10:15-11:45: HT5, Iteraattorit, tiedostot
- HT 5, jäsenten ja harrastusten välinen yhteistyö
- MalliHT: vaihe5 - osaa lisätä vakioharrastuksen ja etsiä tietyn jäsenen harrastukset
- Gitissä - osaa lisätä vakioharrastuksen ja etsiä tietyn jäsenen harrastukset
- Harrastukset.java - osaa etsiä tietyn jäsenen harrastukset
- Luennon muutoshistoria 5-1 -> 5
- Erot versio 5.1 ja 5 välillä
- Luku 13.5.2 Iteraattori 🕮
- TaulukkoList.java
- TaulukkoIter.java - dynaaminen taulukko yksinkertaisimmillaan, jossa iteraattori
- iteraattorin JavaDoc.
- 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. Tämä on paras, katso tätä)
- 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ä
16. luento: ti 4.3.2025 klo 12:15-13:45: Dynaamiset taulukot ja Javan valmiit tietorakenteet
- M: 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
- VectorMalliGen.java - Javan Vektori-luokka
- ArrayListMalliGen.java - Javan ArrayList-luokka
- AlgoritmiMalliGen.java - Javan algortimit tietorakenteille
- TaulukkoIter.java - dynaaminen taulukko yksinkertaisimmillaan, jossa iteraattori
- TaulukkoGen.java - samasta geneerinen versio (+testit)
- dynaaminen - esimerkkejä dynaamisesta muistinkäytöstä
15. luento: ma 3.3.2025 klo 10:15-11:45: Javan taulukot ja merkkijonot, Dynaamiset taulukot
- M: Luku 12: Java-kielen taulukoista 🕮
- taulukot - esimerkkejä Javan taulukoista
- Luennolla tehdyt Java-koodit
- 1. luentotunti videona 2024 [.mp4]
- 1. luentotunti videona 2025 [.mp4]
- luentoseinä
14. luento: ti 25.2.2025 klo 12:15-13:45: Käyttöliittymän ja tietorakenteen yhteistyö
- Mallivaiheet: Etenemisohjeita vaiheiden 4 ja 5 välille - kuinka etenen HT3 vaiheen muuttamisessa HT5 vaiheeseen
- KerhoGUIController.java - käyttöliittymän ulkoasusta riippumaton osa, perustuu kuitenkin JavaFX-kirjastoon
- ht 5.1 - käyttöliittymä mukaan
- HT 5.1 malli
- Mallivaiheet: Vaihe 5.1 Esimerkki tiedon näyttämisestä - täällä selitetty tekstinä samat mitä luennolla tehtiin
- KerhoGUIController.java - käyttöliittymäkoodista ulkoasusta riippumaton osa, perustuu kuitenkin JavaFX-kirjastoon
- AstiaPeli.java - esimerkki oliotaulukosta
- Luennolla tehdyt Java-koodit
- 1. luentotunti videona [.mp4] (mikki putosi 36:30 kohdassa)
- luentoseinä
- ht 5.1 - käyttöliittymä mukaan
13. luento: ma 24.2.2025 klo 10:15-11:45: Kuvasta toimivaksi ohjelmaksi
- Menusta rungoksi - kuinka etenen HT3 vaiheen muuttamisessa HT5 vaiheeseen
- HT5 vaiheen alku, yksi tietorakenne
- menusta rungoksi
- Jasen.java - lisätty luokka Jasen ja testattu
- Jasenet.java - lisätty luokka Jasenet ja testattu
- Kerho.java - lisätty Kerho ja testattu
- HT5 vaiheen alku, yksi tietorakenne
- Luennolla tehdyt Java-koodit
- 1. luentotunti videona (2024) [.mp4]
- 1. luentotunti videona (2025) [.mp4]
- luentoseinä
Oheislukemistoa:
- Esimerkki TDD:stä, Keilailu. - aja se PPT-tiedosto tuolta
- JUnit Ohjelmointi 2-kurssilla
- ComTest Ohjelmointi 2-kurssilla
12. luento: ti 18.2.2025 klo 12:15-13:45: Polymorfismi, rajapinnat
- M: 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 (2024) [.mp4]
- 1. luentotunti videona (2025) [.mp4]
- luentoseinä
11. luento: ma 17.2.2025 klo 10:15-11:45: Luokkien suunnittelu ja tietorakenteet, modaalit dialogit
- CRC-kortit
- M: Luku 10: Oliosuunnittelu 🕮
- crc.html - tyhjä CRC-kortti HTML-muodossa
- crc.txt - tyhjä CRC-kortti ASCII-tekstinä
- CRC-kortit TIMiin
- Malliohjelman CRC-kortit
- Analyysi- ja toteutusvaiheen UML-kaaviot
- Jonne I:n näkemys UML:nä
- M: Luku 10: Oliosuunnittelu 🕮
- Olio-kaavio:
- M: 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
- Esimerkki kuvasta jossa ylim. liitostaulu
- Tärkeää luettavaa HT3 jne varten: Dialogit
- Malliharjoitustyön 4. vaihe - katso CRC ja tietorakenne
- luentoseinä
- 1. luentotunti videona [.mp4] (ääni särkee pahasti)
- 1. luentotunti videona [.mp4] (2025 versio ääni särkee)
10. luento: ti 11.2.2025 klo 12:15-13:45: Luokat ja oliot
- M: Luku 9.13 switch -valintalause 🕮, äänestys - erilaisia tapoja tehdä valintoja
- HT3
- Käyttöliittymäluokka jäsenrekisteriin
- FXGui - kirjasto graafisia elementtejä varten
- 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
- astia1/Astia.java - esimerkki yksinkertaisesta luokasta, joka kommunikoi toisen saman luokan edustajan kanssa (
- "pelin" graafinen versio Javalla
- Kuva graafisesta versiosta
- astia - "pelin" graafinen versio Delphillä tehtynä.
- Luennolla tehdyt java-koodit
- 1. luentotunti videona [.mp4]
- 1. luentotunti videona [.mp4] (kevät 2022 versio)
- Jos joku haluaa katsoa vuoden 2019 luennon, jossa äänestysdialogi tehtiin tarkemmin SceneBuilderillä: 2019 luento videona [.mp4] [.mp4-mobiili]
- luentoseinä
9. luento: ma 10.2.2025 klo 10:15-11:45: Luokat ja oliot, RadioButton, switch
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ä:
Esimerkki Java-virtuaalikoneen "konekielestä"
javac -cp c:\devel\jar\Graphics.jar lumiukkoCmd\Lumiukot.java java -cp c:\devel\jar\Graphics.jar;. lumiukkoCmd.Lumiukot tai set classpath=c:\devel\jar\Graphics.jar;. javac lumiukkoCmd\Lumiukot.java java lumiukkoCmd.Lumiukot
Music - kirjasto MIDI-soittamiseen
- Soittelu.java
- Lumiukko.java - vastaava WindowBuilderillä tehtynä, esimerkissä myös Midi-soitinta
- LumiukotFX.java - JavaFX:än ja Swingin yhdistäminen
Äänestys
- Luennon 9 esimerkkikoodit GIT:
https://gitlab.jyu.fi/tie/ohj2/esimerkit/k2025/-/tree/main/luennot - AanestysMain.java - Äänestyksen pääohjelma
- AanestysGUIView.fxml - Käyttöliittymä
- AanestysGUIController.java
- Luennon 9 esimerkkikoodit GIT:
Äänestyksen käsittelijä
Kuva äänestysohjelman käyttöliittymästä
Kuva millainen demo 5 tehtävän ohjelmasta pitäisi tulla.
Äänestyksen pääohjelma, kaikki Javalla
Äänestyksen pääohjelma, kaikki Javalla, oma komponentti
Äänestyksen pääohjelma, RadioButtonChooserilla
Käyttöliittymä, RadioButtonChooserilla
- AanestysGUIController4.java
- Äänestyksen käsittelijä, RadioButtonChooserilla
Ää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
1. luentotunti videona [.mp4]
1. luentotunti videona [.mp4] (kevään 2022 versio)
8. luento: ti 4.2.2025 klo 12:15-13:45: pöytätesti, tavukoodi, oliot
- M: Luku 7.6.4 Muuttujien lokaalisuus 🕮
- M: Luku 7.6.5 Parametrinvälitysmekanismi 🕮
- Tavukoodista
- Aikalisa.java.pdf - Esimerkki Java-virtuaalikoneen "konekielestä"
- Tavukoodista
- M: Luku 7.6.7 Luokkamuuttujat ja suhde lokaaleihin muuttujiin 🕮 (pöytätesti)
- poytatesti.xlsx - Excel pohja pöytätestiin
- M: Luku 8. Kohti olio-ohjelmointia 🕮
- Älä luule, että aikojen kanssa toiminen on helppoa - katso video Yksinkertainen olio-esimerkki
- Luennolla tehdyt java-koodit
- 1. luentotunti videona [.mp4]
- Huomatkaa: tekstitys saatavilla
- luentoseinä
7. luento: ma 3.2.2025 klo 10:15-11:45: aliohjelmat, testaaminen, oliot ja perintä
- M: Luku 7: Java- kielen muuttujista ja aliohjelmista 🕮
- Testaaminen:
- M: Luku 7.7 Testipääohjelmat 🕮
- M: Luku 7.8 Yksikkötestaus 🕮
- M: Luku 7.9 JUnit 🕮
- M: Luku 7.10 ComTest 🕮
- Poista.java - esimerkki ComTest- testaamisesta
- PoistaTest.java - esimerkki JUnit testaamisesta
- JUnit Ohjelmointi 2-kurssilla
- ComTest Ohjelmointi 2-kurssilla
- Kalvot JUnitista
- M: 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]
- 2021: 1. luentotunti videona [.mp4]
[.mp4-mobiili]
- Huomatkaa: tekstitys saatavilla
- luentoseinä
6. luento: ti 28.1.2025 klo 12:15-13:45: viitteet, oliot, graafinen käyttöliittymä
- Katso näytelmä aliohjelman kutsumisesta mikäli et ole sitä nähnyt.
- M: Luku 6: Java -kielen alkeita 🕮
- M: Luku 7: Java- kielen muuttujista ja aliohjelmista 🕮
- Jonotesti.java - esimerkki viitteistä
- M: Luku 7.11 Mittakaavaohjelma graafisena 🕮
- matkaFX - mittakaava aliohjelmineen
- Kuva mittakaava-ohjelmasta
- M: Luku 8: Kohti olio-ohjelmointia 🕮
- Kissa.java - toinen olioesimerkki
- Luennon esimerkkikoodit
- Luennolla tehdyt koodit
- 1. luentotunti videona [.mp4]
- (2010 L6: [.mp4] kohdasta 48:13 Matka-ohjelman komentoriviversion tekeminen, vertaa luennon graafiseen versioon)
- luentoseinä
5. luento: ma 27.1.2025 klo 10:15-11:45: Kvanttitietokoneet, DNA-tietokoneet, Ohjelmointikielet, kääntäminen ja linkittäminen, vakiot, aliohjelmat, testaaminen, oliot
- M: Luku 5: Esimerkkejä eri kielistä 🕮
- "Hello World!" eri kielillä
- Eri kielten syntaksien vertailua
- TIMissä eri ohjelmointikieliä
- Haskell - katso "Pallopelistä" erilainen versio
- Kvanttilaskenta
- Teiko Heinosaari kalvot, pdf
- Timo Männikkö: kalvot, pdf
- Mikko Möttönen QCD Labs: 2016 luennon video, kalvot, pdf
- DNA:
- Esimerkki "tietokoneesta" (.jpg))
- Mika Kallion gradu: Kuvatietokanta DNA-molekyylissa, pdf
- Olli Niemitalo: Laskentaa DNA- ja RNA-molekyyleillä
- DNA-Wikipediassa
- Tiedetuubi: DNA ja muisti
- Science 11 November 1994
- Esimerkki "tietokoneesta" (.jpg))
- Regular Expressions
- regex101 - WWW työkalu RegExpien kokeiluun
- Regex Coach - apu säännöllisten lausekkeiden opetteluun
- RegExr - vastaava JavaScript väline
- Debuggex - toinen vastaava, piirtää automaatin
- tee RegExp-demotehtävät jos et tehnyt Ohj1 aluksi
- https://regexone.com/ - pieni RegExp-kurssi
- Johdatus Javan RegExpiin
- Javan RexExp yhteenveto
- Alice - ympäristö 3D-animaatioiden tekemiseen
- Lego Mindstorm Next - Lego robotti, löytyy mm. Linkin tiloista
- Kuva Lego Mindstorm Next ympäristöstä
- M: Luku 6: Java - kielen alkeita 🕮
- 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]
- luentoseinä
4. luento: ti 21.1.2025 klo 12:15-13:45: Taulukot, pöytätesti, Eclipse, debuggaus
- Demo2 tehtävät
- HT:n palauttaminen
- M: Luku 4: Algoritmeissa tarvittavia rakenteita 🕮
- Luennolle tehty Alkuluku.java
- Yhdista
- 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]
- luentoseinä
3. luento: ma 20.1.2025 klo 10:15-11:45: Algoritmit
- M: Luku 3: Algoritmin suunnittelu 🕮
- Excel-esimerkki kompleksisuuden käyttäytymisestä
- Video: 15 erilaista lajittelualgoritmia visualisoituna
- Wikipedia: Travelling Salesman Problem (TSP)
- Wikipedia: P ? NP
- Wikipedia: P versus NP
- TSP minimointina ei ole NP
- O(n) eri algoritmeille
- Kerho-esimerkkiohjelman graafinen käyttöliittymä (GUI) SceneBuilderilla tehtynä
- OpenMP - helppokäyttöiset säikeet mm. C/C++/Fortran
- Luennolla tehdyt koodit
- 1. luentotunti videona [.mp4] (2024)
- 1. luentotunti videona [.mp4] (2025)
- luentoseinä
2. luento: ti 14.1.2025 klo 12:15-13:45: Ohjelman suunnittelu, algoritmit, nyky-IDEt
- Pikayhteenveto Agilesta (vertaa erityisesti XP ja harjoitustyö)
- Demoja tehdään ja palautetaan TIMillä
- HT:n suunnitelman kirjoittaminen ja palauttaminen
- Ohj2:n Git-sivut
- Malliharjoitustyön vaihe 2
- M: Luku 2: Kerhon jäsenrekisteri 🕮
- Myös muita mahdollisia tiedostomuotoja (XML, JSON, TOM) 🕮
- Esimerkki jossa harrastusten nimille on oma tiedosto
- kerhoGUI - kerhon käyttöliittymä SceneBuilderillä tehtynä
- M: Luku 3: Algoritmien suunnittelu 🕮
- Ohjelmistotuotannon prosesseja Wikistä
- Kevään 2025 nauhoitus kursittiin kokoon päivän myöhässä, ja siinä on nyt viime vuoden osuudet ilman nopeutusta. Täysin luentoa vastaava kokemus olisi katsoa luento-osuudet viidesosan nopeammalla kuin keskusteluosuudet. Ensi viikolla koetetaan saada kerralla purkkiin paremmin. Aiempien vuosien videoita tuskin kannattaa enää keskiviikon 15.1.2025 jälkeen katsella, kun saatiin korjattu kokonaisuus julkaistua.
- 1. luentotunti videona [.mp4] / 2023
- 1. luentotunti videona [.mp4] / 2024
- 1. luentotunti videona [.mp4] / 2025 (vuoden 2024 video lisättynä vuoden 2025 live-keskustelulla ja kysymyksillä)
- luentoseinä
1. luento: ma 13.1.2025 klo 10:15-11:45: Alkubyrokratia, ohjelman suunnittelu
- Ennen luentoa pyörineet kalvot, pdf
- Kurssin kotisivujen ja pelisääntöjen läpikäynti
- TIMin esittely, mm bookmarkit ja miten niillä rakentaa oman "kurssin"
- Kurssit tavoitteet ja työmäärä
- Kurssien vaativuuksista Jylkkärissä 12/2004 (13.10.2004)
- Kielistä:
- Käsitekartta kurssin asioista työkirjassa. Katso muutenkin työkirja.
- Kalvot ohjelmistotuotantoprosessista,
- 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 Gitissä
- 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]
- luentoseinä
Kevät 2024 pidetyt luennot:
Kevät 2023 pidetyt luennot:
Kevät 2022 pidetyt luennot:
T1. Java ja tietokannat Itsenäisesti katsottavaksi
- Lisäkurssin kotisivu
- 1. luentotunti videona: .mp4 .mp4-mobiili
Kevät 2021: Itsenäisesti katsottavat luennot
Kevät 2019 Pidetyt luennot:
Luento 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]
Kevät 2018 Pidetyt luennot:
Tentin palautus ke 4.4.2018 klo 13:45-14:05
Vanhojen Ohjelmointi 2 kurssien aiheet
- Ohjelmointi 2, 2023 luennot/lisämateriaali
- Ohjelmointi 2, 2022 luennot/lisämateriaali
- Ohjelmointi 2, 2021 luennot/lisämateriaali
- Ohjelmointi 2, 2020 luennot/lisämateriaali
- Ohjelmointi 2, 2019 luennot/lisämateriaali
- Ohjelmointi 2, 2018 luennot/lisämateriaali
- Ohjelmointi 2, 2017 luennot/lisämateriaali
- Ohjelmointi 2, 2016 luennot/lisämateriaali
- 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 2023 - C# / Vesa Lappalainen
- Syksy 2022 - C# / Vesa Lappalainen
- Syksy 2021 - C# / Vesa Lappalainen
- Syksy 2020 - C# / Vesa Lappalainen
- Syksy 2019 - C# / Vesa Lappalainen
- Kevät 2019 - C# / Antti-Jussi Lakanen
- Syksy 2018 - C# / Vesa Lappalainen
- Kevät 2018 - C# / Antti-Jussi Lakanen
- Syksy 2017 - C# / Vesa Lappalainen
- Kevät 2017 - C# / Antti-Jussi Lakanen
- Syksy 2016 - C# / Vesa Lappalainen
- Kevät 2016 - C# / Antti-Jussi Lakanen
- 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
2025 kevät videot
- luento01a
- luento02a
- luento02a25
- luento02a25harsittu
- luento03a
- luento03a25
- luento04aVanha24
- luento04a
- luento05aVanha24
- luento05a
- luento06aVanha24
- luento06a
- luento07aVanha24
- luento07a
- luento08aVanha24
- luento08a
- luento09aVanha24
- luento09a
- luento10aVanha24
- luento10a
- luento11aVanha24
- luento11afixVanha24
- luento11a
- luento12aVanha24
- luento12a
- luento13aVanha24
- luento13a
- luento14aVanha24
- luento14ääni-fixauxYritysVanha24
- luento14afixVanha24
- luento14a
- luento15aVanha24
- luento15a
- luento16aVanha24
- luento16a
- luento17aVanha24
- luento17a
- luento18aVanha24
- luento18a
- luento19a
- luento20aVanha24
- luento20a
- luento21aVanha24
- luento21a
- luento22aVanha24
- luento22a
- luento23aVanha24
- luento23a
- luento24aVanha24
- luento24a
- luentoC1a
- luentoC1aLuentosalissa25
- luentoC2a
- luentoC2aLuentosalissa25
- luentoC3a
- luentoC3aLuentosalissa25
- luentoC4a
- luentoC4aLuentosalissa25
These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.