Hold1-Uge4-Begreber

Download Report

Transcript Hold1-Uge4-Begreber

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