Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Grafik Modeller, objekter og opførsel. dIntProg, F08Grafik.2 Nye begreber Repetition (iteration) –gentagelse af opførsel Parametrisering –generalisering.

Lignende præsentationer


Præsentationer af emnet: "Grafik Modeller, objekter og opførsel. dIntProg, F08Grafik.2 Nye begreber Repetition (iteration) –gentagelse af opførsel Parametrisering –generalisering."— Præsentationens transcript:

1 Grafik Modeller, objekter og opførsel

2 dIntProg, F08Grafik.2 Nye begreber Repetition (iteration) –gentagelse af opførsel Parametrisering –generalisering af kode

3 dIntProg, F08Grafik.3 Model (0,0) Tavle En pens tilstand: - (position, vinkel, farve, bredde) - starttilstand: ((0, 0), 0, Color.black, 1) 0 (360) 270 180 90 Position: (x,y) Vinkel: v Farve: color Bredde: positivt tal... Eller ((midt, midt), 0, Color.black, down) (400,500)

4 dIntProg, F08Grafik.4 Model Drawer Crayon move(int d) moveto(int x, int y) jump(int d) jumpto(int x, int y) turn(double a) turnto(double a) erase() box(int length) spirille(...)... 1

5 dIntProg, F08Grafik.5 Tegneprogram (eks. drawer) public class Drawer { private Crayon c= new Crayon(); public void square100() { c.move(100); c.turn(90); }... }

6 dIntProg, F08Grafik.6 Gentagelser //tegn en firkant t.move(100); t.turn(90); //tegn en tolvkant... (suk!) //tegn en firkant for ( int i= 0; i<4; i++ ) { t.move(100); t.turn(90); } //tegn en tolvkant for ( int i= 0; i<12; i++ ) { t.move(100); t.turn(30); }

7 dIntProg, F08Grafik.7 Tegneprogram med løkke import java.awt.*; // Hvis man vil benytte farver public class Drawer { private Crayon c= new Crayon(Color.red, 1); public void square100() { for ( int i= 0; i<4; i++ ) { t.move(100); t.turn(90); }... }

8 dIntProg, F08Grafik.8 Hvordan tegner man en ligesidet trekant? Hvordan tegner man en cirkel? Øvelse 1

9 dIntProg, F08Grafik.9 Parametrisering (specifikation) class Drawer { private Crayon c= new Crayon(); /** tegner et kvadrat med sidelængde length */ public void box(int length) { } Det ville være smartere at lave en metode der kan tegne kvadrater af vilkårlig størrelse. ?

10 dIntProg, F08Grafik.10 Parametrisering (implementation) class Drawer { private Crayon c= new Crayon(); /** tegner et kvadrat med sidelængde length */ public void box(int length) { for (int i= 0; i < 4; i++) { c.move(length); c.turn(90); } Det ville være smartere at lave en metode der kan tegne kvadrater af vilkårlig størrelse.

11 dIntProg, F08Grafik.11 Parametrisering (implementation) class Drawer { private Crayon c= new Crayon(); /** tegner et kvadrat med sidelængde length */ public void box(int length) { for (int i= 0; i < 4; i++) { c.move(length); c.turn(90); } Det ville være smartere at lave en metode der kan tegne kvadrater af vilkårlig størrelse. Argument Parameter

12 dIntProg, F08Grafik.12 Øvelse 2 class Drawer {... /** * tegner en d-kant med sidelængde length */ public void polygon(int d, int length) {... } Skriv en metode der tegner en polygon. Lad antal sider og sidelængden være parametre til metoden.

13 dIntProg, F08Grafik.13 Øvelse 3 class Drawer {... public void polygon(int d, int length) {... } /** tegner et kvadrat med sidelængde length */ public void square(int length) {... } /** tegner en ligesidet trekant med * sidelængde length */ public void triangle(int length) {... } Benyt metoden polygon til at konstruere metoder der kan tegne et kvadrat henholdsvis en ligesidet trekant.

14 dIntProg, F08Grafik.14 Abstraktioner og instanser polygon(int d, int length) polygon(4, length) square(int length) polygon(12, 100) polygon(36, 10) square(100) square(10) square(250) polygon(3, length) triangle(100) triangle(int length) triangle(15)

15 dIntProg, F08Grafik.15 Pointer (1) Det kan betale sig at lave gode generelle operationer som kan genbruges i mange situationer. Parametrisering er nøglen til at lave generelle operationer. Det er svært at ‘opfinde’ de gode generelle operationer (konkret  generelt), men opsøg dem!

16 dIntProg, F08Grafik.16 Pointer (2) Når man skal benytte en metode er det vigtigt med forståelse af hvad operationen gør. Når man skal programmere en metode, skal man tage stilling til hvordan denne skal realiseres (implementeres).

17 dIntProg, F08Grafik.17 Pointer (3) Typisk er man både anvender og implementør af en metode, men det er vigtigt at skelne skarpt mellem de to syn. –Når man anvender en metode skal man ikke tænke på hvordan denne er realiseret. –Når man implementerer en metode skal man ikke tænke på hvad denne skal bruges til. Efterlevelse af dette enkle princip er en af nøglerne til at kunne lave gode programmer.


Download ppt "Grafik Modeller, objekter og opførsel. dIntProg, F08Grafik.2 Nye begreber Repetition (iteration) –gentagelse af opførsel Parametrisering –generalisering."

Lignende præsentationer


Annoncer fra Google