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

Slides:



Advertisements
Lignende præsentationer
Velkommen til Softwarekonstruktion
Advertisements

Programmeringsparadigmer.
T1 – OPGAVE 14.2 LINETT & SABRINA Klasse Varer namespace Opgave_14._2 { class Varer { private string vare; private string farve; private double.
KONCEPT Klasser og objekter En klasse beskriver et World ArrayList
Grundlæggende programmering Efterår 2001
Hvordan man skriver koden.
Structs Structs allokeres på stakken Memory-allokering sker ved oprettelse af variabel og ikke ved new Der kan defineres metoder incl. Constructor. Eksempel.
Indledende Programmering Uge 5 - Efterår 2006 Om at udvikle korrekte og pålidelige programmer Susanne Lindros.
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.
Objektorienteret programmering
FEN IntroJava AAU1 Java grundelementer Variable og datatyper Sætninger og udtryk Metoder.
1 Unified Expression Language Copyright © Lund & Bendsen A/S Unified Expression Language.
Grundlæggende elementer i UML
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.
GP6, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 6 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder.
GP 5, 26/ Grundlæggende programmering Efterår 2001 Forelæsning 5 onsdag 26/ kl. 9:15 – 12:00.
Objekter og klasser Rasmus D. Lehrmann DM
Repetition: Introduktion til OOP med C# og .NET
GP 3, 12/ Grundlæggende programmering Efterår 2001 Forelæsning 3 onsdag 12/ kl. 9:15 – 12:00.
Comparable Students German Students Composite Pattern State Pattern Observer Pattern Collections Interfaces Abstrakte klasser Design Patterns.
8 RÅD VEDRØRENDE GOD PROGRAMMERING Effective (brown) Java.
FEN IntroJava AAU1 Klasser og objekter Grundbegreber Student-Course.
Fundamentale sprogbegreber
FEN IntroJava AAU1 Endnu mere om Klasser og Objekter Mange til mange relationer Student-Course v3.
Uge 14: distribuerede objekter, fjernprocedurekald, RMI Tirsdag: Introduktion Mulige fordele ved distribuerede objekter Introduktion til RMI: - Interfacets.
KF04 GRAY Item 2, 12, 22, 32, 42, 52. Consider a builder when faced with many constructor parameters Item 2.
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
GP4, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 4 Vi begynder Slides ligger på hjemmesiden. Du er velkommen til.
GP3, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 3 Vi begynder Slides ligger på hjemmesiden. Du er velkommen til.
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.
I o p o DAIMI, AU, November 1999Programkonstruktion I9E.1 Konstruktion og brug af klasser – en stak og en HP-regnemaskine push pop.
Fundamentale sprogbegreber Sætninger og udtryk Niveauer af programbeskrivelse (statisk versus dynamisk syn)
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6B.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
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.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6A.1 Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Indledende Programmering Uge 6 - Efterår 2006
Interfaces Afkobling af programkomponenter (eksempel: Comparable)
Polymorfi Abstrakte klasser, substitutionsprincippet, statisk og dynamisk type.
Programmering med interfaces Separering af specifikation, anvendelse og implementation.
Klasser og objekter – grundbegreber.  Michael E. Caspersen, 2001Introducerende objektorienteret programmeringKlasser og objekter.2 Klasser og objekter.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
 Jens Bennedsen 2001Multimedie programmering4.1 Definition af begreber Interface, implements, klasse.
DAIMIIntroducerende objektorienteret programmering1 Et lille banksystem Modellering beskrevet ved et UML klassediagram.
 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;
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
I o p o DAIMI, AU, September 1999Introducerende objektorienteret programmering5C.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
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;
Objecter Introduktion Webintegrator HF1 PHP Object orienteret.
Forelæsning Uge 2 – Torsdag Java syntax og style guide Sætninger –Simple sætninger (assignment, interne og eksterne metodekald) –Sammensatte sætninger.
Forelæsning Uge 3 – Mandag Niveauer af programbeskrivelser – Statiske / dynamiske beskrivelser ArrayList –Collection med variabelt antal elementer –Der.
Forelæsning Uge 2 – Torsdag
Abstraktioner.
Forelæsning Uge 2 – Mandag
Forelæsning Uge 3 – Mandag
Klasser og objekter (Afsnit i manualen).
Forelæsning Uge 2 – Mandag
Forelæsning Uge 2 – Torsdag
Forelæsning Uge 2 – Torsdag
Forelæsning Uge 2 – Mandag
Forelæsning Uge 2 – Mandag
Forelæsning Uge 4 – Torsdag
Præsentationens transcript:

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 –Klassediagram og objektdiagram –Simple datatyper og objekt datatyper –Logiske operatorer og modulus operator –Overload og metodekald Debugging

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

Betingelser: 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æ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 )

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

Lokale 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 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 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” giver 7

Interaktion mellem objekter Gennemgående eksempel: Et digitalt ur

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

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

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

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

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

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

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

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

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

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

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(); } Konstruktor i NumberDisplay: public NumberDisplay(int rollOverLimit) { limit = rollOverLimit; value = 0; } Aktuel parameter Formel parameter

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

Logiske 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 % 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ø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 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);

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