TDA 545: Objektorienterad programmering
På denna sida hittar du information om kursens:bok, lärare, syfte, mål, innehåll, organisation, schema, labbarna,
föreläsningar, bedömning, övningar, gamla tentor och övningstentor, övrigt, länkar.
Nytt på denna sida
Obs. Nytt material kommer att läggas på den här sidan när kursen körs på hösten 2015. Här kommer det att finnas en lista på vad som har uppdaterats på den här sidan och när uppdateringenarna har skett.
2016-08-29: nu är alla omtentor rättade; resultaten har skickats ut
2016-08-29: statistik: fyra fick betyg 3, tre fick betyg U, en plussade från 4 till 5
2015-08-29: tentagranskningen är i EDIT 5128 kl 12:00-12:30, 2016-09-07
2016-08-29: modellsvar finns här för tentan som skrevs 2016-08-24
2016-01-30: nu är alla omtentor rättade; resultat skickas ut senast 2016-02-05
2016-01-30: statistik: 33 % fick 3, 4 eller 5, resten fick U på omtentan
2015-01-30: tentagranskningen är i EDIT 4128 kl 11:30-12:15, 2016-02-11
2016-01-04: modellsvar finns här för tentan som skrevs idag
2015-12-28: nu finns det modellsvar för en halv övningstenta 2
2015-11-03: nu är alla tentor rättade; resultat skickas så fort systemet tillåter
2015-11-03: statistik: 32 % fick 5, 25 % fick 4, 15 % fick 3, 28 % fick U
2015-10-29: tentagranskningen är i EDIT 4128 kl 11:45-12:45, 2015-11-13
2015-10-29: modellsvar finns här för tentan som ni skrev idag
2015-10-22: Unos lösningsförslag till en av övningstentorna har uppdaterats
2015-10-22: la upp presentationen för dagens föreläsning – Rita.java
2015-10-21: Uno har skrivit lösningsförslag till en av övningarna / övningstentorna
2015-10-19: la upp presentationen för dagens föreläsning
2015-10-13: kurshemisdan finns också här
2015-10-13: nu finns det modellsvar för gamla tentor
2015-10-13: la upp presentationen för dagens föreläsning
2015-10-12: la till koden som skrevs på dagens föreläsning
2015-10-12: OBS föreläsning 16 är på tisdag 2015-10-13 kl 13:15 i HA4
2015-10-12: la upp presentationen för dagens föreläsning
2015-10-08: Andreas har lagt till en ny programeringsövning
2015-10-08: nu finns koden för Snake och RandDots med kod-zipen
2015-10-08: en klocka (ovan) som räknar ner till tentan
2015-10-08: la upp presentationen för dagens föreläsning – med kod i zip
2015-10-06: Erik vill att ni röstar om nästa konsultationstid, 2015-10-12
2015-10-05: Andreas har uppdaterat och skrivit lösningar till prog.övningarna
2015-10-04: lab 4 är en uppgift om ett memory spel
2015-10-01: Erik Jungmark vill att ni röstar om konsultationstiden
2015-10-01: Andreas Wieden har satt ihop ett par extra programmeringsövningar
2015-10-01: la upp presentationen för dagens föreläsning – med kod i zip
2015-10-01: stavfel korrigerat i Lab 3, Del 2
2015-09-30: la upp presentationen för dagens föreläsning – nu med kod!
2015-09-28: la upp presentationen för dagens föreläsning – nu med kod!
2015-09-28: la till material on enum i föreläsning 10
2015-09-24: la upp presentationen för dagens föreläsning
2015-09-21: koden för omvändning av en sträng finns nu med i föreläsning 6.
2015-09-21: la upp presentationen för dagens föreläsning
2015-09-18: nu finns det information om lab 3 – nu funkar länkarna
2015-09-17: la upp presentationen för dagens föreläsning med kod+förklaring
2015-09-14: la upp presentationen för dagens föreläsning
2015-09-10: la upp presentationen för dagens föreläsning
2015-09-08: la upp presentationen för dagens föreläsning
2015-09-07: nu finns alla presentationer också i PowerPoint format
2015-09-07: koden som skrevs under föreläsningen finns nu med i PDFen
2015-09-07: nu finns det information om lab 2
2015-09-07: la upp presentationen för dagens föreläsning
2015-09-03: nu borde det gå att skicka in lösningar via Fire Systemet
2015-09-03: la upp presentationen för dagens föreläsning
2015-09-02: vi har flyttat torsdagens föreläsning till HA3
2015-09-01: satt en länk till kodvisualisteringsverktyget under föreläsningar
2015-09-01: la upp presentationen för dagens föreläsning
2015-08-31: nu finns det information om lab 1 och Fire systemet
2015-08-31: la upp gamla tentor och övningstentor
2015-08-31: la upp presentationen för dagens föreläsning
2015-08-28: Maxim Goretskyy föreslog alternativ kursliteratur
2015-08-26: omtentan: modelsvar, granskning 2015-09-08 kl 12:15 i EDIT 5452
2015-08-26: websidan tömd på material inför hösten 2015
Kursens bok
Den officiella kursboken:
-
Introduction to Programming and Object Oriented Design Using Java, 3rd Edition
Jaime Niño, Frederick A. Hosch
ISBN: 978-0-470-12871-8
Ni kan hoppa över kapitel 6, 12, 14 och 16. Mera information om vad som hör till kursen och vad som inte hör hittar ni här.
Andra böcker om Java (förslag av Maxim Goretskyy):
- Maxim Goretskyy skriver: Jag skulle vilja bara rekommendera en bra Java-bok som jag gillar, den heter "Head First Java". Själv "Head First __" serien av böcker är väldigt bra och har hög kvalite. Jag har läst lite i den, samt jag känner många som rekommenderar den. Fördelen med den är att boken är mer interaktiv, har mer bilder, olika layouts - för lättare läsning. Olika koncept förklaras också med bilder, många kod-exempel, och det finns uppgifter att göra etc.
- Maxim Goretskyy skriver: En annan bok som jag inte har läst, men skimmat genom och hört andra rekommendera är "Intro to Java Programming, Comprehensive Version (10th Edition)" av Y. Daniel Liang. Den är väldigt lik den kursboken som kursen har nu.
Maxim Goretskyy säger att ni kan kontakta honom (maxim@chalmers.it) ifall ni vill titta på böckerna innan ni skaffar dem.
Föreläsare och lärare
Kursen föreläses av Magnus Myreen (myreen@chalmers.se), men Uno Holmer, Ivar Josefsson, Erik Jungmark och Andreas Wieden hjälper också till.
Syfte
Det objektorienterade synsättet har idag en mycket stark ställning när det gäller programutveckling. Program som är uppbyggda enligt detta synsätt, s.k. objektorienterade program, består av ett antal samverkande delar som kallas objekt. Objekten kapslar in data och erbjuder metoder för att avläsa och uppdatera dem. Objekten beskrivs av s.k. klasser. Kursens syfte är att lära ut principerna för det objektorienterade synsättet och hur man konstruerar objektorienterade program.
Mål
Efter fullgjord kurs ska studenten kunna:
- förklara och använda sig av grundläggande begrepp inom objektorienterad programmering,
- konstruera metoder med utnyttjande av programspråkets datatyper och styrstrukturer,
- självständigt konstruera objektorienterade program som både använder sig av egenhändigt konstruerade klasser och av färdiga standardklasser, och
- skriva enkla händelsestyrda program med grafiskt gränssnitt.
En mera detaljerad beskrivning av kursens mål hittas här.
Innehåll
I kursen används programspråket Java. Följande moment behandlas:
- variabler, uttryck och satser, prioritet, metoder, parameteröverföring, rekursion
- fält och inläsning från en användare
- enkla typer och referenstyper, typomvandling
- grundläggande objektorienterade begrepp såsom klasser, objekt, metoder och instansvariabler
- relationer och kort om UML
- 3 olika tester på likhet, kanonisk form för klasser
- arv, polymorfism och dynamisk bindning
- abstrakta klasser och gränssnitt (interfaces)
- standardklasser för grafiska användargränssnitt
- konstruktion av egna grafiska komponenter
- händelser och lyssnare
- felhantering med hjälp av s.k. exceptions
- sökning på Internet efter dokumentation för standardklasser
- några av klasserna i Javas API
Organisation
Undervisningen ges i form av föreläsningar, gruppövningar och handledning i samband med obligatoriska programmeringsuppgifter (laborationer).
Schema
Gruppindelningen är samma som i kursen grundläggande datorteknik EDA433 som går parallelt med den här kursen. Gruppindelningen är viktig för att få schemat av grundläggande datorteknik att passa ihop med den här kursens övningstillfällen.
Läsvecka 1:
måndag 10:00 – 11:45: föreläsning, rum HA4
tisdag 10:00 – 11:45: föreläsning, rum HC4
tisdag 15:15 – 17:00: laboration, rum 5355, ED-3507
torsdag 10:00 – 11:45: föreläsning, rum HA3
torsdag 13:15 – 15:00: övning, rum EL43, grupp A, B
fredag 10:00 – 11:45: övning, rum EL41, grupp C, D
Läsvecka 2:
måndag 10:00 – 11:45: föreläsning, rum HA4
måndag 13:15 – 17:00: laboration, rum 2505/7, ED-3507
tisdag 10:00 – 11:45: föreläsning, rum HC4
tisdag 15:15 – 17:00: laboration, rum 5355, ED-3507
onsdag 15:15 – 17:00: laboration, rum 5355, ED-3507
torsdag 10:00 – 11:45: föreläsning, rum HC4
torsdag 13:15 – 15:00: övning, rum EL43, grupp A, B
fredag 10:00 – 11:45: övning, rum EL41, grupp C, D
fredag 15:15 – 16:15: konsultationstid, rum EL41, för alla som vill!
Läsvecka 3:
måndag 10:00 – 11:45: föreläsning, rum HA4
måndag 13:15 – 17:00: laboration, rum 2505/7, ED-3507
tisdag 15:15 – 17:00: laboration, rum 5355, ED-3507
onsdag 15:15 – 17:00: laboration, rum 5355, ED-3507
torsdag 10:00 – 11:45: föreläsning, rum HC4
torsdag 13:15 – 15:00: övning, rum EL43, grupp A, B
fredag 10:00 – 11:45: övning, rum EL41, grupp C, D
Läsveckor 4–8:
måndag 08:00 – 09:45: konsultationstid, rum EL42, för alla som vill!
måndag 10:00 – 11:45: föreläsning, rum HA4
måndag 13:15 – 17:00: laboration, rum 2505/7, ED-3507
tisdag 15:15 – 17:00: laboration, rum 5355, ED-3507
onsdag 15:15 – 17:00: laboration, rum 5355, ED-3507
torsdag 10:00 – 11:45: föreläsning, rum HC4
torsdag 13:15 – 15:00: övning, rum EL43, grupp A, B
fredag 10:00 – 11:45: övning, rum EL41, grupp C, D
Laborationerna
Information om hur man skickar in svar genom Fire Systemet.
- Lab 1: Första labben
- Uppgift
- Poäng: max 2
- Deadline: 18:00, tisdag 8 september 2014
- Lab 2: Metoder och fält; en klass för rationella tal
- Del 1: allRowSumsEqual
- Testprogram (Java) för del 1
- Del 2: En klass för Rationella tal
- Poäng: max 3+3
- Deadline: 18:00, tisdag 22 september 2014
- Lab 3: Counter och Labyrinth
- Del 1: Counter
- Givna klasser för uppgift 1 av 2 —
counterPrograms (zip-arkiv)
Använd t.ex. commandot unzip counterPrograms.zip
för att öppna zip-arkivet. - Del 2: Labyrint
- Givna klasser för uppgift 2 av 2 — lab.3.2.zip (zip-arkiv)
- Poäng: max 3+3
- Deadline: 18:00, tisdag 6 oktober 2014
- Lab 4: Memory
- Uppgift: Memory spel
- Poäng: max 3
- Deadline: 18:00, onsdag 21 oktober 2014
Alla svar/lösningar på labbarna ska skickas in genom Fire Systemet innan respektive deadline. Fire Systemet tillåter inte er att skicka in svar efter deadlinen. Labbarna är en obligatorisk del av kursen. Lämn inte inlämning av labbarna försent, dvs skicka in dina svar/lösningar i god tid innan de respektive deadlinerna.
Alla studenter på kursen ska registrera sig i Fire Systemet. Alla labuppgifter ska göras i par. När du är inloggad ska du skapa en grupp (med en annan studerande, dvs skapa ett par) och skicka in ett svar / en lösning per grupp. Fire Systemet innehåller förklaringar på hur man ska skapa grupper och hur man lämnar in svar/lösningar. Om ni har frågor om detta, så ska ni fråga i första hand labhandledaren eller i andra hand föreläsaren.
Föreläsningar
Jag lägger upp en PDF och PPTX-fil (PowerPoint) av varje presentation. PowerPoint filerna är skapade genom att exportera från Keynote. Detta betyder att de kan se konstiga ut ibland.
Föreläsningar:
Föreläsning 1:
Introduktion
(pptx)
Föreläsning 2:
Typer, klasser, tilldelning
(pptx)
– kodvisualistering
Föreläsning 3:
Booleans, if, switch
(pptx)
Föreläsning 4:
For, while, do-while
(pptx)
Föreläsning 5:
Att använda klasser & objekt
(pptx)
Föreläsning 6:
Metoder och fält (arrays)
(pptx)
Föreläsning 7:
Att skriva egna klasser
(pptx)
Föreläsning 8:
Exempel och problemlösning
(pptx) – nu med kod!
Föreläsning 9:
Arv och UML
(pptx)
Föreläsning 10:
Abstrakta klasser, gränssnitt
(pptx)
Föreläsning 11:
Rekursion
(pptx) – nu med kod!
Föreläsning 12:
Exempel och problemlösning
(pptx)
Föreläsning 13:
Swing (GUI), händelser, timer
(pptx) – med kod i zip
Föreläsning 14:
Grafik och mera händelsehantering
(pptx) – med kod i zip
Föreläsning 15:
Excepions & lite swing, gränssnitt
(pptx)
Föreläsning 16:
Tentan, att förbereda sig...
(pptx)
Repetitionsföreläsning 1:
Lite rekursion & problemlösning
(pptx)
Repetitionsföreläsning 2:
Quiz & problemlösning
(pptx) – Rita.java
Bedömning, tenta, m.m.
Skriftlig tentamina samt obligatoriska inlämningsuppgiftet (laborationer).
Bedömning av tentamina: U, 3, 4, 5.
Hjälpmedel på tentan: på sista sidan av tentan kommer det att finnas ett kort uttdrag från Javas API.
Kursen innehåller flera obligatoriska laborationer (Programming Assignments eller PAs). Kursen är problemorienterad så studenterna kommer att behöva öva mycket, speciellt viktigt är det att förstå labbarna, uppgifterna på examen kommer att påminna om labarna. Ni arbetar i grupper om 2 elever och redovisar era labbar i ett elektroniskt labsystem, Fire. Det är inte tillåtet att labba ensam utan tillstånd av examinatorn. (Fire tillåter inte att man lämnar in ensam). När ni lämnar in en labb så får labrättaren mail om det, han rättar och godkänner eller ger retur och ni får ett mail från Fire om hur det gått. Om ni fått en retur så har ni 7 dagar (exakt) efter att ni fick returen på er att åtgärda och lämna in på nytt. Labbarna är ett undervisningsmoment (snarare än en test på om du redan kan) så det är vanligt att man får retur, se labrättarnas kommentarer som förbättringstips snarare än sur kritik.
Om alla labbarna är godkända så rapporteras de till ladok oberoende av hur det går på tentan. Om labbarna inte är godkända så måste du göra om dem.
För att få godkänt i labbarna måste du (i) ha minst ett poäng per (del)uppgift, och (ii) ha minst 9 poäng totalt. Labuppgift 2 och 3 är båda uppdelade i två delar var.
Övningarna
På torsdagar (grupp: A, B) och fredagar (grupp: C, D) håls övningstillfällen. Vi använder följande övningsuppgifter:
övning 1
övning 2
övning 3 – GeometricObject.java
övning 3½
övning 4
övning 5
övning 6 – Unos lösningsförslag (zip)
Andreas Wieden (wian42@student.chalmers.se) har satt ihop ett par extra övningsuppgifter som man kan öva med på egenhand. Dessa övningsuppgifter är skrivna som java filer. Det är alltså meningen att man fyller i koden och provar att köra koden som man skrivit. Titta inte på Andreas lösningar innan ni har provat själv.
Uppgift: Ex1.java – Andreas lösning: Ex1.java
Uppgift: Ex2.java – Andreas lösning: Ex2.java
Uppgift: Ex3.java – Andreas lösning: Ex3.java
Uppgift: MyAdder.java – Andreas lösning: MyAdder.java
Gamla tentor och övningstentor
Gamla tentor och övningstentor:
- 2014 års ordinarie tenta — modellsvar
- 2014 års första omtenta — modellsvar
- 2014 års andra omtenta — modellsvar
- 2014 en halv övningstenta 1 — modellsvar
- 2014 en halv övningstenta 2 — modellsvar — nytt!
- 2013 års ordinarie tenta
- 2012 års ordinarie tenta
- 2011 års ordinarie tenta
- 2009 års ordinarie tenta
- 2008 års ordinarie tenta
- gammal övningstenta 1 – Unos lösningsförslag (zip)
- gammal övningstenta 2
- gammal övningstenta 3
Övrigt
Det här året dras kursen av Magnus Myreen, som också drog kursen förra året. Erland Holmström drog kursen året 2014. I stort sätt kommer kursen att vara samma som föregående år.