Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

DAIMIIntroducerende objektorienteret programmering2A.1 Lærde skildpadder Specialisering af skildpadder – nye kompetencer (metoder/kommandoer)

Lignende præsentationer


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

1 DAIMIIntroducerende objektorienteret programmering2A.1 Lærde skildpadder Specialisering af skildpadder – nye kompetencer (metoder/kommandoer)

2 DAIMIIntroducerende objektorienteret programmering2A.2 Emner  Nye slags skildpadder  Nye metoder  Parametrisering  Specifikation  Hvad  Hvordan  Abstraktion

3 DAIMIIntroducerende objektorienteret programmering2A.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 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 }

4 DAIMIIntroducerende objektorienteret programmering2A.4 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); } } }

5 DAIMIIntroducerende objektorienteret programmering2A.5 Padder, og lærde padder  class Turtle {  //move, moveTo, turn,...  }  class SkilledTurtle extends Turtle {  //box(...), spirille(...)  }

6 DAIMIIntroducerende objektorienteret programmering2A.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 DAIMIIntroducerende objektorienteret programmering2A.7 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(...) }

8 DAIMIIntroducerende objektorienteret programmering2A.8 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); }

9 DAIMIIntroducerende objektorienteret programmering2A.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 {... public void polygon(int d, int l) { //tegner en d-kant med sidelængde l... }

10 DAIMIIntroducerende objektorienteret programmering2A.10 Ø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.

11 DAIMIIntroducerende objektorienteret programmering2A.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 DAIMIIntroducerende objektorienteret programmering2A.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 DAIMIIntroducerende objektorienteret programmering2A.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 "DAIMIIntroducerende objektorienteret programmering2A.1 Lærde skildpadder Specialisering af skildpadder – nye kompetencer (metoder/kommandoer)"

Lignende præsentationer


Annoncer fra Google