POO
Java Rappels de cours + TP
15/10/2021 1
Rappels
●
Java est un langage purement Orienté Objets
●
Chaque objet appartient OBLIGATOIREMENT à une classe
●
La création d’un objet à partir d’une classe → instanciation
15/10/2021 2
Rappels
●
L’opérateur new() permet de créer un objet
●
Allocation mémoire → création
●
Appel à la méthode constructeur
15/10/2021 3
Constructeur
●
Permet d’initialiser un objet
●
C’est une méthode publique ayant le même nom que la classe
15/10/2021 4
Programme principal
public static void main (String[] args)
{
15/10/2021 5
Exercice
●
Soit la classe point()
– Définir 2 points x et y
– Définir un constructeur permettant d’initialiser le point
– Définir une méthode affiche () qui permet d’afficher les coordonnées
d’un point
– Définir une méthode deplacer() qui permet de déplacer un point
15/10/2021 6
Décomposition du
programme
●
→ Créer une classe appelée point
●
→ Définir 2 attributs x et y
15/10/2021 7
Déclarations
public class point
{
float x ;
float y ;
}
15/10/2021 8
Constructeur
→ Méthode ayant le même nom que la classe
→ Sans type de retour
→ visibilité : public
15/10/2021 9
Constructeur
public point (float abs, float ord)
{
this.x = abs ;
this.y = ord ;
}
15/10/2021 10
Affichage
●
C’est une méthode qui permet d’afficher les coordonnées d’un
point
15/10/2021 11
Affichage
public void affiche ()
{
[Link] ("Je suis un point de coordonnees " + x + " "
+ y) ;
}
15/10/2021 12
Déplacement
●
C’est une méthode qui permet de changer les coordonnées
d’un point.
●
Ce changement affecte la valeur de l’abscisse et/ou ordonnée
d’un point
●
On a besoin de 2 paramètres : dx et dy
15/10/2021 13
Déplacement
public void deplace (int dx, int dy)
{
x += dx ;
y += dy ;
}
15/10/2021 14
Programme principal
●
Définir un point a ;
●
Initialiser le point a via le constructeur
●
Afficher les coordonnées du point a
●
Déplacer le point a
●
Afficher de nouveau des nouvelles coordonnées du point a
15/10/2021 15
Programme principal
Point a = new Point(0,-1) ;
[Link]() ;
[Link](8, 3) ;
[Link]() ;
15/10/2021 16
Définition d’un deuxième
point
Point b;
b = new Point(4, 5) ;
[Link]() ;
15/10/2021 17
Programme Complet
class Point
{
public Point (int abs, int ord) // constructeur
{
this.x = abs ;
this.y = ord ;
}
15/10/2021 18
Programme Complet
public void deplace (int dx, int dy)
{
x += dx ;
y += dy ;
}
15/10/2021 19
Programme complet
public void affiche ()
{
[Link] ("Je suis un point de coordonnees " + x + "
"+ y) ;
}
15/10/2021 20
Programme complet
private float x ; // abscisse
private float y ; // ordonnee
public static void main (String args[])
{
Point a = new Point (0,-1) ;
[Link]() ;
[Link](8,3) ;
[Link]() ;
15/10/2021 21
Programme Complet
Point b;
b = new Point(4, 5) ;
[Link]() ;
}
}
15/10/2021 22
Exécution
Je suis un point de coordonnees 0.0 -1.0
Je suis un point de coordonnees 8.0 2.0
Je suis un point de coordonnees 4.0 5.0
15/10/2021 23
Question
●
Que ce passe-il si aucun constructeur n’est défini ?
15/10/2021 24
Réponse
●
Dans ce cas :
– On ne déclare pas de méthode constructeur
– Utilisation du constructeur par défaut
– L’opérateur new () est utilisé sas paramètres
– Les variables seront initialisés à leur valeur par défaut :
●
0 pour les valeurs numériques
●
\0 pour les valeurs textuelles
15/10/2021 25
Exemple
●
Reprenons le même exemple sachant que :
– La méthode constructeur sera éliminée
– L’instanciation des nouvelles objets est modifiée
15/10/2021 26
Exemple
class Point2
{
public void deplace (int dx, int dy)
{
x += dx ;
y += dy ;
}
15/10/2021 27
public void affiche ()
{
[Link] ("Je suis un point de coordonnees " + x + " "
+ y) ;
}
15/10/2021 28
Exemple
private float x ; // abscisse
private float y ; // ordonnee
public static void main (String args[])
{
Point2 a = new Point2();
[Link]();
[Link](8,3) ;
[Link]() ;
15/10/2021 29
Exemple
Point2 b;
b = new Point2();
[Link]() ;
}
}
15/10/2021 30