Upload
myrrh
View
35
Download
0
Embed Size (px)
DESCRIPTION
Indledende Programmering Uge 2 - Efterår 2006. Selektioner og interaktion mellem objekter Susanne Brix Lindros. Plan for i dag. Assignment operatorer Betingelser/selektioner (if og switch) Lokale variable Strengbehandling Interaktion mellem objekter Abstraktion og moduler - PowerPoint PPT Presentation
Citation preview
Indledende ProgrammeringIndledende Programmering Uge 2 - Efterår 2006Uge 2 - Efterår 2006
Selektioner og interaktion Selektioner og interaktion mellem objektermellem objekter
Susanne Brix LindrosSusanne Brix Lindros
Plan for i dagPlan for i dag• Assignment operatorer• Betingelser/selektioner (if og switch)• Lokale variable• Strengbehandling• Interaktion mellem objekter
– Abstraktion og moduler– Klassediagram og objektdiagram– Simple datatyper og objekt datatyper– Logiske operatorer og modulus operator– Overload og metodekald
• Debugging
Assignment operatorerAssignment operatorer
int antal = 10;antal = antal + 1;
int samletPris;samletPris = antal * billetPris;
int antal = 10;antal += 1;
int antal = 10;antal++;
Betingelser: if-sætningerBetingelser: if-sætninger
• Envejs valg:
• Tovejs valg:
• Valg med flere sætninger i samme gren:
if (boolean expression) statement;
if (boolean expression) statement;else statement;
if (boolean expression) { statement1; statement2;}
Betingelser: switch-sætningerBetingelser: switch-sætninger
• Flervejsvalg ud fra en enkelt værdi
switch (expression) { case value: statements;
break; case value: statements;
break; … default: statements;
break;}
(Javabogen appendix C side 439-440)
Betingelser: switch-sætningerBetingelser: switch-sætninger
• Flervejsvalg ud fra en enkelt værdiswitch (month) { case 1: case 3: … case 12: numberOfDays = 31;
break; case 4: case 6: … case 11: numberOfDays = 30;}
Lokale variableLokale variable
• Erklæres i metodens krop
• Virkefelt (scope): metodens krop
• Levetid (lifetime): indtil metoden returnerer
public int refundBalance(){ int amountToRefund; amountToRefund = balance; balance = 0; return amountToRefund;}
Anvend altid lokale variable til værdier der kun anvendes lokalt i en metode
Felter, parametre og lokale variableFelter, parametre og lokale variable
• klassificer og angiv virkefelt og levetid:– amount, balance og newBalance
public void insertMoney(int amount){ int newBalance = balance + amount; if (amount > 0) balance = newBalance; else System.out.println(”Use a positive amount ” + amount);}
Strengbehandling i JavaStrengbehandling i Java
public class Student { private String name; private String id;
public void print() { System.out.println(name + " (" + id + ")"); } public String getLoginName() { return name.substring(0,4) + id.substring(0,3); }} Fra index
(incl.)
Fra index (excl.)
konkatenering af strenge
”3” + 4 giver ”34”
3 + 4 giver 7
Interaktion mellem objekterInteraktion mellem objekter
Gennemgående eksempel:Gennemgående eksempel:Et digitalt urEt digitalt ur
Abstraktion og modulopdelingAbstraktion og modulopdeling• Abstraktion
– evnen til at at fokusere på det store billede/helhedsindtrykket I stedet for at fortabe sig I detaljer
• Modulopdeling – at opdele komplekse problemer i mindre enheder der
er mere overskuelige (del-og-hersk strategien)
• Modul– En veldefineret enhed som kan konstrueres separat
men som bruges I samspil med andre moduler til at opbygge en større helhed
Modulopdeling i praksisModulopdeling i praksis
• Eksempel – at designe en bil– Opdel bilen I komponenter: hjul, motor, sæder
osv.– Design de enkelte komponenter– Design bilen ved at sætte komponenterne
sammen og få dem til at interagere
Moduler i JavaModuler i Java
• I Java udgøres modulerne af objekter (grupperet eller hver for sig)
• Interaktionen mellem modulerne / objekterne er det der binder programmet sammen
• Objekterne interagerer ved at oprette referencer til hinanden og kalde hinandens metoder
Det digitale urDet digitale ur
Et display med 4 cifre?
Eller 2 displays med hver 2 cifre?
Lighed mellem funktionaliteten i de to displays?
Klasse diagramKlasse diagram
Klassediagrammet er skrevet i UML notation
UML = Unified Modeling Language
Klassediagrammet giver et statisk billede af relationerne mellem klasserne
Objekt diagramObjekt diagram
Objekt diagrammet er skrevet i UML notation
Objekt diagrammet viser et dynamisk billede af relationerne mellem objekterne på kørselstidspunktet
Implementation - NumberDisplayImplementation - NumberDisplay
public class NumberDisplay{ private int limit; private int value;
Constructor and methods omitted.}
Implementation - ClockDisplayImplementation - ClockDisplay
public class ClockDisplay{ private NumberDisplay hours; private NumberDisplay minutes;
Constructor and methods omitted.}
Simple typer vs. objekt typerSimple typer vs. objekt typer
32
objekt type: defineres af en klasseværdi gemmes i objekt
simpel type: er indbygget i sproget værdi gemmes direkte i variabel
NumberDisplay hours;
int value;
Simple typer vs. objekt typerSimple typer vs. objekt typer
32
ObjektType a;
int a;
ObjektType b;
32
int b;
b = a;
Objekter der opretter objekterObjekter der opretter objekterpublic class ClockDisplay{ private NumberDisplay hours; private NumberDisplay minutes; private String displayString; public ClockDisplay() { hours = new NumberDisplay(24); minutes = new NumberDisplay(60); updateDisplay(); }}
Konstruktor i NumberDisplay:public NumberDisplay(int rollOverLimit) { limit = rollOverLimit; value = 0;}
Aktuel parameter
Formel parameter
Hvad skal uret kunneHvad skal uret kunne
• Startes kl. 0:0 eller på bestemt klokkeslæt
• Stilles til bestemt klokkeslæt
• Gå et minut ad gangen
• Vise hvad klokken er
• Heraf udledes krav til felter og metoder i klasserne ClockDisplay og NumberDisplay
Logiske operatorerLogiske operatorer
• && (and – en logisk konjunktion)• || (or – en logisk disjunktion)• ! (not – en negation)læs mere i app. D.2
public void setValue(int replacementValue) { if((replacementValue >= 0) && (replacementValue < limit)) { value = replacementValue; } }
Modulus operatoren %Modulus operatoren %
• 27 divideret med 4 er lig med 6 rest 3• I Java:
– 27 / 4 = 6 (med to heltalsoperander)– 27 % 4 = 3 (kun med heltalsoperander)– 27 / 4.0 = 6.75 (med 1 eller 2 floating point operander)
public void increment(){ value = (value + 1) % limit;}
Klasser med flere konstruktørerKlasser med flere konstruktører
public ClockDisplay() { hours = new NumberDisplay(24); minutes = new NumberDisplay(60); updateDisplay();}
public ClockDisplay(int hour, int minute) { hours = new NumberDisplay(24); minutes = new NumberDisplay(60); setTime(hour, minute);}
Klassens konstruktor er overloaded, dvs. der er flere udgaver af samme metode med forskellige parameterlister
Interne og eksterne metodekaldInterne og eksterne metodekald• Internt metodekald (metode i samme objekt):
Syntax: metodekald(parameterliste)
Eksempel: setTime(12,5);
alternativt: this.setTime(12,5);
• Eksternt metodekald (metode i andet objekt)
Benytter ”dot” notation
Syntax: object.metodekald(parameterliste)
Eksempel: clock.setTime(12,5);
DebuggingDebugging• Bruges til at finde fejl i programmet
• Breakpoint markerer hvor koden skal stoppe eksekveringen
• ”Step” eksekverer en linie kode og går så videre til næste kodelinie – abstraktion fra detaljer
• ”Step into” går i detaljer og går ind i de enkelte metodekald