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  Bærbak & Caspersen, 2000 Introducerende objektorienteret programmeringLærde skildpadder.2 Emner  Nye slags skildpadder  Nye metoder  Parametrisering  Specifikation  Hvad  Hvordan  Abstraktion

3  Bærbak & Caspersen, 2000 Introducerende objektorienteret programmeringLærde skildpadder.3 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 Driver { public static void draw() { SkilledTurtle t = new SkilledTurtle(); t.center(); t.box(); t.wait(3000); t.clear(); t.spirille(); } class SkilledTurtle extends Turtle { //box, spirille }

4  Bærbak & Caspersen, 2000 Introducerende objektorienteret programmeringLærde skildpadder.4 Skoling af padder  En padde skoles som følger: class SkilledTurtle extends Turtle { // Tegner et kvadrat med sidelængde 100 public void box() { for (int i=0; i<4; i++) { move(100); turn(90); } } // Tegner en spirille med sidelængde 100 public void spirille() { for (int i=0; i<36; i++) { box(); turn(10); } } }

5  Bærbak & Caspersen, 2000 Introducerende objektorienteret programmeringLærde skildpadder.5 Padder, og lærde padder  class Turtle {  //move, moveTo, turn,...  }  class SkilledTurtle extends Turtle {  //box(...), spirille(...)  }

6  Bærbak & Caspersen, 2000 Introducerende objektorienteret programmeringLærde skildpadder.6 Der er mange slags lærde  class Turtle {  //move, moveTo, turn,...  }  class GeometryTurtle extends Turtle {  //box(...), spirille(...)  }  class ArchitectTurtle extends Turtle {  //house(...), church(...)  }

7  Bærbak & Caspersen, 2000 Introducerende objektorienteret programmeringLærde skildpadder.7 Skolede padder  Det ville være smartere at lære padden at tegne firkanter (og spiriller) af vilkårlig størrelse: class Driver { public static void draw() { SkilledTurtle t = new SkilledTurtle(); t.center(); t.box(200); t.wait(); t.clear(); t.spirille(150); } class SkilledTurtle extends Turtle { //box(...), spirille(...) }

8  Bærbak & Caspersen, 2000 Introducerende objektorienteret programmeringLærde skildpadder.8 Parametrisering class SkilledTurtle extends Turtle { //tegner et kvadrat med sidelængde l public void box(int l) { for (int i=0; i<4; i++) { move(l); turn(90); } //tegner en spirille med sidelængde l public void spirille(int sl) { for (int i=0; i<36; i++) { box(sl); turn(10); }

9  Bærbak & Caspersen, 2000 Introducerende objektorienteret programmeringLærde skildpadder.9 Ø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 {... //tegner en d-kant med sidelængde l public void polygon(int d, int l) {... }

10  Bærbak & Caspersen, 2000 Introducerende objektorienteret programmeringLærde skildpadder.10 Øvelse 2 class SkilledTurtle extends Turtle { public void polygon(int d, int l) {... } //tegner et kvadrat med sidelængde l public void square(int l) {... } //tegner en ligesidet trekant med sidelængde l public void triangle(int l) {... }  2. Benyt operationen polygon til at lære turtlen at tegne et kvadrat henholdsvis en ligesidet trekant.

11  Bærbak & Caspersen, 2000 Introducerende objektorienteret programmeringLærde skildpadder.11 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!

12  Bærbak & Caspersen, 2000 Introducerende objektorienteret programmeringLærde skildpadder.12 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).

13  Bærbak & Caspersen, 2000 Introducerende objektorienteret programmeringLærde skildpadder.13 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