Java
Chapitre 1: Objets et Classes
Dr. Ahmad Khoureich Ka
UADB L2 D2AW
Dr. Ahmad Khoureich Ka Java UADB L2 D2AW 1 / 37
Sommaire
1 Introduction
2 Notion d’objet
Exemples d’objets
Un programme orienté objets
3 Les classes
Les données membres
Les méthodes
Définition d’une classe
Manipulation d’objets
Les mots clés : static, final et this
Les enveloppeurs de primitifs
4 Créer et exécuter un programme Java
Créer un programme Java
Compilation et Exécution
Dr. Ahmad Khoureich Ka Java UADB L2 D2AW 2 / 37
Introduction
Introduction
+ Le langage Java a été créé en 1995 par Sun Microsystems,
+ Java est un langage :
orienté objet,
modulaire,
fortement typé,
semi-compilé,
portable.
Dr. Ahmad Khoureich Ka Java UADB L2 D2AW 3 / 37
Notion d’objet
Notion d’objet
+ Java est un langage orienté objet.
+ Un programme Java est un ensemble d’objets interagissant entre
eux pour résourdre un problème donné.
+ Un objet est une entité ayant des propriétés et pouvant faire des
actions.
Dr. Ahmad Khoureich Ka Java UADB L2 D2AW 4 / 37
Notion d’objet Exemples d’objets
Notion d’objet
Exemple d’objets
+ stylo
Propriétés : couleur, longueur, poids, marque, ...
Actions : écrire, ...
+ écran
Propriétés : taille, résolution, marque, ...
Actions : afficher, s’allumer, s’éteindre, ...
+ 3x2 + 12x + 5 = 0
Propriétés : type, nombre d’inconnues, ...
Actions : as-tu des solutions ? donne tes solutions, ...
Dr. Ahmad Khoureich Ka Java UADB L2 D2AW 5 / 37
Notion d’objet Un programme orienté objets
Exemple : un programme orienté objets
Exemple : Écrire un programme permettant d’afficher le nombre de
solutions de 3x2 + 12x + 5 = 0
Indication : Identifiez les objets ou regrouper des données dans des
objets.
Dr. Ahmad Khoureich Ka Java UADB L2 D2AW 6 / 37
Notion d’objet Un programme orienté objets
Exemple : un programme orienté objets
Exemple : Écrire un programme permettant d’afficher le nombre de
solutions de 3x2 + 12x + 5 = 0
Indication : Identifiez les objets ou regrouper des données dans des
objets.
+ Les objets du programme
3x2 + 12x + 5 = 0
écran
Dr. Ahmad Khoureich Ka Java UADB L2 D2AW 6 / 37
Notion d’objet Un programme orienté objets
Exemple : un programme orienté objets
Exemple : Écrire un programme permettant d’afficher le nombre de
solutions de 3x2 + 12x + 5 = 0
Indication : Identifiez les objets ou regrouper des données dans des
objets.
+ Les objets du programme
3x2 + 12x + 5 = 0
écran
+ Algorithme
1 Demander à 3x2 + 12x + 5 = 0 si elle a des solutions,
2 Demander à l’objet écran d’afficher la réponse de
3x2 + 12x + 5 = 0.
Dr. Ahmad Khoureich Ka Java UADB L2 D2AW 6 / 37
Notion d’objet Un programme orienté objets
Exemple : un programme orienté objets
3x2 + 12x + 5 = 0 écran
Message 2
Message 1
Message 3
Objet principal
Message 1 : as-tu des solutions ?
Message 2 : réponse
Message 3 : affiche réponse
Dr. Ahmad Khoureich Ka Java UADB L2 D2AW 7 / 37
Notion d’objet Un programme orienté objets
Notion d’objet
Un autre programme :
Écrire un programme permettant d’afficher le nombre de solutions de
230x2 − 17x + 5 = 0.
Dr. Ahmad Khoureich Ka Java UADB L2 D2AW 8 / 37
Notion d’objet Un programme orienté objets
Notion d’objet
Un autre programme :
Écrire un programme permettant d’afficher le nombre de solutions de
230x2 − 17x + 5 = 0.
+ Solution : Utiliser le programme précédent en remplaçant l’objet
3x2 + 12x + 5 = 0 par l’objet 230x2 − 17x + 5 = 0.
Dr. Ahmad Khoureich Ka Java UADB L2 D2AW 8 / 37
Notion d’objet Un programme orienté objets
Notion d’objet
Un autre programme :
Écrire un programme permettant d’afficher le nombre de solutions de
230x2 − 17x + 5 = 0.
+ Solution : Utiliser le programme précédent en remplaçant l’objet
3x2 + 12x + 5 = 0 par l’objet 230x2 − 17x + 5 = 0.
+ Question : Pourquoi peut-on remplacer l’objet 3x2 + 12x + 5 = 0
par l’objet 230x2 − 17x + 5 = 0 ?
Dr. Ahmad Khoureich Ka Java UADB L2 D2AW 8 / 37
Les classes
Les classes
+ Un objet a un type. Par exemple 3x2 + 12x + 5 = 0 et
230x2 − 17x + 5 = 0 sont des équations, leur type est Equation.
mouton et chat sont des animaux, leur type est animal.
+ Java appelle le type d’un objet, la classe de l’objet. Donc les
objets 3x2 + 12x + 5 = 0 et 230x2 − 17x + 5 = 0 sont de la classe
Equation et les objets mouton et chat sont de la classe Animal.
+ Un objet est aussi appelé instance d’une classe. Par exemple,
3x2 + 12x + 5 = 0 est une instance de la classe Equation.
Dr. Ahmad Khoureich Ka Java UADB L2 D2AW 9 / 37
Les classes
Les classes
+ Une classe définit un type de donnée (d’objet). Elle définit toutes
les propriètés et actions des objets dont elle est le type.
+ Les propriétés sont appelées données membres et peuvent être
des données élémentaires (primitifs) ou des objets.
+ Les actions sont appelées méthodes, ce sont des fonctions.
+ Le fait de regrouper des données dans une classe est appelé
encapsulation.
Dr. Ahmad Khoureich Ka Java UADB L2 D2AW 10 / 37
Les classes Les données membres
Les données de type primitif
+ Un primitif est une donnée élémentaire de base telles que les
nombres entiers, les nombres réels, les caractères et les
booléens.
+ Java définit 8 types de primitifs :
4 types de nombres entiers
2 types de nombres réels
1 type pour les caractères
1 type pour les booléens
Dr. Ahmad Khoureich Ka Java UADB L2 D2AW 11 / 37
Les classes Les données membres
Les données de type primitif
Primitifs Taille en mémoire Valeurs Val. par défaut
boolean 1 bit true, false false
char 16 bits 0à −1 216 0
byte 8 bits −128 à +127 0
short 16 bits −215 à 215 − 1 0
int 32 bits −231 à 231 − 1 0
long 64 bits −263 à 263 − 1 0L
float 32 bits ±1.4e−45 à ±3.4e+38 0.0f
double 64 bits ±4.9e−324 à ±1.7e+308 0.0d
Dr. Ahmad Khoureich Ka Java UADB L2 D2AW 12 / 37
Les classes Les données membres
Déclaration et initialisation des primitifs
+ Le nom d’une données :
commence par une lettre minuscule,
les mots à l’intérieur du nom commence par une majuscule,
n’utilise que les lettres a-z, A-Z, 0-9, _
Exemple :
boolean b = true;
char c = 'a';
byte tresPetitEntier = 032;
short petitEntier = 0xAE;
int entier = 1024;
long grandEntier = 1234567890L;
float pi = 3.14f;
double grandReel = 3.5e+15;
Dr. Ahmad Khoureich Ka Java UADB L2 D2AW 13 / 37
Les classes Les données membres
Les données de type chaine de caractères
+ Java représente les chaines de caractères à l’aide de la classe
String.
+ Une chaine de caractères est donc un objet de la classe String.
Exemple :
Déclaration et initialisation de chaines de caractères
String nom = "Modou";
String adresse = "St Louis";
String info1 = nom + " habite à " + adresse + ".";
float note = 15.5f;
String info2 = nom + " a " + note + " au devoir";
Dr. Ahmad Khoureich Ka Java UADB L2 D2AW 14 / 37
Les classes Les méthodes
Les méthodes
+ Une méthode est une fonction, elle représente une action que
peut faire un objet de la classe (ou la classe elle même).
+ Une méthode à une valeur de retour, un nom et une liste
d’arguments.
+ Une méthode utilise le mot clé return pour retourner une valeur.
+ Le nom et la liste des arguments constituent la signature de la
méthode.
+ Le nom d’une méthode :
commence par une lettre minuscule,
les mots à l’intérieur du nom commence par une majuscule,
n’utilise que les lettres a-z, A-Z, 0-9, _
Dr. Ahmad Khoureich Ka Java UADB L2 D2AW 15 / 37
Les classes Les méthodes
Les méthodes
Remarque :
Lorsque la méthode ne retourne rien, son type de retour est void.
Exemple :
Une méthode qui multiplie 2 entiers :
int multiplier (int a, int b){
int c;
c = a * b;
return c;
}
Dr. Ahmad Khoureich Ka Java UADB L2 D2AW 16 / 37
Les classes Définition d’une classe
Définition d’une classe
+ La définition d’une classe se fait avec le mot clé class suivi du
nom de la classe puis des données membres et des méthodes
entre accolades.
+ Le nom d’une classe :
commence par une lettre majuscule,
les mots à l’intérieur du nom commence par une majuscule,
n’utilise que les lettres a-z, A-Z, 0-9, _
Exemple : Définition de la classe Equation
class Equation{
// données membres
// méthodes
}
Dr. Ahmad Khoureich Ka Java UADB L2 D2AW 17 / 37
Les classes Définition d’une classe
Constructeur d’une classe
+ Le constructeur d’une classe est la méthode qui permet de
construire les objets de cette classe en initialisant leurs propriétés.
+ Le constructeur a la même structure qu’une méthode ordinaire
mais ne dispose pas de type de retour et son nom doit être
identique à celui de la classe.
+ Lorsque le constructeur ne fait rien, sa définition peut être omise
de la classe.
+ Une classe peut avoir une ou plusieurs constructeurs.
Dr. Ahmad Khoureich Ka Java UADB L2 D2AW 18 / 37
Les classes Définition d’une classe
Exemple : une classe avec un constructeur
class Equation {
String type = "Equation du second degré";
int a;
int b;
int c;
Equation(int valeurA, int valeurB, int valeurC) {
a = valeurA;
b = valeurB;
c = valeurC;
}
String asTuDesSolutions() {
...
}
void affichesTesSolutions() {
...
}
}
Dr. Ahmad Khoureich Ka Java UADB L2 D2AW 19 / 37
Les classes Manipulation d’objets
Manipulation d’objets
+ Un objet est toujours créé à partir d’une classe.
+ La création d’un objet se fait à l’aide du mot clé new suivi du
constructeur de sa classe.
+ Lorsque la classe ne définit pas de constructeur, Java utilise le
constructeur par défaut pour créer les objets.
+ Le constructeur par défaut d’une classe ne prend pas d’argument
et ne contient pas d’instruction.
+ Le constructeur par défaut n’est disponible que si la classe ne
définit pas de contructeur.
+ Lorsqu’un objet est déclaré sans être créé sa valeur est null.
Dr. Ahmad Khoureich Ka Java UADB L2 D2AW 20 / 37
Les classes Manipulation d’objets
Manipulation d’objets
Exemple :
+ Création d’objets de la classe Equation
Equation equa1;
equa1 = new Equation(3, 12, 5);
Equation equa2 = new Equation(230, -17, 5);
+ La variable equa1 est la référence de l’objet crée avec new. Elle
fait référence à l’emplacement mémoire où réside l’objet.
Dr. Ahmad Khoureich Ka Java UADB L2 D2AW 21 / 37
Les classes Manipulation d’objets
Manipulation d’objets
+ La référence est le nom l’objet.
+ La référence permet d’accéder aux données membres et aux
méthodes de l’objet.
+ L’accès à une donnée membre ou à une méthode de l’objet se fait
avec l’opérateur point (.)
Exemple :
Accéder à la propriété type de l’objet equa1
String typeEqua1 = [Link];
Demander à l’objet equa2 si elle a des solutions :
[Link]()
Dr. Ahmad Khoureich Ka Java UADB L2 D2AW 22 / 37
Les classes Manipulation d’objets
Les chaines de caractères
Rappel : Java représente les chaines de caractères à l’aide de la
classe String.
+ Une chaine de caractères est alors un objet, elle peut alors être
créée avec l’opérateur new
String nom = new String("Modou");
+ La concaténation de 2 chaines de caractères se fait avec
l’opérateur +.
Dr. Ahmad Khoureich Ka Java UADB L2 D2AW 23 / 37
Les classes Manipulation d’objets
Les chaines de caractères
+ La classe String dispose entre autres des méthodes suivantes :
int length() pour avoir le nombre de caractères.
String toLowerCase() pour mettre la chaine de caractères en
minuscule.
String toUpperCase() pour mettre la chaine de caractères en
majuscule.
char charAt(int index) pour avoir le caractère à l’indice
spécifié.
boolean equals(Object anObject) pour comparer la chaine
de caractères avec une autre en tenant compte de la casse.
boolean equalsIgnoreCase(String anotherString)
pour comparer la chaine de caractères avec une autre sans tenir
compte de la casse.
Dr. Ahmad Khoureich Ka Java UADB L2 D2AW 24 / 37
Les classes Les mots clés : static, final et this
Le mot clé static
+ Le mot clé static est utilisé pour désigner une propriété dont la
valeur est identique pour tous les objets de la classe.
+ Le mot clé static est aussi utilisé pour désigner une méthode
qui ne peut accéder qu’aux propriétés static.
+ Une méthode qui accède à une propriété static doit être
déclarée static.
+ Les propriétés et méthodes static sont accessibles à partir de
la classe.
+ Les propriétés et méthodes static sont respectivement
appelées propriétés de classe et méthodes de classe.
+ Les propriétés et méthodes non static sont respectivement
appelées propriétés d’instance et méthodes d’instance.
Dr. Ahmad Khoureich Ka Java UADB L2 D2AW 25 / 37
Les classes Les mots clés : static, final et this
Exemple :
Soit la classe suivante décrivant les voitures à 4 roues.
class Voiture{
int nombredeRoues;
int anneeDeMiseEnCirculation;
String matricule;
...
}
Toutes les instances de la classe Voiture ont le même nombre de
roues, donc la donnée membre nombredeRoues peut être déclarée
static.
class Voiture{
static int nombredeRoues;
int anneeDeMiseEnCirculation;
String matricule;
...
}
Dr. Ahmad Khoureich Ka Java UADB L2 D2AW 26 / 37
Les classes Les mots clés : static, final et this
Le mot clé static
Remarque 1 :
Les données et méthodes static (de classe) sont accessibles
depuis la classe, alors que le données et méthodes non static
(d’instance) ne sont accessibles qu’à travers les objets.
Exemple :
[Link] = 4; // OK, donnée statique
[Link] = "DK-2013-AA"; //Erreur, donnée non statique
Remarque 2 :
Les méthodes static ne peuvent pas accéder aux données et
méthodes d’instance.
Dr. Ahmad Khoureich Ka Java UADB L2 D2AW 27 / 37
Les classes Les mots clés : static, final et this
Le mot clé final
+ Le mot clé final est utilisé pour désigner une propriété qui ne
change pas de valeur.
+ Le mot clé final est aussi utilisé pour désigner une méthode qui
ne peut être redéfinie.
Exemple : La donnée membre nombredeRoues vaut toujours 4
quelque soit l’instance de Voiture.
class Voiture{
static final int nombredeRoues = 4;
String anneeDeMiseEnCirculation;
String matricule;
...
}
Dr. Ahmad Khoureich Ka Java UADB L2 D2AW 28 / 37
Les classes Les mots clés : static, final et this
Le mot clé this
+ Le mot clé this permet de désigner l’objet courant.
+ Il est utilisé pour accéder aux données et méthodes de l’objet
courant.
Exemple :
class Equation {
String type = "Equation du second degré";
int a;
int b;
int c;
Equation(int a, int b, int c) {
this.a = a;
this.b = b;
this.c = c;
}
...
}
Dr. Ahmad Khoureich Ka Java UADB L2 D2AW 29 / 37
Les classes Les enveloppeurs de primitifs
Les enveloppeurs de primitifs
+ Pour chaque type primitif, Java définit une classe enveloppe
permettant de le manipuler comme un objet.
+ Les enveloppeurs de primitifs disposent de méthodes permettant
la conversion du primitif en chaine de caractères et vise-versa.
+ Toutes ces méthodes de conversion sont static.
Conversion Conversion
Primitifs Enveloppe primitif → String String → primitif
boolean Boolean toString(boolean b) parseBoolean(String s)
char Character toString(char c) -
byte Byte toString(byte b) parseByte(String s)
parseByte(String s, int base)
short Short toString(short s) parseShort(String s)
parseShort(String s, int base)
Dr. Ahmad Khoureich Ka Java UADB L2 D2AW 30 / 37
Les classes Les enveloppeurs de primitifs
Les enveloppeurs de primitifs
Conversion Conversion
Primitifs Enveloppeur primitif → String String → primitif
int Integer toString(int i) parseInt(String s)
toString(int i, int base) parseInt(String s, int base)
long Long toString(long i) parseLong(String s)
toString(long i, int base) parseLong(String s, int base)
float Float toString(float f) parseFloat(String s)
double Double toString(double d) parseDouble(String s)
Exemple :
String nombre = "314";
int n = [Link](nombre); // n = 314
Dr. Ahmad Khoureich Ka Java UADB L2 D2AW 31 / 37
Créer et exécuter un programme Java Créer un programme Java
Créer un programme Java
+ Un programme Java peut être constitué d’une ou de plusieurs
classes.
+ Le code source de chaque classe est enregistré dans un fichier
texte ayant le même nom que la classe avec l’extension ".java"
+ Un programme Java doit obligatoirement avoir une classe
principale dont le nom sera celui du programme.
+ La classe principale doit contenir la méthode principale main()
avec la signature suivante :
public static void main(String[] args)
+ La méthode principale est le point d’entré du programme.
Dr. Ahmad Khoureich Ka Java UADB L2 D2AW 32 / 37
Créer et exécuter un programme Java Créer un programme Java
Créer un programme Java
Exemple : Écrire un programme permettant d’afficher le nombre de
solutions puis les solutions de 3x2 + 12x + 5 = 0
Nous aurons :
La classe Equation,
la classe principale,
L’objet écran est représenté par [Link]
Dr. Ahmad Khoureich Ka Java UADB L2 D2AW 33 / 37
Créer et exécuter un programme Java Créer un programme Java
Classe Equation
class Equation {
String type = "Equation du second degré";
int a;
int b;
int c;
Equation(int a, int b, int c) {
this.a = a;
this.b = b;
this.c = c;
}
public String asTuDesSolutions() {
float delta = b * b - 4 * a * c;
if (delta < 0) {
return "J'ai deux solutions complexes conjuguées.";
} else if (delta == 0) {
return "J'ai une solution réelle double.";
} else {
return "J'ai deux solutions réelles.";
}
}
...
Dr. Ahmad Khoureich Ka Java UADB L2 D2AW 34 / 37
Créer et exécuter un programme Java Créer un programme Java
Classe Equation suite
public void donnesTesSolutions() {
float delta = b * b - 4 * a * c;
if (delta < 0) {
[Link]("x1 = " + (-b / (2f * a)) + " - i" +
[Link](-delta) / (2 * a));
[Link]("x2 = " + (-b / (2f * a)) + " + i" +
[Link](-delta) / (2 * a));
} else if (delta == 0) {
[Link]("x0 = " + (-b / (2f * a)));
} else {
[Link]("x1 = " + (-b - [Link](delta)) /
(2 * a));
[Link]("x2 = " + (-b + [Link](delta)) /
(2 * a));
}
}
}
Dr. Ahmad Khoureich Ka Java UADB L2 D2AW 35 / 37
Créer et exécuter un programme Java Créer un programme Java
Classe principale
public class Programme {
public static void main(String[] args) {
Equation equa = new Equation(230, -17, 5);
String reponse = [Link]();
[Link](reponse);
[Link]();
}
}
Dr. Ahmad Khoureich Ka Java UADB L2 D2AW 36 / 37
Créer et exécuter un programme Java Compilation et Exécution
Compilation et Exécution
+ Pour compiler un programe Java, le jdk doit être installé.
+ Le chemin d’accès (path) aux binaires du jdk doit être configuré.
+ La compilation se fait en ligne de commande avec :
javac [Link]
+ Si la compilation se fait sans erreur, des fichiers bytecode (.class)
sont produits.
+ L’exécution se fait en ligne de commande avec :
java ClassePrincipale
Dr. Ahmad Khoureich Ka Java UADB L2 D2AW 37 / 37