hoorcollege 14 (maandag 16 januari 2012)
planning, Hoofdstuk 14 (niet voor de toets)
- vragenuur voor de toets van dinsdag
- GUIs (voor de eindopdracht)
hoorcollege 13 (donderdag 12 januari 2012)
Hoofdstuk 12 en 13
- generics
- enums
- auto(un)boxing
- final
- eindopdracht
- op college gebruikte programma's ter illustratie van
enums en
generics en auto(un)boxing.
- einde van de cursus voor wat betreft de toetsstof
hoorcollege 12 (maandag 9 januari 2012)
planning, Hoofdstuk 9 en 10
- exceptions
- I/O (alleen passief te kennen voor de toets)
- zip-bestand met
op college gebruikte programma's ter
illustratie van exceptions en i/o.
hoorcollege 11 (donderdag 5 januari 2012)
Hoofdstuk 11 en 8 (restant)
- multithreading (alleen passief te kennen voor de toets),
geillustreerd door
dining philosophers en drie varianten van een producer-consumer situatie:
- dynamic dispatch als object variant van
conditionele statement (if) en conditionele expressie (?:)
geillustreerd door
LifeWithoutIfs
- packages als manier om (de namespace van) identifiers/klassen
te structureren geillustreerd door LifeWithoutIfs in
een pakket of in
een nest van pakketten te plaatsen.
hoorcollege 10 (maandag 2 januari 2012)
Secties 7.3-7.9 en Appendix B uit het boek.
-
bespreking inleveropdracht 2:
- beoordeling voor practicum dinsdag 3 januari online
- veel gemaakte fouten: randgevallen niet goed behandeld
(zoals ihgv woorden die over randen van het grid heengaan,
of een grid bestaande uit 0 rijen en 0 kolommen).
-
super als verwijzing naar het superobject waarvan
dit object direct overerft
(analoog aan this
dat naar het object zelf verwijst)
-
casting van een object van een type
naar dat van een van z'n supertypes.
-
abstracte klassen als klassen (b.v. Dier) waarvan sommige
methoden al wel op dat abstractie niveau
bepaald kunnen worden, maar andere nog
niet (die kunnen pas voor concrete subklassen van
Dier zoals Vos en Konijn ingevuld worden en zijn
daarom abstract in Dier).
-
overriding (van methoden, `dynamic dispatch')
vs. shadowing van velden (van velden, `static dispatch').
-
bespreking van (reden voor) uitbreiding van
IDier interface in derde inleveropgave.
hoorcollege 10 (donderdag 14 december 2011)
vervallen wegens ziekte van de docent.
hoorcollege 9 (maandag 12 december 2011)
-
private vs public, slot.
-
overerving (inheritance)
-
interfaces
voorbereiden: lees hoofdstuk 7 en 8 van het boek.
hoorcollege 8 (donderdag 8 december 2011)
werken met objecten (hoofdstuk 5 en 6) vervolg:
-
this
-
bespreking van idee van
Persoon.java
en Vriendenkring.java.
-
verder ontwikkelen van Life.java,
Wereld.java,
Cel.java
(gecorrigeerd, compileert en werkt, ook voor groottes anders dan 3 bij 3), ihb
gebruik van constructors om te initialiseren,
gebruik van toString methode om objecten zichzelf te laten representeren,
this als verwijzing binnen een object naar het object zelf,
private om interne toestand van de buitenwereld af te schermen.
hoorcollege 7 (maandag 5 december 2011)
werken met objecten, hun velden en methoden
-
omzetten van Game of Life naar object georienteerde stijl
-
access specifiers: private (interne toestand)
vs public (getter/setter methoden).
-
object of class gebonden velden en methoden: static vs non-static
voorbereiden: lees hoofdstuk 5 en 6 van het boek.
hoorcollege 6 (donderdag 1 december 2011)
-
algemeen idee van objecten en klassen
-
op college gemaakte klassen
Cel.java en
TestCel.java
ter illustratie.
-
de String klasse en enige String methoden, zie de Java Standard Ed. 6
String API.
voorbereiden: lees hoofdstuk 4 en 5 van het boek.
hoorcollege 5 (maandag 28 november 2011)
-
nabespreken van eerste inlevermoment:
houd je aan de specificatie (i.h.b. noem het
programma niet Palindroom of EersteOpgave als
de opdracht specificeert dat het Palindromen dient te heten).
-
arrays, motivatie, creatie, initialisatie, indexering,
index-out-of-bounds, meer-dimensionaal.
-
Op het hoorcollege gemaakt programma
ife.java voor
Game of Life
(28-11-2011), ter illustratie van modellering
en het gebruik van arrays.
-
voorbespreking van tweede inleveropgave: woordzoeken,
het zoeken van woorden in een 2-dimensionaal array van
karakters, en het geschikt weergeven van de voorkomens.
hoorcollege 4 (donderdag 24 november 2011)
Afko's (met illustrerend programma
Afkos.java)
-
Verschillende afkortingen in Java,
-
methode definities
-
recursie en de relatie met andere herhaalconstructies zoals while,for.
hoorcollege 3 (maandag 21 november 2011)
-
block statement, identifiers, levensduur van variabelen,
if else.
-
void methoden (aanroep als statement)
vs. methoden die een niet-void return type hebben (met return statement),
de footprint/signature van een methode
-
de 8 primitieve typen en hun diverse bewerkingen
-
programma Ggd.java gebruikt
ter illustratie van het bovenstaande.
hoorcollege 2 (donderdag 17 november 2011)
-
Uitbreiding van het arsenaal aan
imperatieve constructen uit hoorcollege 1,
met als Leitmotiv het vermijden van redundantie,
d.w.z. het vermijden van het kopiëren van
code, waardoor de code onderhoudbaar blijft.
-
Meer operaties op
ints zoals delen /
en modulo %, if-statement, while-statement,
de lege statement.
het boolean data type om waarheidswaarden
op te slaan en operaties op waarheidswaarden
zoals negatie (niet), conjunctie (en), disjunctie (of).
-
Methoden als (mogelijk geparametriseerde) afkortingen van
stukjes programma (met mogelijk een return waarde),
en hun flow-of-control (Hfdstk 4.4-4.7).
-
Uitgewerkt aan de hand van het oorbeeldprogramma:
Priemgetallen.java
met methode om de lijst van priemgetallen tot een bepaald
getal af te drukken.
hoorcollege 1 (maandag 14 november 2011)
-
Cursusprogramma:
-
eerste 2 weken (4 hoorcolleges, 1 inleveropdracht):
imperatief programmeren (Hfdstk 1-3 en 5 van het boek)
-
laatste 7 weken (14 hoorcolleges, 2 inleveropdrachten, 1 eindopdracht):
object georiënteerd programmeren (Hfdstk 4 en 6-14 van het boek)
-
Motivering voor programmeren binnen CKI:
modelleren met als voorbeelden:
aan- en verkoopbeslissingen van aandelen,
weersvoorspelling,
het brein.
-
Basis van imperatief programmeren:
een lijst van instructies (statements) die
de toestand (de state, d.w.z. de registers) veranderen, die
sequentieel (op volgorde) doorlopen wordt,
met mogelijke herhaling.
-
Motivering voor het gebruik van Java: zie boek 1.1-1.4,
en de edit-(.java)-compile-(.class)-test cyclus.
-
Drie basis-constructen van Java:
declaratie (declaration) van een variabele,
toekenning (assignment) van een waarde aan een variabele,
en herhaling (while-loops) van statements,
en op het hoorcollegeprogramma gemaakte
(verder niet nuttige) programma
HelloWorld.java
dat deze constructen illustreert.
-
Het uitvoeren van toekenningen zoals
x = x+1:
eerst het rechterlid (x+1) evalueren,
en die waarde toekennen aan het linkerlid (x).
Binnen het rechterlid wordt van links naar rechts gerekend
(eerst wordt de waarde van x bepaald, dan die van 1
en ten slotte worden die twee waarden opgeteld).
(lees Secties 1.7 (tot `Another Data Type') en 2.7)
-
Het verschil tussen een expressie (zoals
x+1,
representeert een waarde)
en een statement (zoals x = x+1, representeert een toestandsverandering).
Ruwe planning in hoofdstukken en steekwoorden
- week 3: Hfdstk 5,4 (Arrays/Strings)
- week 4: Hfdstk 5,6 (Objecten)
- week 5: Hfdstk 7,8 (Inheritance)
- week 6: Hfdstk 9,10 (I/O)
- week 7: Hfdstk 11,12,13 (Multi-threading)
- week 8: Hfdstk 14,15 (GUI)