Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Lærde skildpadder Specialisering af skildpadder – nye kompetencer (metoder/kommandoer)

Lignende præsentationer


Præsentationer af emnet: "Lærde skildpadder Specialisering af skildpadder – nye kompetencer (metoder/kommandoer)"— Præsentationens transcript:

1 Lærde skildpadder Specialisering af skildpadder – nye kompetencer (metoder/kommandoer)

2  Jens Bennedsen 2001Multimedie programmering2A.2 Emner Nye slags skildpadder Nye metoder Parametrisering Specifikation Hvad  Hvordan Abstraktion

3  Jens Bennedsen 2001Multimedie programmering2A.3 Hvad gør følgende program? public static void main(String[] args) { Turtle t = new Turtle(); t.clear(); t.move(120); t.turn(90); t.move(80); t.turn(90); t.move(62); t.turn(270); t.penUp(); t.move(40); t.turn(238); t.move(86); t.penDown(); t.turn(180); t.move(86); t.turn(64); t.move(86); t.turn(180); t.penUp(); t.move(11); t.turn(328); t.penDown(); t.move(64); t.penUp(); t.turn(232); t.move(102); t.penDown(); t.turn(218); t.move(80); }

4  Jens Bennedsen 2001Multimedie programmering2A.4 Hvad gør følgende program? public static void main(String[] args) { HouseTurtle h = new HouseTurtle(); h.rectangle(120,60); //move to lower left corner of roof h.penUp(); h.turn(90); h.move(51); h.turn(90); h.move(14); h.turn(180); h.penDown(); h.roof((int)Math.sqrt(70*70+50*50), 120); }

5  Jens Bennedsen 2001Multimedie programmering2A.5 Hvorfor er den gode god og den dårlige dårlig? h.rectangle(120,60); //move to lower left corner of roof h.penUp(); h.turn(90); h.move(51); h.turn(90); h.move(14); h.turn(180); h.penDown(); h.roof((int)Math.sqrt(70*70+50*50), 120); t.clear(); t.move(120); t.turn(90); t.move(80); t.turn(90); t.move(62); t.turn(270); t.penUp(); t.move(40); t.turn(238); t.move(86); t.penDown(); t.turn(180); t.move(86); t.turn(64); t.move(86); t.turn(180); t.penUp(); t.move(11); t.turn(328); t.penDown(); t.move(64); t.penUp(); t.turn(232); t.move(102); t.penDown(); t.turn(218); t.move(80);

6  Jens Bennedsen 2001Multimedie programmering2A.6 Abstraktion! Turtle - turn - move - … HouseTurtle - rectangle - roof - … HouseDrawing - main

7  Jens Bennedsen 2001Multimedie programmering2A.7 Lærde padder –En padde er ‘født’ med et meget simpelt ‘ordforråd’, men vi kan ‘lære den op’ og derefter kontrollere den ved hjælp af de nye og mere avancerede operationer: class Drawing { public static void main(String args[]) { SkilledTurtle t = new SkilledTurtle(); t.center(); t.box(); t.wait(3000); t.clear(); t.spirille(); } class SkilledTurtle extends Turtle { //box, spirille }

8  Jens Bennedsen 2001Multimedie programmering2A.8 Skoling af padder En padde skoles som følger: class SkilledTurtle extends Turtle { public void box() { //tegner et kvadrat med sidelængde 100 for (int i=0; i<4; i++) { move(100); turn(90); } } public void spirille() { //tegner en spirille med sidelængde 100 for (int i=0; i<36; i++) { box(); turn(10); } } }

9  Jens Bennedsen 2001Multimedie programmering2A.9 Padder, og lærde padder class Turtle { //move, moveTo, turn,... } class SkilledTurtle extends Turtle { //box(...), spirille(...) }

10  Jens Bennedsen 2001Multimedie programmering2A.10 Der er mange slags lærde class Turtle { //move, moveTo, turn,... } class GeometryTurtle extends Turtle { //box(...), spirille(...) } class ArchitectTurtle extends Turtle { //house(...), church(...) }

11  Jens Bennedsen 2001Multimedie programmering2A.11 Skolede padder Det ville være smartere at lære padden at tegne firkanter (og spiriller) af vilkårlig størrelse: class Drawing { public static void main(String args[]) { SkilledTurtle t = new SkilledTurtle(); t.center(); t.box(200); t.wait(); t.clear(); t.spirille(150); } class SkilledTurtle extends Turtle { //box(...), spirille(...) }

12  Jens Bennedsen 2001Multimedie programmering2A.12 Parametrisering class SkilledTurtle extends Turtle { public void box(int l) { //tegner et kvadrat med sidelængde l for (int i=0; i<4; i++) { move(l); turn(90); } public void spirille(int l) { //tegner en spirille med sidelængde l for (int i=0; i<36; i++) { box(l); turn(10); }

13  Jens Bennedsen 2001Multimedie programmering2A.13 Øvelse 1 1. Skriv en operation der ‘lærer’ en turtle at tegne en polygon. Lad antal sider og sidelængden være parametre til operationen: class SkilledTurtle extends Turtle {... public void polygon(int d, int l) { //tegner en d-kant med sidelængde l... }

14  Jens Bennedsen 2001Multimedie programmering2A.14 Øvelse 2 class SkilledTurtle extends Turtle { public void polygon(int d, int l) {... } public void square(int l) { //tegner et kvadrat med sidelængde l... } public void triangle(int l) { //tegner en ligesidet trekant med sidelængde l... } 2. Benyt operationen polygon til at lære turtlen at tegne et kvadrat henholdsvis en ligesidet trekant.

15  Jens Bennedsen 2001Multimedie programmering2A.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  Jens Bennedsen 2001Multimedie programmering2A.16 Pointer (2) Når man skal benytte en operation er det vigtigt med forståelse af hvad operationen gør. Når man skal programmere en operation, skal man tage stilling til hvordan operationen skal realiseres (implementeres).

17  Jens Bennedsen 2001Multimedie programmering2A.17 Pointer (3) Typisk er man både anvender og implementør af en operation, men det er vigtigt at skelne skarpt mellem de to syn. Når man anvender en operation skal man ikke tænke på hvordan operationen er realiseret, og når man implementerer en operation skal man ikke tænke på hvad operationen skal bruges til. Efterlevelse af dette enkle princip er nøglen til at kunne lave gode programmer.


Download ppt "Lærde skildpadder Specialisering af skildpadder – nye kompetencer (metoder/kommandoer)"

Lignende præsentationer


Annoncer fra Google