Praktikum i programmering Föreläsning 1 Lärare: Fredrik Degerlund E post: fredrik.degerlund@abo.fi Rum A5051 (denna korridor)
Kursens innehåll Att lära sig att programmera moduler som ingår i ett större programmeringsprojekt. Ni behöver inte skriva hela programmet. Ett programskelett kommer att delas ut. Era uppgifter går bl.a. ut på att sätta kött på skelettet, d.v.s. att skriva/komplettera moduler. Ni kommer också att få leta efter och korrigera buggar i programmet.
Undervisningsformer Några enstaka föreläsningar Handledning Vi kommer överens om när/var/hur, hur mycket. Inlämningsuppgifter Ingen tentamen Inlämningsuppgifterna är desto viktigare...
Parprogrammering Två personer programmerar tillsammans. Arbetar på samma kodavsnitt. Ena skriver (kallas driver ), andra observerar (kallas observer ). Programmerarna ska ofta byta roll. Ungefär varje halvtimme.
Parprogrammering (forts.) Varför ska den ena sitta vid sidan om? Övervakar det som skrivs. Påpekar om något blir fel. Har koll på den allmänna strukturen. Sätter press på den som skriver! Gör att drivern anstränger sig mera och förhoppningsvis skriver bättre kod. Varför inte bara programmera enskilt? Med parprog. vill man uppnå kod av bättre kvalitet!
Parprogrammering (forts. 2) Skulle man inte få mera kod om man programmerade enskilt? Motfråga: Nöjer man sig med mera kod om kvaliteten inte håller? Dessutom: Man kan spara tid på buggsökning om koden från början har god kvalitet. Båda lär sig att hitta i koden och vet hur den fungerar.
Programmeringsspråk/ miljö Programmeringsspråk: Java Verktyg: Eclipse Utvecklingsmiljö för programmering i bl.a. Java (men även andra programmeringsspråk) Innehåller en Javakompilator Innehåller en editor där koden skrivs/redigeras Bland annat syntax highlighting och kompletteringsförslag. Hantering av och navigering i projekt med flera filer.
Objektorienterad programmering Endast mycket ytlig genomgång för att kunna förstår/hantera projektet. Mera detaljer ges i andra kurser. Programmet struktureras i olika klasser som följer den logiska innebörden av koden. Exempelvis en cirkel kan modelleras som en klass. Exempelvis en variabel som representerar radien. Exempelvis en metod som som räknar ut diametern på basen en radien.
Klasser och objekt Ett objekt är en instans (ett exemplar ) av en klass. En klass Cirkel kan säga helt allmänt att en cirkel har en radie, och den innehåller en metod för att räkna ut diametern. Ett objekt mincirkel kan ha ett bestämt värde på radien; exempelvis 5. Eftersom mincirkel är en Cirkel (ett exemplar/en instans av klassen Cirkel) så kan man även räkna ut diametern på mincirkel.
En cirkelklass class Cirkel { public int radie; public int räknadiameter() { return radie*2; } Cirkel(int givenradie) { radie = givenradie; } } Constructor Använd för initialisering.
Att göra en instans av Cirkel class MittProgram { public static Cirkel mincirkel; public static int resultat; public static void main(string[] args) { mincirkel = new Cirkel(5); resultat = mincirkel.räknadiameter(); System.out.println(resultat); } }
Kursens programmeringsprojekt Ett textbaserat äventyrsspel. Kommandon via tangentbordet fungerar som input till spelet. Spelet berättar vad som händer genom text på skärmen. Innehåller rum mellan vilka spelaren förflyttar sig. Innehåller föremål som kan plockas upp / användas.
Spelets tolk En central modul är spelets tolk (Tolk.java) Ska tolka det som skrivs på tangentbordet och kallar på basen av detta kalla på rätt metoder i programkoden. Exempel på kommandon: norr, söder, väster och öster. tag stenen och använd stenen. lista (vilket ska lista de saker man bär på). o.s.v.
Övriga moduler (klasser) En enkel modul (Spel.java) som startar spelet. En modul (Värld.java) som representerar världen. Varje rum är en egen modul. Varje föremål är en egen modul. En modul (Spelare.java)som representerar spelaren. o.s.v.
Resten av denna föreläsning Demonstration av Eclipse. Demonstration av programskelettet. Nästa föreläsning Design by Contract Dokumentation o.s.v.