0% ont trouvé ce document utile (0 vote)
29 vues68 pages

Cours Java

Le document présente un plan de cours sur la programmation orientée objet en Java, couvrant des sujets tels que les classes, les objets, l'héritage, et les exceptions. Il explique les concepts fondamentaux de la POO, les différences entre la programmation classique et la POO, ainsi que les outils nécessaires pour développer en Java. Enfin, il aborde la structure générale d'une application Java et les spécificités de son exécution.

Transféré par

md
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
29 vues68 pages

Cours Java

Le document présente un plan de cours sur la programmation orientée objet en Java, couvrant des sujets tels que les classes, les objets, l'héritage, et les exceptions. Il explique les concepts fondamentaux de la POO, les différences entre la programmation classique et la POO, ainsi que les outils nécessaires pour développer en Java. Enfin, il aborde la structure générale d'une application Java et les spécificités de son exécution.

Transféré par

md
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
Vous êtes sur la page 1/ 68

Dr.

HAMMAMI Hamza
2018-2019
PLAN DU COURS
Chapitre 1 : Introduction générale
Chapitre 2 : Les classes et les objets
Chapitre 3 : Les tableaux et les chaînes de caractères
Chapitre 4 : L'héritage et le polymorphisme
Chapitre 5 : Les classes abstraites et les interfaces
Chapitre 6 : Les exceptions

Cours Java – Dr. HAMMAMI Hamza 1


Introduction Générale

Cours Java – Dr. HAMMAMI Hamza


1. Les fondements de la
Programmation Orientée Objet

Cours Java – Dr. HAMMAMI Hamza 3


1.1. LA PROGRAMMATION CLASSIQUE
▪Principe:

Programmes = Algorithmes + Structures de données

▪Avantages & Inconvénients:


☺Contribution au progrès de la qualité des
logiciels.
☻ Difficulté de Maintenance,
☻ Pas de réutilisabilité,
☻ Absence de protection de données
Cours Java – Dr. HAMMAMI Hamza 4
1.2. PRINCIPE DE LA P.O.O.

▪ Représentation des composants du système


d’information étudié(réels ou conceptuels) par des
entités appelées "objets" grâce à l'abstraction.

▪ Les concepts de base sont : encapsulation, objet, classe


et héritage.

Programme = ensemble d’objets communicants

Cours Java – Dr. HAMMAMI Hamza 5


1.2.1. ENCAPSULATION
▪ L'encapsulation consiste à :

▪ rassembler les données et les traitements au sein d'une


structure unique (entité)

▪ autoriser l'accès aux données par les méthodes proposées.

☺ Avantage : garantir l'intégrité des données


contenues dans la structure (ou l’entité) de
regroupement.

Cours Java – Dr. HAMMAMI Hamza 6


1.2.2. OBJET
▪ Entité qui encapsule (regroupe) des données et des
traitements cohérents.

▪ Les données et les traitements caractérisent l’objet, c.à.d.


représentent ses propriétés.

Objet = Attributs + Méthodes


▪ Chaque objet possède une identification unique qui est
indiquée par une ou plusieurs références

Cours Java – Dr. HAMMAMI Hamza 7


1.2.3. CLASSE
▪ Une classe représente un modèle d’objets.

▪ Elle décrit leur structure unique (type de données


et traitements).

▪ Les objets : des instances d’un tel type de classe,


dont chacun possède ses propres valeurs.

Cours Java – Dr. HAMMAMI Hamza 8


Exemple: Objets instanciés à partir de la classe Etudiant
:Etudiant1 :Etudiant2 :Etudiant3 :EtudiantN
matricule: 12 matricule: 21 matricule: 34 matricule: 41
nom : Mohamed nom : Salah nom : Ali nom : Rachid Attributs
specialite: LFIG specialite: LFIG specialite: LFSG Specialite : LFSG
niveau: 1 niveau: 2 niveau:2 niveau : 1
groupe:7 groupe:5 groupe:4 Groupe:3

changer spécialité changer spécialité changer spécialité changer spécialité Méthodes


changer niveau changer niveau changer niveau changer niveau

Etudiant
matricule
nom
specialite
Niveau
groupe Classe Etudiant

changer spécialité
changer niveau

Cours Java – Dr. HAMMAMI Hamza 9


1.2.4. HÉRITAGE
▪ Permet de définir une nouvelle classe à partir d’une
classe existante.
▪ La classe dérivée comporte les même propriétés de la
classe de base, auxquelles s’ajoutent des propriétés
(méthodes et/ou attributs) spécifiques.

☺Avantage : L’héritage facilite largement la réutilisation


et l’extension des applications.

Exemple:
La classe Etudiant hérite de la classe Personne.

Cours Java – Dr. HAMMAMI Hamza 10


1.3. LA POO VS P. CLASSIQUE
▪ En programmation classique : données et traitements
sont conçues séparément.
▪ Lors de la conception des données, on ignore les traitements
qui vont être appliquées sur ces données.
▪ Les traitements peuvent manipuler différentes structures de
données.

▪ En POO: la démarche est la suivante :


▪ Identification des objets
▪ Étude des contenus (propriétés) des objets (attributs et méthodes)
▪ Étude de l’interaction des objets
▪ Définition des classes : modèles ou types qui regroupent les propriétés des objets
similaires

Cours Java – Dr. HAMMAMI Hamza 11


Attributs
fonction Méthodes de l’objet

fonction de l’objet

fonction données
globales Attributs
fonction de l’objet
Méthodee

fonction de l’objet

Attributs
Méthodes de l’objet

de l’objet

Programmation classique POO

Cours Java – Dr. HAMMAMI Hamza 12


2. Le langage JAVA

Cours Java – Dr. HAMMAMI Hamza 13


▪ JAVA : langage de programmation orientée objet pure,

▪ Développé par Sun Microsystems

▪ Première version commercialisée en 1995.

▪ S’inspire principalement des langages de programmation suivants : C/C++


(syntaxe très proche), SmallTalK (tout objet) et ADA (paquetage).

Cours Java – Dr. HAMMAMI Hamza 14


▪ Objectif Principal :

Proposition d’un langage de programmation indépendant de la machine


exécutant le code.

Cours Java – Dr. HAMMAMI Hamza 15


▪ Pour développer en JAVA, il suffit d’installer le SDK (Software Development Kit) .

▪ SDK : ensemble d’outils et de bib de routines permettant e développer des


programmes pour un environnement particulier

▪ Le code peut être écrit dans un fichier bloc note

▪ Pour plus de commodité, on peut utiliser des éditeurs tels que : Eclipse, Blue J,
NetBeans, etc.

Cours Java – Dr. HAMMAMI Hamza 16


▪ Exécution d'un programme JAVA :
▪ Nécessité d’une machine virtuelle Java (JVM).
▪ Cette machine virtuelle va interpréter le code compilé, code généré à partir des
fichiers .java (et donc des sources du programme).

▪ La MVJ : un programme écrit pour chaque plate-forme particulière (Sun,


Solaris, Mac, Windows NT, …) et qui connaît le ByteCode JAVA

▪ ByteCode : un langage machine dédié à la Machine Virtuelle JAVA.

Cours Java – Dr. HAMMAMI Hamza 17


Machine Virtuelle
(1) (2) Java
Code Source Byte-code (JVM Sun, JVM
(Fichiers .java) (Fichiers .class) Mac, etc.)

(1) : Compilation
(2) : Interprétation
(3) Exécution

Cours Java – Dr. HAMMAMI Hamza 18


▪ Portabilité : avantage majeur du langage JAVA
▪ Une fois le programme écrit en java, il fonctionnera
sur une grande variété de plateformes sans
nécessiter des modifications du code.
▪ Seule la machine virtuelle qui interprète les fichiers
compilés subit des modifications.

▪ Exemple: un utilisateur de Linux ne téléchargera pas


la même machine virtuelle qu'un utilisateur de
Windows, seulement le code concocté par le ou les
programmeur(s) donnera la même chose sur les deux
systèmes.

Cours Java – Dr. HAMMAMI Hamza 19


DIFFÉRENCE ENTRE LANGAGE INTERPRÉTÉ ET LANGAGE
COMPILÉ ?
▪ un programme en langage interprété n'est pas
exécuté directement par la machine;
⇒ Il est exécuté par un autre programme
appelé interprète installé sur la machine (PHP,
javascript, perl, etc.)

▪ un programme en langage compilé est traduit en


instructions lisibles par la machine (code natif) et peut
être exécuté indépendamment de tout autre
programme (c, c++, ADA, etc.)

Cours Java – Dr. HAMMAMI Hamza 20


2.2. Application et applet
Un programme JAVA est soit :

◼ Une application simple

◼ Une Applet : une application JAVA qui s'exécute au


sein d'une page HTML dans un navigateur
 Voir aussi une Servlet : Server-side applet
 Les servlets s’exécutent du côté serveur

Cours Java – Dr. HAMMAMI Hamza 21


2.3. LE JDK (JAVA DEVELOPMENT KIT)
▪ javac : compilateur de sources java (convertit le code source fichier
.class (contenant le bytecode Java) )

▪ java : interpréteur de byte code


▪ appletviewer : interpréteur d'applet
▪ javadoc : générateur de documentation (i.e., HTML) (génère
automatiquement de la documentation à partir des commentaires du code source)

▪ javap : désassembleur de byte code


▪ jdb : debugger

Cours Java – Dr. HAMMAMI Hamza 22


2.4. EXÉCUTION D’UNE APPLICATION JAVA
▪ Ecriture du code source JAVA :
Code sous forme de Fichier texte écrit selon la syntaxe
du langage et ayant l’extension ".java".

▪ Compilation :
Les sources JAVA doivent être compilées afin de
générer le ByteCode. Les fichiers générés ont
l'extension ".class".
▪ Interprétation :
L’interprétation du Bytecode est faite par la MVJ
Cours Java – Dr. HAMMAMI Hamza 23
2.5.STRUCTURE GÉNÉRALE D’UNE
APPLICATION JAVA
▪ Une application JAVA possède un point d'entrée
unique qui est la méthode (ou fonction) "main()" de
prototype :

public static void main (String [] args)

▪ Tout fichier source doit porter le nom de la classe


publique qu'il contient avec l'extension ".java"

Cours Java – Dr. HAMMAMI Hamza 24


Exemple : Bonjour.java

public class Bonjour


{
// déclaration des attributs
………
// définition des méthodes
………
public static void main (String [] args)
{
// déclaration des variables locales
System.out.println("Bonjour");
}
}
Cours Java – Dr. HAMMAMI Hamza 25
2.6. EXEMPLE D’OUTILS DE DÉVELOPPEMENT
▪ Environnements de développement :
▪ Kawa
▪ JBuilder
▪ Visual J++
▪ Eclipse
▪ …

Cours Java – Dr. HAMMAMI Hamza 26


2.7. QUELQUES RÉFÉRENCES
▪ Livres :
▪ Comment programmer en JAVA, H.M. DEITEL & P.J. DEITEL,
éditions Prentice Hall, 1999
▪ Programmer en JAVA, Claude DELANNOY, éditions
Eyrolles, 2002
▪ Java 2, Benjamin AUMAILLE, éditions ENI, 1999
▪ …
▪ Sites Web :
▪ www.javasun.com : Site officiel Java (JDK et doc.)
▪ www.javaworld.com : Info sur Java
▪ www.gamelan.com : applications, applets, packages, ...
▪ www.blackdown.com : Java pour linux

Cours Java – Dr. HAMMAMI Hamza 27


PLAN DU COURS
Chapitre 1 : Introduction générale
Chapitre 2 : Les classes et les objets
Chapitre 3 : Les tableaux et les chaînes de caractères
Chapitre 4 : L'héritage et le polymorphisme
Chapitre 5 : Les classes abstraites et les interfaces
Chapitre 6 : Les exceptions

Cours Java – Dr. HAMMAMI Hamza 28


Les classes et les objets

Cours Java – Dr. HAMMAMI Hamza


1. DÉFINITION DES CLASSES
▪ Une classe est un modèle de définition pour les objets ayant les mêmes
propriétés

▪ Elle est considérée en programmation comme un type défini par le


concepteur

▪ Il existe des contrôles d'utilisation d'une classe et des contrôles d’accès aux
propriétés.

Cours Java – Dr. HAMMAMI Hamza 30


▪ Le contrôle d'utilisation d'une classe et celui d'accès aux membres d'une classe
sont deux concepts différents

▪ Un objet peut se comporter comme une boîte noire (le contenu est masqué par
des contrôles d'accès).

▪ Les méthodes publiques représentent une interface de communication

Cours Java – Dr. HAMMAMI Hamza 31


2. ORGANISATION DES CLASSES EN PACKAGES

▪ Un package est considéré comme une bibliothèque de


classes. Il permet de regrouper un certain nombre de classes

▪ Les packages sont organisés hiérarchiquement à la manière


des répertoires : sous-packages, des sous-sous-packages…

▪ On peut créer des packages, ajouter des classes dans un


package existant

▪ Le répertoire contenant vos classes simule un package


Cours Java – Dr. HAMMAMI Hamza 32
3. SYNTAXE DE CLASSE

[private/public] [abstract/final] class NomClasse


[extends NomSuperClasse]
[implements NomInterface1, Interface2, …,
InterfaceN]
{
// déclaration des attributs
// déclaration des méthodes
}

Cours Java – Dr. HAMMAMI Hamza 33


▪ private / public : deux modificateurs d'accès précisant la
possibilité d'utilisation de la classe :
▪ private indique que l'utilisation de la classe est réservée aux classes du même
package
▪ public donne la possibilité d'utiliser la classe à toutes les autres classes

Cours Java – Dr. HAMMAMI Hamza 34


▪ abstract / final : deux qualificateurs en relation avec le
concept d'héritage (voir chapitre 4)
▪ extends : annonce l'héritage de la classe
NomSuperClasse (voir chapitre 4)
▪ implements : annonce l'implémentation d'une ou
plusieurs interfaces par la classe (voir chapitre 5)

Cours Java – Dr. HAMMAMI Hamza 35


3. SYNTAXE DE CLASSE
3.1.DÉCLARATION DES ATTRIBUTS

[private/public/protected][static] [final]
type_attribut nom_attribut [= valeur];

Cours Java – Dr. HAMMAMI Hamza 36


▪ private/ public / protected : des modificateurs d'accès à
l'attribut à partir d'autres classes :

▪ private : l'accès est réservé aux méthodes de la même classe


▪ public : accès à toutes les méthodes des autres classes
▪ protected : accès limités aux méthodes de la même classe, des classes dérivées et
des classes du même package

Cours Java – Dr. HAMMAMI Hamza 37


▪ static : attribut commun à tous les objets de la classe. Il s'agit d'un attribut
de classe)

▪ final : attribut constant

Cours Java – Dr. HAMMAMI Hamza 38


3. SYNTAXE DE CLASSE
3.1.DÉCLARATION DES MÉTHODES

[private/public/protected]
[static][final/abstract] type_de_retour nom_méthode (liste paramètres
)
{
// déclaration des variables locales;
[type_de_retour var_résultat;]

// instructions de la méthode
[return var_résultat;]
}
Cours Java – Dr. HAMMAMI Hamza 39
▪ [private, public et protected] : des modificateurs d'accès
autorisant l'appel aux méthodes de la classe

▪ static : précise que l'exécution de la méthode n'est pas liée aux


instances de la classe (il s'agit d'une méthode de classe)

▪ abstract : la méthode ne comporte pas de code. Par conséquent


toute la classe devient abstraite (voir chapitre 5)

▪ final : la méthode ne pourra pas être redéfinie dans une classe


dérivée (voir chapitre 5)

Cours Java – Dr. HAMMAMI Hamza 40


PASSAGE DE PARAMÈTRES
▪ 1er Cas d’arguments de type primitif (de base) : par valeur ;

▪ 2ème Cas d’arguments de type classe/tableaux: par référence (référence


d'objet) ;

Cours Java – Dr. HAMMAMI Hamza 41


▪ Surcharge de méthodes : au sein d'une même classe, plusieurs
méthodes portent le même nom en ayant une liste de paramètres
différente (type, ordre et nombre d'arguments)

Exemple :
class Etudiant // par défaut elle est privée au package
{
private int matricule;
private String nom;
private int niveau;
public String couleur_chemise;

public void nouvNiveau(int n)


{niveau = n;}
public void changerCouleur (String c)
{couleur_chemise = c;}
}
Cours Java – Dr. HAMMAMI Hamza 42
3.3. Constructeurs

▪ Définition : méthode appelée lors de la création d’objets. Il porte


le même nom que celui de la classe

▪ Rôle : initialiser les attributs de l'objet

Remarque :
En cas d’absence d’un constructeur implémenté, JAVA offre un
constructeur par défaut qui initialise les attributs de l'objet par
des valeurs par défaut (0 pour int, null pour les références aux
objets, …)

▪ Le constructeur est toujours public et ne possède pas de type


(même pas void).
Cours Java – Dr. HAMMAMI Hamza 43
Exemple:
class Etudiant
{ private int matricule;
private String nom;
private int niveau;
public String couleur_chemise;
public Etudiant()
{matricule = 12; nom= "Mohamed"; niveau=1;couleur_chemise=
"bleue"; }
public Etudiant(int m)
{matricule = m; nom= "Mohamed"; niveau=1;couleur_chemise=
"bleue"; }
public Etudiant(int m,String n)
{matricule = m; nom= n; niveau=1;couleur_chemise= "bleue"; }
public Etudiant(int m,String n, int niv )
{matricule = m; nom= n; niveau=niv; couleur_chemise= "bleue" ; }
public Etudiant(int m,String n, int niv; String c)
{matricule = m; nom= n; niveau=niv, couleur_chemise=c; }
public void nouvNiveau(int niv)
{niveau = niv;}
public void changerCouleur (String c)
Cours Java – Dr. HAMMAMI Hamza 44
{couleur_chemise = c;}
3.4. Destructeur

▪ Définition: méthode qui exécute certaines tâches avant la


destruction d'un objet. Il est aussi appelé "finaliseur".

▪ L'exécution du destructeur se fait automatiquement par le


ramasse miettes.

▪ En JAVA, le destructeur est optionnel. S'il est décrit, il est unique.

▪ En JAVA, le destructeur s'appelle finalize.


▪ Son prototype est alors le suivant :
protected void finalize()
Cours Java – Dr. HAMMAMI Hamza 45
Exemple :
class Etudiant
{ private static int nbEtudiant = 0;
private int matricule;
private String nom;
private int niveau;
public String couleur_chemise;

public Etudiant()
{matricule = 12; nom= "Mohamed"; niveau=1; couleur_chemise= "bleue";
nbEtudiant ++;}
public Etudiant(int m)
{matricule = m; nom= "Rami"; niveau=2; couleur_chemise= "bleue";
nbEtudiant++;}
public Etudiant(int m,String n)
{matricule = m; nom= n; niveau=2;couleur_chemise= "bleue"; nbEtudiant++; }
public Etudiant(int m,String n,couleur_chemise c)
{matricule = m; nom= n; niveau=1; couleur_chemise=c; nbEtudiant++; }
..
.
protected void finalize()
Cours Java – Dr. HAMMAMI Hamza 46
{ nbEtudiant--; } }
4.L’INSTANCIATION DES OBJETS
4.1. Référence d'un objet
▪ Les références d'objets sont des variables de type classe qui
permettent de désigner des objets à la manière des pointeurs
en C (sans manipulation directe d'adresse).
▪ La référence qui ne pointe sur aucun objet contient la valeur
"null".
▪ Il est possible d'avoir à un instant t plusieurs références pour
désigner un même objet.
▪ Les opérateurs possibles sur les références d'objets sont : new,
=, ==, != (tester si deux références désignent un même objet) et
instanceof.

Cours Java – Dr. HAMMAMI Hamza 47


4.2.Instanciation

▪ La création d'un objet se fait à l'aide de l'opérateur


new qui se charge de :
▪ Appeler le constructeur de l'objet adéquat pour initialiser les attributs.
▪ Allouer l'espace mémoire nécessaire pour stocker les attributs de l'objet en cours
de construction

▪ Retourner une référence sur l'objet créé

Cours Java – Dr. HAMMAMI Hamza 48


▪ Un objet qui n'est référencé par aucune référence est détruit par le
ramasseur-miettes (Garbage Collector) qui s'exécute en permanence.

Exemple :
public class TestEtudiant
{
public static void main(String [ ] args)
{
Etudiant e1;
e1 = new Etudiant(); // e1 une référence sur un objet

Etudiant e2 = new Etudiant(34,"ali",2,"kaki");


//e2 une référence sur un objet Etudiant

}
Cours Java – Dr. HAMMAMI Hamza 49
5. MANIPULATION D’UN OBJET
5.1. Aperçu sur les droits d’accès aux
membres d’un objet

▪ La possibilité de créer un objet dépend des restrictions


d'utilisation de la classe à instancier

▪ La manipulation des membres d'un objet créé suit les


restrictions d'accès de ces membres précisées dans la classe

▪ On ne peut accéder (consulter ou modifier) à un attribut de


l’extérieur de la classe là où il a été défini que si on est autorisé
à le faire

Cours Java – Dr. HAMMAMI Hamza 50


5.2.Manipulation des attributs

▪ Deux types d’attributs :

▪ Attribut d’objet : déclaré sans le mot réservé static. Une copie


de cet attribut existe dans chaque objet.

▪ Attribut de classe : déclaré avec le mot réservé static. S’il y a


eu une instanciation, une seule copie de cet attribut est
partagée par toutes les instances.

Cours Java – Dr. HAMMAMI Hamza 51


▪ Les attributs d’objet : désignés selon la syntaxe suivante :
nomObjet.nomAttribut

▪ Les attributs de classe : désignés selon la syntaxe suivante :


nomClasse.nomAttribut

Cours Java – Dr. HAMMAMI Hamza 52


class Etudiant
{ //déclaration des attributs membres
private static int nbEtudiant = 0; // attribut statique
private int matricule;
private String nom;
private int niveau;

//déclaration des méthodes membres


public Etudiant()
{matricule = 12; nom= "Mohamed"; niveau=1; couleur_chemise=
"bleue"; nbEtudiant ++;
}
public Etudiant(int m)
{matricule = m; nom= "Rami"; niveau=2; couleur_chemise= "bleue";
nbEtudiant++; }
} //fin de classe
Cours Java – Dr. HAMMAMI Hamza 53
5.3.Invocation des méthodes

▪ Deux types de méthodes :

▪ Méthode d’objet : déclarée sans le mot réservé static. Une


copie de cette méthode est associée à chaque objet.
L’exécution d’une telle méthode se fait toujours pour un objet
déterminé.

▪ Méthode de classe : déclarée avec le mot réservé static.


L’exécution d’une telle méthode ne dépend pas des objets de
la classe.

Cours Java – Dr. HAMMAMI Hamza 54


▪ Les méthodes d’objets : désignées selon la syntaxe suivante :
nomObjet.nomMéthode( ….. )

▪ Les méthodes de classe : désignées selon la syntaxe suivante : «


nomClasse.nomMéthode(….. )

Cours Java – Dr. HAMMAMI Hamza 55


6. Référence sur l'objet courant this

▪ this : une référence sur l'objet courant

▪ Utilité de la référence this :

▪ Cas 1: une variable locale (ou un paramètre) cache, en portant


le même nom, un attribut de la classe.

▪ Cas 2 : Absence de référence pour l’objet en cours.

Cours Java – Dr. HAMMAMI Hamza 56


Exemple :

class Etudiant
{ private int matricule;
public String couleur_chemise;


public Etudiant (int matricule, String couleur_chemise)
//paramètres portant le même nom que les attributs
{
this.matricule = matricule;
this.couleur_chemise = couleur_chemise;
}

}

Cours Java – Dr. HAMMAMI Hamza 57


7. Détermination de la nature d'un objet

▪ L'opérateur instanceof permet de tester si l'objet référencé est


une instance d'une classe donnée (ou d'une de ses sous-classes
voir chapitre 5).

Exemple :

if (e1 instanceof Etudiant)
// expression évaluée à vrai ou faux

Cours Java – Dr. HAMMAMI Hamza 58


8. Un objet comme attribut dans un autre
objet
▪ Les attributs d’objets peuvent être :
▪ Simple : Exemple : niveau, nom, etc.
▪ Des objets composés de plusieurs attributs

▪ Création et instanciation d’attributs de type objets:


▪ Si l‘attribut est un objet déjà créé, il suffit d'effectuer une
affectation entre références pour réaliser le lien à travers un
passage de paramètre dans une méthode;

▪ Si l’attribut n’est pas encore créé, l'opérateur new est utilisé


pour sa création au niveau du constructeur de la classe qui
l'utilise ou même dans l'instruction d'appel du constructeur
(pareil pour d'autres méthodes).
Cours Java – Dr. HAMMAMI Hamza 59
class Stage
{ //déclaration des attributs
private String sujet;
private String nom_entreprise;
private String duree;

//Implémentation des méthodes


public Stage(String sj, String ne, String d)
{sujet = sj; nom_entreprise = ne; duree= d}

public void changerSujet (String nsj)


{sujet = nsj;}

public void afficher ()


{System.out.println ("Sujet de stage:" + sujet + "Entreprise : "
+ nom_entreprise + " Durée : " + duree );
}
}Cours Java – Dr. HAMMAMI Hamza 60
class Etudiant
{ private Stage st; //attribut objet de la classe stage
private int matricule;
public String couleur_chemise;

public Etudiant()
{
matricule =12; nom= "Mohamed"; niveau=1; couleur_chemise= "bleue";
st = new Stage ("Sujet 1", "STEG", "1 mois");} // Création et initialisation d’attribut

public Etudiant(int m,String n, int niv, String c, Stage s)


{ matricule = m; nom= n; niveau=niv; couleur_chemise=c; st=s; } //Initialisation par //affectation

public void changerStage (Stage nst)


{ st = nst;} //réinitialisation par simple affectation

public void changerSujetStage (String nsj)


{ st.changerSujet (nsj);} //invocation d’une méthode propre à la classe stage }

} //Fin de classe
Cours Java – Dr. HAMMAMI Hamza 61
public class Exemple // Hypothèse : les 3 classes dans un même package
{
public static void main(String [ ] arg)
{
Etudiant e1, e2, e3;
Stage st1;

st1 = new Stage ("Sujet1", " STEG" , "1mois"); //st1 référence sur un objet stage

e1 = new Etudiant (); // 1er constructeur


e2 = new Etudiant (12,"Mohamed", 1, "Bleue", st1) ; // 2ème constructeur

e3 = new Etudiant (45,“Ali", 2, "Bleue",new Stage ("Sujet 2", " PTT" , "2mois"));
// 2ème constructeur

e3.changerStage(st1); // l’ancien Stage est remplacé par st1

e3.changerSujetStage(“Sujet 3");
}
}
Cours Java – Dr. HAMMAMI Hamza 62
9. Quelques conventions utiles
Les prototypes des méthodes de lecture/modification des
attributs suivent une convention particulière :

▪ Le prototype d’une méthode qui retourne la valeur d’un


attribut :
public type_attribut getAttribut()
▪ Le prototype d’une méthode qui modifie la valeur d’un attribut
: public void setAttribut (type_attribut valeur)

▪ Utilité de ces méthodes : quand l’attribut en question n’est pas


public. D’où le modificateur d’accès à ces méthodes public

Cours Java – Dr. HAMMAMI Hamza 63


class Etudiant
{
private int matricule;

public int getMatricule()


{return matricule;}

public void setMatricule(int m)


{matricule = m;}
}

class Exemple
{
public static void main (String arg[])
{
Etudiant e = new Etudiant();
e.setMatricule(99);
System.out.println(matricule =+e.getMatricule());
}
}
Cours Java – Dr. HAMMAMI Hamza 64
▪ Généralement, on décrit dans chaque classe une méthode
ayant le prototype suivant :
public String toString()

▪ Objectif de cette méthode : retourner une description (totale ou


partielle) sous forme d’une chaîne de caractères d’un objet

▪ L’utilité de toString() s’accroît lorsque les attributs ne sont pas


publics

▪ La description retournée peut être utilisée comme paramètre à


une autre méthode, stockée dans une certaine structure tel
qu’un tableau ou affichée

Cours Java – Dr. HAMMAMI Hamza 65


class Etudiant
{
private int matricule;
public String nom;

public String toString()
{
String s;
s=La matricule de l’étudiant est :+matricule+ Son nom est
:
+ nom;
return s;
}
}
Cours Java – Dr. HAMMAMI Hamza 66
class Exemple
{
public static void main(String []arg)
{
String s ;
Etudiant e = new Etudiant ();
e.setMatricule(114);
e.setNom(Ali);
s = e.toString();
System.out.println(s); //on peut s’en passer d’utiliser s
}
}

Cours Java – Dr. HAMMAMI Hamza 67

Vous aimerez peut-être aussi