nfa032 présentation n°3 - lirmm.fr
TRANSCRIPT
![Page 1: NFA032 Présentation n°3 - lirmm.fr](https://reader035.vdocuments.site/reader035/viewer/2022062520/62b3918d11960044e02abb8d/html5/thumbnails/1.jpg)
Les classes (suite)
NFA032
Présentation n°3
![Page 2: NFA032 Présentation n°3 - lirmm.fr](https://reader035.vdocuments.site/reader035/viewer/2022062520/62b3918d11960044e02abb8d/html5/thumbnails/2.jpg)
Membres statiques ou pas
• Membre = variable ou méthode
• Un membre peut être :
– Statique
• Variable de classe
• Fonction = méthode statique
– Non statique (variable implicite this)
• Variable d’instance
• Méthode = méthode non statique
![Page 3: NFA032 Présentation n°3 - lirmm.fr](https://reader035.vdocuments.site/reader035/viewer/2022062520/62b3918d11960044e02abb8d/html5/thumbnails/3.jpg)
Exemple – définitions (1/4)
class A { int m1; // m1 = variable non statique
// Il y a une variable o.m1 pour chaque objet o de classe A
static int m2; // m2 = variable statique // Il n'y a qu'une seule variable A.m2
void m3() {}; // m3 = méthode non statique // appel via o.m3() ; le paramètre implicite this, de type A, référence l'objet receveur o qui a servi à appeler la méthode
static void m4() {} ; // m4 = méthode statique // appel via A.m4()
… }
![Page 4: NFA032 Présentation n°3 - lirmm.fr](https://reader035.vdocuments.site/reader035/viewer/2022062520/62b3918d11960044e02abb8d/html5/thumbnails/4.jpg)
Exemple – exploitation (2/4)
• class A {
…
![Page 5: NFA032 Présentation n°3 - lirmm.fr](https://reader035.vdocuments.site/reader035/viewer/2022062520/62b3918d11960044e02abb8d/html5/thumbnails/5.jpg)
Exemple – exploitation (3/4)
• class A {
…
![Page 6: NFA032 Présentation n°3 - lirmm.fr](https://reader035.vdocuments.site/reader035/viewer/2022062520/62b3918d11960044e02abb8d/html5/thumbnails/6.jpg)
Exemple – exploitation (4/4)
![Page 7: NFA032 Présentation n°3 - lirmm.fr](https://reader035.vdocuments.site/reader035/viewer/2022062520/62b3918d11960044e02abb8d/html5/thumbnails/7.jpg)
Omission du préfixe X. devant un membre : pas toujours adapté
![Page 8: NFA032 Présentation n°3 - lirmm.fr](https://reader035.vdocuments.site/reader035/viewer/2022062520/62b3918d11960044e02abb8d/html5/thumbnails/8.jpg)
Un membre peut aussi être une classe… • Ce n’est pas au programme,
mais jetons un œil : – Fichier classes.java :
– Fichier classe_A.java :
![Page 9: NFA032 Présentation n°3 - lirmm.fr](https://reader035.vdocuments.site/reader035/viewer/2022062520/62b3918d11960044e02abb8d/html5/thumbnails/9.jpg)
Classe membre : exploitation extérieure
![Page 10: NFA032 Présentation n°3 - lirmm.fr](https://reader035.vdocuments.site/reader035/viewer/2022062520/62b3918d11960044e02abb8d/html5/thumbnails/10.jpg)
Constructeurs et destructeurs
• Constructeur = méthode appelée à la création d’un objet (opérateur new)
• Destructeur = méthode appelée à la destruction d’un objet (retrait de la mémoire)
• En Java – Un destructeur n’est jamais appelé par le programmeur – Le programmeur peut toutefois définir le corps du
destructeur : • méthode protected void finalize();
– C’est le ramasse-miettes (gc = garbage collector = récupérateur mémoire) qui s’en charge
– Le ramasse-miettes est un processus qui fonctionne en parallèle du programme principal
![Page 11: NFA032 Présentation n°3 - lirmm.fr](https://reader035.vdocuments.site/reader035/viewer/2022062520/62b3918d11960044e02abb8d/html5/thumbnails/11.jpg)
Les objets composés (composites)
• Relation abstraite = relation tout / partie
• Un objet composé a des attributs dont les valeurs sont des références vers d’autres objets – Objet composé = tout
– Objet composant = partie
Exemple : une voiture est composée de quatre roues
• Une partie ne peut pas exister sans son tout
• Supprimer le tout, c’est supprimer ses parties
![Page 12: NFA032 Présentation n°3 - lirmm.fr](https://reader035.vdocuments.site/reader035/viewer/2022062520/62b3918d11960044e02abb8d/html5/thumbnails/12.jpg)
Exemple simplifié (1/8)
![Page 13: NFA032 Présentation n°3 - lirmm.fr](https://reader035.vdocuments.site/reader035/viewer/2022062520/62b3918d11960044e02abb8d/html5/thumbnails/13.jpg)
Exemple simplifié (2/8)
![Page 14: NFA032 Présentation n°3 - lirmm.fr](https://reader035.vdocuments.site/reader035/viewer/2022062520/62b3918d11960044e02abb8d/html5/thumbnails/14.jpg)
Exemple simplifié (3/8)
• Question : qu’est-il affiché ?
![Page 15: NFA032 Présentation n°3 - lirmm.fr](https://reader035.vdocuments.site/reader035/viewer/2022062520/62b3918d11960044e02abb8d/html5/thumbnails/15.jpg)
Exemple simplifié (4/8)
• Réponse :
![Page 16: NFA032 Présentation n°3 - lirmm.fr](https://reader035.vdocuments.site/reader035/viewer/2022062520/62b3918d11960044e02abb8d/html5/thumbnails/16.jpg)
Exemple simplifié (5/8) • Appel explicite du ramasse-miettes
– Question : qu’est-il affiché ?
![Page 17: NFA032 Présentation n°3 - lirmm.fr](https://reader035.vdocuments.site/reader035/viewer/2022062520/62b3918d11960044e02abb8d/html5/thumbnails/17.jpg)
Exemple simplifié (6/8)
• Réponse :
![Page 18: NFA032 Présentation n°3 - lirmm.fr](https://reader035.vdocuments.site/reader035/viewer/2022062520/62b3918d11960044e02abb8d/html5/thumbnails/18.jpg)
Exemple simplifié (7/8)
• On se contente de déplacer une affectation :
![Page 19: NFA032 Présentation n°3 - lirmm.fr](https://reader035.vdocuments.site/reader035/viewer/2022062520/62b3918d11960044e02abb8d/html5/thumbnails/19.jpg)
Exemple simplifié (8/8)
• Réponse :
![Page 20: NFA032 Présentation n°3 - lirmm.fr](https://reader035.vdocuments.site/reader035/viewer/2022062520/62b3918d11960044e02abb8d/html5/thumbnails/20.jpg)
Exemple : voiture et roues • Une voiture est caractérisée par :
– Son poids sans les roues (kg) – Ses quatre roues
• Une roue est caractérisée par : – Son diamètre (cm) – Son poids (kg)
• On veut pouvoir : – Définir une voiture dont :
• toutes les roues sont identiques • les roues peuvent être différentes
– Afficher les informations d’une voiture : • Poids total • Informations sur ses roues
![Page 21: NFA032 Présentation n°3 - lirmm.fr](https://reader035.vdocuments.site/reader035/viewer/2022062520/62b3918d11960044e02abb8d/html5/thumbnails/21.jpg)
Exemple : programme de test
![Page 22: NFA032 Présentation n°3 - lirmm.fr](https://reader035.vdocuments.site/reader035/viewer/2022062520/62b3918d11960044e02abb8d/html5/thumbnails/22.jpg)
Exemple : trace d’exécution
![Page 23: NFA032 Présentation n°3 - lirmm.fr](https://reader035.vdocuments.site/reader035/viewer/2022062520/62b3918d11960044e02abb8d/html5/thumbnails/23.jpg)
Solution : les roues
![Page 24: NFA032 Présentation n°3 - lirmm.fr](https://reader035.vdocuments.site/reader035/viewer/2022062520/62b3918d11960044e02abb8d/html5/thumbnails/24.jpg)
Solution : les voitures (1/4)
![Page 25: NFA032 Présentation n°3 - lirmm.fr](https://reader035.vdocuments.site/reader035/viewer/2022062520/62b3918d11960044e02abb8d/html5/thumbnails/25.jpg)
Solution : les voitures (2/4)
![Page 26: NFA032 Présentation n°3 - lirmm.fr](https://reader035.vdocuments.site/reader035/viewer/2022062520/62b3918d11960044e02abb8d/html5/thumbnails/26.jpg)
Solution : les voitures (3/4)
![Page 27: NFA032 Présentation n°3 - lirmm.fr](https://reader035.vdocuments.site/reader035/viewer/2022062520/62b3918d11960044e02abb8d/html5/thumbnails/27.jpg)
Solution : les voitures (4/4)