1 / 27

Indledende Programmering Uge 2 - Efterår 2006

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

myrrh
Download Presentation

Indledende Programmering Uge 2 - Efterår 2006

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Indledende ProgrammeringUge 2 - Efterår 2006 Selektioner og interaktion mellem objekter Susanne Brix Lindros

  2. Plan 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

  3. Assignment operatorer int samletPris; samletPris = antal * billetPris; int antal = 10; antal = antal + 1; int antal = 10; antal += 1; int antal = 10; antal++;

  4. Betingelser: if-sætninger if (boolean expression) statement; • Envejs valg: • Tovejs valg: • Valg med flere sætninger i samme gren: if (boolean expression) statement; else statement; if (boolean expression) { statement1; statement2; }

  5. Betingelser: switch-sætninger (Javabogen appendix C side 439-440) • Flervejsvalg ud fra en enkelt værdi switch (expression) { case value: statements; break; case value: statements; break; … default: statements; break; }

  6. Betingelser: switch-sætninger • Flervejsvalg ud fra en enkelt værdi switch (month) { case 1: case 3: … case 12: numberOfDays = 31; break; case 4: case 6: … case 11: numberOfDays = 30; }

  7. Lokale variable • Erklæres i metodens krop • Virkefelt (scope): metodens krop • Levetid (lifetime): indtil metoden returnerer Anvend altid lokale variable til værdier der kun anvendes lokalt i en metode public int refundBalance() { int amountToRefund; amountToRefund = balance; balance = 0; return amountToRefund; }

  8. Felter, 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); }

  9. Strengbehandling 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); } } konkatenering af strenge ”3” + 4 giver ”34” 3 + 4 giver 7 Fra index (excl.) Fra index (incl.)

  10. Interaktion mellem objekter Gennemgående eksempel:Et digitalt ur

  11. Abstraktion 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

  12. Modulopdeling 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

  13. Moduler 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

  14. Det digitale ur Et display med 4 cifre? Eller 2 displays med hver 2 cifre? Lighed mellem funktionaliteten i de to displays?

  15. Klasse diagram Klassediagrammet giver et statisk billede af relationerne mellem klasserne Klassediagrammet er skrevet i UML notation UML = Unified Modeling Language

  16. Objekt diagram Objekt diagrammet viser et dynamisk billede af relationerne mellem objekterne på kørselstidspunktet Objekt diagrammet er skrevet i UML notation

  17. Implementation - NumberDisplay public class NumberDisplay { private int limit; private int value; Constructor and methods omitted. }

  18. Implementation - ClockDisplay • public class ClockDisplay • { • private NumberDisplay hours; • private NumberDisplay minutes; • Constructor and • methods omitted. • }

  19. Simple typer vs. objekt typer simpel type: er indbygget i sproget værdi gemmes direkte i variabel int value; 32 NumberDisplay hours; objekt type: defineres af en klasse værdi gemmes i objekt

  20. Simple typer vs. objekt typer ObjektType a; ObjektType b; b = a; int a; int b; 32 32

  21. Objekter der opretter objekter public class ClockDisplay { private NumberDisplay hours; private NumberDisplay minutes; private String displayString; public ClockDisplay() { hours = new NumberDisplay(24); minutes = new NumberDisplay(60); updateDisplay(); } } Aktuel parameter Konstruktor i NumberDisplay: public NumberDisplay(int rollOverLimit) { limit = rollOverLimit; value = 0; } Formel parameter

  22. Hvad 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

  23. Logiske operatorer public void setValue(int replacementValue) { if((replacementValue >= 0) && (replacementValue < limit)) { value = replacementValue; } } • && (and – en logisk konjunktion) • || (or – en logisk disjunktion) • ! (not – en negation) læs mere i app. D.2

  24. Modulus operatoren % public void increment() { value = (value + 1) % limit; } • 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)

  25. Klasser 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

  26. Interne 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);

  27. Debugging • 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

More Related