Göm menyn

TDDC77 Objektorienterad programmering

Information

Kursen blandar flera teman i de olika delmomenten. För att underlätta definitionen av kursens mål, har de här grupperats i flera teman - det vill säga flera kunskapsområden.

IDAs datorsystem

IDAs datorsystem kommer att användas i många kurser, det är därför viktigt att kunna hantera dem ordentligt. Efter avslutad kurs ska du:
  • Känna till vilka datorsystem som finns tillgängliga och hur dessa används på ett effektivt sätt
  • Kunna använda terminalen för filoperationer
  • Kunna använda emacs
  • Kunna skriva ut filer
  • Vara förtrogen med IDAs lokaler och de bestämmelser som gäller i dem

Datorspråk

Man har skapat en mycket stor mängd av olika slags språk för att kommunicera med dator eller för kommunikation mellan datorer, såsom programspråk, kommandospråk, beskrivningsspråk, frågespråk, mm. Kännetecknande för dessa språk är att de har en textuell representation. Det finns mycket gemensamt för dessa språk, t.ex då det gäller vilka komponenter man brukar finna i ett språk, sättet att definiera språkets syntax och semantik. Efter temat skall du:

  • ha grundläggande kunskaper om hur datorspråk är uppbyggda och hur man definierar deras syntax och semantik.

Programmeringsspråk, problemlösning

Med hjälp av programmeringsspråken beskriver vi i detalj hur olika typer av problem skall lösas med hjälp av dator. Det finns hundratals programmeringsspråk, där kanske ett 10-20-tal språk idag används av majoriteten av företag. Det finns två huvudmodeller för att exekvera program, antingen genom kompilering eller interpretering.

Efter temat skall du:
  • ha kunskaper om begrepp och komponenter som vi finner i olika programmeringsspråk, såsom datatyper, variabler, konstanter, uttryck, satser, styrstrukturer, block, underprogram, parametrar, klasser, moduler, mm
  • kunna ta problem och bryta ned dessa till enklare problem
  • kunna formulera algoritmer och överföra dessa till program

Programspråket Java och dess programmeringsmiljö

Java är ett objektorienterat programmeringsspråk och introducerades av Sun Microsystems 1995. Sun blev år 2010 uppköpta av Oracle. Språket i sig är litet och relativt enkelt medan dess omgivning, i form av standardbibliotek (Java API), är mycket omfattande. Java har på endast några få år kommit att bli mycket använt och är enligt TIOBE Programming Community Index världens populäraste programmeringsspråk (senast kollat augusti 2013).

Efter temat skall du:
  • kunna editera, kompilera och exekvera program skrivna i Java.
  • ha kunskaper om språkets grundläggande syntax- och semantik, samt hur man textuellt utformar Javaprogram för att erhålla läsbara program.
  • ha grundläggande kunskaper om Javas imperativa delar, såsom klassvariabel och klassmetod/funktion.
  • kunna de primitiva datatyperna och hur man utifrån dessa kan deklarera variabler och konstanter, samt konstruera egendefinierade datatyper och datastrukturer. Du ska kunna välja lämplig datarepresentation med tanke på vilket slags information som ska hanteras.
  • kunna beräknande och programstyrande konstruktioner, som operatorer och uttryck, villkorliga satser och repetitionssatser och metoder, och kunna välja lämplig konstruktion för att realisera en viss form av beräkning eller programstyrning. Du ska veta hur anrop av och retur från metoder sker och hur värden kan överföras till och från metoder via parametrar eller via returvärdet.
  • kunna göra enklare in- och utmatning.
  • ha en översiktlig kunskap objektorienterade begrepp, såsom klass, metod och instansiering.
  • kunna använda undantagshantering (exceptions).
  • ha grundläggande kunskap om Javas klassbibliotek (= API = Application Programming Interface).
  • utifrån kända beräknande och programstyrande konstruktioner kunna välja lämplig konstruktion för att realisera en viss form av beräkning eller programstyrning.
  • veta hur anrop av och retur från metoder sker och hur värden kan överföras till och från metoder via parametrar eller från en metod via dess returvärde.
  • veta vad överlagring av metoder innebär och vilka regler som styr vad som är tillåtet vid överlagring.
  • kunna klassbegreppet och relaterade begrepp, såsom klass- och instans-variabel/metod, konstruktor, olika former av åtkomstregler för klassmedlemmar (publik, skyddad, privat, paket), arv, abstrakt klass, åsidosättning, skuggning.
  • veta vad som bestämmer en medlems (variabel, metods) synlighet och hur medlemmar kan refereras.
  • veta hur en variabel eller ett objekts livslängd bestäms.
  • ha grundläggande kunskaper om, och kunna använda paket, gränssnitt (interface), undantag (exception).
  • vara orienterad om Javas klassbibliotek (API), kunna hitta använda den funktionalitet som detta erbjuder.

Det övergripande målet är att lära sig programmering som ett verktyg för problemlösning. Programmering är en aktivitet som kräver både kreativitet och problemlösningsförmåga men också goda kunskaper i det programspråk man använder och om den programmeringsmiljö man arbetar i. Det är också viktigt, för att producera programvara av god kvalitet, att man följer de konventioner som vanligtvis finns inom ett programmeringsparadigm (t.ex. det imperativa eller objektorienterade) eller programspråk.

Delmål är att du ska fördjupa dina kunskaper om programspråket Java och dess klassbibliotek, att du ska lära dig enkel objektorienterad programutvecklingmetodik, och att du ska lära dig testa och felsöka program.

Kommunikation - muntligt och skriftligt

I projektet kommer ni att göra en muntlig redovisning/demonstration inför er assistent. Laboratinerna under HT2 kommer att vävas in i basgruppsarbetet.

Efter temat skall du:
  • ha tränat på att programmera i grupp
  • ha en förmåga att diskutera kring egna och andras program, både i grupp och individuellt
  • tränat på muntlig redovisning enskilt och i grupp

Systemutveckling

Stora programvarusystem kan omfatta flera hundra tusen eller rent av miljoner rader källkod (Windows XP ligger i storleksordningen 40 miljoner rader kod). Programkoden hanteras av många personer, under många år och under olika utvecklingsfaser. Att bemästra denna komplexitet innebär stora svårigheter. Det erfor man redan under 60-talet genom flera helt misslyckade programmeringsprojekt. Och i slutet av decenniet myntades begreppet programvarukrisen, vilket avsåg programvarusystemens alltmer ökande komplexitet och därav följande problem med utveckling och inte minst underhåll. Även till synes enkla problem kan uppvisa en påtaglig komplexitet som man måste hantera. Lösningen för att hantera problematiken inom programutveckling har varit användningen av programutvecklingsmetoder av olika slag.

Objektorienterad programutvecklingsmetodik är en relativt ny idé, även om inslag i den har existerat länge. Förespråkarna av objektorienterade metoder menar att dessa har vissa fördelar jämfört med andra metoder, bl.a. att bättre stödja ett naturligt tankesätt, att bättre hantera komplexitet, att stödja en enhetlig filosofi, terminologi och notation genom alla utvecklingsfaser, och att ge system som är mer förändringsbara.

Efter temat ska du:
  • ha grundläggande kunskaper om objektorienterad problemlösning (analys och design) och sedan kunna implementera ett program i ett objektorienterat språk.

Datastrukturer och algoritmer

Program lagrar vanligtvis data som ska bearbetas i interna datastrukturer. Sådana utformas utifrån olika kriterier, t.ex. vilket slags information som ska hanteras, hur programmet erhåller indata och hur utdata ska avges, samt vilka operationer som ska utföras på data under bearbetningens gång. I många fall är datastrukturer sökstrukturer och följaktligen är sökning en vanlig operation på datastrukturer. En annan form av bearbetning som förekommer i olika sammanhang är sortering. Med årens lopp har generellt användbara datastrukturer och algoritmer utvecklats och dessa utgör en viktig resurs för programmerare, dels att återanvända, dels som idé- och inspirationskälla. De bör ingå i varje programmerares verktygslåda och finns ofta tillgängliga i programbibliotek eller på annat sätt.

Efter temat ska du:
  • känna till datastrukturer som lista, stack, kö. Du ska också känna till de grundläggande operationer som används på dessa datastrukturer.
  • veta vad begreppet abstrakt datatyp innebär.
  • känna till de standardstrukturer som finns tillgängliga i Javas API såsom Set, Map och List.

En mer omfattande behandling av datastrukturer och algoritmer, ur en mer principiell och analytisk synvinkel görs i kursen Algoritmer och optimering senare under termin 3.


Sidansvarig: Ahmed Rezine
Senast uppdaterad: 2014-08-28