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

Slides:



Advertisements
Lignende præsentationer
T1 – OPGAVE 14.2 LINETT & SABRINA Klasse Varer namespace Opgave_14._2 { class Varer { private string vare; private string farve; private double.
Advertisements

GP 10, 7/ Grundlæggende programmering Efterår 2001 Forelæsning 10 onsdag 7/ kl. 9:15 – 12:00.
Iteration og parametrisering
MEC, DAIMIIntroJava AAU1 Crayon-objekter nu med loops og metoder.
Interfaces – brug. Overblik Tidligere: –Interfaces Comparable gør det muligt at bruge Collections metoderne –min, max, sort, … –Algoritmemønstre Find.
GP 8, 24/ Grundlæggende programmering Efterår 2001 Forelæsning 8 onsdag 24/ kl. 9:15 – 12:00.
FEN IntroJava AAU1 Grafik – Crayon-objekter.
Forelæsning 2.2 Tilstand og opførsel (repetition)
Fundamentale sprogbegreber
Begreber og Redskaber 4. Plan for idag Om metoder, parametre, returværdier Et par ord om objekt-orientering Håndkøring af programmer.
Begreber og Redskaber 3. Plan for idag Om metoder, parametre, returværdier Overblik over klasser,objekter,nedarvning Et par ord om objekt-orientering.
Fundamentale sprogbegreber Sætninger og udtryk Niveauer af programbeskrivelse (statisk versus dynamisk syn)
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering9B.1 Fletning.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6B.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
Klassevariable- og metoder Tilstand og opførsel på klasseniveau.
 Jens Bennedsen 2002Objektorienteret systemudvikling Persistens.
 Bærbak & Caspersen, 2000Introducerende objektorienteret programmering1.1 Turtlemaskinen Arkitektur, instruktionssæt og eksempler.
DAIMIIntroducerende Objektorienteret Programmering1 Polymorfi og nedarvning Motivation for arv og “mange former”
 1999, Henrik B. ChristensenIntroducerende objektorienteret programmering8A.1 Polymorfi og nedarvning Motivation for arv og “mange former”
 Jens Bennedsen 2001Multimedie programmering10A.1 Polymorfi og nedarvning Motivation for arv og “mange former”
Rekursive skildpadder Supertrekanter.....  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringRekursive skildpadder.2 Penta, etc.
DAIMIIntroducerende objektorienteret programmering4B.1 Typer og tilstand i Java Typer, tilstand, erklæring, variable, primitive datatyper, reference- og.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering7B.1 Søgning.
 Bærbak & Caspersen, 2000Introducerende objektorienteret programmeringAlgebra.1 Algebraiske begreber Tal, sandhedsværdier og figurer.
DAIMIIntroducerende objektorienteret programmering3B.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
 Henrik B. Christensen, 1999Introducerende objektorienteret programmering8B.1 Interfaces En ren kontrakt.
 Jens Bennedsen, 2003Introducerende objektorienteret programmeringinterfaces.1 Interfaces En ren kontrakt.
DAIMIIntroducerende objektorienteret programmeringkd.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
 Bærbak & Caspersen, 2000 Introducerende objektorienteret programmering4B.1 Talsystemer Positionstalsystemer Decimale og binære tal.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6A.1 Programmering med interfaces – en stak og en HP-regnemaskine push pop.
 Henrik Bærbak, 2000Introducerende objektorienteret programmering11B.1 Destilleret UML Oversættelse fra UML til Java.
DAIMIIntroducerende objektorienteret programmering1B.1 Skildpadder Modeller, objekter og opførsel.
DAIMIIntroducerende objektorienteret programmering4B.1 Grundlæggende og Reference Typer i Java Typer, tilstand, erklæring, reference- og værdi semantik,
I o p o DAIMI, AU, Marts 1999Introducerende objektorienteret programmering5B.1 Et lille banksystem Modellering ved hjælp af UML.
Interfaces Afkobling af programkomponenter (eksempel: Comparable)
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering7A.1 Rekursion.
Polymorfi Abstrakte klasser, substitutionsprincippet, statisk og dynamisk type.
Lærde skildpadder Specialisering af skildpadder – nye kompetencer (metoder/kommandoer)
DAIMIIntroducerende Objektorienteret Programmering8A.1 Polymorfi og nedarvning Motivation for arv og “mange former”
Grafik Modeller, objekter og opførsel. dIntProg, F08Grafik.2 Nye begreber Repetition (iteration) –gentagelse af opførsel Parametrisering –generalisering.
Klasser og objekter – grundbegreber.  Michael E. Caspersen, 2001Introducerende objektorienteret programmeringKlasser og objekter.2 Klasser og objekter.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Interfaces – hvorfor, hvad og hvordan?.  Michael E. Caspersen 2003IOOPInterfaces.2 Oversigt Interfaces, hvorfor –Separering af specifikation (interface)
 Jens Bennedsen 2001Multimedie programmering10B.1 Interfaces En ren kontrakt.
 Jens Bennedsen 2001Multimedie programmering4.1 Definition af begreber Interface, implements, klasse.
 Jens Bennedsen 2002Objektorienteret systemudvikling1.1 Objektorienteret design Persistens - introduktion.
 Jens Bennedsen 2001Multimedie programmering1.1 Skildpadder Modeller, objekter og opførsel.
DAIMIIntroducerende objektorienteret programmering4A.1 Kontrakter og Design Kontraktbaseret design, JavaDoc dokumentation,
 Jens Bennedsen 2001Multimedie programmering3B.1 Specifikationer Betingelser, specifikationer og JavaDoc.
I o p o DAIMI, AU, September 1999Introducerende objektorienteret programmering6B.1 Rekursive skildpadder Supertrekanter....
Lærde skildpadder Specialisering af skildpadder – nye kompetencer (metoder/kommandoer)
 Jens Bennedsen 2001Multimedie programmering3A.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
DAIMIIntroducerende Objektorienteret Programmering8B.1 Interfaces En ren kontrakt.
DAIMI, AUIntroducerende objektorienteret programmering11A.1 Destilleret UML Oversættelse fra UML til Java.
I o p o DAIMI, AU, Oktober 1999Introducerende objektorienteret programmering3E.1 Syntaksbeskrivelse Udtryk og Java-programmer.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
I o p o DAIMI, AU, September 1999Introducerende objektorienteret programmering5C.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
DAIMIIntroducerende objektorienteret programmering2A.1 Lærde skildpadder Specialisering af skildpadder – nye kompetencer (metoder/kommandoer)
Del, løs og kombinér Et algoritmemønster.
Skildpadder Modeller, objekter og opførsel.  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringSkildpadder.2 Model Modeller bruges.
Containerklasser – klassifikation og brug.  Michael E. Caspersen, 2003IOOPContainerklasser.2 Mange objekter Containerklasser –antag at man skal repræsentere.
Forelæsning Uge 2 – Torsdag Java syntax og style guide Sætninger –Simple sætninger (assignment, interne og eksterne metodekald) –Sammensatte sætninger.
Forelæsning Uge 2 – Torsdag
Forelæsning Uge 1 – Torsdag
Quiz – Uge 3 – mandag – første time
Forelæsning Uge 2 – Mandag
Quiz – Uge 3 – mandag – første time
Parametrisering En kort introduktion.
Forelæsning Uge 2 – Mandag
Quiz – Uge 3 – mandag – første time
Præsentationens transcript:

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

 Bærbak & Caspersen, 2000 Introducerende objektorienteret programmeringLærde skildpadder.2 Emner  Nye slags skildpadder  Nye metoder  Parametrisering  Specifikation  Hvad  Hvordan  Abstraktion

 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 }

 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); } } }

 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(...)  }

 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(...)  }

 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(...) }

 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); }

 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) {... }

 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.

 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!

 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).

 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.