KONCEPT Klasser og objekter En klasse beskriver et World ArrayList KONKRETE En klasse beskriver et KONCEPT FYSISKE KONCEPTER World ArrayList DieCup MATEMATISKE KONCEPTER SkilledTurtle Vector Circle MÆNGDER Wombat Crab String Actor ABSTRAKTE
KONCEPT INSTANS Klasser og objekter DieCup c1; DieCup c1 En klasse beskriver et Et objekt er en c1 KONCEPT INSTANS af en klasse NAVN ERKLÆRING INITIALISERING DieCup c1; DieCup c1 = new DieCup();
KONCEPT INSTANS Klasser og objekter Vector vel = new Vector(2, 3); En klasse beskriver et Et objekt er en vel KONCEPT INSTANS af en klasse NAVN ERKLÆRING INITIALISERING Vector vel = new Vector(2, 3);
12 QUIZ Angiv klassenavne på følgende koncepter Beskriv følgende koncepter ud fra deres klassenavne
QUIZ Die d1; String course; d1 = new Die(); Vector vel; Hvilke af disse er erklæringer? Og hvilke er initialiseringer? Die d1; String course; d1 = new Die(); Vector vel; course = "dIntProg” int n = 5; 1 2 3 4 5 6
NAVN PLADSHOLDER Variabler Variablen kaldes også en objektreference En variabel er et NAVN PLADSHOLDER og en på et objekt for netop dét objekt Klassen udgør variablens type c1 vel
FELTVARIABLER Variabler private Vector vel; KLASSE: Ball FELTVARIABLER private Vector vel; udgør et objekts tilstand Kan tilgås overalt i klassen vel = new Vector(xVel, yVel); d1 Vector-instansen tilhører kun én Ball-instans dice d2 wormCount vel sun eyes
LOKALE VARIABLER PARAMETRE Variabler DieCup c1; int i; sum Kan kun tilgås i den pågældende metode i PARAMETRE xVel nDice yVel public Ball(int xVel, int yVel) public void kochFlake(int n, double length) length
ArrayList<Die> dice; QUIZ Hvad er typerne af følgende variabler? String name; double real; ArrayList<Die> dice; Hvad er indholdet af feltvariablen vel ved ? Og ved ? 1 2 private Vector vel = new Vector(2, 3); public void moveBy(Vector vel) { vel = new Vector(-1, 4); } 1 2
PROCEDURE Metoder public int getEyes() { return eyes; } En metode definerer en bestemt Metoder udgør et objekts opførsel PROCEDURE i et objekt KLASSE: Die public int getEyes() { return eyes; } METODESIGNATUR METODEKROP
PROCEDURE Metoder private void kochFlake(int n, double length) En metode definerer en bestemt Metoder udgør et objekts opførsel PROCEDURE i et objekt ACCESS MODIFIER NAVN private void kochFlake(int n, double length) public void kochFlake(int n, double length) RETURTYPE PARAMETRE
ACCESSOR Metoder public int getEyes() { return eyes; } Returnerer information om objektets tilstand KLASSE: Die public int getEyes() { return eyes; }
ACCESSOR Metoder public boolean hitTopWall() { … return true; } Returnerer information om objektets tilstand KLASSE: Ball public boolean hitTopWall() { … return true; }
MUTATOR Metoder public void roll() { eyes = …; } Ændrer objektets tilstand KLASSE: Die public void roll() { eyes = …; }
MUTATOR Metoder public void move() { … … setLocation(newX, newY) Ændrer objektets tilstand KLASSE: Ball public void move() { … setLocation(newX, newY) } SUPERKLASSE: Actor … x = newX; y = newY;
KONSTRUKTØR Metoder public DieCup(int nDice) { … } Opretter en ny instans af en klasse KLASSE: DieCup public DieCup(int nDice) { … } KLASSE: TestDriver DieCup c1 = new DieCup(2);
METODEKALD Metoder d1.roll(); sum = d1.getEyes() + d2.getEyes(); this. Afvikler indholdet af en metode i et bestemt objekt HUSK PARENTESER! d1.roll(); sum = d1.getEyes() + d2.getEyes(); ARGUMENT VARIABELNAVN PÅ OBJEKTET METODENAVN this. setLocation(200, 200); ARGUMENT QUIZ Hvad er objektet her?
vel.horizontalFlip(); d6.getEyes(); QUIZ Hvilket metodekald er korrekt? d1.roll; kochFlake(3, 150); roll(this); verticalFlip(vel); new this.Die(); Hvilket af disse er ikke et metodekald? super(600, 400, 1); move(); this.move(); vel.horizontalFlip(); d6.getEyes();
CamelCase dromedaryCase Navngivning KLASSER VARIABLER METODER DieCup KLASSER SkilledTurtle act() dromedaryCase c1 eyes roll() VARIABLER METODER undtagen konstruktører Die() Ball()
OVERSIGT UML-diagrammer Et UML-klassediagram er en KLASSE liste af FELTVARIABLER over feltvariabler og metoder i en klasse liste af METODER Ball Vector vel Ball(int xVel, int yVel) void move() boolean hitTopWall() … DieCup ArrayList<Die> dice DieCup(int nDice) void roll() int getEyes()
OVERSIGT UML-diagrammer Opbevar Die-objekterne i en feltvariabel af typen ArrayList<Die> Et UML-klassediagram er en OVERSIGT over feltvariabler og metoder i en klasse EN-TIL-MANGE-RELATION * Die int eyes void roll() int getEyes() DieCup DieCup(int nDice) void roll() int getEyes()
QUIZ Implementer følgende UML-diagram (lav metoder og feltvariabler) Brewery String name ArrayList<Beer> beers Brewery(String n) void add(Beer b) Beer biggestBeer()
4 2 int VÆRDI INSTANS Tildeling c1 = new DieCup(2); En tildeling overfører en int (et objekt) VÆRDI INSTANS eller en eyes 4 2 til en variabel c1 = new DieCup(2); c1 c1 = new DieCup(3); eyes = r.nextInt(6) + 1; i++;
int eyes = r.nextInt(6) + 1; String eyesOfDie = "" + d1.getEyes(); QUIZ Hvilke af følgende tildelinger er ikke lovlige? int eyes = r.nextInt(6) + 1; String eyesOfDie = "" + d1.getEyes(); diagonal = (int) (50.0 * Math.sqrt(2)); String sum = (d1.getEyes() + d2.getEyes()); int x = -(26); x = x + 1; int eyes = r.nextInt(6)++; 1 2 3 4 5 6 7
BESLUTNING if-sætninger if (hitTopWall()) { … } else En if-sætning træffer en if (hitTopWall()) { … } else BESLUTNING hitTopWall() er true på baggrund af en betingelse (boolean) STØRRE END ELLER LIG MED if (eyes >= 3) … if (length == 200) … if (sum < n) … if (hitLeftWall() || hitRightWall()) hitTopWall() er false LIG MED MINDRE END DEN ENE ELLER BEGGE ER OPFYLDT
GENTAGER Løkker for (int i = 0; i < 5; i++) { … } En løkke STOPBETINGELSE en række instruktioner while (!hitTopWall()) { … } int i = 0; while (i < 5) { … i++; } STOPBETINGELSE Hver gentagelse kaldes en iteration
Collections SAMLING En collection er en dice af et vilkårligt antal elementer af samme type ERKLÆRING INITIALISERING ArrayList<Die> dice = new ArrayList<Die>(); ELEMENTTYPE HUSK PARENTESER! ! HUSK AT IMPORTERE BIBLIOTEKET java.util.ArrayList
Collections SAMLING En collection er en af et vilkårligt antal elementer af samme type PAS PÅ! Typer som int, double og boolean angives ved henholdsvis Integer, Double og Boolean ArrayList<Integer> numbers = new ArrayList<Integer>(); ! HUSK AT IMPORTERE BIBLIOTEKET java.util.ArrayList
QUIZ Erklær og initialiser ArrayList-objekter med følgende typer elementer Vector int String ArrayList<Die>
INDIVIDUELLE ELEMENTER Udvidet for-løkke En udvidet for-løkke gentager en række instruktioner FOR HVERT ELEMENT i en Collection ERKLÆRING AF INDIVIDUELLE ELEMENTER for (Die d : dice) { … } COLLECTION-OBJEKT