• Aucun résultat trouvé

Compléments objet Licence 1 MASS - Introduction programmation JAVA Sébastien Verel [email protected] www.i3s.unice.fr/

N/A
N/A
Protected

Academic year: 2022

Partager "Compléments objet Licence 1 MASS - Introduction programmation JAVA Sébastien Verel [email protected] www.i3s.unice.fr/"

Copied!
20
0
0

Texte intégral

(1)

Licence 1 MASS - Introduction programmation JAVA

Sébastien Verel [email protected] www.i3s.unice.fr/

verel

Équipe ScoBi - Université de Nice Sophia-Antipolis

26 mars 2012

(2)

Objectifs de la séance 9

Savoir utiliser "this" en Processing

Savoir utiliser un héritage simple entre classes en Processing Savoir utiliser la classe ArrayList

Question principale du jour :

Comment hériter sans soucis ?

(3)

Plan

1

Utilisation de "this"

2

Héritage avec Processing

3

Données indexées de taille variable

(4)

Utilisation de This

Voir la première partie du cours J.P. Roy :

Compléments sur les objets

(5)

La classe Balle (CM et TP 07 exo 3)

Champs :

float x, y float vx, vy float r

float friction

Constructeur :

Balle(int rInit, float fInit, float xInit, float yInit, float vxInit, float vyInit)

Méthodes :

void dessineToi() void bouge()

public String toString()

(6)

Programme principal

Balle b1, b2;

void setup() { size(400, 400);

fill(0, 0, 255);

smooth();

b1 = new Balle(10, 0.95, 0, 0, 2, 0);

b2 = new Balle(20, 0.98, 50, 0, 0.0, -0.5);

println("Balle initiale : " + b1);

println("Balle initiale : " + b2);

}

(7)

Programme principal

void draw() {

background(255, 255, 0);

b1.dessineToi();

b2.dessineToi();

b1.bouge();

b2.bouge();

}

(8)

Balle cubique

Et si on créait une balle cubique ?

Idée

Récupérer l'expertise de la classe Balle

Changer seulement ce qui est spécique à une balle cubique

(9)

La classe Cube

class Cube extends Balle { ...

...}

Le mot clé extends permet d'utiliser toutes les champs et méthodes de la classe Balle depuis la classe Cube :

la classe Cube hérite de la classe Balle

Balle est la classe mère de la classe Cube

Cube est la classe lle de la classe Balle

(10)

La classe Cube : constructeur

class Cube extends Balle {

Cube(int rInit, float fInit, float xInit, float yInit, float vxInit, float vyInit) { super(rInit, fInit, xInit, yInit, vxInit, vyInit);

} }

Le mot clé super fait référence à la classe mère (supérieure)

Donc super(...) fait appel au construsteur de la classe mère

(supérieure)

(11)

La classe Cube : 2 constructeurs

class Cube extends Balle {

Cube(int rInit, float fInit, float xInit, float yInit, float vxInit, float vyInit) { super(rInit, fInit, xInit, yInit, vxInit, vyInit);

}

Cube(int rInit, float fInit) { this(rInit, fInit,

random(width), random(height / 4, height), random(-2, 2), random(-2, 0));

} }

(12)

La classe Cube : méthode spécique

class Cube extends Balle {

Cube(int rInit, float fInit, float xInit, float yInit, float vxInit, float vyInit) { super(rInit, fInit, xInit, yInit, vxInit, vyInit);

}

Cube(int rInit, float fInit) { this(rInit, fInit,

random(width), random(height / 4, height), random(-2, 2), random(-2, 0));

}

void dessineToi() { rect(x, y, r, r);

(13)

Barre

Et si on créait une barre qui rebondit (bizarrement) ?

(14)

La classe Barre

class Barre extends Balle { ...

...}

(15)

La classe Barre : champ spécique

class Barre extends Balle { float orientation;

...

}

La barre a une orientation (un angle).

(16)

La classe Barre : constructeurs

class Barre extends Balle { float orientation;

Barre(int rInit, float fInit, float orientationInit,

float xInit, float yInit, float vxInit, float vyInit) { super(rInit, fInit, xInit, yInit, vxInit, vyInit);

orientation = orientationInit;

}

Barre(int rInit, float fInit) {

this(rInit, fInit, random(0, TWO_PI),

random(width), random(height / 2, height), random(-2, 2), random(-2, 0));

}

(17)

La classe Barre : 1 méthode

class Barre extends Balle { (...)

void dessineToi() { line(x, y,

x + r * cos(orientation), y + r * sin(orientation));

} }

(18)

La classe Barre : une autre méthode spécique

class Barre extends Balle { (...)

void dessineToi() { line(x, y,

x + r * cos(orientation), y + r * sin(orientation));

}

void bouge() { super.bouge();

orientation = orientation + PI / 50;

}

(19)

Données indexées de taille variable

Voir le cours J.P. Roy :

Une collection de taille variable

(20)

Objectifs de la séance 9

Savoir utiliser "this" en Processing

Savoir utiliser un héritage simple entre classes en Processing Savoir utiliser la classe ArrayList

Question principale du jour :

Comment hériter sans soucis ?

Références

Documents relatifs

Savoir utiliser un h´ eritage simple entre classes en Processing Savoir utiliser la classe ArrayList?. Comment h´ eriter sans

4 D´ enombrement d’un ´ el´ ement dans deux tableaux en parall` ele Questions principales du jour :.. Comment rechercher et compter des ´ el´ ements dans un

Recherche dichotomique d’un ´ el´ ement dans un tableau Question principale du jour :.. Comment ´ ecrire ce que l’on ne connait pas

Un algorithme est un moyen pour un humain de présenter la résolution par calcul d'un problème à une autre personne physique (un autre humain) ou virtuelle (un calculateur). En eet,

lorsque booléen1 est vrai, la partie a s'exécute (quelque soit la valeur de booléen2) lorsque booléen1 est faux et que booléen2 est vrai, la partie b s'exécute. lorsque booléen1

si b est VRAI, alors "morceau d'algorithme" est exécuté si b est FAUX, alors "morceau d'algorithme" n'est pas exécuté, l'algorithme continue après "n tant

valeurs initiales des variables en paramètre : celles données eectivement en exécutant l'algorithme (passage par valeur) impossible de modier la valeur d'une variable par

les [] : indique que la variable est de type tableau toutes les valeurs des cases du tableau sont données en extension.. Déclaration et