Föreläsning 2. Föreläsningen kommer ta upp valda delar av detta

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

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

Föreläsning 2 - Intro till Java

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

F4. programmeringsteknik och Matlab

1 Datorn som miniräknare. 1.1 Räkneoperationer. 1.2 Variabler

Objektorienterad Programmering (TDDC77)

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

TDDC77 Objektorienterad Programmering

SMD 134 Objektorienterad programmering

Programmeringsteknik I

Enkla datatyper minne

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

Klassdeklaration. Metoddeklaration. Parameteröverföring

Föreläsning 7. Nyckelord I Java. Uttryck. Uttryck, Operatorer Och Kontrollflöden

E02 "The Review" Föreläsning 2, HT2013 Grunderna, repetition. Johan Leitet. Kurs: 1dv403 Webbteknik I

Objektorienterad Programmering (TDDC77)

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

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

Programmering A. Johan Eliasson

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar

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

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Föreläsning 3-4 Innehåll

Studentportalen UNIX-konton (systemansvariga P4118) Lärare: Tom Smedsaas,

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

TDIU01 - Programmering i C++, grundkurs

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

F1 - Introduktion. ID1004 Objektorienterad programmering Fredrik Kilander

Parameteröverföring. Exempel. Exempel. Metodkropp

Klasser i Java kan ha metoder och egenskaper. Metoder beskriver funktioner som klassen kan utföra. Egenskaper beskriver innehållet i klassen.

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

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

Datalogi I, grundkurs med Java 10p, 2D4112, Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera förs

JAVAUTVECKLING LEKTION 4

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

Dagens föreläsning. Arrayer och klasser. Medan ni väntar: Gå till m.voto.se/prog11 och svara på några gamla tentamensfrågor! (26 januari 2018 F3 1 )

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

Objektorienterad programmering Föreläsning 4

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

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

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

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Strukturdiagram. Styra. Algoritmer. Val

Föreläsning 5-6 Innehåll

l uppgiftsformulering l algoritmkonstruktion l verifikation l kodning l testning och avlusning l validering l dokumentering l underhœll Kapitel 2

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

OOP Objekt-orienterad programmering

Språkkonventioner och redigering av tal.

Tentamen OOP

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

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

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

Att skriva till och läsa från terminalfönstret

TDDC77 Objektorienterad Programmering

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

OOP Objekt-orienterad programmering

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

(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

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

Programmeringsteknik med C och Matlab

Övning2. Variabler. Data typer

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

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

Tentamen ID1004 Objektorienterad programmering May 29, 2012

Föreläsning REPETITION & EXTENTA

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

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

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

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

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

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

Översikt Introduktion DST 1. Nicholas Wickström. IDE, Högskolan i Halmstad. N. Wickström

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

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

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

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

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

Outline. For. I istället för att följa det normala ordningen, man ändra den. I i Java får man inte göra hopp hur som helst

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.

TENTAMEN OOP

JAVA Mer om klasser och objektorientering

Lektion 1 Introduktion till DrJava och Java

OOP Objekt-orienterad programmering

Villkor och tester. Utförande satser bygger upp metoderna, man brukar finindela detta i: sekvenser. Ett program består i princip av: selektioner (val)

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

Typkonvertering. Java versus C

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

2D1339 Programkonstruktion för F1, ht 2004

Föreläsning 3: Booleans, if, switch

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Tentamen , Introduktion till Java, dtaa98, dtea53

Kapitel 6. Hakparenteser fšr att ange index MŒnga všrden av samma typ

Sammanfattning och repetition utgående från typiska tentamensuppgifter

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

Variabler som hör till enskilda objekt. Deklareras på översta nivån i klassen och i regel som private.

1/15/2013. DD1310/DD1314/DA3009 Programmeringsteknik. Lärandemål... Vilka läser kursen? ...fler lärandemål VARFÖR? Föreläsning 1

Transkript:

Föreläsning 2 Täcker material från lektion 1-4 DrJava Variabler och Datatyper Aritmetik Tecken och strängar Klasser, Objekt Metoder Villkor och iterationer main-metoden programmeringsstil Debugging 1. Grundläggande begrepp 2. Objekt och metoder 3. If, while, main 4. Objekt och metoder OU1 Föreläsningen kommer ta upp valda delar av detta Fö2 1

När java installeras på datorn hamnar bl.a följande där: Javakompilatorn Javainterpretatorn Java En massa färdiga javaprogram, sk. klasser som hör till språket Java, t.ex. Math, String Fö2 2

Vad är DrJava? DrJava är ett (gratis)program för att programmera i Java Utvecklat vid Rice University, USA DrJava är skrivet i Java Program för att programmera i kallas för IDE= Integrated Development Environment Med DrJava kan man Skapa Javaprogram (definitions pane) Testa enstaka javasatser (interactions pane) Lista alla öppna filer (files pane) Compile Run Fö2 3

Compile? Run? Javasatserna i ett program kallas även för källkoden och den sparas i en javafil (har efternamnet.java) Med Compile går kompilatorn igenom javafilen och kontrollerar om javasatserna är språkligt riktiga (syntaxkontroll) Om ok, översätter kompilatorn javasatserna till en annan kod som datorn kan köra (exekvera) classfilen skapas Med Run går den s.k. javainterpretatorn igenom classfilen och utför de instruktioner som finns där, dvs programmet körs (exekveras) När vi använder DrJava, finns det tre filer som är associerade till det program vi skriver:.java,.java~,.class (vi kikar på exempel på de tre filerna i programmet TestTurtle) Fö2 4

DrJava färgkodning av javasatserna underlättar I Definition Pane färgkodas satserna på lite olika sätt Detta indikerar huruvida javasatserna tolkas som korrekta Det finns även en del andra handgrepp man kan utföra i Definitions Pane IndentLines, Uncomment, lokalisera matchande måsvingar, etc Läraren visar exempel på ovan (programmet TestTurles som flyttar två paddor i varsin cirkelbåge) Bra tips: Numrering av javasatser kan göras i Edit>Preferences>Display Options Fö2 5

Java Språket har strikta regler för hur det skall skrivas, dvs språkets grammatik, det kallas språkets syntax. Språket byggs upp av identifierare och reserverade ord som sätts ihop till satser. Identifierare är det som programmeraren själv hittar på namn för, t.ex. variabelnamn Reserverade ord är de ord som finns inbyggda i språket. En sats är en instruktion. En sådan avslutas normalt med ett semikolon Fö2 6

Reserverade ord i språket Java abstract assert boolean break byte case catch char class const continue default do double else enum extends false final finally float for goto if implements import instanceof int interface long native new null package private protected public return short static strictfp super switch synchronized this throw throws transient true try void volatile while Ord i fet stil används i kursen Fö2 7

Deklarera variabel Alla variabler som skall användas i ett program måste deklareras, dvs måste få ett namn och måste ange vilken sorts variabel det är, dvs ange datatypen Fö2 8

Datatyper primitiv datatyp (exvis int, double) eller objekttyp (exvis Turtle, World) Primitiva typerna är inbyggda i javaspråket Objekttyper kan vi definiera själva (Turtle) Vid deklarationen reserveras ett minnesutrymme i datorn för variabelns värde. Variabelns namn är ett slags alias för adressen till minnesutrymme Fö2 9

Datorns minne en enorm byrålåda Vi kan betrakta minnet som en byrå med gigantisk många byrålådor där information kan lagras. När ett javaprogram startas får det tillgång till en del av byrålådan för att lagra sina variabler. När en variabel deklareras i programmet reserveras en byrålåda för variabelns värde. Bra om variabelns namn associerar till vilken information som finns i lådan, det blir då enklare att veta i programmet vad vi använder variabeln till. Variabelns namn blir ett alias för adressen till byrålådan. Del 2: Intro till variabler i Java 10

Exempel: Vi deklarerar och initierar variabler som är s.k. primitiva datatyper: int antal=67; double x=2.5; char c='a'; boolean hungrig=true; x antal hungrig c Fö2 11

Åtta primitiva datatyper Fyra heltalstyper (numeriska): byte, short, int, long Två flyttalstyper (numeriska) float, double En teckentyp: char En boolskt typ (sant eller falskt): boolean Finns signed och unsigned heltalstyper, dvs tal med +/- eller bara +. Fö2 12

De numeriska datatyper Typ Minnesutrymme Min/Maxvärde byte 8 bit -128 127 short 16-32768 32767 int 32-2147483648 2147483647 long 64 +/- 9 x 10 18 float 32 +/- 3.4 x 10 38, 7 siffrors nogr. double 64 +/- 1.7 x 10 308, 15 siffrors nogr. Fö2 13

Tecken En char-variabel lagrar ett enstaka tecken i två byte (speciellt för Java). Tecknet kodas först till ett heltal innan det lagras i minnet. Koden är unicode, se http://www.tamasoft.co.jp/en/general-info/unicode.html. Koden för de vanligaste tecknen finns på ASCII Code - The extended ASCII table Två byte innebär ett minnesutrymme som kan ha värden 0-65536, dvs det finns en kapacitet för 65536 tecken. Drygt 30000 tecken finns f.n. kodade. Fö2 14

Primitiva datatyperna byte short int long float 8 bits 8 bits 8 bits 8 bits 8 bits 8 bits 8 bits 8 bits 8 bits 8 bits 8 bits 8 bits 8 bits 8 bits 8 bits 8 bits 8 bits 8 bits 8 bits double 8 bits 8 bits 8 bits 8 bits 8 bits 8 bits 8 bits 8 bits char 8 bits 8 bits Fö2 15

Aritmetik +, -, *, / för addition, subtraktion, multiplikation och division Division med heltal är speciellt ++, -- för addition med ett resp subtraktion med ett int i=0; i++; i blir ett % för restberäkning, modulo int z=16; int w=z%10; w blir 6 Heltalsdivision int x=5/4; x blir 1 int a=14; int b=a/3; b blir 2 Förklaring, resten av 16 delat med 10: 16/10 = 1 + 6/10 Fö2 16

Typomvandling Konvertera från en datatyp till en annan datatyp Heltal Flyttal per auto, eller med (double) ( ) Flyttal Heltal (int) ( ) ger trunkering Char Heltal: (int) ( ) Heltal Char: (char) ( ) Flyttal String: Double.toString( ) String Flyttal: Double.parseDouble( ) String Heltal finns motsvarande Fö2 17

Övning Frågor (http://www.it.uu.se/edu/course/homepage/prog1/ht16/talks/t02/test1.html) Fö2 18

Varför (1) deklarera och (2) ha många datatyper? 1. Säkerhet : Bara använda variabler som är deklarerade Ex. stavfel: x1=4; x1=xl+8; versaler/gemener: X=x+X; 2. Värden man vill räkna med är av olika sorter Bra då att ha variabler som matchar dessa. Minnesutrymmet anpassas till värdena. Beräkningarna anpassas till datatypen. Snabbare beräkningar. Ordning och reda Fö2 19

Klasser och objekttyper Klassen String: representerar textsträngar. Inbyggd i själva javaspråket Klassen Math: samlar matematiska funktioner (i vid mening). Alltid tillgänglig. Klasserna World och Turtle: Definieras i programvara som finns för denna kurs. Fö2 20

Klassen Math Klassen Math används för att samla ihop matematiska funktioner och konstanter (man gör aldrig new Math) Funktionerna (metoderna) anropas via klassnamnet. Exempel: Math.exp(3.5) Math.pow( Math.sin(2.5),2) Math.PI + Math.sinh(x/2) Se Javadokumentationen av klassen Math (http://docs.oracle.com/javase/7/docs/api/java/lang/math.html) Fö2 21

Klasserna World och Turtle Klasserna World och Turtle gör man vanligen objekt av. Objekt skapas med operatorn new. Exempel: World w = new World(400,400); Turtle t1 = new Turtle(w); Turtle t2 = new Turtle(w); Variablerna w, t1 och t2 håller reda på de skapade objekten ( referenser", pekare ). Vi kan be objekten om olika saker genom att anropa metoder. Exempel: t1.turn(90); t2.move(20); Fö2 22

Metoder Vi anropar metoder för att få reda på egenskaper (information) hos objekten. Exempel: int dx = t1.getxpos() t2.getxpos(); Vi anropar också metoder för att beordra objekten att utföra saker och ändra egenskaperna. Exempel: t1.move(20); Observera skillnaden mot när vi anropar metoder (funktioner) i klassen Math. Fö2 23

Parametrar Ibland vill man skicka information till metoden. För detta används parametrar. Exempel: t1.move(100); t1.turn(45); t2.turnto(0,0); t1.turnto(t2); Av anropen framgår dels vilket objekt som skall påverkas och dels eventuell information som skickas till metoden de aktuella parametrarna Frågor: t1.move( (int)(math.random()*100) ); Är det OK? t1.turnto(0,0) och t1.turnto(t2); Är det OK? Fö2 24

Summering av metoder i klassen Turtle Vi har sett i lektion 2 move(int n) Flytta n pixlar framåt turn(int n) Rotera n grader turnto(int x, int y) Sätt rikningen mot pkt (x,y), pixelkoordinat turnto(turtle t) Sätt riktningen mot paddan t disablepath() Visa ej spåret enablepath () Visa spåret setdirection(int d) Sätt ny riktning d I lektion 3: getxpos(),getypos() Returnera xpos resp ypos distanceto(int x,int y) Returnera avståndet till x,y getdirection() Returnera riktningen moveto(int x, int y) Flytta till pixelkoordinat x,y Frågor (http://www.it.uu.se/edu/course/homepage/prog1/ht16/talks/f02/test2.html) Fö2 25

Skriva egna metoder Exempel: /** * Draws a equilateral triangle with a specified size */ public void drawtriangle(int side) { this.move(side); this.turn(120); this.move(side); this.turn(120); this.move(side); } Metoder har en synlighet i detta fall public en returtyp i detta fall void som anger att inget värde returneras 0 eller flera formella parametrar i detta fall en av typ int Fö2 26

Metoder Metoder måste alltid placeras i en klass I DrJava har man den klass som man vill redigera i synlig definitionsrutan En metod kan innehålla lokala variabler. Existerar bara i metoden och glöms bort när man lämnar metoden. Om man ändrat ett program, måste man alltid kompilera det innan programmet kan köras. Fö2 27

Strängar samt utmatning i terminalfönster/konsolen/interactions Generellt sätt att få se resultat från ett program. Exempel: String namn="torsten"; System.out.print("Välkommen "); System.out.print(namn); System.out.print('!'); System.out.println(); Kortare: String namn="torsten"; System.out.println("Välkommen " + namn + '!'); Observera: println får en sträng som parameter. Den bildat genom konkatenering (hopslagning) som utförs med +- operatorn Frågor (http://www.it.uu.se/edu/course/homepage/prog1/ht16/talks/t02/test3.html) Fö2 28

Algoritmer En algoritm är en följd av väldefinierade instruktioner för hur en uppgift skall lösas. Exempel på algoritm: metoden drawtriangle. Fö2 29

Algoritmformuleringar Det finns följande generella sätt att formulera algoritmer med hjälp av de tillgängliga instruktionerna: sekvens utför en följd av instruktioner i tur och ordning selektion välj mellan olika alternativa sekvenser iteration upprepa en sekvens ett antal gånger abstraktion sätt ihop en algoritm enl ovanstående punkter och ge hopsättningen ett namn Fö2 30

Selektion: if-satsen Generellt if ( villkor ) { satser } Exempel: // Compute the maximum of x and y double max = x; if (y > x) { max = y; } Frågor (http://www.it.uu.se/edu/course/homepage/prog1/ht16/talks/t02/test4.html) Fö2 31

Selektion: if-satsen forts Generellt if (villkor) { satser } else { satser } Exempel: //Compute the roots to x*x +p*x + q = 0 double d = (p*p-4*q)/4; if (d < 0) { System.out.println("Complex roots"); } else { d = Math.sqrt(d); double x1 = -p/2 + d; double x2 = -p/2 - d; System.out.println("x1:" + x1); System.out.println("x2:" + x2); } Satserna i grenarna är godtyckliga satser t ex if-satser Fö2 32

Iterationer I java finns det tre konstruktioner för upprepning av kod: while, for och do. Här tar vi upp while-satsen Generellt while ( villkor) { satser } Exempel: // Compute x raised to 10 int i = 1; double p = 1; while (i <= 10) { p = p*x; i++; } Kan även lösas med Math.pow(x,10); Fö2 33

main-metoden Vill skapa en värld med några paddor och låta de gå omkring på något sätt dvs lite new, några move, turn,... Var skall jag skriva detta? Två möjligheter: i interaktionsrutan i DrJava eller i en metod Interaktionsrutan passar bra för att skriva enskilda uttryck men besvärligare när det blir många uttryck och satser. Dessutom: finns bara i DrJava. Alltså: i en metod!. Fö2 34

main-metoden Var skall metoden placeras? Måste vara i en klass! Klassen Turtle? Objekt ur klassen Turtle representerar en padda. Onaturligt med en vanlig objektmetod skapar båda världar och paddor: t1.dosomething(); men då måste ju objektet t1 existera Alternativet är då att skriva en mainmetod. En sådan metod anropas genom att ange klassens namn. En metod som man anropar genom att ange klassens namn kallas klassmetod, vilket i java anges med ordet static Vi studerar två alternativ: Skriva en mainmetod i klassen Turtle Skriva en ny klass t ex kallad TestTurtles med en mainmetod. Fö2 35

main-metoden i klassen Turtle Den metoden är en klassmetod som hör till klassen som helhet, inte till enskilda objekt. Anges som static i metodhuvudet. Exempel: public class Turtle {... public static void main(string[] args) { World w = new World(500,500); Turtle t1 = new Turtle(w); Turtle t2 = new Turtle(w); int distance = 30; int rotation = 15; int loopnr = 1; while (loopnr<20) { t1.move(distance); t1.turn(rotation); t2.move(distance); t2.turn(-rotation); loopnr++; loopnr++; } // while } // main } // class Fö2 36

main-metod i en annan klass public class TestTurtles { public static void main(string[] args) { World w = new World(500,500); Turtle t1 = new Turtle(w); Turtle t2 = new Turtle(w); World w = new World(500,500); Turtle t1 = new Turtle(w); Turtle t2 = new Turtle(w); int distance = 30; Vi testkör int rotation = 15; int loopnr = 1; programmet while (loopnr<20) { t1.move(distance); t1.turn(rotation); t2.move(distance); t2.turn(-rotation); loopnr++; } // while } // main } // class Klassen innehåller en enda metod main-metoden Det är alltid den aktuella klassens main-metod som körs vid Run Fö2 37

Tidsfördröjning Om man vill se vad som händer i varje steg kan man lägga in en tidsfördröjning i loopen: public class TestTurtles { public static void main(string[] args) throws InterruptedException { World w = new World(500,500); Turtle t1 = new Turtle(w); Turtle t2 = new Turtle(w); int i = 1; while (i<20) { t1.move(30); t1.turn(-15); t2.move(30); t2.turn(15); i++; Thread.sleep(200); // Sov 200 ms } // while } } Notera att throws Interrupted Exception är nödvändig för Thread.sleep Vi testkör programmet Fö2 38

Kodstandard: Namngivning Namn på metoder, variabler, klasser mm skall vara vettiga! Metoder och variabler skall ha liten begynnelsebokstav! Klassnamn skall ha stor begynnelsebokstav! Använd stor bokstav (eller understrykningstecken) för att öka läsbarheten i långa namn (Ex: numberofturtles) Namngivna konstanter skrivs med stora bokstäver (Ex: Math.PI) Fö2 39

Kodstandard - layout Indentera raderna systematiskt och enhetligt. Tips: Select All följt av Indent All Lines fixar hela filen Skriv alltid ny sats på ny rad! Skriv inte längre rader än 80 tecken - bryt på vettiga ställen! Kommatecken skall alltid följas av blanktecken Omge alltid operatorer med låg prioritet med blanktecken Fö2 40

Kodstandard: layout Placering av klammertecknen (måsvingarna) Antingen if (x < y) {... } else if (y == y){... } else {... } Varför kodstandard? Jo, ger läsbarhet! Eller if (x < y) {... } else if (y == y) {... } else {... } Fö2 41

Kodkommentarer Viktigt, men Kommentera inte det som är uppenbart från koden! Förutsätt att den som läser koden kan Java. Se till att kommentarerna inte skymmer koden Felaktiga kommentarer är värre än inga kommentarer! Bra namngivning, struktur och layout gör att koden behöver ett minimum av kommentarer Försök inte förklara dåligt skriven kod med kommentarer skriv om koden! Fö2 42

Kodkommentarer: Javadoc Det finns en särskild typ av kommentarer s k javadoc-kommentarer som används för att automatiskt generera dokumentationssidor. Se kommentarerna i klassen Turtle för exempel! Dokumentation av Turtle (http://www.it.uu.se/edu/course/homepage/prog1/commonfiles/new_turtleworld/doc) Fö2 43

Kodstandard och programmeringstil Läs på sidan kodningsregler på kurshemsidan Fö2 44

Debugging Vi testar DrJava s debugger med programmet TestTurtles Fö2 45