java uik-chap4-poo3
Post on 29-Nov-2014
988 Views
Preview:
DESCRIPTION
TRANSCRIPT
Saloua Ben Yahia 1
Chapitre III POO JAVA
Saloua Ben Yahia
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
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
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.
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.
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.
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
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.
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
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
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,
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{………………}
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.
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.
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
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
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é.
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();
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;
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();
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
Saloua Ben Yahia 22
3.Instanciation. 3.3 Mais que se passe t-il en mémoireclass MaDate {int day;int month;int year;}
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();
Saloua Ben Yahia 24
3.Instanciation. 3.3 Mais que se passe t-il en mémoire…suite
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
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();
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
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.
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
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.
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;
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
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
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
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 :
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;
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
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
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
Saloua Ben Yahia 40
5.Méthode5.2 Exemplesclass Cercle{double rayon;//méthode périmètredouble perimetre(){return 2*rayon*3.14; }
}
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;}}
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é
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….
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){}
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
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 …
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)
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
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.
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.
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;
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é
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)
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é.
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}}
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}
}
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.
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;}}
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.
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()
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
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";
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
Saloua Ben Yahia 64
7.Le type String
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
Saloua Ben Yahia 66
8.UML8.1 Définition Unified Modelling Language Représenter les classes sous formes
universelle
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
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)
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
top related