Objektorienterad programmering, analys och design med Java, 5p 2D4135, vt 2006 Kursprogram Kursens mål är att ge dig kunskaper om begreppen och principerna inom objektorienterad programmering kunskaper om designmönster och kriterier för god design övning på tillämpning av ovanstående begrepp och principer i Java ökade kunskaper om och ökad färdighet i programmering, särskilt i Java kännedom om metoder för att utveckla program för att du ska kunna tillämpa objektorienterade metoder vid programutveckling och skriva robusta program. Kursinformation på Internet Aktuell information om kursen finner du på http://www.nada.kth.se/kurser/kth/2d4135 Detta är kursens huvudanslagstavla. Här läggs scheman upp, exempel från undervisningen, information om tentamen, ev. ändringar av tider och salar, m.m. Om du inte har tillgång till Internet utanför KTH så titta på kurshemsidan när du är här. Kursen har också en vanlig anslagstavla på Lindstedtsvägen 3, entréplanet. Lärare Ann Bengtson är kursansvarig. Rum: 1614, plan 6, Lindstedtsvägen 3 Telefon: 08-790 6209 E-post: ann@nada.kth.se. Kursfordringar Kursens omfattning är 5 poäng fördelade på en laborationsdel om 3 poäng och en tentamen om 2 poäng. Tentamen ges i slutet av maj eller början av juni, datum är inte bestämt. Omtentamen ges i augusti 2006. På tentamen förekommer teorifrågor och problemlösning. För godkänt krävs att minst hälften av uppgifterna är riktigt besvarade/lösta. 1
Betyg Godkänd laborationsdel respektive tentamen ges något av betygen 3, 4 eller 5. Slutbetyget på kursen blir medelvärdet av de två, vi avrundar uppåt. Betyget på kursens labdel sätts på följande sätt: betyg 3 Endast obligatoriska uppgifter utförda. betyg 4 Obligatoriska uppgifter samt alla uppgifter för betyg 4 i anslutning till de obligatoriska laborationerna. betyg 5 Allt som krävs för betyg 4 samt alla uppgifter för betyg 5 i anslutning till de obligatoriska laborationerna. För att uppmuntra till programmeringsarbete under kursens gång kommer obligatoriska programmeringsuppgifter avklarade före ordinarie tentamen ge bonus på tentamen, dvs extra poäng att lägga till uppnådd tentamenspoäng. Extrauppgifter för betygshöjning får redovisas i efterhand (efter tentan) och påverkar inte bonusen. Kursuppläggning Undervisningen på kursen är koncentrerad till två veckor under vårterminen 2006, veckorna 13 och 19. Varje sådan vecka är upplagd så att vi har lektioner på förmiddagarna måndag torsdag. Eftermiddagarna måndag torsdag tillbringas i datorsal då studenterna får arbeta själva med programmeringsuppgifterna men lärare finns tillgänglig för dem som behöver hjälp. Fredagarna får ägnas åt studier på egen hand. Datorsal finns reserverad 4 timmar och man får viss möjlighet att ställa frågor. Det är hård konkurrens om lokalerna på KTH och vidareutbildningskurserna schemaläggs alltid efter kurserna i de ordinarie KTH programmen. Det kan därför tyvärr bli nödvändigt att avvika en del från det ideala schemat med lektion på förmiddagen och lab på eftermiddagen. Ibland tvingas vi förskjuta schemat så att en annan dag än fredag är lektionsfri. Scheman läggs ut på kurshemsidan och sätts upp på kursens anslagstavla så snart de är klara. Arbetsbelastning Kursen omfattar 5 poäng vilket motsvarar 5 veckors heltidsarbete. Det kan naturligtvis bli mer eller mindre beroende på förkunskaper och hur lätt man har för ämnet. Laborationer Laborationerna utgör en mycket viktig del av kursen. De utförs enskilt eller i grupper om två personer. Om två arbetar tillsammans är det bäst om man har ungefär lika mycket förkunskaper. Om en grupp inte skulle fungera så kan man byta eller dela på sig och jobba enskilt. Det går naturligtvis också bra att diskutera uppgifterna i smågrupperförattsedanprogrammeravarochenförsig. Separata labanvisningar finns. Det finns även en Hederskodex för labarbete på Nada. Den delas ut på grönt papper samt finns tillgänglig på kurshemsidan. Laborationerna redovisas i första hand för lärarna under den schemalagda labtiden i datorsal, i andra hand enligt överenskommelse med kursledaren. 2
Egna labprojekt Det är tillåtet att byta ut de obligatoriska uppgifterna mot egna, förutsatt att man kan hitta på uppgifter med minst lika stor omfattning och som behandlar liknande programmeringsbegrepp. Den som vill göra detta måste komma överens med kursledaren iförväg. Tillträde till datorsalarna på Nada Alla studenter måste räkna med att programmeringsuppgifterna kommer att ta mer tid i anspråk än den schemalagda labtiden. Nadas datorsalar är tillgängliga för studenterna även mellan och efter kursveckorna så att man kan arbeta på egen hand så mycket man behöver. Salarna är öppna dygnet runt för studenter som läser hos oss. Man måste dock alltid ha ett passerkort för att komma in. Vardagskvällar, nätter och hela helgerna behövs passerkortet även för att komma in i byggnaden. Passerkort och konton till Nadas datorer delas ut i samband med första lektionen till dem som inte har detta sedan tidigare. Den som inte är med första dagen får hämta kort och konto hos Systemgruppen, Osquars backe 2. Läsa på distans Det är möjligt att läsa kursen helt eller delvis på distans och göra laborationerna på sin egen dator. Den som väljer att läsa helt på distans behöver endast komma till KTH för att redovisa laborationerna och för att tentera. Det går förstås också bra att delta i lektionerna på KTH och programmera på annat håll. Det finns inte några lektioner för distansstudenter men OH-bilder från lektionerna kommer att göras tillgängliga (dock inte på kurshemsidan) och program från lektionerna läggas upp på kurshemsidan. I mån av tid svarar kursledaren på frågor på telefon och med epost. Då kursen inte är upplagd som distanskurs egentligen så blir det troligen svårare att läsa kursen på distans men alltså fullt tillåtet för den som har kapacitet för det. Då laborationerna redovisas måste man köra programmen, det räcker inte att redovisa utskrift av programkod. Den som har bärbar dator kan förstås ta med den till redovisningen. I annat fall måste programmen föras över till KTH så att de kan köras här. Alla som följer kursen får ett konto och en epostadress på KTH. Programmen förs över med kopieringskommando, epost eller något annat sätt. Laborationsredovisningen skall helst ske under den schemalagda tiden men det går att komma överens med kursledaren om annan tid. Registrering Alla studenter som går en kurs skall registreras på Nada i vår s.k. res-databas för bokföring av delresultat på kursen. Detta sker vid första datorlaborationen. De som väljer att inte använda Nadas datorer alls kan registreras av kursledaren. Registreringen sker genom Nada:s datorsystem enligt labanvisningarna. Observera att detta är en annan registrering än den som görs i Ladok då man blir antagen till en kurs. Varje student kan själv kontrollera vad som registrerats om honom/henne i ressystemet. När man är inloggad på sitt eget konto på någon av Nadas Unix-datorer ger man kommandot res show fovopad06 3
Schema Schemalagd undervisning ges i vecka 13 och 19. Schemat för vecka 13 finns just nu (2006-03-20) på kurshemsidan. Måndag till torsdag är det lektioner 9-12 och laboration 13-17. Fredag endast laboration 9-13. Schemat för vecka 19 läggs upp så snart det är klart. Preliminär kursplan Små ändringar kan förekomma, t.ex. att något avsnitt flyttas från första veckan till andra eller tvärtom. Kursvecka 1, kalendervecka 13 Introduktion till objektorienterad programmering. Historik. UML-introduktion, speciellt klassdiagram Repetition/snabbgenomgång av grund-java enligt 2D4112 (inkluderar enkla Applets, enkla GUIs och enkel händelsehantering) Inre klasser, paket Arv, abstrakta klasser, interface Polymorfism, dynamisk bindning Abstrakta datatyper Klasshierarkier Objektsamlingar Trådar för animering Introduktion till principer för god design och Designmönster Refactoring Metoder för OO-programutveckling, t.ex. XP (extreme Programming) Kursvecka 2, kalendervecka 19 Kanonisk form för klasser Lyssnargränssnitt, lyssnarklasser, Adapterklasserna Gränssnitten Serializeable, Cloneable och Runnable Testning, JUnit Designmönster: Singleton, Template Method, Factory, Composite, Observer, Command, Strategy, Iterator, Decorator, Adapter m.fl. Mer om kriterier för god design Mer om trådar: synkronisering, producent-konsument, låsning. Kommunikation: Strömmar och filer, klient-server-programmering, sockets. 4
Litteratur Kursbok Xiaoping Jia Object Oriented Software Development Using Java Addison Wesley 2002(hard cover) 2003(paper back), andra upplagan ISBN: 0-321-210735 Kursboken innehåller en bra genomgång av grundläggande Java som vänder sig till dem med programmeringsvana från ett annat språk. Vi kommer att ta upp några designmönster som inte står i kursboken. Alternativ kursbok Jan Skansholm Java Direkt med Swing eller Java Direkt Studentlitteratur Skansholms bok måste kompletteras med material om designkriterier och designmönster, t.ex. från Internet samt föreläsningsmaterial. Det finns förstås många andra utmärkta Java-böcker. Om du redan har en Javabok som är skriven för programmeringskunniga eller en omfattande nybörjarbok så kan den gå att använda. Fråga gärna kursledaren! Laborationsanvisningar Delas ut i samband med undervisningen och läggs upp på kurshemsidan. Läsa vidare Lämpliga Nada kurser att läsa som påbyggnad är t.ex. Webservertillämpningsprogrammering, Internetprogrammering, Databasteknik, Programsystemkonstruktion med C++, Teoretiska grunder för objektorientering. Se vidare Nadas websidor för vidareutbildningskurser och kurser för teknologer och för universitetsstuderande. Högre kurser för teknologer kan sökas av vidareutbildningsstudenter. Här är länkar till kursinformationen. Kursbevis http://www.csc.kth.se/utbildning/vidare/ http://www.csc.kth.se/utbildning/kurslistor/ http://www.nada.kth.se/utbildning/su/ Efter godkänd kurs kan du beställa kursbevis från KTH på telefon 08-790 70 09 eller via epost, examenf@admin.kth.se. Om du beställer kursbevis via epost så uppge, namn, personnummer, vilken kurs det gäller samt till vilken adress kursbeviset ska skickas till. 5