Forelæsning Uge 2 – Torsdag

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
Hvordan man skriver koden.
Indledende Programmering Uge 5 - Efterår 2006 Om at udvikle korrekte og pålidelige programmer Susanne Lindros.
FEN IntroJava AAU1 Java grundelementer Variable og datatyper Sætninger og udtryk Metoder.
Forelæsning 3.1 Collections Javas for-each løkke
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.
Fundamentale datastrukturer
GP 8, 24/ Grundlæggende programmering Efterår 2001 Forelæsning 8 onsdag 24/ kl. 9:15 – 12:00.
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
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper : arrays, stakke, køer,
Repetition: Introduktion til OOP med C# og .NET
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.
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.
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.
Fundamentale sprogbegreber Sætninger og udtryk Niveauer af programbeskrivelse (statisk versus dynamisk syn)
Variabler, klassevariabler, identitet og lighed, collections
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6B.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
Klassevariable- og metoder Tilstand og opførsel på klasseniveau.
 Bærbak & Caspersen, 2000Introducerende objektorienteret programmering1.1 Turtlemaskinen Arkitektur, instruktionssæt og eksempler.
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 programmering1B.1 Skildpadder Modeller, objekter og opførsel.
DAIMIIntroducerende objektorienteret programmering4B.1 Grundlæggende og Reference Typer i Java Typer, tilstand, erklæring, reference- og værdi semantik,
Indledende Programmering Uge 6 - Efterår 2006
Polymorfi Abstrakte klasser, substitutionsprincippet, statisk og dynamisk type.
Grafik Modeller, objekter og opførsel. dIntProg, F08Grafik.2 Nye begreber Repetition (iteration) –gentagelse af opførsel Parametrisering –generalisering.
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.
DAIMIIntroducerende objektorienteret programmering4A.1 Kontrakter og Design Kontraktbaseret design, JavaDoc dokumentation,
Klassevariable- og metoder Funktionalitet på klasseniveau.
 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.
Introduktion til programmering Repetition. dIntProg, F08Repetition.2 dIntProg Sidste forelæsning (12/10) –kort tilbagemelding på evaluering –repetition.
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.
Skildpadder Modeller, objekter og opførsel.  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringSkildpadder.2 Model Modeller bruges.
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;
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 4 – Torsdag
Forelæsning Uge 3 – Mandag Niveauer af programbeskrivelser – Statiske / dynamiske beskrivelser ArrayList –Collection med variabelt antal elementer –Der.
Forelæsning Uge 4 – Torsdag
Forelæsning Uge 5 – Mandag
Forelæsning Uge 2 – Torsdag
Forelæsning Uge 4 – Mandag
Forelæsning Uge 5 – Mandag
Forelæsning Uge 6 – torsdag – repetition
Quiz – Uge 3 – mandag – første time
Forelæsning Uge 2 – Mandag
Forelæsning Uge 2 – Mandag
Forelæsning Uge 3 – Mandag
Forelæsning Uge 2 – Torsdag
Dokumentation.
Kode til Event på Kontrol
Forelæsning Uge 3 – Mandag
Forelæsning Uge 2 – Mandag
Forelæsning Uge 4 – Torsdag
Præsentationens transcript:

Forelæsning Uge 2 – Torsdag Niveauer af programbeskrivelser Statiske / dynamiske beskrivelser Klassevariabler og klassemetoder Variabler og metoder der et tilknyttet klassen (i stedet for at være tilknyttet objekter) Problemløsning BlueJ’s Code Pad Nyttig til små eksperimenter BlueJ’s Debugger Nyttig til at finde fejl i kode Afleveringsopgave: Skildpadde 1 (Turtle 1)

● Niveauer af programbeskrivelser Klassediagram (oversigt) Hvad (specifikation) JavaDoc (mellem-niveau) Hvad Java-kode (detaljeret) Hvordan (inplementation) Objektdiagram (oversigt) Relationer mellem objekter (referencer) Sekvensdiagram (detaljeret) Interaktion mellem objekter (metodekald) Statisk (struktur) rum for hvad der generelt kan ske Dynamisk (udførelse) scenarie for hvad der sker i en konkret situation

Klassediagram (statisk, oversigt) UML TestDriver run() BlueJ UML klassediagrammer kan også vise nogle af feltvariablerne 1 ClockDisplay timeTick() setTime(int h, int m) getTime() void updateDisplay() NumberDisplay 2 int getValue() String getDisplayValue() void setValue(int val) void increment()

Java-kode (statisk, detaljeret) Skift mellem Java kode og dokumentation Disse kommentarer indsættes i klassens dokumentation Vi har to forskellige konstruktører med forskellige parametre

JavaDOC (statisk, mellem-niveau) Første sætning i kommentaren Tilsvarende gælder for kommentarer til klassen kommentarer til metoder Hele kommentaren

Objektdiagram (dynamisk, oversigt) ClockDisplay hours minutes displayString NumberDisplay limit value 24 String "00:00" NumberDisplay limit value public ClockDisplay() { hours = new NumberDisplay(24); minutes = new NumberDisplay(60); updateDisplay(); } 60 public NumberDisplay(int rollOverLimit) { limit = rollOverLimit; value = 0; } Konstruktører

Sekvensdiagram timeTick 23:00 22:59 :ClockDisplay minutes :NumberDisplay hours :NumberDisplay timeTick() increment() getValue() increment() Clicker Quiz updateDisplay() getDisplayValue() getDisplayValue() public void timeTick() { minutes.increment(); if(minutes.getValue() == 0) { hours.increment(); } updateDisplay(); private void updateDisplay() { displayString = hours.getDisplayValue() + ":" + minutes.getDisplayValue(); }

● Klassevariabler og klassemetoder Instansvariabler og instansmetoder Hvert objekt har sine egne feltvariabler Metoder kaldes ved at bede objekter om at udføre dem Det er imidlertid muligt at erklære feltvariabler og metoder som tilhører klassen Klassevariabler og klassemetoder erklæres med det reserverede ord static Klassevariabler bruges til at modellere egenskaber for klassen, f.eks.: myndighedsalder for personer, fælles rentesats for alle konti Klassemetoder bruges til at modellere operationer, der er uafhængige af objekters tilstande

Har I set dem før? Hvor har I mødt klassemetoder? new TestDriver() void run() Open Editor Compile Inspect Remove Klassemetode kan kaldes uden at lave et objekt af typen TestDriver Hvor har I mødt klassevariabler? System.out.println(...); Klasse i java.lang (importeres automatisk) Klassevariabel af type PrintStream Metode i PrintStream udskriver parameteren på "standard" output stream (BlueJ's terminal)

Eksempler fra java.lang.Math konstant (kan ikke ændres) public class Math { public static final double PI = 3.141592653589793 ... // 0.0 ≤ random() < 1.0 public static double random() {...} // sqrt(a) == a public static double sqrt(double a) {...} // pow(a,b) == ab public static double pow(double a, double b) {...} } navne på konstanter skrives med store bogstaver og "underscores", fx MAX_NO

Eksempel på statics public class Account { private static double interestRate; private int balance; private Person owner; ... public static void setInterestRate (double rate) { interestRate = rate; } public void addInterest() { balance = (int) (balance * interestRate); Klassemetoder har kun adgang til klassevariabler og klassemetoder Almindelige metoder har adgang til alle feltvariabler og alle metoder uanset om disse er static eller ej En statisk metode, kan dog godt oprette et eller flere nye objekter (fra egen eller andre klasser), hvorpå den statiske metode kan tilgå feltvariabler og instansmetoder i disse objekter på helt normal vis

Brug af klassevariabler og klassemetoder Klassevariable og klassemetoder tilgås via klassen Math.PI; Math.random(); Account.setInterestRate(2.65); Kan også tilgås via objekt, men det er "dårlig stil" og kan være forvirrende Account myAccount = new Account(...); myAccount.setInterestRate(2.65); Metoden kaldes på en specifik bankkonto, men det er rentesatsen for alle konti, der ændres Pause

Identificer problemet ● Problemløsning Identificer problemet Analyser løsningsmuligheder Evaluer resultatet Vælg den bedste idé Analyse Implementer idéen via et program (f.eks. i Java) Programmering

Ex: Cup turnering (fx tennis eller fodbold) Spillerne/holdene mødes to og to Vinderen fortsætter til næste runde, mens taberen er slået ud af turneringen og ikke får flere kampe Vi vil gerne lave en algoritme, som beregner, hvor mange kampe, der skal til, hvis der er X spillere/hold i turneringen Løsning for X = 29 13 sekstendedels finaler + 3 oversiddere 8 ottendedels finaler 4 kvartfinaler 2 seminfinaler 1 finale I alt 28 kampe Husk at bruge tid på analyse Det lønner sig Er der en lettere måde at løse opgaven på? Der bliver slået ét hold ud i hver kamp Så vi skal bruge X-1 kampe (hvor X er antallet af hold)

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

● BlueJ's debugger (afluser = fejlfinder) Nyttig, når man skal tjekke den detaljerede opførsel af kørende Java kode Breakpoints indsættes (og fjernes) ved at klikke i venstre margin af editoren Under programudførelsen vil debuggeren stoppe, når et breakpoint nås, og vise positionen med en sort pil (samt gul farve) Herefter kan man ”steppe” gennem koden sætning for sætning

Metodekald Når den næste sætning er et metodekald, har man to muligheder: Udfører hele metodekaldet uden at man ser detaljerne Starter metode-kaldet, men stopper ved første instruktion i den kaldte metode

Metodekald Parat til at udføre første sætning i den kaldte metode Andre knapper: Fortsætter kørslen frem til næste breakpoint Stopper kørslen Nødstop (uendelig while løkke og lignende)

Undervejs kan man inspicere Igangværende metodekald Værdier for feltvariabler Værdier for lokale variabler

● Afleveringsopgave: Skildpadde 1 (Turtle 1) Vi vender tilbage til skildpadden fra sidste forelæsning (0,0) (600,600) Skildpadde Skildpaddens tilstand Position: (x, y) Vinkel: 0 (360) 270 180 90 Farve:: ... Pen status: up/down I skal lave metoder til at tegne en række forskellige figurer, bl.a. disse:

● Opsummering Niveauer af programbeskrivelser Statiske / dynamiske beskrivelser Klassevariabler og klassemetoder Variabler og metoder der et tilknyttet klassen (i stedet for at være tilknyttet objekter) Problemløsning Husk at lave en grundig analyse Det betaler sig i det lange løb I store projekter bruger man ofte mere tid på analyse end på programmering BlueJ’s Code Pad Nyttig til små eksperimenter BlueJ’s Debugger Nyttig til at finde fejl i kode Afleveringsopgave: Skildpadde 1 (Turtle 1)

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