Documente Academic
Documente Profesional
Documente Cultură
Classe et Objet
Dr. MALKI Abdelhamid
a.malki@esi-sba.dz
Ecole Nationale Supérieure d’Informatique de Sidi Bel Abbes (ENSI)
2015/2016
1
Classe
Une classe peut être considérée comme un moule ou un modèle à
partir duquel on peut créer des objets.
Les objets d’une même classe ont chacun leurs propres données.
Compte
Supposons que nous souhaitons pouvoir:
◦ Créditer le solde titulaire
◦ Débiter le solde solde
◦ Afficher la description du compte bancaire devise
◦
crediter()
Nous devons donc disposer de trois méthodes debiter()
dans la classe Compte : afficher()
◦ crediter()
◦ debiter()
◦ afficher()
3
Classe en java(1):Class
Le mot clé class permet de définir une classe java :
Modificateur Class Nom_Classe
{
//le corps de la classe
}
un attribut peut être de type élémentaire: entier, réel (float, double), booléen,
caractère, ou de type objet.
◦ Private: l’attribut n’est visible qu'à l'intérieur de la classe, mais il peut être accédé via des méthodes
publiques.
lorsqu'aucun modificateur n'est précisé, l’attribut est visible par toutes les classes se
trouvant dans le même package.
5
Classe en java(2):attributs
exemple
public Class Compte { public Class Compte {
Le mot clé private précise que le champs solde n’est pas accessible
de l’extérieur de la classe (c-à-d en dehors de ses propres
méthodes).
6
Classe en java(3):méthodes
Nom de la
Visibilité méthode
Type de retour
{ Les paramètres
solde=solde+montant;
}
7
La classe Compte
public Class Compte {
Nom de la classe
public String titulaire;
private double solde; Les attributs
public String devise;
8
Objet
Une classe est un plan ou un moule pour fabriquer
un objet, ce qu’on appelle instancier un objet.
9
Création d’un objet (1)
Dans la mémoire, un objet est représenté par deux choses:
◦ Un emplacement qui décrit son identité, ou ce que nous entendons par
la référence.
◦ Un emplacement pour les valeurs de ses attributs (état de l’objet).
10
Création d’un objet (2)
Pour créer un objet, il faut tout d’abord le déclarer ensuite l’initialiser
titulare =null
c1 Solde=0.0
c1=new Compte() Devise=null
Référence 11
Utilisation d’un objet+ méthode main
Une fois l’objet est crée, on peut l’utiliser via sa référence, c-a-d, la
variable de type classe.
titulare =null
=Ali
c1 Solde=0.0
Solde=100.0
c1=new Compte() Devise=null
12
Mais avant d’utiliser un objet,
Comment initialiser ses valeurs
(son état initial)?
Constructeur
13
Constructeur
Un constructeur est une méthode spéciale utilisée
pour créer un nouvel objet. Le constructeur se
caractérise par:
}
14
o public Class Compte {
18
Règles pour le constructeur: Règle 3
Dès qu’une classe possède au moins un constructeur, le constructeur
par défaut ne peut plus être utilisé . Sauf si un constructeur sans
arguments a été définit.
19
Mot-clé: this
Dans le traitement de l’une de ses méthodes un objet peut avoir à
s’envoyer un message (pour accéder à un de ses attributs ou
invoquer une des ses méthodes). Pour cela, il utilise le mot clé this.
L’utilisation du mot clé this permet aussi d’éviter l’ambiguïté
Exemple1: Ambiguïté
public Compte (String titulaire, double solde, String d)
{ this.titulaire=titulaire; this.solde=solde; devise=d; }
20
Exercice
Maintenant on va modifier le type de l’attribut titulaire en utilisant
la classe Person .
Une personne possède un nom, un prénom, et un sexe.
La méthode afficher() agisse sur les attributs de la classe Person
en affichant leurs contenues.
Donnez le code de la classe Person (attributs, 2 constructeurs,
méthode ) ?
Reprogrammez la classe Compte en tenant compte du nouveau
type de l’attribut titulaire ( 2 constructeurs et les méthodes)
Compte Person
Public String
Persontitulaire
titulaire Public String nom
Public double solde Public String prenom
Public String devise Public char sexe
Public void crediter() Public void afficher()
Public void debiter()
Public void afficher() 21
public Class Person {
public Person () {}
22
public class Compte {
Pour accéder à leur valeur il faut passer par une méthode publique
de type fonction, appelée accesseur (getter):GetXxxx
Pour les modifier il faut passer par une méthode publique de type
procédure, appelée modificateur (setter): SetXxx
26
L’interface d’encapsulation(2)
public class Person {
private String nom, prenom;
public char sexe;
….
} 27
Référence d’objet(1)
Un objet est utilisé via sa référence. Cette référence contient
l’adresse de l’emplacement mémoire dans lequel est stocké l’objet
(les attributs de l’objet).
Compte c1,c2,c3;
c1=new Compte("Ali", 200, "dinar");
c2=new Compte("karim", 400, "euro");
c3=null;
titulaire =‘Ali’
c1 solde=200.0
devise=‘dinar’
titulaire =‘Karim’
c2 solde=400.0
devise=‘euro’
c3
28
Référence d’objet(2): affectation
titulaire =‘Ali’
c1 solde=200.0 System.out.print(c1.titulaire) ‘Ali’
devise=‘dinar’
System.out.print(c1.titulaire) ‘Karim’
29
Référence d’objet(3): comparaison
Compte c1,c2,c3;
titulaire =‘Ali’
c1=new Compte("Ali", 200, "dinar");
c2=new Compte("Ali", 200, "dirar");
c1 solde=200.0
devise=‘dinar’
c3=c2;
c2 titulaire =‘Ali’
solde=200.0
Égalité de référence
c3 devise=‘dinar’
c1==c2 ---> false
c2==c3 ---> true
Égalité d’objet
c1.equals(c2) --->true (il faut passer par une méthode de la classe Compte)
S’exécute :
◦ lorsqu'il n'y a pas d'autre activité (attente d'une entrée clavier ou d'un
événement souris)
◦ lorsque l'interpréteur JAVA n'a plus de mémoire disponible
31
Attributs statiques: variables de la classe
Supposons qu'on veuille compter le nombre d'objets Compte créés dans une
application.
L’idée est d'inclure dans les constructeurs de la classe Compte , une instruction
incrémentant un compteur (nbCompte).
La variable compteur (nbcompte) est une variable partagée par toutes les objets d’une
classe variable de classe.
Pour accéder aux champs statiques, on utilise le nom de la classe (et non pas
l’objet) Compte.nbCompter;
nbCompte=3
nbCompte=0
nbCompte=1
nbCompte=2
34
public Class Compte {
…
public String titulaire; public static void main(String arg[])
private double solde; {
public String devise;
Compte c1,c2,c3;
private static int nbCompte;
c1=new Compte(‘‘Ali’’,20,’’dinar’’)
//constructeurs c2=new Compte(‘’karim’’,700)
public Compte(String t, double s) c3=new Compte();
{ titulaire=t; solde=s;
nbCompte++;} System.out.print(Compte.GetnbCompte() )
……….
}
//méthodes usuelles
….. 3
//méthodes statiques
public static int GetnbCompte(){
return nbCompte; }
}
35
Surcharge:
Surdéfinition des méthode
Surcharge(overloading) est la possibilité de définir des méthodes
possédant le même nom mais dont les arguments diffèrent
Surcharge n’est pas limitée aux constructeurs, elle est possible pour
n'importe quelle méthode (usuelles ou satique).
36
public class Compte {
/attributs
…. Compte c1;
/constructeurs c1=new Compte(‘‘Ali’’,20,’’dinar’’)
…. double x=100.0;
public void crediter (double m) c1.crediter(x);
solde+=m;}
38