Top Banner
2021-2022 Stéphanie Challita Stéphanie Challita PROG - ESIR 1 Cours programmation Septembre 2021 1
168

Septembre 2021 Cours programmation PROG - ESIR 1

Jun 19, 2022

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie ChallitaStéphanie Challita

PROG - ESIR 1Cours programmation

Septembre 2021

1

Page 2: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Qui suis-je ?

▪ Maître de Conférences @ Université de Rennes 1▪ DiverSE team (University of Rennes, IRISA, Inria)

https://stephaniechallita.github.io/

https://www.diverse-team.fr/

2/168

Page 3: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

DiverSE team

3/168

▪Software engineering group in Rennes

▪Software languages, architecture, simulation, variability, testing, resilience eng.

▪Applied to smart, heterogeneous, and distributed systems

▪~ 30 members: 9 prof/assoc. prof/researchers, 20 PhD students, 3 postdocs, 1 RSE

▪Empirical software approach

▪Strong contractual activity with industry

Page 4: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Introduction : objectifs du cours

4/168

▪Concepts de la programmation orientée objet

▪Mécanismes et fonctionnement des concepts objets : classes, abstraction, liaisons tardives, polymorphisme

▪Structures de données standards

▪Pratique et implémentation en Java

Page 5: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Introduction : pourquoi est-ce important ?

5/168

▪La programmation orientée objet est très utilisée et puissante

▪Briques de base pour des prochains cours plus avancés : patrons de conceptions, méthodes de développement industrielles, architecture logicielle, etc.

Page 6: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Introduction : organisation du module

6/168

▪5 Cours magistraux

▪4 TPs sur 13 séances

▪2 TDs sur 4 séances

Page 7: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Introduction : modalités d’évaluation

7/168

▪2 Devoirs :■ 28/09/2021 (sur machine)■ 29/10/2021 (sur machine)

▪ 1 Contrôle (sur table) :■ 26/10/2021

Page 8: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Table des matières

▪Rappel de programmation▪Classes et Objets▪Interfaces et Implémentations▪Généricité▪Structures de données▪Héritage

8/168

Page 9: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Rappel de programmation

9/168

Page 10: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Qu’est-ce qu’un programme ?

10/168

Programme

Données d’entrée Données de sortie

Page 11: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Exemples de programmes

11/168

Calculatrice

Données d’entrée : “(3 + 4) * 5” “35” est la sortie du programme

Navigateur Firefox

Données d’entrée : Clics de souris et saisies au clavier

Navigation sur des pages internet,Communication avec des services numérique distants

VLC media player

Données d’entrée : fichiers sons (mp3) ou vidéos (mp4)

Jeu du son et des images vidéos en fonction du fichier donné en entrée

Page 12: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Programmation

12/168

Fichiers sources Compilateur ou Interpréteur

Machine

Page 13: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Compilation

13/168

Fichiers sources

Compilateur

Machine

Compile

Exécute

Fichiers binaires

Page 14: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Interprétation

14/168

Fichiers sources Interpréteur Machine

Exécute

Page 15: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Compilation en Java

15/168

Fichiers sources (.java)

Compilateur Java

Machine

Compile

Exécute

Fichiers binaires (.class)

Machine Virtuelle Java (JVM)

Page 16: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Lignes de commande

16/168

Page 17: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Rappel Langage Java : variables

17/168

▪3 Variables :x = 10s = “Message”y = 20

▪Affiche “Message20”

Page 18: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Rappel Langage Java : tableaux

18/168

▪Déclaration d’un nouveau tableau

▪Taille du tableau entre [] -> 5

▪Accède au premier élément avec [0]

▪Les indices vont de 0 à taille - 1

▪ taille = tableau.length

Page 19: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Rappel Langage Java : structure de contrôle if/then/else

19/168

▪Si x est égale à 5, alors■ y = x*2 = 5*2 = 10

▪Sinon, si x est supérieur à 10, alors■ y = x

▪Sinon y = -1

▪Suivant x, on aura :■ “5;10” si x == 5■ “x;x” si x > 10■ “x;-1“ sinon

Page 20: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Rappel Langage Java : structure de contrôle boucle pour i

20/168

▪ Initialisation de la valeur de la bouclei = 0

▪Condition d’arrêtTant que i est < à la taille du tableau

▪Mise à jourOn augmente de 1 la

valeur de i à chaque fin de tour de boucle

Page 21: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Rappel Langage Java : structure de contrôle boucle tant que

21/168

▪Condition d’arrêt

▪Mise à jour externe à la syntaxe de la boucle

Page 22: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Rappel Langage Java : fonctions

22/168

▪Appel à la fonction twice()

▪Déclaration de la fonction twice()Appel

Page 23: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Rappel Langage Java : paramètres et valeur de retour

23/168

▪Affectation de la valeur de retour à une variable

▪Type de retour

▪Paramètre de la fonction

▪Valeur retournée

▪ Signature de fonction : type de retour, nom et paramètres

Page 24: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Rappel Langage Java : portée

24/168

▪parameter n’est pas accessible depuis la fonction function

Page 25: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Rappel Langage Java : point d’entrée

25/168

▪Point d’entrée du programme :

méthode “main”

Page 26: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Rappel Langage Java : gestion des erreurs

26/168

▪Déclaration d’Exception potentielle

▪Lancement d’une nouvelle Exception

▪L’appel de la fonction est enveloppé par try / catch

▪Code de traitement de l’erreur

Page 27: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Rappel : Principe des Tests Unitaires

27/168

ProgrammeTests Unitaires

Exécute

▪✓ Test réussit -> Fonctionnalité codéesans bug

▪❌ Test échoue ->Fonctionnalité contenant un bug

▪1 test unitaire pour 1 fonctionnalité

Page 28: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Rappel : JUnit Tests pour Java

28/168

▪Déclaration d’une fonction de test

▪Nommage pour indiquer la fonctionnalité testée

▪Données d’entrée du test

▪Vérification de la valeur retournée

Page 29: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Classes et Objets

29/168

Page 30: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Motivation : simulation de robot sur carte

30/168

▪Coordonnées initiales du robot

▪Énergie max et courante

▪Consommation d’énergie pour avancer et pour tourner

▪Direction initiale du robot

Page 31: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Enumération

31/168

▪Définition d’énumération

▪Valeurs possibles

▪Déclaration et affections

▪Switch sur une énumération

▪Pour chaque cas, un algo est défini

Page 32: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Motivation : simulation de robot sur carte

32/168

▪Condition pour avancer : avoir suffisamment d’énergie

▪Test de la direction courante du robot

▪Mise à jour de la position du robot en fonction de sa direction

▪Mise à jour du niveau courant de batterie

Page 33: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Motivation : critique du code

33/168

▪Pas de séparation entre traitement et données

▪Difficultés de découpage en fonctions

▪Évolutivité compliquée

▪Pas de lien entre les données : éparpillement des données, cohérence des données difficile

▪Lourd à gérer : Manipulation de N robots => remplacer chaque variable par un tableau de taille N

Page 34: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Solution : l’Objet !

34/168

▪Encapsuler les données dans une même entité : un objet

▪Fournir des opérations abstraites permettant le traitement et le maintien de la cohérence des données

▪Les objets “Robot” regroupent, cachent et maintiennent la cohérence des données qui composent un robot

▪Les objets “Robot” fournissent des opérations abstraites pour manipuler les Robots : avancer(), tourner(), status(), etc.

Page 35: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

C’est quoi un type ?

35/168

▪Définit :

■ L’ensemble des valeurs pour le type■ L’ensemble des opérations pour le type

▪Exemples : ■ int : valeur comprise entre -2³² et +2³², [+, -, *, %, /, ...] sont les

opérations possibles■ int[] : taille comprise entre 0 et +2³², [.length] est une opération possible■ String : ([aA-zZ]|[0-9]*)*, [.size(), +, ...] comme opérations possibles

Page 36: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Les Classes : les types des objets

36/168

▪Les classes définissent les types des objets

▪Définition des méthodes et des traitements■ Le comportement des objets

▪Définition des données nécessaires à la réalisation des traitements ■ L’état des objets

▪Le comportement agit sur l’état et l’état influence le comportement

Page 37: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Class Robot : définition

37/168

▪Définition d’une nouvelle classe Robot

▪ Implémentation de la classe robot entre { } : données et comportement

▪Une classe Java par fichier Java : ici la classe Robot est dans le fichier Robot.java

Page 38: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Class Robot : attributs

38/168

▪Définition des données composant l’état d’un robot : les attributs

▪private définit la “visibilité” de l’attribut

Page 39: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Class Robot : visibilité

39/168

▪Visibilité : définition de la permission d’accès

▪sans visibilité : accessible par les objets du package

▪public : accessible par tous les objets

▪private : accessible par les objets du type

▪protected : accessible par les objets du package et “les classes filles”

▪Bonne pratique : attributs toujours en privé

Page 40: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Class Robot : constructeurs

40/168

▪Porte le même nom que la classe

▪Visibilité

▪∅ de type de retour (même pas void)

▪Avec ou sans paramètre

Page 41: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Class Robot : constructions

41/168

▪Variable de type Robot nommée r2d2

▪Variable de type Robot nommée c3pO

▪“Instanciation” d’un nouveau robot sans paramètre

▪“Instanciation” d’un nouveau robot avec paramètres

Page 42: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Class Robot : méthode forward()

42/168

▪Nom de la méthode

▪Visibilité

▪Body (lignes 3 à 14 pour forward())

▪Type de retour

▪Avec ou sans paramètre

Page 43: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Class Robot : méthode forward()

43/168

▪Usage des attributs de l’objet -> les valeurs des attributs influent sur le comportement de l’objet

Page 44: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Class Robot : méthode forward()

44/168

▪Appel de méthode depuis une autre méthode

Page 45: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Class Robot : utilisation

45/168

▪Appel de méthode sur un objet avec le ‘.’

Page 46: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Class Robot : accès aux attributs privés

46/168

▪ Impossible ! Erreur de compilation

Page 47: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Class Robot : accesseurs ou getters

47/168

▪Retourne l’attribut ▪Nom de la méthode :get + nom de l’attribut

Page 48: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Class Robot : mutateurs ou setters

48/168

▪Nom de la méthode :

set + nom de l’attribut

▪Mise à jour de l’attribut ▪Paramètre : nouvelle valeur de l’attribut

Page 49: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Concept Objet : références

49/168

Page 50: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Concept Objet : références

50/168

Mémoire

x 0

y 0

currentBattery 100

currentDirection NORTH

Page 51: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Concept Objet : références

51/168

Mémoire

x 0

y 0

currentBattery 100

currentDirection NORTH

x 23

y 32

currentBattery 100

currentDirection SOUTH

Page 52: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Concept Objet : références

52/168

Mémoire

x 0

y 0

currentBattery 100

currentDirection NORTH

x 23

y 32

currentBattery 100

currentDirection SOUTH

r2d2 c3pO

Page 53: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Concept Objet : références

53/168

Mémoire

x 0

y 0

currentBattery 100

currentDirection NORTH

x 23

y 32

currentBattery 100

currentDirection SOUTH

r2d2 c3pO

Page 54: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Concept Objet : références

54/168

Mémoire

x 0

y 0

currentBattery 100

currentDirection NORTH

x 23

y 32

currentBattery 100

currentDirection SOUTH

r2d2, bb8 c3pO

Page 55: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Concept Objet : références

55/168

Mémoire

x 0

y 0

currentBattery 100

currentDirection NORTH

x 23

y 32

currentBattery 100

currentDirection SOUTH

bb8 c3pO, r2d2

Page 56: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Concept Objet : références

56/168

Mémoire

x 0

y 0

currentBattery 100

currentDirection NORTH

x 23

y 32

currentBattery 100

currentDirection SOUTH

bb8, c3pO r2d2

Page 57: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Concept Objet : références

57/168

Mémoire

x 0

y 0

currentBattery 100

currentDirection NORTH

x 23

y 32

currentBattery 100

currentDirection SOUTH

bb8, c3pO, r2d2

Page 58: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Concept Objet : références

58/168

Mémoire

x 0

y 0

currentBattery 100

currentDirection NORTH

x 23

y 32

currentBattery 100

currentDirection SOUTH

bb8, c3pO, r2d2

Page 59: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Questions !

59/168

Mémoire

x 0

y 0

currentBattery 100

currentDirection NORTH

x 23

y 32

currentBattery 100

currentDirection SOUTH

Page 60: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Concept Objet : références null

60/168

Mémoire

x 0

y 0

currentBattery 100

currentDirection NORTH

x 23

y 32

currentBattery 100

currentDirection SOUTH

bb8, r2d2

Page 61: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Concept Objet : références null

61/168

Mémoire

x 0

y 0

currentBattery 100

currentDirection NORTH

x 23

y 32

currentBattery 100

currentDirection SOUTH

bb8

Page 62: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Concept Objet : références null

62/168

Mémoire

x 0

y 0

currentBattery 100

currentDirection NORTH

x 23

y 32

currentBattery 100

currentDirection SOUTH

Page 63: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Concept Objet : appel de méthode sur référence null

63/168

▪Appel de méthode sur une variable null =>

Erreur:NullPointerException!

Page 64: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Programmation objet : vocabulaire

64/168

▪Une classe est un type d’objet

▪Un objet ou une instance est une “occurrence” d’une classe

▪Les attributs sont les données d’un objet, définis par la classe

▪Les méthodes implémentent le comportement des objets

▪Les membres d’une classe sont ses attributs et ses méthodes

▪Une variable objet est une référence vers un objet

Page 65: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Le mot-clé this

65/168

▪Préfixer le nom avec this pour lever l’ambiguïté et spécifier que l’on veut l’attribut

▪Attribut et Paramètre ont le même nom : “currentDirection”

Page 66: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Méthodes standards des objets

66/168

▪Les méthodes standards :

■ boolean equals(Object o) : permet de tester si deux objets égaux■ String toString() : permet d’afficher sur la sortie standard l’objet

Page 67: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Méthode standard : equals()

67/168

▪Renvoie true quand les objets sont égaux▪Par défaut, Java compare les adresses mémoire▪En implémentant la méthode equals(Object that), on spécifie comment comparer deux objets▪Classiquement, on compare tous les champs

Page 68: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Méthode standard : equals()

68/168

▪Si le paramètre est null, ou n’est pas un Robot■ Alors les objets ne sont pas égaux

▪Sinon, tous les attributs doivent être égaux pour que les objets soient égaux

Page 69: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Méthode standard : equals() usage

69/168

Page 70: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Méthode standard : equals() usage

70/168

Page 71: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Méthode standard : equals() usage

71/168

▪faux

Page 72: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Méthode standard : equals() usage

72/168

▪faux

Page 73: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Méthode standard : equals() usage

73/168

▪faux

▪vrai

Page 74: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Méthode standard : equals() usage

74/168

▪faux

▪vrai

Page 75: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Méthode standard : equals() usage

75/168

▪faux

▪vrai

▪vrai

Page 76: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Méthode standard : equals() usage

76/168

▪faux

▪vrai

▪vrai

Page 77: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Méthode standard : equals() usage

77/168

▪faux

▪vrai

▪vrai

▪faux

Page 78: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Méthode standard : equals() usage

78/168

▪faux

▪vrai

▪vrai

▪faux

Page 79: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Méthode standard : equals() usage

79/168

▪faux

▪vrai

▪vrai

▪faux

▪faux

Page 80: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Méthode standard : toString()

80/168

▪Formate et transforme les attributs en chaîne de caractères

Page 81: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Méthode standard : toString() usage

81/168

▪Affiche l’objet sous forme de chaîne

▪Appel à toString() implicite et géré par Java

▪Output: ■ L3 ?■ L4 ?

Page 82: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Méthode standard : toString() usage

82/168

▪Affiche l’objet sous forme de chaîne

▪Appel à toString() implicite et géré par Java

▪Output:“(0;0): NORTH [100]”“(0;0): NORTH [100]”

Page 83: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

▪Déclaration de constante avec static

▪Déclaration de méthode de classe

▪Usage de la constante et de la méthode static dans une instance

▪Usage hors de l’instance

Le mot-clé static

83/168

Page 84: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Interfaces et Implémentations

84/168

Page 85: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Problématique

85/168

▪On a des objets de la vie de tous les jours : ■ Papier, Bouteille, Pile, etc.

▪Ces objets ont des comportements différents :■ déchirer le Papier■ écraser la Bouteille■ etc...

▪ Mais ! Tous ces objets sont recyclables :■ recycler le Papier■ recycler la Bouteille,■ etc...

Page 86: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Problématique : en classe Java

86/168

Page 87: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

▪On souhaite par exemple, pouvoir programmer le recyclage de l’ensemble des objets contenus dans une “poubelle” ▪Cette poubelle est représentée par un tableau d’objet

■ Papier, Bouteille, Pile, etc.

▪En Java :

Problématique : ce que l’on souhaite faire

87/168

Page 88: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

▪En Java :

▪Comment coder cet ensemble d’objets de type T, qui permet d’écrire :

Problématique

88/168

Page 89: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Comment faire ? Il faut définir T

89/168

▪Le Type T doit pouvoir :■ Recevoir des références d’objet de type Paper et de type Bottle

■ Doit permettre l’appel de la méthode recycling

Page 90: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Solutions :

90/168

▪Une nouvelle classe Unique pour représenter les Paper et les Bottle ?

▪Problème : Comment distinguer les objets Paper des objets Bottle ?■ gestion des méthodes spécifiques (tear() / crush()) de chacun ?■ Impossible

Page 91: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Solutions : l’Interface objet

91/168

▪ Interface : déclare la signature de méthodes publiques■ ∅d’attribut, ∅ de body, ∅ de méthodes privées■ Impossible d’instancier une Interface !

▪Une classe implémente une interface :■ Définition du corps des méthodes déclarées dans l’interface■ Polymorphisme

Page 92: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Interface Recyclable

92/168

▪Déclaration de l’interface Recyclabe:

■ signature de la méthode recycling

▪ Implémentation dans la classe Paper:■ Implémentation de

recycling

▪ Implémentation dans la class Bottle:■ Implémentation de

recycling

Page 93: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Interfaces : usage

93/168

▪ Interface en type de paramètre

▪ Instanciation d’un nouvel objet. La variable est du type de l’interface

▪ Appels de la méthode qui prend le Recyclable en paramètre

▪ La méthode peut accepter un objet Paper, car Paper est aussi Recyclable

Page 94: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Interfaces : usage

94/168

▪ Interface en type de paramètre

▪ Instanciation d’un nouvel objet. La variable est du type de l’interface

▪ Appels de la méthode qui prend le Recyclable en paramètre

▪ La méthode peut accepter un objet Paper, car Paper est aussi Recyclable

Bonne pratique : toujours se baser sur les types abstraits :Paper p = new Paper();Recyclable p = new Paper();

Page 95: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Multiple implémentation d’Interfaces

95/168

Page 96: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

La force du polymorphisme

96/168

Page 97: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Limite du polymorphisme

97/168

▪Appel des méthodes recycling et tear depuis une variable de référence Paper

▪Appel des méthodes recycling depuis une variable de référence Recyclable, mais impossible d’appeler tear()

Page 98: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Mais comment ça marche ?

98/168

▪Output:“recycling paper”“recycling bottle”

Page 99: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Late-Binding

99/168

▪Vérification à la compilation que l’appel de la méthode est autorisé⤷Dépend uniquement du type de l’appelant

▪Résolution à l'exécution de l’implémentation de la méthode à exécuter⤷Dépend de l’instance sur laquelle on appelle la méthode

Page 100: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Late-Binding : exemple

100/168

▪Paramètre : Recyclable▪Appel de recycling sur le paramètre

Page 101: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Late-Binding : exemple

101/168

▪Test des paramètres d’entrée

▪ Instanciation d’objets de différents types

▪Appel de la méthode doRecycling sur le Recyclable : soit Paper soit Bottle

Page 102: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Late-Binding : exemple

102/168

Page 103: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Généricité

103/168

Page 104: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Motivation : objets pair

104/168

▪On veut pouvoir manipuler des pairs : ⤷Des objets qui ont deux types différents

▪Exemple : des objets Pair d’un String et d’un entier

Page 105: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Motivation : objets pair d’un string et d’un entier

105/168

▪Class PairStringInteger

▪Valeurs String/Integer

▪Constructeur

▪Getters

▪Setters

▪ toString()

Page 106: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Motivation : pair de string et integer usage

106/168

▪Output : “La réponse;42”“Le nombre;23”“23 à l’envers;32”

Page 107: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Motivation : objet pair string robot

107/168

▪On veut maintenant pouvoir manipuler des pairs de String et de Robot: ⤷Il faut implémenter de nouveau une classe : PairStringRobot

Page 108: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Motivation : objet pair string robot

108/168

▪On veut maintenant pouvoir manipuler des pairs de String et de Robot: ⤷Il faut implémenter de nouveau une classe : PairStringRobot

Page 109: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Motivation : pair de string et robot usage

109/168

▪Output : “r2d2;(0;0): NORTH [100]”“bb8;(0;0): NORTH [100]”

Page 110: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Motivation : conclusion

110/168

▪Le comportement des objets Pair ne dépend pas des types contenus dans la paire

▪Solution :■ Paramétrer le type Pair avec le type des valeurs manipulées■ Programmation d’une seule classe générique Pair■ Définition des types par l’utilisateur de la classe Pair

▪La classe Pair n’est codée qu’une seule fois et fonctionne pour tous les types de paramètres possibles

Page 111: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Le type Pair<T1, T2> générique

111/168

▪Class Pair

▪Paramétriser avec deux types T1 et T2

▪Références au types T1 et T2 :

■ Getters

■ Setters

■ toString()

Page 112: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Le type Pair<T1, T2> générique : usage

112/168

▪Output : “La réponse;42”“bb8;(0;0): NORTH [100]”

▪ Instanciation d’un objet Pair<String, Integer>

▪ Instanciation d’un objet Pair<String, Robot>

▪“sucre syntaxique” :<>

raccourcis pour <String, Robot>

Il est incorrect d’utiliser des types “primitifs”. Pour les génériques, il faut absolument utiliser des types d’objetPair<char, int> p3 = new Pair<>(‘a’, 0);

Page 113: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

L’interface Comparable<T>

113/168

▪ Interface Comparable

▪Paramétré par un type T

▪compareTo permet de définir un ordre des objets

Page 114: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Implémentation de Comparable<Robot>

114/168

▪ Interface Comparable ▪Paramétré avec le type Robot

▪On ordonne les robots en fonction de leur niveau courant d’énergie

Page 115: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Structures de données

115/168

Page 116: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Plan

▪Tableau▪Les Collections standards Java▪Itérable & Iterator▪Liste et Liste chaînée▪Set▪Map▪File▪Pile▪Arbre

116/168

Page 117: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Introduction

▪Organisation des données▪Automatisation de manipulation▪Performance différente▪Impact sur le développement

117/168

Page 118: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Tableau

▪Fourni par le langage

▪Efficace pour consulter / modifier des éléments

▪Peu de mémoire consommée

118/168

Page 119: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Tableau : ajout/retrait en fin de tableau

119/168

Page 120: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Tableau : ajout/retrait à un indice donné

120/168

Page 121: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Tableau : ajout d'élément dans tableau plein

121/168

Page 122: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Tableau : conclusion

122/168

▪Les plus : ■ Simple et rapide à utiliser■ Bonne performance pour l’accès et la modification

▪Les moins :■ Mauvaise performance pour l’ajout ou la suppression■ Taille fixe

▪→Besoin d’une structure de données plus souple

Page 123: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Les Collections Java

123/168

Page 124: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Les Collections Java

124/168

▪Ajoute l’élément à la collection▪Retourne vrai si l’élément a bien été ajouté, faux sinon▪Retourne vrai si la Collection contient l’élément, faux sinon▪Retourne vrai si la Collection ne contient aucun élément, faux sinon▪Retourne un itérateur sur les éléments de la collection▪Retire l’élément de la collection Retourne vrai si l’élément a bien été ajouté, faux sinon▪Retourne le nombre d’éléments dans la collection

▪compareTo permet de définir un ordre des objets.

Page 125: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Iterable et Iterator

125/168

▪Retourne vrai s’il y encore un élément▪Retourne le prochain élément et avance le curseur

▪Construction d’un iterator

▪Tant qu’il y a un élément suivant▪Récupération du prochain élément

▪compareTo permet de définir un ordre des objets.

Page 126: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

For-Each Java

126/168

▪Parcours tous les éléments de la Collection de la même façon

▪Variable contenant l’élément courant de l’itération de la boucle

▪Collection dont on veut parcourir les éléments

Page 127: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

List : ArrayList

127/168

▪Basée sur un tableau

▪Capacité dynamique

▪Ajout/suppression en fin de List performant

▪Ajout/suppression à un indice donné PEU performant

▪Parcours possible

▪Récupération d’élément à partir d’un indice

Page 128: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

List chaînée : LinkedList

128/168

▪Basée sur des éléments liés les uns aux autres

▪Chaque élément référence le précédent et le suivant

▪Ajout/suppression sans décalage (mais nécessite un parcours)

▪Parcours possible

▪Récupération d’élément à partir d’un indice (moins performant)

Page 129: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

List chaînée : LinkedList

129/168

Page 130: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

List chaînée : ajout

130/168

Page 131: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

List chaînée : suppression

131/168

Page 132: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Ensemble : Set

132/168

▪Ensemble au sens mathématique

▪Ajout/suppression similaire au List avec add() et remove()

▪Pas de notion d’indice : parcours uniquement avec un Itérateur

▪ Implémentation 1 : HashSet<E>

▪ Implémentation 2 : TreeSet<E>

Page 133: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

HashSet

133/168

▪Basé sur une représentation numérique des objets : le hashcode

▪Associe une instance à une valeur (le hashcode)

▪Performant dans le cas où la fonction de hachage est bien choisie

▪Pas d’ordre sur les éléments

Page 134: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Hashcode et fonction de hachage

134/168

▪Hashcode : valeur numérique qui correspond à une instance particulière d’une classe

▪Fonction de hachage : ■ rapide■ une instance→un entier

Page 135: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Bonne pratique : hashcode() et equals()

135/168

▪Si on implémente hashcode() alors on implémente equals() (et vice-versa)

▪hashcode() et equals() doivent reposer sur les même champs

▪Si deux objets sont égals (o1.equals(o2) == true) alors leurs hashcodes sont égaux : o1.hashcode() == o2.hashcode()

Page 136: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

TreeSet

136/168

▪Utilise un “arbre” binaire

▪La plupart des opérations ont le même coût

▪Ordre imposé et nécessaire : les objets doivent implémenter l’interface Comparable

Page 137: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Map

137/168

▪Manipule des couples Clé - Valeur

▪Aussi appelée : dictionnaire, table associative, index, etc.

▪N’implémente pas Iterable

▪Exemple d’implémentation : HashMap<K, V>

Page 138: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Map : HashMap<K,V>

138/168

▪Basée sur une représentation numérique des objets : le hashcode

▪Associe le hashcode de la clé à la valeur

Page 139: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Map : usage

139/168

▪Ajoute un couple clé - valeurRenvoie null si la clé n’est pas dans la map, Renvoie l’ancienne valeur sinon▪Récupère la valeur à partir d’une clé▪Retire une association à partir d’une clé▪Vérifie si la map contient la clé ou la valeur donnée▪Retourne le nombre d’associations dans la map▪Vérifie si la map est vide ou non▪Vide la map▪Renvoie l’ensemble des clés▪Renvoie toutes les valeurs

Page 140: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Map : usage

140/168

Page 141: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

▪File ou Queue

▪FIFO : First In First Out

▪Capacité maximale

▪Queue<E>

File

141/168

Page 142: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

File : exemple

142/168

Page 143: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Pile

143/168

▪Pile ou Stack

▪LIFO : Last In First Out

▪Stack<E>

Page 144: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Pile : exemple

144/168

Page 145: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Arbre : cas d’usage

145/168

Page 146: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

▪Définition :

■ soit vide■ soit avec une valeur ET

2 fils qui sont des arbres binaires

Arbre binaire

146/168

Page 147: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Arbre binaire : parcours en largeur

147/168

▪De la racine, descendre niveau par niveau

1, 2, 3, 4, 5, 6, 7 ...

Page 148: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Arbre binaire : parcours en profondeur

148/168

▪De la racine, Parcourir le sous-arbre gauche puisParcourir le sous-arbre droit

1, 2, 4, 5, 3, 6, 7,

Page 149: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

▪Retourne true si l’arbre est vide, false sinon▪Récupère la valeur de l’arbre▪Retourne true si l’arbre est une feuille, il n’a pas de fils, false sinon▪Retourne true si l’arbre a un fils gauche, false▪Retourne true si l’arbre a un fils droit, false sinon▪Récupère le fil gauche▪Récupère le fil droit▪Met à jour la valeur de l’arbre▪Met à jour le sous-arbre gauche▪Met à jour le sous-arbre droit

Arbre binaire : opérations

149/168

Page 150: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Arbre binaire : exemple

150/168

Page 151: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Arbre binaire : récursivité

151/168

▪Condition d’arrêt : l’arbre actuel est vide, sa taille est 0

▪Sinon, la taille de l’arbre est 1 + la taille de ses fils

▪Appel récursif à la méthode size() sur les deux sous-arbres

Page 152: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Arbre binaire de recherche

152/168

▪Définition : Arbre binaire dont■ valeurs à gauche < racine■ valeurs à droite > racine

3 < 8 < 101 < 8 < 14…4 < 8 < 13…1 < 3 < 6

Page 153: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Héritage

153/168

Page 154: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Réutilisation : Composition vs Héritage

154/168

▪Composition :Utiliser un type existant au service d’un autre

▪Héritage :

Utiliser un type existant en l’“étendant” →■ Bénéficier des fonctionnalités inchangées■ Modifier celles qui doivent l’être■ Ajouter de nouvelles fonctionnalités

Page 155: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

▪Délégation du stockage et de la manipulation de données à une (des) autres classe(s)

▪Exemple■ TP2 : Block<T>

délègue la gestion deséléments au type Array<T>

▪La notation A Bsignifie que “B compose avec A”

Composition

155/168

Page 156: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

▪Délégation à un(des) attribut(s) interne(s) à la classe

Composition : Implémentation

156/168

Page 157: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Héritage

157/168

▪Réutiliser un type existant :■ Bénéficier des fonctionnalités inchangées■ Modifier celles qui doivent l’être■ Ajouter de nouvelle fonctionnalités

▪La notation A B signifieB hérite (ou étend) A

▪Relation hiérarchique : ■ “B est un A”, “Carré est un Rectangle”

▪ Notion de spécialisation :■ “Carré est un Rectangle, avec 4 côtés égaux”

Page 158: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Héritage

158/168

▪B hérite de A :■ B est la classe dite “Fille”■ A est la classe dite “Mère”

▪La class Fille peut :■ Disposer des attributs■ Utiliser les méthodes publiques de la classe Mère■ Redéfinir les méthodes publiques de la classe Mère■ Ajouter de nouvelle méthodes

Page 159: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Héritage : implémentation

159/168

▪Rectangle “extends” Quadrilatère▪Attributs de la class Rectangle▪Définition de la méthode setHeight▪Définition de la méthode surface

▪Carré “extends” Rectangle▪Rédéfintion de setHeight▪Utilisation des attributs de la classe mère Rectangle▪Utilisation de la méthode surface de la classe Mère

Page 160: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Rappel Visibilité

160/168

▪Visibilité : définition de la permission d’accès

▪sans visibilité : accessible par les objets du package

▪public : accessible par tous les objets

▪private : accessible par les objets du type

▪protected : accessible par les objets du package et “les classes filles”▪Bonne pratique : attributs toujours en privé

Page 161: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Héritage : visibilité des attributs

161/168

▪Visibilité protected plutôt que public :Bonne pratique →Mettre les attributs

privateMais pour que les classes filles

accède à ces attributs, on utilise protected

Page 162: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

▪Héritage• Héritage simple (en Java)• Transmission des

attributs, des signatures de méthodes et du code

▪ Interface• Implémentation multiple• Transmission des

signatures de méthodes

162/168

Héritage VS Implémentation d’interface

▪En commun• Polymorphisme• Late-binding

Page 163: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita 163/168

▪Une classe abstraite est un type non instanciable mais qui :■ a des attributs■ a des méthodes implémentées■ a des signatures de méthodes déclarées ou méthodes abstraites

▪Les classes qui héritent de classe abstraite DOIVENT implémenter les méthodes abstraites déclarées

Héritage et Classe Abstraite

Page 164: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita 164/168

▪Déclaration de classe abstraite▪Déclaration de la méthode abstraite surface

▪ Implémentation obligatoire de la méthode abstraite surface▪Héritage des autres membres de la classe Figure

Héritage et Classe Abstraite : exemple

Page 165: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita 165/168

▪Nouveau mot-clé super■ Référence la “superclass” ou la classe mère■ Souvent implicite, comme le this

Le mot-clé super

Page 166: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita 166/168

▪Mot-clé super fait référence à la superclass Rectangle

▪Résolution du code : la méthode surface ∅ dans Carré, lookup dans la classe mère

équivalent à super.surface() ou surface()

Le mot-clé super : exemple

Page 167: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita 167/168

Le type racine Object

▪Racine de toutes hiérarchies de classes▪Définit les méthodes :

■ toString() : renvoie une représentation textuelle de l’objet■ hashcode() : renvoie valeur numérique qui correspond à une

instance particulière d’une classe■ equals() : teste l'égalité de deux instances

Le type racine Object

Page 168: Septembre 2021 Cours programmation PROG - ESIR 1

2021-2022 Stéphanie Challita

Quiz de révision

168/168