Forelæsning Uge 2 – Torsdag Java syntax og style guide Sætninger –Simple sætninger (assignment, interne og eksterne metodekald) –Sammensatte sætninger.

Slides:



Advertisements
Lignende præsentationer
Velkommen til Softwarekonstruktion
Advertisements

Indledende Programmering Uge 2 - Efterår 2006 Selektioner og interaktion mellem objekter Susanne Brix Lindros.
KONCEPT Klasser og objekter En klasse beskriver et World ArrayList
Grundlæggende programmering Efterår 2001
Hvordan man skriver koden.
GP5, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 5 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder.
FEN IntroJava AAU1 Java grundelementer Variable og datatyper Sætninger og udtryk Metoder.
Forelæsning 3.1 Collections Javas for-each løkke
Intro til C# apps Kodegennemgang af simpel C# app
Delphi og C++ Builder C++ Builder. C++ Historie Sproget blev designet for AT&T af danskeren Bjarne Stoustrup En objektorienteret videreudvikling.
Plan Mini Java style guide Bouncing balls Debugger dIntProg, E10.
Primitive typer. dIntProg, F08Typer.2 Subtyperelation for primitive typer byte ≤ short ≤ int ≤ long ≤ float ≤ double char boolean double d; int i; d =
8 RÅD VEDRØRENDE GOD PROGRAMMERING Effective (brown) Java.
FEN IntroJava AAU1 Klasser og objekter Grundbegreber Student-Course.
Forelæsning 2.2 Tilstand og opførsel (repetition)
Fundamentale sprogbegreber
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
PD – kursusgang 3 Introduktion til Java Script. Mål Viden om hvordan JavaScripts indlejres i HTML dokumenter Viden om programmering i JavaScript  Erklæring.
Opfølgning på Dygtig Skildpadde (Michael) To algoritmeskabeloner findEn findAlle Primitive typer (forfremmelse og begrænsning) Identitet versus lighed.
Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence s; int i; int j; Sequence s; String s; int i; int j;
Repetition af dIntProg v/ Morten D. Bech. Tour de force Variabler Løkker Comparable ImErKo-reglen Eksamenssæt dIntProg, E13.
Forelæsning 7.1 – repetition
Begreber og Redskaber 4. Plan for idag Om metoder, parametre, returværdier Et par ord om objekt-orientering Håndkøring af programmer.
Begreber og Redskaber 3. Plan for idag Om metoder, parametre, returværdier Overblik over klasser,objekter,nedarvning Et par ord om objekt-orientering.
Fundamentale sprogbegreber Sætninger og udtryk Niveauer af programbeskrivelse (statisk versus dynamisk syn)
DAIMIIntroducerende objektorienteret programmering4B.1 Typer og tilstand i Java Typer, tilstand, erklæring, variable, primitive datatyper, reference- og.
Klasser og objekter. dIntProg, E08Klasser og objekter.2 Grundbegreber Klasser og objekter –beskrivelse –oprettelse Attributter og metoder –tilstand –opførsel.
DAIMIIntroducerende objektorienteret programmering3B.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
DAIMIIntroducerende objektorienteret programmeringkd.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
DAIMIIntroducerende objektorienteret programmering4B.1 Grundlæggende og Reference Typer i Java Typer, tilstand, erklæring, reference- og værdi semantik,
Trinvis forfinelse Systematisk, gradvis udvikling af programmer.
Interfaces Afkobling af programkomponenter (eksempel: Comparable)
Klasser og objekter – grundbegreber.  Michael E. Caspersen, 2001Introducerende objektorienteret programmeringKlasser og objekter.2 Klasser og objekter.
 Jens Bennedsen 2001Multimedie programmering4.1 Definition af begreber Interface, implements, klasse.
 Jens Bennedsen 2001Multimedie programmering1.1 Skildpadder Modeller, objekter og opførsel.
Fundamentale sprogbegreber Typer. dIntProg, F08Typer.2 Typer Primitive typer –boolean –byte, char, short, int, long, float, double Objekttyper –klassetype.
 Jens Bennedsen 2001Multimedie programmering3A.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
Klasser og objekter. dIntProg, F08Klasser og objekter.2 Grundbegreber Klasser og objekter –beskrivelse –oprettelse Attributter og metoder –tilstand –opførsel.
Jesper Mosegaard Multimedie Programmering E2003 MMProg uge44 Java til Lingo Klasser, statements og lister.
Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence s; int i; int j; Sequence s; String s; int i; int j;
Algoritmeskabeloner findOne, findAll, findNoOf, findSumOf Primitive typer (forfremmelse og begrænsning) Identitet versus lighed (for objekter, herunder.
Forelæsning Uge 3 – Mandag Niveauer af programbeskrivelser – Statiske / dynamiske beskrivelser ArrayList –Collection med variabelt antal elementer –Der.
Forelæsning Uge 5 – Mandag
Forelæsning Uge 2 – Torsdag
Forelæsning Uge 4 – Mandag
Forelæsning Uge 1 – Torsdag
Forelæsning Uge 4 – Mandag
Forelæsning Uge 6 – torsdag – repetition
Quiz – Uge 2 – torsdag – første time
Quiz – Uge 3 – mandag – første time
Forelæsning Uge 2 – Mandag
Forelæsning Uge 2 – Mandag
Forelæsning Uge 3 – Mandag
Klasser og objekter (Afsnit i manualen).
Quiz – Uge 3 – torsdag – første time
Forelæsning Uge 4 – Mandag
Forelæsning Uge 2 – Mandag
Forelæsning Uge 2 – Torsdag
Studiepraktik Thomas Bøgholm Mikkel Hansen Jacob Elefsen
Forelæsning Uge 2 – Torsdag
Programmering.
Forelæsning Uge 4 – Mandag
Forelæsning Uge 2 – Mandag
Quiz Uge 2 – mandag.
Parametrisering En kort introduktion.
Forelæsning Uge 2 – Mandag
Quiz – Uge 3 – torsdag – første time
Forelæsning Uge 2 – Mandag
Forelæsning Uge 4 – Mandag
Forelæsning Uge 4 – Torsdag
Præsentationens transcript:

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)

● 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 2

Java style guide Navngivning –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 BlueJ styleguide: public class Person { private int age; public Person() { age = 32; } 3 Link public class Person { private int age; public Person() { age = 32; } Mine slides BlueJ editor

Hvad gør nedenstående kode? 4

5 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

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

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

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

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

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

Eksempel på selektion (valg) public void timeTick() { minutes.increment(); if ( minutes.getValue() == 0 ) { // it just rolled over! hours.increment(); } updateDisplay(); } 11 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

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

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

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

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

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

● 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 17

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 18 Relationelle operatorer Logiske operatorer new er også en operator new Class(...); Præcedens regler –Bestemmer rækkefølgen, som operatorerne udføres i –4 + 3 * 5 evaluerer til 19 Java har 15 niveauer –Brug parenteser, når I er i tvivl –Søg i Google efter: ”java operator precedence” ^ bitvis eksklusiv OR

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

● Afleveringsopgave: Skildpadder (Turtles) 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: World 20 Skildpadde

● Opsummering 21 Java styleguide –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)

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