69
Saloua Ben Yahia 1 Chapitre III POO JAVA Saloua Ben Yahia

Java uik-chap4-poo3

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Java uik-chap4-poo3

Saloua Ben Yahia 1

Chapitre III POO JAVA

Saloua Ben Yahia

Page 2: Java uik-chap4-poo3

Saloua Ben Yahia 2

Objectifs

1. Connaître les concepts de la programmation par objet et les mettre en oeuvre avec Java

2. Créer une classe avec des attributs et des méthodes

3. Instancier des objets et leur envoyer des messages

Page 3: Java uik-chap4-poo3

Saloua Ben Yahia 3

Plan

1. Objectifs

2. Définition d’un Objet

3. Définition d’une Classe

4. Instanciation

5. Garbage Collector

6. Opérateur .

7. Méthode

8. Constructeur

9. String

10. UML

Page 4: Java uik-chap4-poo3

Saloua Ben Yahia 4

1. Définition d’un Objet1.1 Exemples…Suite Date du jour

Attributs : jour (20), mois (01),année (2009) Méthodes : s’afficher

Date d’aujourd’hui est un objet Voiture

Attributs : marque , vitesse, couleur, kilométrage Méthodes : accélérer, freiner, arrêter

Ma Voiture est un Objet :

Marque : Toyota, Kilométrage 150000, couleur : verte, vitess=0km/h.

Page 5: Java uik-chap4-poo3

Saloua Ben Yahia 5

1. Définition d’un Objet1.2 Définition Un objet peut être

une valeur (instance) d’un type abstrait, une “représentation” d’une classe.

une abstraction d’un objet physique du monde réel, c’est-à-dire dont on a retenu uniquement les caractéristiques intéressantes lors de la modélisation.

Page 6: Java uik-chap4-poo3

Saloua Ben Yahia 6

1. Définition d’un Objet1.2 Définition…Suite Un objet est caractérisé par

Un ensemble d’attributs typés et nommés représentant ses propriétés statiques. Ces attributs portent des valeurs attachées à l’objet. L’ensemble de ces valeurs à un instant donné constitue l’état de l’objet à cet instant,

Un ensemble de méthodes définissant son comportement et ses réactions aux stimulations externes.

Ces méthodes implémentent les algorithmes invocables sur cet objet,

Une identité qui permet de le distinguer des autres objets, de manière unique.

Page 7: Java uik-chap4-poo3

Saloua Ben Yahia 7

Plan

1. Objectifs2. Définition d’un Objet3. Définition d’une Classe

1. Définition2. Exemples3. Qu’est ce donc une classe ?

4. Instanciation5. Garbage Collector6. Opérateur .7. Constructeur8. Méthode9. String

Page 8: Java uik-chap4-poo3

Saloua Ben Yahia 8

2. Définition d’une classe2.1 Définition C’est un modèle de définition pour les objets

en termes d’attributs, en termes de méthodes.

Les objets sont des représentations dynamiques (instanciation), “vivantes”, du modèle défini pour eux au travers de la classe.

Page 9: Java uik-chap4-poo3

Saloua Ben Yahia 9

2. Définition d’une classe2.2 Exempleclass Cercle {int rayon;int epaisseur_trait;... // autres attributs...}

Instanciation, même attributsmais de valeurs différentes

Page 10: Java uik-chap4-poo3

Saloua Ben Yahia 10

2. Définition d’une classe2.2 Exemple…Suiteclass Date{int jour,moi,annee;}Aujourd’hui, demain, Le jour de l’an…sont des instances ou des objets de la classe Date

Page 11: Java uik-chap4-poo3

Saloua Ben Yahia 11

2.Définition d’une classe2.2 Exemple…Suiteclass Individu {String nom;int age;float salaire;}Moi,toi, sont de exemples d’Individu,

Page 12: Java uik-chap4-poo3

Saloua Ben Yahia 12

2.Définition d’une classe2.3 Qu’est-ce qu’une classe ? Une classe définit les modèles des objets qui en

seront instanciés Dans la classe sont définis des attributs et des

méthodes qui seront présents dans chaque objet qui sera instancié de la classe considérée.

Par convention le nom d’une classe commence toujours par une Majuscule

Exemple

class Voiture{……………}class Cercle{………………}

Page 13: Java uik-chap4-poo3

Saloua Ben Yahia 13

2.Définition d’une classe2.3 Qu’est-ce qu’une classe ?...Suite Dans l’exemple de la page précédente, on définit

une classe Cercle, contenant entre autres : un attribut rayon et un attribut epaisseur_trait.

Chaque cercle instancié de cette classe possédera son propre rayon et sa propre épaisseur du trait.

Page 14: Java uik-chap4-poo3

Saloua Ben Yahia 14

2.Définition d’une classe2.3 Qu’est-ce qu’une classe ?...Suite Les méthodes définies dans la classe existent de

même pour chaque objet et ont un comportement identique dans chaque objet tout en y étant localisé

Supposons que la classe Cercle fournisse la méthode changeRayon(int new_rayon), permettant de modifier la valeur de l’attribut rayon. Si un des cercles fait appel à cette méthode, il changera son propre rayon, pas celui des autres cercles dont il ignore probablement l’existence.

Page 15: Java uik-chap4-poo3

Saloua Ben Yahia 15

2.Définition d’une classe2.3 Qu’est-ce qu’une classe ?...Suite

vitesse=30 kilometrage=120000 marque=golf couleur=gris

accélérer

freiner

arrêter

décélérer

Vitesse=120 Kilometrage=100000 Marque=peugeot Couleur=vert

accélérer

freiner

arrêter

décélérer

Deux instances de la classe voiture

Page 16: Java uik-chap4-poo3

Saloua Ben Yahia 16

Plan

1. Objectifs

2. Définition d’un Objet

3. Définition d’une Classe

4. Instanciation

5. Garbage Collector

6. Opérateur .

7. Méthode

8. Constructeur

9. String

10. UML

Page 17: Java uik-chap4-poo3

Saloua Ben Yahia 17

3.Instanciation. 3.1 Mais que cela signifie-t-il ? La création d’un objet à partir d’une classe est appelé

instanciation. Cet objet est une instance de sa classe. Une instanciation se décompose en trois phases

1. Création et initialisation des attributs en mémoire, à l’image d’une structure.

2. Appel de méthodes particulières, les constructeurs, définies dans la classe, dont l’étude est faite un peu plus loin...

3. Renvoi d’une référence sur l’objet (son identité) maintenant créé et initialisé.

Page 18: Java uik-chap4-poo3

Saloua Ben Yahia 18

3.Instanciation 3.2 Opérateur new L’opérateur new sert à instancier un Objet de

type structuré

Date d1 = new Date();Date d2=new Date();

Page 19: Java uik-chap4-poo3

Saloua Ben Yahia 19

3.Instanciation 3.2 Opérateur new…suite En java il existe deux types

Types primitifs Types structurés ou classes

Les types primitifs contiennent la valeur qui leur est assignée

Exemple :

int x = 7;int y = x;

Page 20: Java uik-chap4-poo3

Saloua Ben Yahia 20

3.Instanciation 3.2 Opérateur new…suite Les types structurés sont instanciés avec

l’opérateur new Exemple

Date d1=new Date();Date d2=new Date();

Page 21: Java uik-chap4-poo3

Saloua Ben Yahia 21

3.Instanciation. 3.3 Mais que se passe t-il en mémoire Création de l’Objet Création de la référence Sauvegarde de l’adresse de l’objet dans la

référence

Page 22: Java uik-chap4-poo3

Saloua Ben Yahia 22

3.Instanciation. 3.3 Mais que se passe t-il en mémoireclass MaDate {int day;int month;int year;}

Page 23: Java uik-chap4-poo3

Saloua Ben Yahia 23

3.Instanciation. 3.3 Mais que se passe t-il en mémoireMaDate today= new MaDate();

Création de la référence au départ son contenu est à null (valeur par défaut d’une référence)

MaDate today; Instanciation de l’Objet avec le new

new MaDate() Copie de l’adresse dans la référence

MaDate d1=new MaDate();

Page 24: Java uik-chap4-poo3

Saloua Ben Yahia 24

3.Instanciation. 3.3 Mais que se passe t-il en mémoire…suite

Page 25: Java uik-chap4-poo3

Saloua Ben Yahia 25

3.Instanciation. 3.3 Mais que se passe t-il en mémoire

7

7

xint

yint

Cas création de deux variables primitivesde type int

Page 26: Java uik-chap4-poo3

Saloua Ben Yahia 26

3.Instanciation. 3.3 Mais que se passe t-il en mémoire Date d1=new Date(); Date d2=new Date();

Page 27: Java uik-chap4-poo3

Saloua Ben Yahia 27

3.Instanciation. 3.3 Mais que se passe t-il en mémoire

moisint

anneint

@1

@1jourint0

0

0

d1Date

@2

@2jourint0

0

0

d2Date

moisint

anneint

Page 28: Java uik-chap4-poo3

Saloua Ben Yahia 28

3.Instanciation. 3.3 Mais que se passe t-il en mémoire Lorsque vous exécutez new pour allouer de la mémoire pour un

objet, Java affecte aux valeurs de l’espace la valeur initiale "zéro". Pour les variables numériques, la valeur est réellement zéro. Pour

les variables booléennes (boolean), la valeur est false. Pour les références, c’est à dire toute variable d’un type d’objet, une

valeur spéciale à null indique qu’il n’y a pas de structure associée.

Page 29: Java uik-chap4-poo3

Saloua Ben Yahia 29

3.Instanciation. 3.4 Initialisation des variables Dans Java, une valeur nulle indique que la variable ne renvoie

pas à un objet. La machine virtuelle détecte si vous utilisez une telle référence et

vous en interdit l’accès . Ce comportement sera présenté plus en détail dans le module ultérieur Exceptions.

Exemple

Voiture v1; //v1 est à nullv1.freiner(20);//génère une exception à

l’exécution

Page 30: Java uik-chap4-poo3

Saloua Ben Yahia 30

3.Instanciation. 3.4 Initialisation des variables Note – L’initialisation par défaut ne concerne

que les variables membres de la classe et non les variables locales au bloc d’instructions.

Une erreur se produit à la compilation si vous tentez d’utiliser une variable locale avant qu’une valeur ne lui ait été affectée de façon définie.

Page 31: Java uik-chap4-poo3

Saloua Ben Yahia 31

4.Instanciation. 4.1 Le garbage collecteur Les objets qui ne sont plus référencés sont

détruit automatiquement par le garbage Collecteur

Exemple

Date d1=new Date();

Date d2=new Date();

d2=d1;

Page 32: Java uik-chap4-poo3

Saloua Ben Yahia 32

4.Instanciation. 4.1 Le garbage collecteur

moisint

anneint

@1

@1jourint0

0

0

d1Date

@2

@2jourint0

0

0

d2Date

moisint

anneint

Page 33: Java uik-chap4-poo3

Saloua Ben Yahia 33

4.Instanciation. 4.1 Le garbage collecteur

moisint

anneint

@1

@1jourint0

0

0

d1Date

@1

@2

d2Date

anneint

jourint0

0

0

moisint

Page 34: Java uik-chap4-poo3

Saloua Ben Yahia 34

Plan

1. Objectifs

2. Définition d’un Objet

3. Définition d’une Classe

4. Instanciation

5. Garbage Collector

6. Opérateur .

7. Méthode

8. Constructeur

9. String

10. UML

Page 35: Java uik-chap4-poo3

Saloua Ben Yahia 35

4. L’opérateur .

Java autorise l’accès aux attributs d’un objet (nom, age et salaire) à l’aide de l’opérateur (.), de la façon suivante :

Page 36: Java uik-chap4-poo3

Saloua Ben Yahia 36

4. L’opérateur .

class Individu {String nom;int age;float salaire;}

Individu un = new Individu()

Individ deux=new Individu();

un.nom = "Jean"; deux.nom="Jo";

un.age = 24;deux.age=30;un.salaire = 10000;deux.salaire=2000;

Page 37: Java uik-chap4-poo3

Saloua Ben Yahia 37

4. L’opérateur .

nom=J ean age=24 salaire=10000

nom=J o age=30 salaire=20000

Deux instances de la classe voiture

Page 38: Java uik-chap4-poo3

Saloua Ben Yahia 38

Plan

1. Objectifs

2. Définition d’un Objet

3. Définition d’une Classe

4. Instanciation

5. Garbage Collector

6. Opérateur .

7. Méthode

8. Constructeur

9. String

10. UML

Page 39: Java uik-chap4-poo3

Saloua Ben Yahia 39

5.Méthode5.1 DéfinitionDéfinition de méthodes<type_retour><nom>(<liste_arguments>) <bloc>

Exemple :

void accelerer(int v){vitesse=vitesse+v;}double perimetre(){return 2*rayon*3.14;}

En-tête ou signature

En-tête ou signature

bloc

bloc

Page 40: Java uik-chap4-poo3

Saloua Ben Yahia 40

5.Méthode5.2 Exemplesclass Cercle{double rayon;//méthode périmètredouble perimetre(){return 2*rayon*3.14; }

}

Page 41: Java uik-chap4-poo3

Saloua Ben Yahia 41

5.Méthode5.2 Exemplesclass Voiture{String marque,couleur;int kilometrage,vitesse;//méthode accélérervoid accelerer(int v){vitesse=vitesse+v;}//méthode freinervoid freiner(int v){vitesse=vitesse-v;}}

Page 42: Java uik-chap4-poo3

Saloua Ben Yahia 42

5.Méthode5.1 Type de retour<type_retour><nom>(<liste_arguments>) <bloc>

Si la méthode ne retourne rien alors le type de retour est void

Une méthode peur retourner un Type primitif (int, boolean, double) Type structuré (String, Cercle…) Tableau (a voir plus tard)

Si la méthode retourne une valeur alors la dernière instruction doit être un return et la valeur retournée doit être du type spécifié

Page 43: Java uik-chap4-poo3

Saloua Ben Yahia 43

5.Méthode5.1 Type de retour<type_retour><nom>(<liste_arguments>) <bloc>

La liste des argument peut contenir une liste de 0 à n paramètres séparés par une ,

Le nom des arguments doit être en minuscule

Les arguments peuvent être de type : Type primitifs Type structurés Tableaux….

Page 44: Java uik-chap4-poo3

Saloua Ben Yahia 44

5.Méthode5.1 Type de retour Par convention le nom d’une méthode

commence par une miniscule Si le nom est composée de deux mots alors

le deuxième commence par une majuscule Exemples:

déplacerCercle(int x, int y){…..} freiner(int v){}

Page 45: Java uik-chap4-poo3

Saloua Ben Yahia 45

5.Méthode5.1 Type de retour Les variables définies dans le bloc sont

appelées variables locales Leur portée ne dépasse par le bloc de la

méthode Elle doivent être nécessairement initialisées

Page 46: Java uik-chap4-poo3

Saloua Ben Yahia 46

5.Méthode5.1 Type de retour. L’opérateur point sert à appeler une méthode

par rapport à un objet refObjet.methode() Si la méthode est une expression, c’est-à-

dire retourne une valeur alors la valeur retournée doit être exploitée c.a.d soit : Sauvegardée dans une variable Affichée …

Page 47: Java uik-chap4-poo3

Saloua Ben Yahia 47

5.Méthode5.1 Type de retourCercle c1=new Cercle();c1.perimetre() //faux car perimetre() est une expression ( //retourne le perimetre calculé)

double p=c1.perimetre() //correct

Voiture v1=new Voiture();v1.accelerer() //Correct car accélérer n’est pas une expression (ne retourne rien)

Page 48: Java uik-chap4-poo3

Saloua Ben Yahia 48

6.Les constructeurs

Le constructeur est ce qui appelé juste après l’opérateur new

Date d = new Date() //Date() est un constructeur

Page 49: Java uik-chap4-poo3

Saloua Ben Yahia 49

6.Les constructeurs

En fait, l’étape trois de la construction d’un nouvel objet consiste à appeler une méthode d’initialisation.

Par convention, cette méthode est appelée constructeur.

Pour écrire une méthode appelée constructeur, vous devez observer ces deux règles : 1. Le nom de la méthode doit correspondre exactement

au nom de la classe. 2. Aucun type de retour ne doit être déclaré pour la

méthode.

Page 50: Java uik-chap4-poo3

Saloua Ben Yahia 50

6.Les constructeurs

Le constructeur créer un objet avec la valeur par défaut attribuée aux attributs

Les valeurs initiales de jour/mois/annee de l’objet avec la référence d est 0

Comment faire pour avoir la date du 09/01/2009 il faut utiliser l’opérateur . Pour accéder et modifier les attributs.

Page 51: Java uik-chap4-poo3

Saloua Ben Yahia 51

6.Les constructeurs

class Date{int jour,moi,annee;}Date d1=new Date(); //Date() est un constructeurd1.jour=9;d1.mois=1;d1.annee=2009;

Page 52: Java uik-chap4-poo3

Saloua Ben Yahia 52

6.Les constructeurs

Il existe un moyen plus simple pour réaliser deux choses en même temps : Créer l’objet Affecter les valeurs souhaitées aux attribus au

moment même de la création de l’objet Il faut écrire et utiliser un constructeur

paramétré

Page 53: Java uik-chap4-poo3

Saloua Ben Yahia 53

6.Les constructeurs

class Date{int jour,mois,annee;Date(int j, int m, int a){jour=j;mois=m;annee=a;}}…Date d1=new Date(9,1,2009)

Page 54: Java uik-chap4-poo3

Saloua Ben Yahia 54

6.Les constructeurs

Il n’y a que deux façons d’obtenir un constructeur : ou bien vous l’écrivez, ou, si vous n’avez pas écrit de constructeur du tout, la

classe possède un constructeur unique par défaut comportant un code vide.

Note – Vous pouvez définir plusieurs constructeurs avec des listes d’arguments différents. Lorsque vous effectuez un appel de new Xyz(liste_arguments), la liste d’arguments détermine quel constructeur doit être utilisé.

Page 55: Java uik-chap4-poo3

Saloua Ben Yahia 55

6.Les constructeurs

Exemple :class Xyz {// variables membresXyz() {// définition de l’objet}Xyz(int x) {// définition de l’objet avec un paramètre}}

Page 56: Java uik-chap4-poo3

Saloua Ben Yahia 56

6.Les constructeurs

class Date{int jour,mois,annee;Date(int j, int m, int a){jour=j; mois=m; annee=a;}Date (int j, int m){jour=j;mois=m;année=2009}

}

Page 57: Java uik-chap4-poo3

Saloua Ben Yahia 57

6.Les constructeurs Constructeur par défaut Nous avons dit que toute classe comporte au moins

un constructeur, mais avant cette section, nous n’avons écrit de constructeur pour aucune de nos classes.

En fait, si vous n’en écrivez pas du tout, un constructeur vous est automatiquement fourni. Ce dernier ne prend aucun argument et son corps est vide.

C’est à cause du constructeur par défaut que nous avons pu dire new Xxx(), sans quoi cette opération aurait été incorrecte.

Page 58: Java uik-chap4-poo3

Saloua Ben Yahia 58

6.Les constructeurs Constructeur par défautclass Date{int jour,mois,annee; //constructeur par défaut invisible //avec 0-arguments

Date(){jour=0;mois=0;annee=0;}}

Page 59: Java uik-chap4-poo3

Saloua Ben Yahia 59

6.Les constructeurs

Si on ajoute une déclaration de constructeur comportant des arguments à une classe, vous perdez le constructeur par défaut.

A partir de là, les appels de new Xxx() causeront des erreurs de compilation.

Page 60: Java uik-chap4-poo3

Saloua Ben Yahia 60

6.Les constructeurs

class Date{int jour,mois,annee;Date(int j, int m, int a){jour=j;mois=m;annee=a;}//on perd le constructeur par défaut invisibleDate(){jour=0;mois=0;annee=0;}}…On ne peut plus écrire Date d1=new Date()

Page 61: Java uik-chap4-poo3

Saloua Ben Yahia 61

Plan

1. Objectifs

2. Définition d’un Objet

3. Définition d’une Classe

4. Instanciation

5. Garbage Collector

6. Opérateur .

7. Méthode

8. Constructeur

9. String

10. UML

Page 62: Java uik-chap4-poo3

Saloua Ben Yahia 62

7.Le type String

Les variables de type String sont des objets Ecrire

String s = new String("Hello") ;Est la même chose que

String s = "Hello";

Page 63: Java uik-chap4-poo3

Saloua Ben Yahia 63

7.Le type String

Exemple

int x = 7;//x a un type primitif int y = x;//y a un type primitif String s = "Hello";//s a un type //structure s est donc une référence

String t = s;String z = "Bienvenue"; Que se passe t-il en mémoire

Page 64: Java uik-chap4-poo3

Saloua Ben Yahia 64

7.Le type String

Page 65: Java uik-chap4-poo3

Saloua Ben Yahia 65

Plan

1. Objectifs

2. Définition d’un Objet

3. Définition d’une Classe

4. Instanciation

5. Garbage Collector

6. Opérateur .

7. Méthode

8. Constructeur

9. String

10. UML

Page 66: Java uik-chap4-poo3

Saloua Ben Yahia 66

8.UML8.1 Définition Unified Modelling Language Représenter les classes sous formes

universelle

Page 67: Java uik-chap4-poo3

Saloua Ben Yahia 67

8.Modélisation UML

MaDate

jour : intmois : intannee : int

Voiture

marque : Stringcouleur : Stringvitesse : intkilometrage : int

accelere(int v) : voidfreine(int v) : void

Page 68: Java uik-chap4-poo3

Saloua Ben Yahia 68

String

String()String(arg0 : String)String(arg0 : char[])String(arg0 : char[], arg1 : int, arg2 : int)String(arg0 : byte[], arg1 : int, arg2 : int, arg3 : int)String(arg0 : byte[], arg1 : int)String(arg0 : byte[], arg1 : int, arg2 : int, arg3 : String)String(arg0 : byte[], arg1 : String)String(arg0 : byte[], arg1 : int, arg2 : int)String(arg0 : byte[])String(arg0 : StringBuffer)length() : intcharAt(arg0 : int) : chargetChars(arg0 : int, arg1 : int, arg2 : char[], arg3 : int) : voidgetBytes(arg0 : int, arg1 : int, arg2 : byte[], arg3 : int) : voidgetBytes(arg0 : String) : byte[]getBytes() : byte[]equals(arg0 : Object) : booleanequalsIgnoreCase(arg0 : String) : booleancompareTo(arg0 : String) : intregionMatches(arg0 : int, arg1 : String, arg2 : int, arg3 : int) : booleanregionMatches(arg0 : boolean, arg1 : int, arg2 : String, arg3 : int, arg4 : int) : booleanstartsWith(arg0 : String, arg1 : int) : booleanstartsWith(arg0 : String) : booleanendsWith(arg0 : String) : booleanhashCode() : intindexOf(arg0 : int) : intindexOf(arg0 : int, arg1 : int) : intlastIndexOf(arg0 : int) : intlastIndexOf(arg0 : int, arg1 : int) : intindexOf(arg0 : String) : intindexOf(arg0 : String, arg1 : int) : intlastIndexOf(arg0 : String) : intlastIndexOf(arg0 : String, arg1 : int) : intsubstring(arg0 : int) : Stringsubstring(arg0 : int, arg1 : int) : Stringconcat(arg0 : String) : Stringreplace(arg0 : char, arg1 : char) : StringtoLowerCase(arg0 : Locale) : StringtoLowerCase() : StringtoUpperCase(arg0 : Locale) : StringtoUpperCase() : Stringtrim() : StringtoString() : StringtoCharArray() : char[]valueOf(arg0 : Object) : StringvalueOf(arg0 : char[]) : StringvalueOf(arg0 : char[], arg1 : int, arg2 : int) : StringcopyValueOf(arg0 : char[], arg1 : int, arg2 : int) : StringcopyValueOf(arg0 : char[]) : StringvalueOf(arg0 : boolean) : StringvalueOf(arg0 : char) : StringvalueOf(arg0 : int) : StringvalueOf(arg0 : long) : StringvalueOf(arg0 : float) : StringvalueOf(arg0 : double) : Stringintern() : StringutfLength() : int

(from lang)

Page 69: Java uik-chap4-poo3

Saloua Ben Yahia 69

Récapitulatif Terminologique

Regroupement de types de données Classe Objet Membre Référence Opérateur new Opérateur . Constructeur UML