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 2008 
Udbydes under:Bachelor i softwareudvikling (bswu) 
Omfang i ECTS:7,50 
Kursussprog:Dansk 
Kursushjemmeside:http://wiki.lundogbendsen.dk/x/KAA1 
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 abstrakt maskine, stak, hob og garbage collection
¿ Anvende nogle UML-diagrammer til at beskrive software
¿ 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 i Java. 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 mange 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; UML og designmønstre.

Følgende emner behandles:

¿ Forskelle på referencetyper og primitive typer, referencer og objekter
¿ 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.
¿ 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å den enkeltes opgavebesvarelser.

 

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 Aud. 4
Mandag 13.00-16.00 Øvelser ITU 4A56

Eksamen afholdes på følgende tid og sted:
EksamensdatoTidspunktEksamenstypeStedLokale
2008-06-11 Kontakt kursusansvarlig Mundtlig eksamen ITU Lokale oplyses senere
2008-06-12 Kontakt kursusansvarlig Mundtlig eksamen ITU Lokale oplyses senere
2008-06-13 Kontakt kursusansvarlig Mundtlig eksamen ITU Lokale oplyses senere