IT-Universitetet i København
 
  Tilbage Kursusoversigt
Kursusbeskrivelse
Kursusnavn (dansk):Objektorienteret softwarekonstruktion - B.Sc.-kursus 
Kursusnavn (engelsk):Object Oriented Software Construction - B.Sc. course 
Semester:Forår 2009 
Udbydes under:Bachelor i softwareudvikling (bswu) 
Omfang i ECTS:7,50 
Kursussprog:Dansk 
Kursushjemmeside:https://learnit.itu.dk 
Min. antal deltagere:
Forventet antal deltagere:42 
Maks. antal deltagere:42 
Formelle forudsætninger:Grundlæggende Programmering med Projekt (BSc i softwareudvikling), eller tilsvarende 
Læringsmål:Efter kurset forventes den studerende at kunne følgende:
• Anvende alle elementer af et moderne objektorienteret sprog (Java)
• Forklare i detaljer hvordan de enkelte elementer af sproget fungerer
• Forklare i detaljer hvordan de enkelte elementer af sproget bruges til at konstruere software som er nem at vedligeholde og udvide
• Konstruere klassehierarkier med anvendelse af interfaces, abstrakte klasser og metoder, superklasser og subklasser
• Konstruere generiske typer og generiske metoder
• Forklare hvordan programmer i sproget afvikles, med begreber såsom virtuel maskine, stak, hob og garbage collection
• Gøre rede for Javas faciliteter til fejlhåndtering og benytte dem i praksis
• Forklare hvordan Java understøtter samtidighed (concurrency) og hvilke problemer det introducerer
• Benytte JDBC-API’et i egne programmer og gøre rede for dets opbygning
• Benytte udvalgte dele af Swing-API’et
• Beskrive programmer vha. UML-diagrammer
• Anvende nogle designmønstre til at strukturere og beskrive software
 
Fagligt indhold:Kurset foretager en grundig gennemgang af objektorienteret programmering med Java, herunder alle relevante sprogelementer. Der lægges vægt på at forklare og illustrere, hvordan man bruger de objektorienterede elementer på en fornuftig måde, herunder så den resulterende software kan forstås af andre udviklere, så den er fleksibel at ændre og udvide, så gentagelser undgås, så fejl håndteres de korrekte steder, så objekter selv sikrer deres tilstand er gyldig. Dette opnås bl.a. vha. modularisering, fejlhåndtering og indkapsling.

Kurset gennemgår således nogle af de samme elementer af objektorienteret programmering og af Java som kendes fra Grundlæggende Programmering med Projekt, men der gås mere i dybden, der lægges mere vægt på korrekt anvendelse, og der lægges vægt på præcision og fuldstændighed. Desuden gennemgås en række nye emner: garbage collection, stak og hob; scanning og regulære udtryk; static import; konstruktion af generiske typer og generiske metoder; wildcards i generiske typer; håndtering af kataloger og filer; trådprogrammering, JDBC og Swing; UML og designmønstre.

Følgende emner behandles:
• Static members (klasse) og non-static members (objekter/instanser)
• Pakker (namespaces, indkapsling, navnekonventioner og classpath)
• Initialisering, garbage collection (hvorfor både ¿dangling references¿ og memory leaks¿ undgås helt i Java, konstruktorer, finalize, weak refs)
• Objektidentitet vs. objekttilstand ( ==, equals, compareTo, tildeling by-reference og tildeling by-value, clone, reference-variable, null)
• Scanning af tekstinput, delimiters, regulære udtryk, formatering af tekstoutout med printf og format.
• Javas typesystem (hvorfor er det nyttigt, up- og down-cast, type-konvertering, ClassCastExceptions, typehierarki, statiske og dynamiske typecheck)
• Interfaces, abstrakte klasser og konkrete klasser
• Overloading af metoder og konstruktorer
• De to betydninger af nøgleordene this og super
• Indkapsling (hvorfor og hvordan, forskel på grænseflade og implementation)
• Genbrug af kode vha. hhv. nedarvning (extension) og komposition (delegation); hvornår bør man bruge hvilken af de to? Forskellen på sub-typing og på nedarvning af implementation.
• Nedarvning, overriding, subtype-polymorfi og typehierarkier. Hvorfor bruge base-typer og polymorfi fremfor forgreninger? instanceof og getClass
• Overblik over Java Virtual Machine, stack, heap og Java Bytecode.
• Definition og implementation af Java interfaces (erstatning for manglende multipel nedarvning, hvordan og hvorfor bruges de)
• Indlejrede (nested) klasser; herunder inner-, local-, anonymous- og member classes.
• Konstruktion af generiske typer og generiske metoder, wildcards.
• Collections (overordnet design, generiske typer, forskellige slags maps og collections, iteration over elementer med for-each, read-only, trådsikkerhed, sortering og effektivitet)
• Metoderne equals, compareTo og hashCode i forbindelse med collections.
• Exceptions, throw, try-catch, throws; assert-sætningen
• Programmering med tråde i Java (Thread, Runnable, ThreadGroups, levetid og trådtilstande, waiting, blocking, deadlocks, notification, demon threads)
• Filer, strømme, kataloger og serialisering.
• Arkitektur af JDBC og dets anvendelse til at tilgå database fra Java-programmer.
• Konstruktion af GUIs med Swing. Vi behandler dog kun udvalgte dele af det.
• UML (use-case-, klasse-, sekvens- og tilstandsdiagrammer) og designmønstre
 
Læringsaktiviteter:12 forelæsninger og 12 øvelsesgange

Undervisningsformen er forelæsninger med overheads, tavle og kørende eksempler og en væsentlig del to-vejs-kommunikation for at tilpasse farten til de studerendes forudsætninger og interesser. Der lægges stor vægt på praktiske øvelser ved computer med personlig feedback på opgavebesvarelser. Vi lægger op til at de studerende samarbejder om opgaverne i mindre grupper (2-3 personer) og afleverer en samlet besvarelse for gruppen.
-----------

Se hvordan undervisningen er tilrettelagt her:
link til skemaoplysninger
Skemaoplysningerne for forårssemesteret vil være tilgængelige fra kort før semesterstart.

See the schedule here:
link to the time table
The schedule for the spring term will be available shortly before the beginning of the term
 

Eksamensform og -beskrivelse:X. experimental examination form (7-scale; external exam), 7-trins-skala, Ekstern censur

 

Litteratur udover forskningsartikler:Bruce Eckel: Thinking in Java, 4th edition. Prentice-Hall 2006. 
 
Afholdelse (tid og sted)
Kurset afholdes på følgende tid og sted:
UgedagTidspunktForelæsning/ØvelserStedLokale
Mandag 09.00-12.00 Forelæsning ITU 2A14
Mandag 13.00-16.00 Øvelser ITU 2A52

Eksamen afholdes på følgende tid og sted:
EksamensdatoTidspunktEksamenstypeStedLokale
2009-06-09 Tidspunkt oplyses senere Mundtlig eksamen ITU 2A14
2009-06-10 Tidspunkt oplyses senere Mundtlig eksamen ITU 2A14
2009-06-11 Tidspunkt oplyses senere Mundtlig eksamen ITU 2A14
2009-06-12 Tidspunkt oplyses senere Mundtlig eksamen ITU 2A14