Ohjelmointi 2, Java, kevät 2024
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 r.jyu.fi/ohj2 - tee tämä aina salissa luennon aluksi.
- Luentotallenteet tiedostoina (ensisijaisesti katso alla olevista luentojen linkeistä tai videoiden hakemistosta), myös .mp3 audiotiedostoina.
- Demotehtävät ja vastaukset omalla sivullaan
- Luentojen koodihakemistot (joskus samassa hakemistossa on tehty useampia luentoja)
- Videoiden hakemisto aihepiireittäin 2024 (muokkaa tätä, niin saat demopisteitä)
- Vanhat: 2022k, 2021k, 2020k, 2019k, 2018k, 2017k, 2016k, 2015k
Kevään 2024 aikataulu ja aiheet sekä videot
- tarkista että videon osoitteessa on 2024 (ei siis 2023), 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 2024 (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.
- Opetuksen pääsiäistauko on 3.–10.4.2023 (eli välttämättä ei ole pääteohjauksia tuona aikana)
Tulossa olevat luennot:
#
LC4
C4. ti 16.04.2024 klo 12:15-14: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] [.mp4-mobiili]
#
LC3
C3. ma 15.04.2024 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 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] [.mp4-mobiili]
#
LC2
C2. ke 09.04.2024 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] [.mp4-mobiili]
#
LC1
C1. ma 8.04.2024 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ä.
#
V1
edellinen videona Ohjelman synty – 26m11s (5m0s)
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]
1. luentotunti videona [.mp4] [.mp4-mobiili]
#
L24
24. luento: ke 3.4.2024 klo 8:30-10:00: 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 [.mp4]
#
L23
23. luento: ti 2.4.2024 klo 12:15-13: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 [.mp4]
Kevät 2024 pidetyt luennot:
#
L22
22. luento: ti 19.3.2024 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)
#
L21
21. luento: ma 18.3.2024 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ä
#
L20
20. luento: ti 12.3.2024 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 [.mp4]
- luentoseinä
#
L19
19. luento: ma 11.3.2024 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ä
#
L18
18. luento: ti 5.3.2024 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
#
L17
17. luento: ma 4.3.2024 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ä
#
L16
16. luento: ti 27.2.2024 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ä
#
L15
15. luento: ma 26.2.2024 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 [.mp4]
- luentoseinä
#
L14
14. luento: ti 20.2.2024 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
#
L13
13. luento: ma 19.2.2024 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 [.mp4]
- luentoseinä
Oheislukemistoa:
- Esimerkki TDD:stä, Keilailu. - aja se PPT-tiedosto tuolta
- JUnit Ohjelmointi 2-kurssilla
- ComTest Ohjelmointi 2-kurssilla
#
L12
12. luento: ti 13.2.2024 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 [.mp4]
- luentoseinä
#
L11
11. luento: ma 12.2.2024 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)
(ääni särkee pahasti) Luento 11 luennon TIM-sivu
#
L10
10. luento: ti 6.2.2024 klo 12:15-13:45: Luokat ja oliot
- M: Luku 9.13 switch -valintalause 🕮, äänestys - erilaisia tapoja tehdä valintoja
- HT3
- 2→3
- Luku 16.3 Kerhon rakenne 🕮:
- Malliharjoitustyön 3. vaihe, v2019
- Vaihe 3 GITissä
- KerhoGUIController.java - 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 - "pelin" graafinen versio Javalla
- Kuva graafisesta versiosta
- astia - "pelin" graafinen versio Delphillä tehtynä.
- astia1/Astia.java - esimerkki yksinkertaisesta luokasta, joka kommunikoi toisen saman luokan edustajan kanssa (
- 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ä (tätä voi katsella v2023 yhteydessä kun katsoo v2022 videota)
#
L09
9. luento: ma 5.2.2024 klo 10:15-11:45: Luokat ja oliot, RadioButton, switch
- 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ä:
Aikalisa.java.pdf - 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
- Katso 3D ja lineaarialgebra
- 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/k2024/-/tree/main/luennot - AanestysMain.java - Äänestyksen pääohjelma
- AanestysGUIView.fxml - Käyttöliittymä
- AanestysGUIController.java - Äänestyksen käsittelijä
- FXAanestys.png - Kuva äänestysohjelman käyttöliittymästä
- FXAanestysTytto.png - Kuva millainen demo 5 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
- AanestysGUIView4.fxml - Käyttöliittymä, RadioButtonChooserilla
- AanestysGUIController4.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
- Luennon 9 esimerkkikoodit GIT:
- Luennon esimerkkikoodit
- Luennolla tehdyt java-koodit
- 1. luentotunti videona [.mp4]
- 1. luentotunti videona [.mp4] (kevään 2022 versio)
- luentoseinä
#
L08
8. luento: ti 30.1.2024 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ä
#
L07
7. luento: ma 29.1.2024 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ä
#
L06
6. luento: ti 23.1.2024 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
- 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ä
#
L05
5. luento: ma 22.1.2024 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ä
#
L04
4. luento: ti 16.1.2024 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
- 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]
- luentoseinä
#
L03
3. luento: ma 15.1.2024 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]
- luentoseinä
#
L02
2. luento: ti 9.1.2024 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ä
- 1. luentotunti videona [.mp4] / 2023
- 1. luentotunti videona [.mp4] / 2024
- luentoseinä
#
L01
1. luento: ma 8.1.2024 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 2023 pidetyt luennot:
Kevät 2022 pidetyt luennot:
#
T01
T1. Java ja tietokannat Itsenäisesti katsottavaksi
- Lisäkurssin kotisivu
- 1. luentotunti videona: .mp4 .mp4-mobiili
#
itse
Kevät 2021: Itsenäisesti katsottavat luennot
Kevät 2019 Pidetyt luennot:
#
L25
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
2024 kevät videot
These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.