Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Forelæsning Uge 2 – Torsdag

Lignende præsentationer


Præsentationer af emnet: "Forelæsning Uge 2 – Torsdag"— Præsentationens transcript:

1 Forelæsning Uge 2 – Torsdag
Java syntax og style guide Sætninger Simple sætninger (assignment, interne og eksterne metodekald) Sammensatte sætninger (blok, selektion, gentagelse) Udtryk og operatorer Brug af BlueJ’s Code Pad Afleveringsopgave: Skildpadder (Turtles)

2 ● Syntaktiske elementer i Java
Reserverede ord (keywords) class, new, public, private Navne (identifiers) Person, int, boolean, String, Date, p, a, turn, move, day, month, year, ... Konstanter (literals) "Aarhus Universitet", 1928, 5.78, true, ... Specialtegn (special characters) ; ( ) . { } = +  == < <= // /* */ /** ... Luft (white space) linjeskift, mellemrum, tab, ... kan indsættes vikårligt mellem syntaktiske elementer uden at betydningen påvirkes

3 Java style guide Navngivning Indrykning
Navne skrives på engelsk (eller amerikansk) og skal være velvalgte (beskrivende) Klasser: med stort CamelCase eks.: Person, String, NumberDisplay, Variabler og metoder: med lille camelCase eks.: firstName, trackName, displayString Indrykning Alt mellem {} rykkes ét ’hak’ ind For hvert ekstra niveau af {} rykkes endnu et ’hak’ ind public class Person { private int age; public Person() age = 32; } public class Person { private int age; public Person() { age = 32; } Mine slides BlueJ editor BlueJ styleguide: Link

4 Hvad gør nedenstående kode?

5 Hvad gør nedenstående kode?
Præcis det samme Det er de samme instruktioner De er nu meget lettere at læse og forstå Vi har været omhyggelige med linjeskift og indrykningerne, og brugt editorens Auto-layout funktion Bemærk at editoren bruger farver til at vise kodens komponenter Grøn: Klassen Gul: Konstruktører og metoder Gråtoner: if-sætninger, for-løkker og lignende Hvid: simple sætninger

6 ● Simple sætninger Assignment v = exp; x = x + 1;
udregner værdien af udtrykket på højresiden og tildeler denne værdi til variablen på venstresiden v = exp; x = x + 1; x = 3 * w.getLeavesEaten(); Internt metodekald (i samme objekt) method(…); move(100); turn(90); Eksternt metodekald (i andet objekt) object-reference.method(…); w.eatLeaf(); c.moveTo(200,300);

7 Interne metodekald UML sekvensdiagram w: Wombat
public class Wombat extends Actor { public boolean foundLeaf(){ ... } public void eatLeaf(){ leavesEaten= leavesEaten + 1; public void act() { if ( foundLeaf() ) { eatLeaf(); UML sekvensdiagram w: Wombat act() foundLeaf() eatLeaf()

8 Eksterne metodekald UML sekvensdiagram public class AnimalTrainer {
... private SkilledTurtle t; t = new SkilledTurtle(); public void doShow() { t.square(50); t.square(100); t.boxes(10); } UML sekvensdiagram doShow() a: AnimalTrainer t: SkilledTurtle square(50) square(100) boxes(10)

9 ● Sammensatte sætninger
Blok (sekvens) { S1 S2 … Sn } Selektion (valg) if ( exp ) S1 if ( exp ) S1 else S2 Iteration (gentagelse) for (exp1; exp2; exp3) S while ( exp ) S

10 Eksempel på blok (sekvens)
public void setTime(int hour, int minute) { hours.setValue(hour); minutes.setValue(minute); updateDisplay(); } Blok med to eksterne og et internt metodekald

11 Eksempel på selektion (valg)
public void timeTick() { minutes.increment(); if ( minutes.getValue() == 0 ) { // it just rolled over! hours.increment(); } updateDisplay(); Hvis minut-værdien er lig med 0, er vi netop startet på en ny time, og time-værdien skal derfor tælles op

12 Eksempel på selektion (valg mellem to)
public String getDisplayValue() { if ( value < 10 ) { return "0" + value; } else { return "" + value; Hvis et af argumenterne til + operatoren er en streng, konverteres det andet argument automatisk til en streng (og + betyder konkatenation) Kan denne del undværes? Nej. Så returnerer vi værdien af feltvariablen value, som er et heltal (og vi vil få en typekonflikt)

13 Eksempel på indlejret selektion
public void act() { if( foundLeaf() ) { eatLeaf(); } else { if( canMove() ) { move(); turnLeft(); Den "røde" if-sætning er indlejret i else-delen af den "grønne" if-sætning Pause 13

14 Eksempel på ”dårlig” kode
public boolean isTeenager() { boolean result; if ( 13 <= age && age <= 19 ) { result = true; } else { result = false; return result; Metoden tjekker om personen er teenager Kan koden simplificeres? boolsk udtryk 8 linjer kode 1 linje kode public boolean isTeenager() { return (13 <= age && age <= 19); } 14

15 Andet eksempel på ”dårlig” kode
if ( female == true ) {...} if (female) {...} feltvariabel af type boolean (boolsk udtryk) negation if ( female == false ) {...} if (!female) {...} Helt galt går det, hvis man kommer til at skrive Parenteserne indeholder lovlige boolske udtryk, men de tester ikke det, vi havde til hensigt, og de ændrer female if (female = true) {...} if (female = false) {...} Assignment, som ændrer værdien af female Hvorfor klager oversætteren ikke? Parenteserne skal jo indeholde et boolsk udtryk x = y = 37; Assignment, men også et udtryk med værdien 37, som så assignes til x 15

16 Eksempler på iteration
for-løkke for ( int i=0; i<4; i++ ) { c.move(length); c.turn(90); } for-løkker bruges, når man på forhånd ved, hvor mange gange løkken skal gennemløbes while-løkke int i = 0; while ( i<4 ) { c.move(length); c.turn(90); i++; } while-løkker er mere fleksible end for-løkker Man skal selv huske at initialisere og opdatere De to løkker gør det samme (gentager move og turn operationerne 4 gange)

17 ● Udtryk bruges forskellige steder
Højresiden af assignment skal have sammenlignelig type med variablen på venstresiden Argumenter til metodekald skal have sammenlignelig type med parametrene Betingelser i selektions- og iterationssætninger boolsk udtryk (sandhedsværdi: true eller false) initialiserings- og opdateringsudtryk i for-løkke

18 Clicker Quiz Udvalgte operatorer Aritmetiske operatorer + - * / % ...
Nogle operatorer er overloadede Kan bruges på argumenter af forskellig type + kan betyde læg sammen + kan også betyde konkatenation af strenge + - * / % ... Logiske operatorer bitvis eksklusiv OR && || ! ... ^ Præcedens regler Bestemmer rækkefølgen, som operatorerne udføres i 4 + 3 * 5 evaluerer til 19 Relationelle operatorer == != < > <= >= new er også en operator Java har 15 niveauer Brug parenteser, når I er i tvivl Søg i Google efter: ”java operator precedence” new Class(...); Clicker Quiz

19 ● Brug af BlueJ’s Code Pad
Code Pad I Code Pad’en kan man indtaste erklæringer, sætninger og udtryk Erklæringer og sætninger udføres Udtryk evalueres Brug Code Pad’en til hurtige eksperimenter Mere komplekse eksperimenter laves via en testklasse

20 ● Afleveringsopgave: Skildpadder (Turtles)
World I Greenfoot skal I lave en subklasse til klassen Turtle med metoder til at tegne en række forskellige avancerede tegninger, i stil med nedenstående:

21 ● Opsummering Java styleguide Sætninger Udtryk
Navngivning Indrykning Sætninger Simple sætninger (assignment, interne og eksterne metodekald) Sammensatte sætninger (blok, selektion og iteration) Udtryk Operatorer, overloadning, præcedens regler, og brug af parenteser Brug af BlueJ’s Code Pad Eksperimenter med erklæringer, sætninger og udtryk Afleveringsopgave: Skildpadder (Turtles)

22 Det var alt for nu….. … spørgsmål


Download ppt "Forelæsning Uge 2 – Torsdag"

Lignende præsentationer


Annoncer fra Google