Java 1
Java 1
▪ Notion de classe
▪ Instance (Objet)
▪ Attributs
▪ Constructeurs
▪ Constructeur de copie
▪ Le mot clé this
▪ Méthodes
Besoin
Nous avons souvent besoin de regrouper, dans une même entité, différentes propriétés et/ou informations d’un même
"objet".
• Un étudiant : nom, prénom, numéro de carte d’étudiant, adresse , notes
• Un joueur vidéo : pseudo, score, nombre de vies
• Une date : jour, mois , année
• Un article (dans un magasin) : code, libellé, prix unitaire, quantité en stock
• La Programmation Orientée Objet va nous donner un certain nombre d'outillages permettant davantage de
Robustesse, de Modularité, de Lisibilité à vos programmes, ce qui va dans le sens d'une meilleure
Maintenabilité.
• Robustesse par rapport au changement: Si votre programme est amené à changer un jour, à être étendu
ou qu'on ne veut pas être dans l'obligation de tout réécrire
• Un objet est une variable déclarés dans un type classe (type non primitif)
Objets
…..
…..
Voiture Voiture
verte de Facture Facture
rouge de
marque B 001 078
marque A
✓ Une description qui porte autant sur les données que sur les fonctions qui leurs sont appliquées
class Rectangle
{
…
}
A. Gabis INGE-1-NEW – 2025/2026 11
La POO en JAVA
Où déclarer les classes ?
• Chaque classe DOIT être déclarée dans un fichier propre à elle
• Le programme principal (la méthode main) est lui aussi dans une classe spéciale exécutable se trouvant
dans un fichier différent des fichiers des autres classes.
Classe
Type nomAttribut ;
Exemple :
Les attributs hauteur et largeur de type double de la classe Rectangle pourront être déclarés par :
class Rectangle {
double largeur;
double hauteur;
//...
}
A. Gabis INGE-1-NEW – 2025/2026
La POO en JAVA
Le constructeur
Un constructeur est une méthode particulière:
• Elle n’a pas de type de retour
• Invoquée systématiquement lors de l’instanciation (création) d’un objet
• Permet d’allouer la mémoire nécessaire à l’objet s’il ne porte pas de paramètres d’entrée
• Permet d’allouer la mémoire et d’initialiser les attributs de l’objet s’il porte des paramètres
d’entrée.
• L’instanciation d’un objet permet sa création en passant par les étapes suivantes :
✓ Le constructeur est invoqué
✓ L’espace mémoire est créé
Mot clé du langage :
Syntaxe de base: OBLIGATOIRE !!
Exemple
[Link] [Link]
public class Point public class Main
{ {
// Liste des attributs
int x; public static void main(String[] args)
int y; {
// Instanciation d'un objet Point
// Constructeur Point p0 = new Point();
Point()
{ }
}
}
}
Comment faire pour lire / modifier les attributs de l’objet p0 à partir du main ?
1. À partir de sa classe
Si une méthode d’une classe souhaite manipuler un ou plusieurs attributs de la même classe, il lui
suffit d’utiliser le nom de l’attribut comme une variable classique.
[Link]
public class Point
{
// Liste des attributs
int x;
int y;
// Constructeur
Point()
{
x = 0;
y = 3;
}
}
A. Gabis INGE-1-NEW – 2025/2026 19
La POO en JAVA
Accès à un attribut
Si le programme souhaitant accéder à un attribut d’une classe C donnée appartient à une autre
classe (ex : programme main) :
[Link]
[Link]
2. À partir d’un programme externe
[Link] public class Main
{
public class Point
{
public static void main(String[] args)
// Liste des attributs
{
int x;
// Instanciation d'un objet Point
int y;
Point p0 = new Point();
// Modification de la valeur de x
// Constructeur
p0.x = 0;
Point()
// Affichage de la valeur de y
{
[Link](p0.y);
}
}
}
}
À votre avis quelle est la valeur qui sera affichée pour l’attribut y de l’objet p0 ?
Valeur par
Type
défaut
int 0
double 0.0
boolean false
• D’initialiser ses attributs automatiquement aux valeurs par défaut de leurs types respectifs
Comment faire si l’on souhaite créer un objet et initialiser ses attributs en même
temps ?
1. Créer une méthode qui permettra d’initialiser les attributs d’un objet après sa
2 solutions (au min) création (son instanciation) ➔ Mais je ne sais pas encore manipuler les méthodes
• S’agissant d’un constructeur, il se présente comme étant une méthode particulière portant le nom de sa
classe. [Link]
public class Point [Link]
{
// Liste des attributs public class Main
int x; {
int y; public static void main(String[] args)
// Constructeur d'initialisation {
Point(int abc, int ord) // Instanciation d'un objet Point
{ Point p0 = new Point(3, 6);
x = abc; }
y = ord; }
}
}
A. Gabis INGE-1-NEW – 2025/2026
Retour sur le constructeur
Le constructeur d’initialisation : Conflit
Observons le code suivant où :
• La classe Point contient un constructeur d’initialisation
• Le programme main crée deux instances p0 (avec le constructeur par défaut) et p1 (avec le constructeur
d’initialisation)
Problème ? Pourquoi ?
A. Gabis INGE-1-NEW – 2025/2026
Retour sur le constructeur
Le constructeur d’initialisation : Conflit
• Dès qu’au moins un constructeur (différent) a été spécialisé, ce constructeur par défaut implicite
n’est plus valide
➔ Si l’on spécifie un constructeur sans spécifier de constructeur par défaut, on ne peut plus
construire d’objet de cette classe sans l’initialiser explicitement.
• Si l’on souhaite maintenir la création d’objets par le constructeur par défaut tout en ayant un constructeur
➔ l’ajouter à la classe EXPLICITEMENT
public class Point
{
// Liste des attributs public class Main
int x; {
int y; public static void main(String[] args)
// Constructeur d'initialisation {
Point(int abc, int ord) // Instanciation d'un objet Point avec un constructeur
{ par défaut
x = abc; Point p0 = new Point();
y = ord; // Instanciation d'un objet Point avec un constructeur
} d'initialisation
Point p1 = new Point(3, 6);
// Constructeur par défaut }
explicite }
Point()
{}
} Tout est bon
A. Gabis INGE-1-NEW – 2025/2026
Retour sur le constructeur
La surcharge de constructeur
• La surcharge d’une méthode ou d’un constructeur permet de définir plusieurs fois une même
méthode/constructeur avec des paramètres différents (type, nombre)
➔ Il est possible d’avoir dans une même classe : un constructeur par défaut et plusieurs constructeurs
d’initialisation portant tous le même nom qui est le nom de leurs classes.
Réponse :
}
}
Pourquoi ???!!!
[Link]
p0 Attributs de la public class Main
classe Point {
public static void main(String[] args)
{
x=0 // Instanciation d'un objet Point avec un constructeur par défaut
Point p0 = new Point();
y=0 Point p1 = p0;
p1.x = 3;
p1.y = 4;
[Link]("x = "+ p0.x+" y = "+p0.y);
p1 Les deux instances pointent vers }
}
les mêmes attributs.
Toute modification à travers p0 de
x et y est visible par p1 et vice
versa
Comment ?
En prenant en paramètre un objet du même type de sa classe afin de créer sa copie.
x=0
p0 y=0
Attributs de la
p1 classe Point
x=0
y=0
A. Gabis INGE-1-NEW – 2025/2026
Retour sur le constructeur
Le mot clé « this »
• Le mot-clé this est utilisé dans une classe pour désigner l'instance courante de la classe elle-même. Il est utilisé à
différentes fins.
1. Rendre le code explicite et non ambigu
Si dans une méthode/constructeur, il y a un paramètre ayant le même nom qu'un attribut de la classe dont
la méthode/le constructeur fait partie, il est possible de désigner explicitement l'attribut grâce à this
Point(Point o)
{
this(0, 0); Appel du
} constructeur à
Point(int x, int y) deux paramètres
{
this.x = x;
this.y = y;
}
}
• Une méthode est la mise en œuvre d'une opération pour une Classe (plusieurs méthodes pour le même
service)
• Une méthode définit une fonction applicable aux objets de la classe
Syntaxe :
Pour appeler une méthode de classe, il est obligatoire de passer par une instance d’objet de la même classe.
Syntaxe :
[Link] (Liste des arguments …)
ou
Exemple :
public class Point public class Main
{ {
// Liste des attributs public static void main(String[] args)
int x; {
int y; Point p0 = new Point();
// Constructeur par défaut explicite [Link]();
Point()
{ Point p1 = new Point(3, 4);
} [Link]();
// Constructeur d'initialisation à deux paramètres }
Point(int abc, int ord) }
{
x = abc;
y = ord;
}
// Méthode de classe
public void afficher()
{
[Link]("Info Point : x = "+ this.x+" y = "+this.y);
}
}