Upload
ngocong
View
225
Download
0
Embed Size (px)
Citation preview
1
Objektorienterad Programkonstruktion
Föreläsning 1 - kursintroduktion
DD1346 – oopk11Period 2 & 3
Christian Smith
2
Kontaktuppgifter & Info
Kurskod: DD1346, 6hpKursomgång: oopk11Kursansvarig: Christian Smith
[email protected]: www.csc.kth.se/utbildning/kth/kurser/DD1346/
Kursanmälan: https://rapp.csc.kth.se/rapp/
Får ej ingå I examen tillsammans med:
DD1332, DD1340, DD1341, DD1342, DD1343, DD1344, DD2385
3
Kursbeskrivning (studiehandboken)
“Kursen behandlar principer för objektorienterad programmering, objektorienterad programmering i Java, objektorienterad modellering med UML samt designmönster.
Kursens huvudsakliga innehåll:
Programmering i Java inklusive biblioteksanvändning, modellering med UML, principer för god objektorienterad design, designmönster. Laborationer i Java, uppgifter i UML.”
4
Lärandemål (studiehandboken)
Efter kursen ska studenten kunna
• förklara och använda begrepp inom objektorienterad programmering
• använda objektorienteringens principer vid programmeringsarbete
• använda UML-klassdiagram för att på ett överskådligt sätt planera och dokumentera eget programmeringsarbete
• läsa och förstå UML-klassdiagram• redogöra för några vanliga designmönster samt känna
igen situationer där de bör användas• utveckla objektorienterade program i Java• använda Javas biblioteksklasser och ramverk.
5
Kursupplägg
• Föreläsningar(14+8) x 1h (45 min)tar upp teori, principer, terminologi
• Övningar(8+6) x 2htar upp Javasyntax, praktiska exempel
• Labbar(7+5) x 2h x 2 grupper (+ stor del egen tid)Mindre objektorienterade programmeringsuppgifterEtt lite större projekt
6
Labbar
• 5 labbar för betyg E eller C, en extra labb för A• Labbarbetet utförs parvis, båda ansvarar för resultatet• Labbtid ca 2x2 h per vecka, för handledning & redovisning• Eget arbete troligtvis ca 10 h per vecka• Utgör det största kursmomentet, sett till nedlagd tid• Varje labb redovisad i tid ger 1 bonuspoäng på E-delen på
tentan, maximalt 5 bonuspoäng, giltiga till nästa kursomgång (dvs för en tenta + omtenta).
• (Frivilligt) system med peer assistance – efter varje avklarad labb får man hjälpa en annan grupp med samma labb.
7
Labbar
• Introduktionslabb• Knappar och Applets• XML• Simulering, Grafik• Designmönster• Webbläsare (A-labb)
8
Projektuppgift
• IM, skickar meddelanden mellan datorer• En lite större labbuppgift, egen planering• Basuppgift för E, välj till extrauppgifter för C eller A• Labbarbetet utförs parvis, båda ansvarar för resultatet• Labbtid ca 2 h per vecka, för handledning • Först redovisas struktur, kan ge 1 bonuspoäng på tentan
om godkänt före 2:a februari• kod + funktionalitet redovisas för lärare senast 9 mars (1
bonusp.)
9
Hederskodex
Regel 1: Alla ansvarar vid arbete i grupp
Vid grupparbete har alla i gruppen ett gemensamt ansvar för arbetet.
Många uppgifter görs i grupper om två eller fler studenter.Vid arbete i grupp är samarbete inom gruppen naturligtvis tillåtet. Varje gruppmedlem ska bidra till arbetet på ett rättvist sätt. Alla gruppmedlemmar ska, var för sig, kunna redogöra för hela uppgiften och hela lösningen.
10
Hederskodex
Regel 2: Redovisa ärligt hjälp som erhållits och källor som använts
Om det finns delar av lösningen som studenten inte gjort själv, så måste studenten göra examinerande lärare uppmärksam på detta.
I många sammanhang är det naturligt att använda sådant andra har gjort. Vid programmeringsuppgifter kan det vara naturligt att använda färdiga exempel som finns i kurslitteraturen eller som kursledningen tillhandahållit. Detta ska tydligt redovisas, till exempel i form av kommentarer i koden. När man skriver rapporter/uppsatser är det naturligt att använda olika typer av källor och dessa ska då redovisas i form av referenser och en källförteckning (direkta citat måste explicit anges). Den som utnyttjar en idé som härstammar från en annan person ska tydligt redovisa varifrån idén kommer. Detta gäller även idéer som förmedlats muntligt, exempelvis vid diskussion med andra studenter.När man kör fast på en (programmerings-)uppgift kan man behöva be en handledare eller en kamrat om hjälp med felsökning eller tips. Det är tillåtet, men hjälpen ska tydligt redovisas, till exempel i form av kommentarer i koden eller i labbrapporten om det gäller mer än någon enstaka kodrad eller mening. Den som söker hjälp med att lösa sin uppgift ska göra det i syftet att öka sin förståelse, inte i syftet att snabbt och enkelt klara av uppgiften.Tanken är naturligtvis inte att studenterna ska leva i ett vakuum och inte få diskutera sina uppgifter med sina kamrater. Diskussioner kamrater emellan uppmuntras, men efter diskussionen ska var och en göra sin egen lösning.En student som, enligt examinerande lärares bedömning, gjort alltför liten del av lösningen själv har inte presterat tillräckligt för att kunna godkännas på det aktuella kursmomentet
11
Hederskodex
Regel 3: Kopiera inte från andras lösningar
Varje student ska skriva sin egen text (egen programkod).
Kopiering av text (eller programkod) från andras lösningar är förbjuden oberoende av källa. Kopiering av text (eller programkod) är inte tillåten även om texten (eller programkoden) skrivs om så att ytstrukturen är olika men innehållet är detsamma. I vissa kurser används ett program som beräknar likheten mellan olika lösningar till samma uppgift.
12
Hederskodex
Regel 4: Var beredd att redogöra för hela lösningen
Varje student ska vid muntlig examination kunna redogöra för hela uppgiften.
Varje student ska vid muntlig examination kunna redogöra för hela uppgiften och hela lösningen (även de delar som studenten eller gruppen inte gjort själv) det gäller alltså att vara påläst vid redovisningen.
13
Hederskodex
Regel 5: Hantera närvarolistor korrekt
Obligatorisk närvaro kontrolleras med t.ex. med närvarolistor.
Vid vissa kursmoment, till exempel muntliga projektredovisningar, förekommer obligatorisk närvaro. Denna kan kontrolleras via närvarolistor eller på annat sätt. Det är inte tillåtet att försöka få det att framstå som om en person närvarat fast han/hon inte gjort det (till exempel genom att skriva upp inte bara sitt eget utan även en kamrats namn på närvarolistan).
14
Övningar
• Ger praktiska demonstrationer i Javaprogrammering• Ger konkreta exempel på UML-diagram• Möjlighet att ställa frågor av praktisk natur• Kommer att gå igenom moment som sedan kommer på
labbarna• Två övningsgrupper, leds av Christian & Henrik
15
Examination
• Lab1 (2hp)– 5 labbar som görs antingen till E- eller C-nivå– Labbar gjorda i tid ger bonuspoäng till tentan– 6:e labb för A, tillsammans med 5 C-labbar
• Ten1 (2hp)– Tenta, med en E-del som kräver hög andel rätta svar,
samt problemdel för högre betyg (13/3 2012)
• Proj1 (2hp)– Självständigare programmeringsuppgift,
löst grunduppgift ger E, extrauppgifter för högre betyg
16
Betygskriterium
Javaprogrammering:
• E: Att kunna grundläggande syntax, att läsa, förstå och modifiera befintlig Javakod, samt att skriva program enligt givna instruktioner
• C: Att förstå när man bör använda vilka konstruktioner, att kunna utöka funktionalitet i befintliga program och ha en viss överblick över befintliga bibliotek
• A: Att självständigt kunna skriva program utifrån en kravspec, följa programmeringerings- och dokumenteringskonventioner väl och ha en god överblick över befintliga bibliotek.
17
Betygskriterium
Objektorientering:
• E: Känna till och kunna tillämpa vanliga designmönster, känna till grundläggande OO-begrepp, kunna läsa UML
• C: Kunna välja lämpliga designmönster för ett visst problem, förstå mer avancerade OO-begrepp och kunna dokumentera programmeringsprojekt mha UML,
• A: Identifiera styrkor och svagheter hos olika designmönster, kunna tillämpa avancerade OO-begrepp i egen programutveckling och kunna planera egna programmeringsprojekt med god struktur
18
Betyg
Betygen på varje delmoment kan ge A, C eller E. Slutbetyget sätts som ett medelbetyg. Medlet beräknas genom att E ges värdet 1, C ges värdet 3 och A ges värdet 5. Medelvärdet avrundas till heltal, och ett avrundat medel på 1 ger betyg E, 2 ger betyg D, 3 ger C, 4 ger B och 5 ger A. Se följande tabell:
Delbetyg Slutbetyg
A,A,A AA,A,C BA,C,C B
A,A,E BA,C,E C
C,C,C CA,E,E D
C,C,E DC,E,E D
E,E,E E
19
Kurslitteratur
• Labbanvisningar: Alla finns (eller kommer att finnas) på kurshemsidan under Laborationer
• Föreläsningar och övningar: I princip allt material från undervisningen kommer att göras tillgängligt på kurshemsidan.
• Webben: Utöver föreläsningar och labbanvisningar kommer varje avsnitt att förses med länkar till relevant läsning på nätet. I första hand kommer vi att hänvisa till Oracles Java Turorial, samt Java SE 7 API. För den som kommer ihåg Python från grundkursen och vill ha Java förklarat ur ett pythonperspektiv föreslås Java for Pyhton Programmers av Bradley Miller.
20
Kurslitteratur (frivillig lista)
• Eric Braude: Software Design, Wiley, 2003. Behandlar traditionella utvecklingsmetoder och designmönster. Exemplen är i Java.
• Robert C Martin: Agile software development, Prentice Hall, 2002. ISBN 0-13-597444-5. Rolig bok som är helt fokuserad på utvecklingsmetoder besläktade med extremprogrammering (XP). Använder omväxlande Java och C++ i exemplen.
• Deitel, Deitel, Santry: Advanced Java2 Platform, Prentice Hall, 2002, 2.075 kg. ISBN 0-13-089560-1. Extremt innehållsrik bok men inte så lättläst.
• Jan Skansholm: Java Direkt med Swing, Studentlitteratur, 2010, ISBN 9789144060743. En lärobok i Java som fungerar för nybörjare men går mycket längre än nybörjarböcker brukar göra. Innehåller väldigt lite om utvecklingsmetodik och designmönster men tillräckligt mycket (faktiskt mer än vad som krävs) om Swing-grafik och nätprogrammering för kursens behov vilket Braudes och Martins böcker inte gör. Java direkt (utan swing) kom redan 1998 och den senaste reviderade versionen kom alltså förra året.
• Xiaoping Jia: Object Oriented Software Development Using Java, Addison Wesley 2003, ISBN 0-321-21073-5. Boken börjar med en bra genomgång av grund- Java för den som redan kan programmera. En översikt över utvecklingsmetodiker ges. UML-klassdiagram används genom hela boken, enstaka exempel på andra UML-diagram ges. Designmönster, refactoring, trådar och klient-server- programmering behandlas också.
• Joshua Bloch: Effective Java, Prentice Hall, 2:a upplagan 2008, ISBN 0-321-356683. En hyllad bok som främst vänder sig till dem som kan Java bra och vill förfina sin teknik.
21
Java
Skapades 1995 på Sun Microsystems, ägs och utvecklas numera av Oracle
Javaprogram körs i en virtuell maskin som medgör att samma program kan köras på många olika platformar. Detta innebär att prestanda oftast är sämre än för maskinspecifik kod, men att utvecklingskostnaderna blir lägre.
Java används idag främst i applikationer med grafiska användargränsnitt, som ska kunna köras på många olika platformar. Exempel:
Matlabs grafiska gränsnitt 3D-kartan på hitta.se Menysystemet på Blue Ray-skivor Program till mobiltelefoner
22
Java
Varför lära sig Java?
Ett av världens vanligare programmeringsspråk, väl understött och dokumenterat
Man kan fort skriva program som kan köras “var som helst”
Relativt enkelt språk för att lära sig objektorientering, tillräckligt likt t.ex C++ eller C# för att underlätta inlärning av dessa.
23
Motiverat av allt mer komplexa programmeringsprojekt.
Programkomponenter lagras i “objekt”. Hur dessa ser ut inuti döljs från resten av programmet. Man kan interagera med objekt med hjälp av publika metoder.
Underlättar modulär design, och utbytbara programkomponenter.
Exempel: Ett objekt kan inehålla en ljudsnutt, och som programmerare behöver man inte veta vilket format den är lagrad i för att kunna plocka ut den som mp3:a, utan man anropar bara t.ex
låtMP3 = minLåt.convertToMP3(bitrate);
Objektorientering
24
Slutligen
• Titta på kurshemsidan:www.csc.kth.se/utbildning/kth/kurser/DD1346/oopk11/
• Titta på KTH Social:https://www.kth.se/social/course/DD1346/