Vous êtes sur la page 1sur 22

Introduction a la

POO avec Java

Développement Mobiles
M2 ISI
(A.CHENNA)
1. Objets et Classes
 Un objet se définit par ses états (on peut aussi parler de
ses caractéristiques) et son comportement.

 Une classe est un plan ou un moule pour fabriquer des


objets.
 les états d’un objet vont être représentés par des
variables
 les comportements d’un objet seront représentés par des
méthodes. 2
 Un objet est une instance d’une classe.
2. Autrement dit

 Une classe est un type abstrait caractérisé par des


propriétés (attributs et méthodes) communes à un
ensemble d’objets et permettant de créer des objets ayant
ces propriétés.

 Un objet ou une instance de classe possède un


comportement et un état qui ne peut être modifié que par
les actions du comportement.

IMPORTANT par convention,


 le nom d’une classe commence toujours par une majuscule.
ce qui n’est pas le nom d’une classe commence par une
minuscule

3
4. Des classes déjà existentes

 Java possède une large librairie de classes. La librairie se


compose de différents packages et sous-packages.

 http://docs.oracle.com/javase/8/docs/api/overview-summa
ry.html

 Par exemple, le package java.lang contient des classes de


base du langage Java. On y trouve aussi une classe pour
manipuler les chaînes de caractères appelée String.

4
5. Attributs et variables de classe

 variables d’instance ou attributs :


ces variables définissent les caractéristiques de l’objet.
 Initialisation optionnelle.
 accès : <nom objet>.<nom attribut>
 ex : monVelo.couleur
 variables de classe : ces variables sont communes à
toutes les instances de la classe,
 déclaration avec le mot clé static
 initialisation obligatoire
 accès : <nom de classe>.<nom variable de classe>
 ex : Float.MAX_VALUE

5
6. Méthodes d’instance et méthodes de classe
 méthode d’instance : ces méthodes permettent de
modifier ou d’accéder à l’état de l’objet.
 méthode de classe : ces méthodes ne modifient pas l’état
interne d’un objet.
exemple : la classe Float
 méthode d’instance String toString()
 retourne une représentation en chaîne de caractères
de l’objet courant
 méthode de classe static String toString(Float f)
 retourne une représentation en chaîne de caractères
du float passé en parameter
Float f;
System.out.println(f.toString());
System.out.println(Float.toString(3.1419));

6
7. Encapsulation

Les comportements et les états d’un objets peuvent être:

o connus de tous  public


toute classe peut
 exécuter la méthode publique
 modifier ou accéder à un attribut publique

o cachés  private la méthode ou l’attribut ne peut être


accédé que depuis l’intérieur de la classe

7
8. Constructeurs

Les méthodes pour instancier un objet sont appelées des


constructeurs.
Un constructeur :
 porte le nom de la classe
 n’a pas de type de retour.
On appelle constructeur par défaut le constructeur sans
arguments :
public class <nom classe> {
// déclaration des variable d’instances et
// variables de classe
...
...
// constructeur par défaut
public <nom classe>(){
// corps de la méthode
}} 8
9. Exemple

La surcharge permet d’avoir des constructeurs avec des


signatures différentes.
Pour une classe Personnage, on peut donc écrire :

public class Personnage {


public String nom;

// constructeur par défaut


public Personnage(){
nom = ”Inconnu";
}
public Personnage(String name){
nom = name;
}
}
9
9. Création d’un objet

 Déclaration : comme pour les types primitifs :


<Nom de la classe> <nom objet>;
 Création/initialisation à l’aide du mot clé new et appel du
constructeur :
new <Nom de classe>(<liste d’arguments>);.
 comme pour les types primitifs, on peut déclarer et
initialiser plusieurs objets du même type en même temps.

Personnage asterix = new Personnage("Astérix");


Personnage obelix = new Personnage("Obelix"),
idefix = new Personnage(”Idéfix”),
romain = new Personnage();

10
10. Egalité

Personnage asterix = new Personnage("Astérix");


Personnage asterixBis = asterix;
Personnage asterixTer = new Personnage("Astérix");
if (asterix == asterixBis) System.out.println("Bleu");
Else System.out.println("Rouge");
if (asterix == asterixTer) System.out.println("Bleu");
Else System.out.println("Rouge");

 Qu’est-ce qui est affiché sur la console ?


la variable est une référence vers l’objet et non l’objet lui
même
 désigne l’égalité de la référence :
deux variables peuvent désigner le même objet
 pour tester l’égalité entre les propriétés de l’objet,
on utilise la méthode boolean equals(Object o).
12
11. Compilation, exécution, machine virtuelle

12
12. Compilation

 Chaque classe <MaClasse> est enregistrée dans un fichier


<MaClasse>.java : il porte le même nom que la classe et possède
l’extension .java.
 Le développeur doit compiler l’ensemble de classes à l’aide
d’un programme appelé javac.
 Le compilateur traduit le code écrit par le développeur en un
langage plus simple qui pourra être exécuté.
 Pour Java, le compilateur produit un code dans le langage
bytecode.
 Le résultat de la compilation est un fichie nommé
<MaClasse>.class

13
13. Exécution
 On exécute une méthode spéciale appelée main.
 La méthode main a une signature fixée par convention

public static void main(String[] args)

public : pour être appelée de l’extérieur de la classe


static : pour être appelée sans avoir instancié un objet
void : la méthode ne retourne rien
String[] args : lors du lancement de l’exécution, on peut
ajouter du texte et chaque mot sera inséré dans un tableau
de String qui peut servir à paramétrer l’exécution.

14
Exercice
Que fournit le programme suivant ?

class A{
public A (int coeff) { nbre *= coeff ;
nbre += decal ;
}
public void affiche () {
System.out.println ("nbre = " + nbre + " decal = " +
decal) ;}
private int nbre = 20 ;
private int decal ;
}
public class InitChmp
{ public static void main (String args[])
{ A a = new A (5) ; a.affiche() ;}
}

15
Héritage
 Pourquoi ?
 Pour raccourcir les temps d’écriture et de mise au point du
code d’une application, il est intéressant de pouvoir réutiliser
du code déjà écrit.

 Exemple:

 La classe Voiture représente toutes sortes de voitures possibles


 On pourrait définir un camion comme une voiture très longue,
 Mais un camion a des spécificités par rapport aux voitures :
remorque, cargaison, boîte noire, etc.
 On pourrait créer une classe Camion qui ressemble à la classe
Voiture
 Mais on ne veut pas réécrire tout ce qu'elles ont en commun

16
Héritage
 Solution:
o La classe Vehicule contient tout ce qu'il y a de commun à
Camion et Voiture
o Camion ne contient que ce qu'il y a de spécifique aux camions

17
Héritage
 Objectif de l’héritage:
o Ne décrire qu'une seule fois le même traitement lorsqu’il
s'applique à plusieurs classes
o Pour cela:
o on crée une classe la plus générique à laquelle s'applique le
traitement
o Toutes les classes plus spécifiques, héritant de cette
classe ce traitement, et peuvent l'exécuter
o Le traitement n'est décrit qu'au niveau de la classe mère
o Les classes filles contiennent d'autres traitements plus
spécifiques

18
Héritage
 Usage de l’héritage:

o Une classe spécifique hérite des méthodes et des


attributs de sa classe mère (sauf ceux qui sont privés)
o On n'a pas besoin de les réécrire pour la classe fille
o On peut cependant redéfinir une méthode de la classe mère
dans la classe fille (de même signature)
o Le constructeur d'un objet doit toujours commencer par
appeler le constructeur de sa classe mère
o Un objet de type Voiture peut utiliser toutes les méthodes
de la classe Vehicule
o A tout moment, une méthode qui utilise un objet de type
Vehicule peut manipuler un objet de type Voiture en guise de
Vehicule
o Cette dernière propriété est le polymorphisme
19
Héritage
 Exemple

20
Héritage

 Vocabulaire :

o La classe A s'appelle une classe mère, classe parente ou


super-classe

o La classe B qui hérite de la classe A s'appelle une classe fille


ou sous-classe

21
Redéfinition et surcharge

Ne pas confondre redéfinition et surcharge des méthodes :

o On redéfinit une méthode quand une nouvelle méthode a la


même signature qu’une méthode héritée de la classe mère

o On surcharge une méthode quand une nouvelle méthode a le


même nom, mais pas la même signature, qu’une autre
méthode de la même classe

22

Vous aimerez peut-être aussi