Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

MEC, DAIMIIntroJava2006 - AAU1 Crayon-objekter nu med loops og metoder.

Lignende præsentationer


Præsentationer af emnet: "MEC, DAIMIIntroJava2006 - AAU1 Crayon-objekter nu med loops og metoder."— Præsentationens transcript:

1 MEC, DAIMIIntroJava2006 - AAU1 Crayon-objekter nu med loops og metoder

2 MEC, DAIMIIntroJava2006 - AAU2 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

3 MEC, DAIMIIntroJava2006 - AAU3 Tegneprogram (eks. drawer) public class Drawer { private Crayon c = new Crayon(); public void square100() { c.move(100); c.turn(90); }... }

4 MEC, DAIMIIntroJava2006 - AAU4 Iteration //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); }

5 MEC, DAIMIIntroJava2006 - AAU5 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); }... }

6 MEC, DAIMIIntroJava2006 - AAU6 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. ?

7 MEC, DAIMIIntroJava2006 - AAU7 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.

8 MEC, DAIMIIntroJava2006 - AAU8 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 (aktuel parameter) Parameter (formel parameter)

9 MEC, DAIMIIntroJava2006 - AAU9 Øvelser 1 Lav en metode, som tegner et ligesidet trekant med vilkårlig sidelængde Lav en metode, som tegner en ligesidet sekskant med vilkårlig sidelængde Kan disse tegne x-kant metoder generaliseres?

10 MEC, DAIMIIntroJava2006 - AAU10 Øvelser 2 class Drawer {... /** * tegner en d-kant med sidelængde length */ public void polygon(int d, int length) {... } Lav polygon-metoden:

11 MEC, DAIMIIntroJava2006 - AAU11 Øvelser 3 Lav square og triangle metoderne vha. polygon 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) {... }

12 MEC, DAIMIIntroJava2006 - AAU12 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!

13 MEC, DAIMIIntroJava2006 - AAU13 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).

14 MEC, DAIMIIntroJava2006 - AAU14 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 "MEC, DAIMIIntroJava2006 - AAU1 Crayon-objekter nu med loops og metoder."

Lignende præsentationer


Annoncer fra Google