27
Indledende Indledende Programmering Programmering Uge 2 - Efterår 2006 Uge 2 - Efterår 2006 Selektioner og Selektioner og interaktion mellem interaktion mellem objekter objekter Susanne Brix Lindros Susanne Brix Lindros

Indledende Programmering Uge 2 - Efterår 2006

  • 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

Page 1: Indledende Programmering Uge 2 - Efterår 2006

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

Page 2: Indledende Programmering Uge 2 - Efterår 2006

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

Page 3: Indledende Programmering Uge 2 - Efterår 2006

Assignment operatorerAssignment operatorer

int antal = 10;antal = antal + 1;

int samletPris;samletPris = antal * billetPris;

int antal = 10;antal += 1;

int antal = 10;antal++;

Page 4: Indledende Programmering Uge 2 - Efterår 2006

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;}

Page 5: Indledende Programmering Uge 2 - Efterår 2006

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)

Page 6: Indledende Programmering Uge 2 - Efterår 2006

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;}

Page 7: Indledende Programmering Uge 2 - Efterår 2006

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

Page 8: Indledende Programmering Uge 2 - Efterår 2006

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);}

Page 9: Indledende Programmering Uge 2 - Efterår 2006

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

Page 10: Indledende Programmering Uge 2 - Efterår 2006

Interaktion mellem objekterInteraktion mellem objekter

Gennemgående eksempel:Gennemgående eksempel:Et digitalt urEt digitalt ur

Page 11: Indledende Programmering Uge 2 - Efterår 2006

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

Page 12: Indledende Programmering Uge 2 - Efterår 2006

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

Page 13: Indledende Programmering Uge 2 - Efterår 2006

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

Page 14: Indledende Programmering Uge 2 - Efterår 2006

Det digitale urDet digitale ur

Et display med 4 cifre?

Eller 2 displays med hver 2 cifre?

Lighed mellem funktionaliteten i de to displays?

Page 15: Indledende Programmering Uge 2 - Efterår 2006

Klasse diagramKlasse diagram

Klassediagrammet er skrevet i UML notation

UML = Unified Modeling Language

Klassediagrammet giver et statisk billede af relationerne mellem klasserne

Page 16: Indledende Programmering Uge 2 - Efterår 2006

Objekt diagramObjekt diagram

Objekt diagrammet er skrevet i UML notation

Objekt diagrammet viser et dynamisk billede af relationerne mellem objekterne på kørselstidspunktet

Page 17: Indledende Programmering Uge 2 - Efterår 2006

Implementation - NumberDisplayImplementation - NumberDisplay

public class NumberDisplay{ private int limit; private int value;

Constructor and methods omitted.}

Page 18: Indledende Programmering Uge 2 - Efterår 2006

Implementation - ClockDisplayImplementation - ClockDisplay

public class ClockDisplay{ private NumberDisplay hours; private NumberDisplay minutes;

Constructor and methods omitted.}

Page 19: Indledende Programmering Uge 2 - Efterår 2006

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;

Page 20: Indledende Programmering Uge 2 - Efterår 2006

Simple typer vs. objekt typerSimple typer vs. objekt typer

32

ObjektType a;

int a;

ObjektType b;

32

int b;

b = a;

Page 21: Indledende Programmering Uge 2 - Efterår 2006

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

Page 22: Indledende Programmering Uge 2 - Efterår 2006

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

Page 23: Indledende Programmering Uge 2 - Efterår 2006

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; } }

Page 24: Indledende Programmering Uge 2 - Efterår 2006

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;}

Page 25: Indledende Programmering Uge 2 - Efterår 2006

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

Page 26: Indledende Programmering Uge 2 - Efterår 2006

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);

Page 27: Indledende Programmering Uge 2 - Efterår 2006

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