EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Om att lära sig programmera. Föreläsning 1-2 Innehåll.

Relevanta dokument
EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

Föreläsning 5-6 Innehåll

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Föreläsning 1 & 2 INTRODUKTION

Föreläsning 1 & 2 INTRODUKTION

Föreläsning 1-2 innehåll

Föreläsning 9-10 Innehåll

Föreläsning 13 Innehåll

Föreläsning 5&6 LOGISKA VARIABLER; IMPLEMENTERA KLASSER; MER ALGORITMER

Exempel på program med objekt Klass med main-metod. Föreläsning 3-4 Innehåll. Övning Viktiga begrepp

Föreläsning 3-4 Innehåll

Föreläsning REPETITION & EXTENTA

EDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

F4. programmeringsteknik och Matlab

Tentamen OOP

"if"-satsen. Inledande programmering med C# (1DV402)

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel

Objektorienterad Programmering (TDDC77)

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

1 Egna klasser. 1.1 En punkt-klass

Datastrukturer. Föreläsning Innehåll. Program med vektor Exempel. Deklarera vektorer

Programmering för språkteknologer I, VT2012. Rum

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Programexempel: tärningsspel. Programexempel: tärningsspel Kasta tärning tills etta. Klassen Die Specifikation. Slumptalsgenerator Klassen Random

Föreläsning 7-8 Innehåll

Objektorienterad programmering (OOP) Föreläsning 15 & 16. Klasser för olika slags fordon. Klasser och objekt

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ

Java, klasser, objekt (Skansholm: Kapitel 2)

Laboration 1. "kompilera"-ikonen "exekvera"-ikonen

Objekt som argument. Föreläsning 7-8 Innehåll. Hur komma åt den andra kvadratens attribut? Anropa metod på objektet självt

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.

Objektorienterad programmering i Java

Objekt-orientering. Java är ett objekt-orienterat programmeringsspråk

Programstruktur och terminologi. Programmet producerar följande utskrift i terminalfönstret: Ett Javaprogram består av en eller flera klasser

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

Föreläsning 2, vecka 8: Repetition

JAVAUTVECKLING LEKTION 4

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Lektion Java Grunder. Javas historia. Programmeringsspråket Java. Skillnaderna mellan Java och C++ JVM (Javas Virtuella Maskin)

public och private Obs: private inte skyddar mot access från andra objekt i samma klass.

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

Klassdeklaration. Metoddeklaration. Parameteröverföring

Grundläggande programmering

Del A (obligatorisk för alla)

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Grundläggande programmering med C# 7,5 högskolepoäng

OOP Objekt-orienterad programmering

Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private

JAVAUTVECKLING LEKTION 7

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

5. En metod som anropar sig själv a) får inte förekomma i Java-program b) kallas destruktiv c) kallas iterativ d) kallas rekursiv 6. Vilka värden har

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

Objektorienterad programmering i Java

Laboration 1. "kompilera"-ikonen "exekvera"-ikonen

Programmering A. Johan Eliasson

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

Det är principer och idéer som är viktiga. Skriv så att du övertygar examinatorn om att du har förstått dessa även om detaljer kan vara felaktiga.

Objektorienterad programmering i Java

Programmeringsteknik och Matlab. Dagens program. Viktiga datum. Repetitionsexempel. Repetition av if/else, for, while och Scanner

Chapter 4: Writing Classes/ Att skriva egna klasser.

2 Eclipse en handledning

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Föreläsning 2. Täcker material från lektion 1, 2, 3 och 4:

Dagens program. Programmeringsteknik och Matlab. Viktiga datum. Ett första exempel. Programmall, vad behöver vi i ett javaprogram?

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Här beskrivs Eclipse, den programutvecklingsmiljö som utnyttjas i programmeringskurserna. Mera information finns på:

Kort om klasser och objekt En introduktion till GUI-programmering i Java

Föreläsning 2 sept 05 (Onsdag v 36). DD Chapter 2.

Eclipse en handledning

2D1342 Programkonstruktion för F1, ht 2006

Övningar Dag 2 En första klass

Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer

Objektorienterad Programmering (TDDC77)

Lab5 för prgmedcl04 Grafik

Tentamen , Introduktion till Java, dtaa98, dtea53

Redovisning av inlämningsuppgifter

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

1 Repetition av viktiga begrepp inom objektorienterad programmering

Algoritmexempel. Föreläsning 5-7 Innehåll. Summering Mönster. Summering Exempel: alternerande harmoniska serien

Föreläsning 6: Metoder och fält (arrays)

[] Arrayer = Indexerad variabel

Transkript:

EDAA20 Programmering och databaser Mål komprimerat se kursplanen för detaljer Läsperiod 1 7.5 hp anna.axelsson@cs.lth.se http://cs.lth.se/edaa20 Mer information finns på kursens webbsida samt på det utdelade kursprogrammet. Vad du ska lära dig: Programmering Lösa problem med hjälp av dator Grundläggande programmering Grundläggande objektorientering och programspråket Java Databaser Lagra data i relationsdatabaser Använda SQL för att hämta data från databaser EDAA20 (F1-2 programmering) HT 2016 1 / 54 EDAA20 (F1-2 programmering) HT 2016 2 / 54 Om att lära sig programmera Föreläsning 1-2 Innehåll Programmering är kul! Programmering tar tid (fundera ut lösningar, hitta fel ). Man lär sig programmera genom att träna. Skriv program, testa, hitta på egna program, experimentera Men inte bara - glöm inte bort teorin. Starten är viktig. Häng med från början! Det man lär sig kommer att byggas på och användas genom hela kursen. De olika undervisningsmomenten (övningar, labbar, föreläsningar ) finns av en anledning och kompletterar varandra. Introduktion till programmering Introduktion vad är programmering? Praktisk information om kursen Skriva små program i programspråket Java Skriva program som använder färdiga klasser Undervisningsmoment: föreläsning 1-2 övning 1 laboration 1-2 Avsnitt i läroboken: 1-3.2, 4 EDAA20 (F1-2 programmering) HT 2016 3 / 54 EDAA20 (F1-2 programmering) HT 2016 4 / 54

Algoritm Exempel på en algoritm Definition En följd av instruktioner som beskriver hur man ska göra för att lösa ett problem. Exempel: matrecept program Problem: Beräkna summan av talen 12.5 och 0.7 och skriv ut summan. Algoritm: Tal nr 1 är 12.5 Tal nr 2 är 0.7 Summan = tal nr 1 + tal nr 2 Skriv ut summan EDAA20 (F1-2 programmering) HT 2016 5 / 54 EDAA20 (F1-2 programmering) HT 2016 6 / 54 Exempel på programkod Program Problem: Beräkna summan av talen 12.5 och 0.7 och skriv ut summan. Programkod: double nbr1 = 12.5; double nbr2 = 0.7; double sum = nbr1 + nbr2; System.out.println("Summan av talen är " + sum); Definition Stegvisa instruktioner till datorn som beskriver hur ett problem ska lösas. I instruktionerna manipuleras information (data) Instruktionerna skrivs i ett programspråk, t ex Java. EDAA20 (F1-2 programmering) HT 2016 7 / 54 EDAA20 (F1-2 programmering) HT 2016 8 / 54

Exempel på ett Javaprogram Editera - kompilera - exekvera programmets namn public class Calculator { public static void main(string[] args) { double nbr1 = 12.5; double nbr2 = 0.7; double sum = nbr1 + nbr2; System.out.println("Summan av talen är " + sum); satser som utförs vid exekveringen Detta är ett litet, men fullständigt program, som beräknar summan av två tal och skriver ut det i konsolfönstret datorns skärm. Editera Skriv in programkoden och spara i en fil vars namn har tillägget.java. Kompilera Programkoden kontrolleras. Om koden är korrekt (dvs. inte bryter mot språkets grammatik) översätts den till bytekod. Bytekoden lagras i en fil vars namn har tillägget.class. Exekvera Programmet körs, dvs. bytekodsinstruktionerna i programmet utförs. EDAA20 (F1-2 programmering) HT 2016 9 / 54 EDAA20 (F1-2 programmering) HT 2016 10 / 54 Editera - kompilera - exekvera Objektorientering Editera Större datorprogram måste delas upp i hanterliga delar. Man kan inte hålla tusentals programrader i huvudet samtidigt! Calculator.java Kompilera Calculator.class Exekvera Rätta kompileringsfel Rätta exekveringsfel, logiska fel, ändra Objektorientering är ett sätt att göra detta. Man utgår från de data programmet ska arbeta med, alltså de verkliga saker (objekt) som finns i problemet. I programmet skriver man klasser som innehåller programkod som beskriver dessa objekt. Objektorientering har varit populärt sedan slutet av 80-talet. Exempel på språk: Simula (1967), Smalltalk, C++, Java etc. EDAA20 (F1-2 programmering) HT 2016 11 / 54 EDAA20 (F1-2 programmering) HT 2016 12 / 54

Exempel på program med objekt Datorns delar public class DrawSquare { public static void main(string[] args) { SimpleWindow w = new SimpleWindow(600, 600, "Square"); Square sq = new Square(20, 10, 40); sq.draw(w); sq.move(30, 10); sq.draw(w); Vad händer när man kör programmet? Processor eller CPU (central processing unit) den enhet i datorn som utför instruktioner. Primärminne används för att lagra program och dess data när programmen används. Sekundärminne, t ex hårddisk där man lagrar program och data när de inte används. In- och utenheter, t ex skärm, tangentbord, mus för att kommunicera med människor. Kommunikationskanaler för att kommunicera med andra datorer eller apparater. EDAA20 (F1-2 programmering) HT 2016 13 / 54 EDAA20 (F1-2 programmering) HT 2016 14 / 54 Variabel Datatyper Variabler används för att lagra värden som programmet måste komma ihåg. Variablerna måste deklareras. Variabler har en datatyp och ett namn. Namnet representerar ett värde i minnet. Vi använder namnet istället för värdet. typ namn Exempel: double nbr1; nbr1 De data som behandlas i ett program är av olika typer, t.ex. heltal, reella tal, tecken, referenser Typ int double boolean char Referens (Klass) Kan innehålla heltal reellt tal (tal med decimaldel) logiska värden (true eller false) tecken referens till objekt EDAA20 (F1-2 programmering) HT 2016 15 / 54 EDAA20 (F1-2 programmering) HT 2016 16 / 54

Tilldelningssats Variabler i datorns minne Ientilldelningssatsgermanenvariabelettnyttvärde. Exempel: double nbr1 = 12.5; double nbr2 = 0.7; double sum = nbr1 + nbr2; variabel uttryck nbr1 nbr2 sum 12.5 0.7 13.2 Variablernas värden lagras i datorns primärminne. Minnet är uppdelat i olika minnesceller. Vid deklarationen av en variabel reserveras det plats för variabeln i minnet. Vid tilldelning läggs variabelns värde i motsvarande minnescell/er. nbr1 12.5 nbr2 0.7 sum 13.2 5200 5208 5216 Variabeln och uttrycket måste ha samma typ (några undantag finns) När en variabel används hämtas dess värde från minnet. EDAA20 (F1-2 programmering) HT 2016 17 / 54 EDAA20 (F1-2 programmering) HT 2016 18 / 54 Övning Tilldelningssatser Programmet Calculator Förbättrad version Vilka värden har variablerna när följande satser exekverats: int u, x, y, z; x = 10; y = 2 * x + 1; z = (y + x) + (y - x); x = x + 1; u x y z import java.util.scanner; public class Calculator { public static void main(string[] args) { System.out.println("Skriv två tal"); Scanner scan = new Scanner(System.in); double nbr1 = scan.nextdouble(); double nbr2 = scan.nextdouble(); double sum = nbr1 + nbr2; System.out.println("Summan av talen är " + sum); EDAA20 (F1-2 programmering) HT 2016 19 / 54 EDAA20 (F1-2 programmering) HT 2016 20 / 54

Inläsning från tangentbordet Import-sats Skapa först en Scanner-objekt som ska användas för att läsa från tangentbordet: Scanner scan = new Scanner(System.in); Med scan.nextdouble() läser man nästa tal (av typen double) som skrivs på tangentordet: nbr1 = scan.nextdouble(); nbr2 = scan.nextdouble(); Genom att skriva en import-sats först i filen talar vi om att vi kommer att använda en klass från ett klasspaket (en samling redan färdiga klasser). import java.util.scanner; I det här exemplet importeras klassen Scanner som används för inläsning från tangenbordet. EDAA20 (F1-2 programmering) HT 2016 21 / 54 EDAA20 (F1-2 programmering) HT 2016 22 / 54 Utskrift i konsolfönstret Alternativ if Exempel Utskrift av en teckensträng (omges av citationstecken): System.out.println("Skriv två tal"); Utskrift av en variabels värde (OBS! inga citationstecken): System.out.println(sum); Flera saker kan skrivas ut i samma println-sats (med + mellan). System.out.println("Summan av talen är " + sum); Scanner scan = new Scanner(System.in); double nbr1 = scan.nextdouble(); int nbr2 = scan.nextint(); if (nbr2!= 0) { System.out.println("Kvoten mellan talen är " + (nbr1 / nbr2)); else { System.out.println("Du försökte dividera med 0."); EDAA20 (F1-2 programmering) HT 2016 23 / 54 EDAA20 (F1-2 programmering) HT 2016 24 / 54

Alternativ if Mönster if (villkor) { satser; // utförs om villkoret är uppfyllt Övning if-sats Skriv satser för att läsa in ett heltal och sedan skriva ut om det inlästa talet är positivt, har värdet 0 eller är negativt. if (villkor) { satser; else { satser; // utförs om villkoret är uppfyllt // utförs annars if (villkor 1) { satser; // utförs om villkor 1 är uppfyllt else if (villkor 2) { satser; // utförs annars om villkor 2 är uppfyllt else { satser; // utförs annars EDAA20 (F1-2 programmering) HT 2016 25 / 54 Repetition ett bestämt antal gånger for Exempel EDAA20 (F1-2 programmering) HT 2016 26 / 54 Repetition ett bestämt antal gånger for Mönster Scanner scan = new Scanner(System.in); int sum = 0; for (int i = 1; i <= 5; i++) { sum = sum + scan.nextint(); System.out.println(sum); Utförs för i-värdena start, start+1, start+2,, slut. for (int i = start; i <= slut; i++) { satser; EDAA20 (F1-2 programmering) HT 2016 27 / 54 EDAA20 (F1-2 programmering) HT 2016 28 / 54

Övning for-sats Repetition ett okänt antal gånger while Exempel Skriv satser för att beräkna och skriva ut summan 1 + 2 + 3 + 4 + + 50 Skriv satser för att beräkna och skriva ut summan 2 + 4 + 6 + 8 + + 50 Scanner scan = new Scanner(System.in); int sum = 0; while (scan.hasnextint()) { sum = sum + scan.nextint(); System.out.println(sum); EDAA20 (F1-2 programmering) HT 2016 29 / 54 EDAA20 (F1-2 programmering) HT 2016 30 / 54 Repetition ett okänt antal gånger while Mönster Övning while-sats Skriv satser som läser heltal och summerar dem. En 0:a markerar att talen är slut. Summan ska skrivas ut. Ex: Indata: 23 1 11 7 0 ger utskriften 42. Utförs så länge ett villkor är uppfyllt: while (villkor) { satser; EDAA20 (F1-2 programmering) HT 2016 31 / 54 EDAA20 (F1-2 programmering) HT 2016 32 / 54

Exempel på program med objekt Repris Objekt Vi ska se närmare på vad som händer i detta program där vi skapar och använder objekt: public class DrawSquare { public static void main(string[] args) { SimpleWindow w = new SimpleWindow(600, 600, "Square"); Square sq = new Square(20, 10, 40); sq.draw(w); sq.move(30, 10); sq.draw(w); Objekt motsvarar verkliga eller tänkta saker. Ex: kvadrater, fönster, bankkonton, Ett objekt har attribut. Ex: En kvadrat har en sidlängd och ett läge, ett fönster har bredd och höjd, ett bankkonto har ett kontonummer och ett saldo, Man kan utföra metoder på objekt. Ex: flytta en kvadrat, sätta in pengar på ett bankkonto,... EDAA20 (F1-2 programmering) HT 2016 33 / 54 EDAA20 (F1-2 programmering) HT 2016 34 / 54 Exempel: kvadratobjekt Klass Attribut: läge x, y sidlängd side side 40 Attributen är variabler som håller reda på objektets data. Metoder: flytta move beräkna arean getarea rita draw Metoder innehåller programkod för att göra något med objektet. x y 20 10 Objekt av samma typ beskrivs i en klass. Till exempel kan man skriva en klass Square som beskriver kvadrater. Klassen innehåller programkod för att deklarera attributen och för vad som ska hända i de olika metoderna. Till att börja med använder vi färdigskrivna klasser. Senare ska vi se hur man skriver egna klasser. EDAA20 (F1-2 programmering) HT 2016 35 / 54 EDAA20 (F1-2 programmering) HT 2016 36 / 54

Skapa objekt Objekt i datorns minne I programmet skapar man objekt genom att skriva new Klassnamn(lista med aktuella parametrar) Exempel: Skapa en kvadrat med läget 20,10 och sidlängden 40: new Square(20, 10, 40) Skapa ett ritfönster med bredden 600 pixlar, höjden 600 pixlar och med rubriken Square: new SimpleWindow(600, 600, "Square") När ett objekt skapas reserveras det plats för objektets attribut i datorns minne. Exempel på hur ett kvadratobjekt lagras i minnet: x 20 y 10 side 40 47540 47544 47548 Numren på minnescellerna (adresserna) är bara exempel och ingenting vi normalt behöver tänka på. EDAA20 (F1-2 programmering) HT 2016 38 / 54 EDAA20 (F1-2 programmering) HT 2016 37 / 54 Referensvariabel Referensvariabel och objekt i datorns minne Vi behöver ett namn på objektet. Därför kopplar vi en referensvariabel till objektet. En referensvariabel kan innehålla en referens till ett objekt. Exempel: Variabeln sq refererar till ett kvadratobjekt: Det som egentligen lagras i en referensvariabel är ett heltal adressen till det objekt referensvariabeln refererar till. Pilen vi ritat i föregående bild är motsvarar denna adress. Exempel på hur variabeln sq och det kvadratobjekt sq refererar till kan lagras i minnet. sq x y side 20 10 40 sq 47540 5200 x 20 y 10 side 40 47540 47544 47548 EDAA20 (F1-2 programmering) HT 2016 39 / 54 EDAA20 (F1-2 programmering) HT 2016 40 / 54

Deklarera referensvariabler Referenstilldelning Alla variabler måste deklareras innan man använder dem och få en typ och ett namn. Variabeln sq kan tilldelas en referens till ett kvadratobjekt: En referensvariabel har en klass som typ. Typen bestämmer vilka slags objekt variabeln får referera till. Exempel: En variabel av typen Square får referera till ett Square-objekt: sq x y side 20 10 40 typ namn Square sq; sq Ofta gör man deklarationen och tilldelningen i samma sats: Square sq = new Square(20, 10, 40); EDAA20 (F1-2 programmering) HT 2016 41 / 54 EDAA20 (F1-2 programmering) HT 2016 42 / 54 Anropa metoder på objekt Referenstilldelning Värdet null Man kan be ett objekt att utföra något genom att anropa en metod. Exempel: flytta kvadraten 30 pixels i x-led och 10 pixels i y-led. sq.move(30, 10); En referensvariabel kan även tilldelas värdet null och refererar då inte till något objekt: sq = null; sq null x y side 20 50 10 20 40 Om referensvariablen har värdet null kan man inte anropa en metod på den. sq.move(30, 10); sq EDAA20 (F1-2 programmering) HT 2016 43 / 54 EDAA20 (F1-2 programmering) HT 2016 44 / 54

Referenstilldelning Övning Fyll i värden på variabler och attribut när följande satser exekverats: Square sq1 = new Square(25, 25, 50); Square sq2 = new Square(10, 10, 20); sq1 = sq2; sq1.move(50, 50); sq1 sq2 EDAA20 (F1-2 programmering) HT 2016 45 / 54 x y side x y side Specifikation För att kunna skapa och använda objekt av en klass måste vi få information om klassen; vilka metoder som finns och vilka parametrar som ska skickas med. En specifikation är en beskrivning av klassens metoder med en kort beskrivning av vad metoden gör. metodens returtyp. metodens namn. de formella parametrarna och deras typer. Exempel: /** Flyttar kvadraten avståndet dx i x-led, dy i y-led. */ void move(int dx, int dy); EDAA20 (F1-2 programmering) HT 2016 46 / 54 Specifikation Square /** Skapar en kvadrat med övre vänstra hörnet i x,y och med sidlängden side. */ Square(int x, int y, int side); /** Ritar kvadraten i fönstret w. */ void draw(simplewindow w); /** Flyttar kvadraten avståndet dx i x-led, dy i y-led. */ void move(int dx, int dy); /** Tar reda på x-koordinaten för kvadratens läge. */ int getx(); /** Tar reda på y-koordinaten för kvadratens läge. */ int gety(); /** Tar reda på kvadratens area. */ int getarea(); EDAA20 (F1-2 programmering) HT 2016 47 / 54 Metoder Konstruktor /** Skapar en kvadrat med övre vänstra hörnet i x,y och med sidlängden side. */ Square(int x, int y, int side); konstruktorns namn samma som klassen formella parametrar typ och namn Konstruktorn används när man skapar ett nya objekt med new Exempel: Square sq = new Square(20, 10, 40); En klass kan ha flera konstruktorer (som skiljer sig åt när det gäller parametrarna). EDAA20 (F1-2 programmering) HT 2016 48 / 54

Metoder returtyp - void betyder att metoden inte returnerar något /** Ritar kvadraten i fönstret w. */ void draw(simplewindow w); /** Flyttar kvadraten avståndet dx i x-led, dy i y-led. */ void move(int dx, int dy); metodens namn formella parametrar typ och namn Exempel på användning: sq.move(30, 10); EDAA20 (F1-2 programmering) HT 2016 49 / 54 Metoder Metoder som returnerar värden returtyp - typ på det värde som returneras **/ Tar reda på x-koordinaten för kvadratens läge. */ int getx(); /** Tar reda på y-koordinaten för kvadratens läge. */ int gety(); /** Tar reda på kvadratens area. */ int getarea(); Exempel på användning: System.out.println("Kvadratens area: " + sq.getarea()); int a = sq.getarea(); EDAA20 (F1-2 programmering) HT 2016 50 / 54 Anropa metoder Sammanfattning Övning Hitta fel När vi anropar en metod använder vi punktnotation: referens.metodnamn(lista med aktuella parametrar); Exempel: Square sq = new Square(20, 10, 40); sq.move(30, 10); int a = sq.getarea(); Observera att parenteserna ska vara med även om inga aktuella parametrar ska skickas med. OBS! I nedanstående kod finns några fel: Rätta till felen: Square sq = new Square(20, 10); sq.draw(w); SimpleWindow w = new SimpleWindow(600, 600, "Square"); sq.move(30, 10); sq.draw(w); System.out.println("Arean: " + w.getarea()); De värden som skickas in till metoden kallas aktuella parametrar eller argument. EDAA20 (F1-2 programmering) HT 2016 51 / 54 EDAA20 (F1-2 programmering) HT 2016 52 / 54

Kontrollera koden Checklista När man anropar en metod kan man kontrollera att man anropar metoden på rätt typ av objekt. Vilken typ har objektuttrycket före punkten? Finns metoden tillgänglig idenklassen? objektuttrycket före punkten har ett värde skilt från null. antal aktuella parametrar (argument) stämmer. argumentens typer stämmer. Exempel på vad du ska kunna Förklara begreppen: algoritm, program, kompilering, exekvering. Skriva enkla program som använder färdiga klasser. deklarera variabler och tilldela dem värden skapa och använda objekt använda if-, for- och while-satser läsa in värden från tangentbordet, skriva ut på skärmen Editera, kompilera och exekvera program. EDAA20 (F1-2 programmering) HT 2016 53 / 54 EDAA20 (F1-2 programmering) HT 2016 54 / 54