Vous êtes sur la page 1sur 19

Système d’Information et de Connaissances

Programmation objet avec JAVA


Partie 1

S.I.C
Plan
 Notion d’objets

 Encapsulation

 Constructeur

 Attributs et méthodes

 Accesseurs, mutateurs

 Méthode toString

2
Notion d’objets
 Un objet modélise toute entité identifiable, concrète ou abstraite, manipulée
par l’application logicielle.
 Une chose tangible ex: ville, véhicule, personne.
 Une chose conceptuelle ex: date, réunion, planning de réservation.

 Un objet peut être vu comme une entité cohérente rassemblant des données
et du code travaillant sur ses données.

 Une classe peut être considérée comme un moule à partir duquel on peut
créer des objets.
 En fait, on considère plus souvent que les classes sont les descriptions
des objets, lesquels sont des instances de leur classe.

3
Concept d’encapsulation

 L’encapsulation est un mécanisme consistant à rassembler les données et les


méthodes au sein d’une structure en cachant l’implémentation de l’objet, c’est-
à-dire en empêchant l’accès aux données par un autre moyen que les
méthodes proposées.

 L’encapsulation permet donc de garantir l’intégrité des données contenues


dans l’objet.

 L’utilisateur d’une classe n’a pas forcément à savoir de quelle façon sont
structurées les données dans l’objet, cela signifie qu’un utilisateur n’a pas à
connaître l’implémentation.

4
Exemple : compte en banque
class Compte
{
private String titulaire;
private int numeroCompte; Attributs Les valeurs caractéristiques de l'objet
private double solde;

Compte (String nomTitulaire,int nouveauNum, double nouveauSolde)


{
titulaire = nomTitulaire; Traitements à effectuer au
numeroCompte = nouveauNum; Constructeur moment de la création de
solde = nouveauSolde;
}
l'objet

public String gettitulaire()


{ Méthodes
return titulaire;
} Traitements possibles sur l'objet
public int getnumeroCompte()
{
return numeroCompte;
}

public double getsolde()


{
return solde;
} 5
}
Modificateurs d’accès : résumé

Modificateur Dans la classe Dans une sous- Ailleurs


d'accès classe

private OK

protected OK OK

public OK OK OK

6
Utilisation de la classe Compte

class TestCompte {
public static void main (String arg[]) {
Compte c1, c2;
c1 = new Compte("bb",1,1200);
c2 = new Compte("aa",2,1000);
System.out.println("Le titulaire du compte c1 est = "+c1.gettitulaire());
System.out.println("Le solde du compte c2 est = "+c2.getsolde());
}
}

Exécution :
Le titulaire du compte c1 est = bb
Le solde du compte c2 est = 1000.0

7
Mot clé this
class Compte
{
private String titulaire;
private int numeroCompte;
private double solde;

Compte (String titulaire,int numeroCompte, double solde)


{
this.titulaire = titulaire;
this.numeroCompte = numeroCompte;
this.solde = solde;
}

public String gettitulaire()


{ Dans une méthode de classe la variable this permet de
return titulaire;
référencer l’objet courant qui exécute ce code ("l'objet lui-
}
même").
public int getnumeroCompte()
{
return numeroCompte;
On lève ainsi toute ambiguïté, même si l’emploi du
} même nom de variable est à proscrire.

public double getsolde()


{
return solde;
} 8
}
Surcharge de méthode
class Chat
{
private String nom ;
private double poids ;
private double taille ;
public Chat ( )
// Un constructeur est public
{
nom ="Isis";
poids = 0 ;
taille = 0 ;
}
public Chat (String n, double p, double t)
{
this.nom =n;
this.poids = p ;
this.taille = t ;
}
}

9
Surcharge de méthode
class Chat
{
private String nom ;
private double poids ;
private double taille ;
public Chat ( )
// Un constructeur est public class TestChat {
{ public static void main (String arg[]) {
nom ="Isis"; Chat c1;
poids = 0 ; // c1 est un objet de la classe
taille = 0 ; //Chat dont la valeur est null
} c1 = new Chat ();
public Chat (String n, double p, double t) // c1 est instancié par le constructeur
// on a poids =0, taille =0 et nom ="Isis".
{ c1 = new Chat ("Plume" ,2.5 , 80) ;
this.nom =n; // c1 est instancié
this.poids = p ; // nom =" Plume ", poids = 2.5 et taille = 80.
this.taille = t ; }
} }
}

10
Accesseur

 Un accesseur est une méthode permettant de récupérer le contenu d’une


donnée membre protégée. Un accesseur, pour accomplir sa fonction :

 Doit avoir comme type de retour le type de la variable à renvoyer.

 Ne doit pas nécessairement posséder d’arguments.

 Une convention de nommage veut que l’on fasse commencer de façon


préférentielle le nom de l’accesseur par le préfixe get.

11
Mutateur

 Un mutateur est une méthode permettant de modifier le contenu d’une


donnée membre protégée. Un mutateur, pour accomplir sa fonction :

 Doit avoir comme paramètre la valeur à assigner à la donnée membre. Le


paramètre doit donc être du type de la donnée membre.

 Ne doit pas nécessairement renvoyer de valeur (il possède dans sa plus


simple expression le type void).

 Une convention de nommage veut que l’on fasse commencer de façon


préférentielle le nom du mutateur par le préfixe set.

12
Accesseur et mutateur
public String getNom ()
class Chat {
{ return nom;
private String nom ; }
public void setNom (String n)
private double poids ;
{
private double taille ; nom=n ;
public Chat ( ) }
// Un constructeur est public }
public double getTaille ()
{
{
nom ="Isis"; return taille ;
poids = 0 ; }
taille = 0 ; public void setTaille (double t)
{
}
taille = t ;
public Chat (String n, double p, double t) }
{ public double getPoids ()
this.nom =n; {
return poids ;
this.poids = p ;
}
this.taille = t ; public void setPoids (double p)
} {
poids = p ;
} 13
}
Utilité des mutateurs
public class Chat
{
public String nom;
public double poids ; Chat c1;
public double taille ; c1 = new Chat ("Plume" ,2.5, 80) ;
public boolean regime ; // nom ="Plume", poids = 2.5 , taille = 80 et
... //regime = false.
public setPoids (double p){ c1.poids =8;
poids=p; // nom ="Plume", poids = 8, taille = 80 et
if (poids >6) //regime = false.
regime = true ; // modification directe des attributs de l’objet
else // les données de l’objet ne sont plus cohérentes
regime = false c1.setPoids (8) ;
} // nom ="Plume", poids = 8, taille = 80 et
public Chat ( String n, double p, double t) //regime = true.
{ // utilisation des mutateurs
this.nom =n; // les données de l’objet conservent leurs
this.poids = p ; //cohérences.
this.taille = t ;
}
...
}
14
Un objet est une référence

 Chat c1;
 c1 = new Chat ("isis" ,6 ,80);
 Chat c2 = new Chat ("isis" ,6 ,80);
 Chat c3 = c2;
 ici (c3 == c2) vaut true tandis que (c2 == c1) vaut false

@122 c1 @215 c2 @215 c3

isis 6 80
isis 6 80
@122
@215

15
Tester l’égalité de valeur
public class Chat{
private String nom ;
private double poids ;
private double taille ;
...
public boolean egale (Chat c)
{
return (this.poids == c. poids) && (this.taille ==c.taille) && (this.nom.equals(c.nom));
}
...
}

 c1. egale (c2) retournera true

16
Surcharge de méthodes
public class Chat{
private String nom ;
private double poids ;
private double taille ;
...
public boolean egale (Chat c)
{
return (this.poids == c.poids) && (this.taille ==c. taille)
&& (this.nom.equals (c.nom));
}
public boolean egale (String n, double p, double t)
{
return (this.poids == p) && (this.taille == t)
&& (this.nom.equals (n));
}

}

17
Méthode toString

public class Chat


{
private String nom ; La méthode toString définie dans la classe Chat
permet l’affichage des informations de l’objet.
private double poids ;
private double taille ; Chat c1;
... // c1 est un objet de la classe Chat dont la
//valeur est null
public String toString ()
{ c1 = new Chat ("Plume" ,2.5 , 80) ;
return " Nom : "+ this . nom // c1 est instancié

+"\t Poids (en Kg): "+this.poids // nom ="Plume", poids = 2.5 et taille = 80
+"\t Taille (en cm): "+ this.taille ;
System.out.println (c1);
} // Affichage des informations de l’objet c1
...
}

18
Exemple de toString

public class Chat{ public String toString ()


{
private String nom ; return " Nom : "+ this . nom
+"\t Poids (en Kg): "+this.poids
private double poids ;
+"\t Taille (en cm): "+ this.taille ;
private double taille ; }
public static void main(String[] Argv){
public Chat (String n, double p, double t){ Chat c1,c2;
nom =n; c1 = new Chat ();
System.out.println(c1);
poids = p ;
c2 = new Chat ("Plume" ,2.5 , 80) ;
taille = t ; System.out.println(c2);
} }
public Chat () { }
nom ="Isis";
poids = 0 ; Résultat:
taille = 0 ; Nom : Isis Poids (en Kg): 0.0 Taille (en cm): 0.0
} Nom : Plume Poids (en Kg): 2.5 Taille (en cm): 80.0
19

Vous aimerez peut-être aussi