Grafik Modeller, objekter og opførsel. dIntProg, F08Grafik.2 Nye begreber Repetition (iteration) –gentagelse af opførsel Parametrisering –generalisering.

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

KONCEPT Klasser og objekter En klasse beskriver et World ArrayList
VOOP, 8 april Refleksion i objekt orienterede programmeringssprog Mandag 8/ Kasper Østerbye.
Objektorienteret programmering
FEN NOEA/IT Programmeringsteknologi 1 Arv og polymorfi Substitutionsprincippet Abstrakte klasser Design Patterns (Composite)
Iteration og parametrisering
MEC, DAIMIIntroJava AAU1 Crayon-objekter nu med loops og metoder.
Forelæsning 3.1 Collections Javas for-each løkke
Interfaces – brug. Overblik Tidligere: –Interfaces Comparable gør det muligt at bruge Collections metoderne –min, max, sort, … –Algoritmemønstre Find.
Fundamentale datastrukturer
Forelæsning 5.1 Brug af klassen Collections og interfacet Comparable samt parametriserede typer Projektuge: Ants and Spiders / Lommeregner dIntProg,
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper : arrays, stakke, køer,
Comparable Students German Students Composite Pattern State Pattern Observer Pattern Collections Interfaces Abstrakte klasser Design Patterns.
FEN IntroJava AAU1 Klasser og objekter Grundbegreber Student-Course.
FEN IntroJava AAU1 Grafik – Crayon-objekter.
Forelæsning 2.2 Tilstand og opførsel (repetition)
Fundamentale sprogbegreber
FEN IntroJava AAU1 Endnu mere om Klasser og Objekter Mange til mange relationer Student-Course v3.
KF04 GRAY Item 2, 12, 22, 32, 42, 52. Consider a builder when faced with many constructor parameters Item 2.
Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence s; int i; int j; Sequence s; String s; int i; int j;
Repetition af dIntProg v/ Morten D. Bech. Tour de force Variabler Løkker Comparable ImErKo-reglen Eksamenssæt dIntProg, E13.
9. Interfaces. 2 Nordjyllands Erhvervakademi Objectives “Good class design starts with good application design — how many classes, do they relate.
Begreber og Redskaber 11. Plan for idag Lidt afrunding: Collections Framework i Java Noget om oversættere og sprog Evaluering Sidste gang øvelser før.
Forelæsning 7.1 – repetition
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)
Variabler, klassevariabler, identitet og lighed, collections
Introduktion til programmering Repetition - ArrayList.
 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”
Lærde skildpadder Specialisering af skildpadder – nye kompetencer (metoder/kommandoer)
Klasser og objekter. dIntProg, E08Klasser og objekter.2 Grundbegreber Klasser og objekter –beskrivelse –oprettelse Attributter og metoder –tilstand –opførsel.
DAIMIIntroducerende objektorienteret programmering3B.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
DAIMIIntroducerende objektorienteret programmeringkd.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
 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.
Trinvis forfinelse Systematisk, gradvis udvikling af programmer.
Klassehierarkier Specialisering vha. subklasser. dIntProg, E05Klassehierarkier.2 Oversigt Eksempler på specialisering –Aktør, Koreograf, Skuespiller,
Interfaces Afkobling af programkomponenter (eksempel: Comparable)
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”
Klasser og objekter – grundbegreber.  Michael E. Caspersen, 2001Introducerende objektorienteret programmeringKlasser og objekter.2 Klasser og objekter.
 Jens Bennedsen 2001Multimedie programmering4.1 Definition af begreber Interface, implements, klasse.
 Jens Bennedsen 2001Multimedie programmering1.1 Skildpadder Modeller, objekter og opførsel.
 Jens Bennedsen 2001Multimedie programmering3B.1 Specifikationer Betingelser, specifikationer og JavaDoc.
Lærde skildpadder Specialisering af skildpadder – nye kompetencer (metoder/kommandoer)
 Jens Bennedsen 2001Multimedie programmering3A.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
Klasser og objekter. dIntProg, F08Klasser og objekter.2 Grundbegreber Klasser og objekter –beskrivelse –oprettelse Attributter og metoder –tilstand –opførsel.
Introduktion til programmering Repetition. dIntProg, F08Repetition.2 dIntProg Sidste forelæsning (12/10) –kort tilbagemelding på evaluering –repetition.
DAIMI, AUIntroducerende objektorienteret programmering11A.1 Destilleret UML Oversættelse fra UML til Java.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
DAIMIIntroducerende objektorienteret programmering2A.1 Lærde skildpadder Specialisering af skildpadder – nye kompetencer (metoder/kommandoer)
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
Klasser og objekter (Afsnit i manualen).
Forelæsning Uge 2 – Torsdag
Parametrisering En kort introduktion.
Forelæsning Uge 2 – Mandag
Præsentationens transcript:

Grafik Modeller, objekter og opførsel

dIntProg, F08Grafik.2 Nye begreber Repetition (iteration) –gentagelse af opførsel Parametrisering –generalisering af kode

dIntProg, F08Grafik.3 Model (0,0) Tavle En pens tilstand: - (position, vinkel, farve, bredde) - starttilstand: ((0, 0), 0, Color.black, 1) 0 (360) Position: (x,y) Vinkel: v Farve: color Bredde: positivt tal... Eller ((midt, midt), 0, Color.black, down) (400,500)

dIntProg, F08Grafik.4 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

dIntProg, F08Grafik.5 Tegneprogram (eks. drawer) public class Drawer { private Crayon c= new Crayon(); public void square100() { c.move(100); c.turn(90); }... }

dIntProg, F08Grafik.6 Gentagelser //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); }

dIntProg, F08Grafik.7 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); }... }

dIntProg, F08Grafik.8 Hvordan tegner man en ligesidet trekant? Hvordan tegner man en cirkel? Øvelse 1

dIntProg, F08Grafik.9 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. ?

dIntProg, F08Grafik.10 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.

dIntProg, F08Grafik.11 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 Parameter

dIntProg, F08Grafik.12 Øvelse 2 class Drawer {... /** * tegner en d-kant med sidelængde length */ public void polygon(int d, int length) {... } Skriv en metode der tegner en polygon. Lad antal sider og sidelængden være parametre til metoden.

dIntProg, F08Grafik.13 Øvelse 3 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) {... } Benyt metoden polygon til at konstruere metoder der kan tegne et kvadrat henholdsvis en ligesidet trekant.

dIntProg, F08Grafik.14 Abstraktioner og instanser polygon(int d, int length) polygon(4, length) square(int length) polygon(12, 100) polygon(36, 10) square(100) square(10) square(250) polygon(3, length) triangle(100) triangle(int length) triangle(15)

dIntProg, F08Grafik.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!

dIntProg, F08Grafik.16 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).

dIntProg, F08Grafik.17 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.