24
1 Objektorienterad Programkonstruktion Föreläsning 1 - kursintroduktion DD1346 – oopk11 Period 2 & 3 Christian Smith [email protected]

Objektorienterad Programkonstruktion - csc.kth.se · “Kursen behandlar principer för objektorienterad programmering, objektorienterad programmering i Java, objektorienterad

  • Upload
    ngocong

  • View
    225

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Objektorienterad Programkonstruktion - csc.kth.se · “Kursen behandlar principer för objektorienterad programmering, objektorienterad programmering i Java, objektorienterad

1

Objektorienterad Programkonstruktion

Föreläsning 1 - kursintroduktion

DD1346 – oopk11Period 2 & 3

Christian Smith

[email protected]

Page 2: Objektorienterad Programkonstruktion - csc.kth.se · “Kursen behandlar principer för objektorienterad programmering, objektorienterad programmering i Java, objektorienterad

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

Page 3: Objektorienterad Programkonstruktion - csc.kth.se · “Kursen behandlar principer för objektorienterad programmering, objektorienterad programmering i Java, objektorienterad

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.”

Page 4: Objektorienterad Programkonstruktion - csc.kth.se · “Kursen behandlar principer för objektorienterad programmering, objektorienterad programmering i Java, objektorienterad

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.

Page 5: Objektorienterad Programkonstruktion - csc.kth.se · “Kursen behandlar principer för objektorienterad programmering, objektorienterad programmering i Java, objektorienterad

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

Page 6: Objektorienterad Programkonstruktion - csc.kth.se · “Kursen behandlar principer för objektorienterad programmering, objektorienterad programmering i Java, objektorienterad

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.

Page 7: Objektorienterad Programkonstruktion - csc.kth.se · “Kursen behandlar principer för objektorienterad programmering, objektorienterad programmering i Java, objektorienterad

7

Labbar

• Introduktionslabb• Knappar och Applets• XML• Simulering, Grafik• Designmönster• Webbläsare (A-labb)

Page 8: Objektorienterad Programkonstruktion - csc.kth.se · “Kursen behandlar principer för objektorienterad programmering, objektorienterad programmering i Java, objektorienterad

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.)

Page 9: Objektorienterad Programkonstruktion - csc.kth.se · “Kursen behandlar principer för objektorienterad programmering, objektorienterad programmering i Java, objektorienterad

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.

Page 10: Objektorienterad Programkonstruktion - csc.kth.se · “Kursen behandlar principer för objektorienterad programmering, objektorienterad programmering i Java, objektorienterad

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

Page 11: Objektorienterad Programkonstruktion - csc.kth.se · “Kursen behandlar principer för objektorienterad programmering, objektorienterad programmering i Java, objektorienterad

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.

Page 12: Objektorienterad Programkonstruktion - csc.kth.se · “Kursen behandlar principer för objektorienterad programmering, objektorienterad programmering i Java, objektorienterad

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.

Page 13: Objektorienterad Programkonstruktion - csc.kth.se · “Kursen behandlar principer för objektorienterad programmering, objektorienterad programmering i Java, objektorienterad

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).

Page 14: Objektorienterad Programkonstruktion - csc.kth.se · “Kursen behandlar principer för objektorienterad programmering, objektorienterad programmering i Java, objektorienterad

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

Page 15: Objektorienterad Programkonstruktion - csc.kth.se · “Kursen behandlar principer för objektorienterad programmering, objektorienterad programmering i Java, objektorienterad

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

Page 16: Objektorienterad Programkonstruktion - csc.kth.se · “Kursen behandlar principer för objektorienterad programmering, objektorienterad programmering i Java, objektorienterad

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.

Page 17: Objektorienterad Programkonstruktion - csc.kth.se · “Kursen behandlar principer för objektorienterad programmering, objektorienterad programmering i Java, objektorienterad

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

Page 18: Objektorienterad Programkonstruktion - csc.kth.se · “Kursen behandlar principer för objektorienterad programmering, objektorienterad programmering i Java, objektorienterad

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

Page 19: Objektorienterad Programkonstruktion - csc.kth.se · “Kursen behandlar principer för objektorienterad programmering, objektorienterad programmering i Java, objektorienterad

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.

Page 20: Objektorienterad Programkonstruktion - csc.kth.se · “Kursen behandlar principer för objektorienterad programmering, objektorienterad programmering i Java, objektorienterad

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.

Page 21: Objektorienterad Programkonstruktion - csc.kth.se · “Kursen behandlar principer för objektorienterad programmering, objektorienterad programmering i Java, objektorienterad

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

Page 22: Objektorienterad Programkonstruktion - csc.kth.se · “Kursen behandlar principer för objektorienterad programmering, objektorienterad programmering i Java, objektorienterad

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.

Page 23: Objektorienterad Programkonstruktion - csc.kth.se · “Kursen behandlar principer för objektorienterad programmering, objektorienterad programmering i Java, objektorienterad

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

Page 24: Objektorienterad Programkonstruktion - csc.kth.se · “Kursen behandlar principer för objektorienterad programmering, objektorienterad programmering i Java, objektorienterad

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/