Upload
marceau-brun
View
107
Download
1
Embed Size (px)
Citation preview
6666
Utilisation des classes et des objetsUtilisation des classes et des objets
6-6-22
ObjectifsObjectifs
A la fin de ce cours, vous serez capables de :
• Créer de nouvelles classes à l’aide de Eclipse
• Utiliser les packages pour regrouper les classes connexes
• Définir les variables et les méthodes d’instance
• Créer des objets et des appels de méthode
• Utiliser les mots-clés public, private et protected
A la fin de ce cours, vous serez capables de :
• Créer de nouvelles classes à l’aide de Eclipse
• Utiliser les packages pour regrouper les classes connexes
• Définir les variables et les méthodes d’instance
• Créer des objets et des appels de méthode
• Utiliser les mots-clés public, private et protected
6-6-33
Vue d’ensembleVue d’ensemble
• Les classes définissent les caractéristiques, les attributs et le comportement des objets.
• L’intégralité du code Java est contenue dans des classes.
• Toutes les données relatives à un objet sont stockées dans des variables.
• Les packages permettent un contrôle des accès.
• Les assistants Eclipse contribuent à la création des définitions de classe.
• Les classes définissent les caractéristiques, les attributs et le comportement des objets.
• L’intégralité du code Java est contenue dans des classes.
• Toutes les données relatives à un objet sont stockées dans des variables.
• Les packages permettent un contrôle des accès.
• Les assistants Eclipse contribuent à la création des définitions de classe.
6-6-44
Classes JavaClasses Java
Package
MéthodesObjets
Références d’objet
Attributs
6-6-55
PackagesPackages
AcmeVideo
Copy Title Rental
Game Member Movie
6-6-66
Modificateurs d’accèsModificateurs d’accès
AcmeVideo AcmeTools
private
protected
public
public
6-6-77
Etude de la nouvelle classeEtude de la nouvelle classe
Nom du Nom du packagepackageNom du Nom du packagepackage
Public Public Public Public
main()main()main()main()
Constructeur Constructeur Constructeur Constructeur
Commentaires Commentaires d’en-têted’en-tête
Commentaires Commentaires d’en-têted’en-tête
6-6-88
Classes et objetsClasses et objets
Chaque objet est uneChaque objet est uneinstance d’une classeinstance d’une classe
donnée.donnée.
Chaque objet est uneChaque objet est uneinstance d’une classeinstance d’une classe
donnée.donnée.
public void displayDetails()
private String title;
private String rating;
public void setRating()
title: “Gone with…”rating: “PG”
title: “Last Action…”rating: “PG-13”
Movie
6-6-99
Création d’objetsCréation d’objets
• Les objets sont créés au moyen de
l’opérateur new :
• Par exemple, pour créer deux objets Movie :
• Les objets sont créés au moyen de
l’opérateur new :
• Par exemple, pour créer deux objets Movie :Movie mov1 = new Movie("Gone ...");
Movie mov2 = new Movie("Last ...");
objectRef = new ClassName();
title: “Gone with…”rating: “PG”
title: “Last Action…”rating: “PG-13”
6-6-1010
L’opérateur new de plus prèsL’opérateur new de plus près
L’opérateur new effectue les actions suivantes :
• Allocation de mémoire pour le nouvel objet
• Appel d’une méthode d’initialisation spéciale dans la classe, appelée constructeur
• Renvoi d’une référence pour le nouvel objet
L’opérateur new effectue les actions suivantes :
• Allocation de mémoire pour le nouvel objet
• Appel d’une méthode d’initialisation spéciale dans la classe, appelée constructeur
• Renvoi d’une référence pour le nouvel objet
Movie mov1 =
new Movie("Gone..."); title: “Gone...”rating: PGmov1
6-6-1111
Primitives et objetsPrimitives et objets
Les variables primitivescontiennent une valeur.Les variables primitivescontiennent une valeur.
int i;
int j = 3; Movie mov1 = new Movie();
Les variables d’objetcontiennent desréférences.
Les variables d’objetcontiennent desréférences.
title: nullrating: null
mov1
null
Movie mov1;
mov10
3
i
j
6-6-1212
La référence nullLa référence null
• Les références d’objet sont null tant qu’elles n’ont pas été initialisées.
• Il est possible de comparer les références d’objet à null.
• On peut “oublier” un objet en lui attribuant la référence null.
• Les références d’objet sont null tant qu’elles n’ont pas été initialisées.
• Il est possible de comparer les références d’objet à null.
• On peut “oublier” un objet en lui attribuant la référence null.
Movie mov1 = null; //Declare object reference
…
if (mov1 == null) //Ref not initialized?
mov1 = new Movie(); //Create a Movie object
…
mov1 = null; //Forget the Movie object
6-6-1313
Affectation de référencesAffectation de références
En affectant une référence à une autre, on obtientdeux références au même objet :En affectant une référence à une autre, on obtientdeux références au même objet :
Movie mov1 = new Movie("Gone...");
mov1
Movie mov2 = mov1;
mov2
title: “Gone ...”rating: PG
6-6-1414
Variables d’instanceVariables d’instance
Les variables d’instance sont déclarées dans la classe :Les variables d’instance sont déclarées dans la classe :
public class Movie {
public String title;
public String rating;
…
}
Movie mov1 = new Movie();
Movie mov2 = new Movie();
title: nullrating: null
mov2
title: nullrating: null
mov1
Création de movies:Création de movies:
6-6-1515
Accès aux variables d’instanceAccès aux variables d’instance
Les variables d’instance publiques sont accessibles à l’aide de l’opérateur point "." :Les variables d’instance publiques sont accessibles à l’aide de l’opérateur point "." :
public class Movie {
public String title;
public String rating;
…
}Movie mov1 = new Movie();
mov1.title = "Gone ...";
…
if ( mov1.title.equals("Gone ... ") )
mov1.rating = "PG";
Voulez-vous vraiment faire cela ?Voulez-vous vraiment faire cela ?Voulez-vous vraiment faire cela ?Voulez-vous vraiment faire cela ?
6-6-1616
Exercice pratique :Création et utilisation d’objets
Exercice pratique :Création et utilisation d’objets
public class MovieTest {
public static void main(String[] args) {
Movie mov1, mov2;
mov1.title = "Gone with the Wind";
mov2 = mov1;
mov2.title = "Last Action Hero";
System.out.println("Movie 1 is " + );
System.out.println("Movie 2 is " + );
}
}
public class Movie {
public String title;
}
6-6-1717
MéthodesMéthodes
• Une méthode est équivalente à une fonction ou à un sous-programme dans les autres langages :
• Une méthode ne peut être définie que dans le cadre de la définition d’une classe.
• Une méthode est équivalente à une fonction ou à un sous-programme dans les autres langages :
• Une méthode ne peut être définie que dans le cadre de la définition d’une classe.
modifier returnType methodName (argumentList) {
// method body
…
}
6-6-1818
• Spécifiez le nombre et le type de clauses dans la définition de la méthode :
• Si la méthode ne comporte aucune clause, laissez les parenthèses vides :
• Spécifiez le nombre et le type de clauses dans la définition de la méthode :
• Si la méthode ne comporte aucune clause, laissez les parenthèses vides :
Spécification des clauses deméthode : Exemples
Spécification des clauses deméthode : Exemples
public void displayDetails() {
System.out.println("Title is " + title);
System.out.println("Rating is " + rating);
}
public void setRating(String newRating) {
rating = newRating;
}
6-6-1919
Renvoi d’une valeur depuis une méthodeRenvoi d’une valeur depuis une méthode
• Utilisez l’instruction return pour quitter une méthode et retourner une valeur issue d’une méthode :
• L’instruction return n’est pas nécessaire si la méthode retourne void.
• Utilisez l’instruction return pour quitter une méthode et retourner une valeur issue d’une méthode :
• L’instruction return n’est pas nécessaire si la méthode retourne void.
public class Movie {
private String rating;
…
public String getRating () {
return rating;
}
}
6-6-2020
Appel de méthodes d’instanceAppel de méthodes d’instance
public class Movie {
private String title, rating;
public String getRating(){
return rating;
}
public void setRating(String newRating){
rating = newRating;
}
}Movie mov1 = new Movie();
…
if (mov1.getRating().equals("G"))
… Utilisez
l’opérateur "." :Utilisez
l’opérateur "." :
6-6-2121
EncapsulationEncapsulation
• Les variables d’instance doivent être déclarées comme private.
• Seules les méthodes d’instance peuvent accéder aux variables d’instance private.
• private dissocie l’interface de la classe de son opération interne.
• Les variables d’instance doivent être déclarées comme private.
• Seules les méthodes d’instance peuvent accéder aux variables d’instance private.
• private dissocie l’interface de la classe de son opération interne.
Movie mov1 = new Movie();
…
if ( mov1.rating.equals("PG") ) // Error
mov1.setRating("PG"); // OK
6-6-2222
Passage de primitives aux méthodesPassage de primitives aux méthodes
Lorsqu’une valeur de type primitif est passée à uneméthode, une copie de la valeur est générée :Lorsqu’une valeur de type primitif est passée à uneméthode, une copie de la valeur est générée :
public void aMethod(int arg) {
if (arg < 0 || arg > 100)
arg = 0;
System.out.println("arg: " + arg);
}
int num = 150;
anObj.aMethod(num);
System.out.println("num: " + num);
num150
arg150
6-6-2323
Passage de références d’objet aux méthodes
Passage de références d’objet aux méthodes
Lorsqu’une référence d’objet est passée à uneméthode, la clause fait référence à l’objetd’origine :
Lorsqu’une référence d’objet est passée à uneméthode, la clause fait référence à l’objetd’origine :
public void aMethod(Movie ref2) {
ref2.setRating("R");
}
title: "Gone…"rating: "R"
mov1
ref2
Movie mov1 =
new Movie("Gone…");
mov1.setRating("PG");
anObj.aMethod(mov1);
6-6-2424
RésuméRésumé
Au cours de cette leçon, vous devriez avoir retenu que :
• Une définition de classe spécifie un modèle pour la création d’objets ayant des caractéristiques identiques, telles que des variables et des méthodes d’instance.
• Un objet est une instance d’une classe donnée :
– Créez un objet à l’aide de new.
– Manipulez un objet en utilisant ses méthodes d’instance public.
Au cours de cette leçon, vous devriez avoir retenu que :
• Une définition de classe spécifie un modèle pour la création d’objets ayant des caractéristiques identiques, telles que des variables et des méthodes d’instance.
• Un objet est une instance d’une classe donnée :
– Créez un objet à l’aide de new.
– Manipulez un objet en utilisant ses méthodes d’instance public.