les tableaux en java - fonlupt/enseignement/2015/java/cp 2... · déclaration • syntaxe : type...
TRANSCRIPT
![Page 1: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/1.jpg)
Les tableaux en java
![Page 2: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/2.jpg)
Introduction
• Principe assez proche du C++
• Plus faciles à manipuler qu'en C
• Les tableaux peuvent être des ensembles ordonnées de :– types de bases (int, char, …)
– d'objets !
• Note : en Java, les tableaux sont des objets
![Page 3: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/3.jpg)
Déclaration
• syntaxe : type [ ] nomDuTableau ;
• int [ ] tableau ;– la déclaration ne fait que déclarer le tableau mais ne crée pas le tableau
en mémoire. La variable déclarée permet de référence tout tableau de même type.
• L'opérateur new permet de créer le tableau– int [] tableau ;
tableau = new int[50] ;
• La taille donnée est fixe, elle ne peut plus être modifiée
![Page 4: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/4.jpg)
Visualisation
![Page 5: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/5.jpg)
Accès aux éléments
• principe : tableau[expression]– Comme en C, les éléments d'un tableau de taille n sont numérotés de 0
à n-1
– expression est une expression donnant une valeur entière bien sûr !
– Java vérifie dynamiquement que la valeur de l'élément existe sinon• erreur : ArrayIndexOutOfBoundsException
• beaucoup mieux que le C
![Page 6: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/6.jpg)
Attribut du tableau
• tableau.length donne la taille du tableau– int [ ] monTableau = new int[10] ;
– monTableau.length → 10 taille du tableau
– monTableau.length – 1 → indice max du tableau
• cf Cours8.java utilisation du tableau args[ ]
![Page 7: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/7.jpg)
Avantage du tableauJeu du Yahtzee
ancienne version :
public class Yahtzee{
int d1 , d2 , d3 , d4 , d5 ; //les 5 dés
...
}
nouvelle version :
public class Yahtzee{
int[] dice = new int[5];
...
}
![Page 8: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/8.jpg)
Avantage du tableau
• Le code est plus compact et plus adaptable (marche avec un nombre quelconque de dés)
ancienne version :
d1 = getRandomDieValue();
d2 = getRandomDieValue();
d3 = getRandomDieValue();
d4 = getRandomDieValue();
d5 = getRandomDieValue();
}
nouvelle version :
public static void rollDice(){
for(int i=0; i < dice.length; i++){
dice[i] = getRandomDieValue();
}
}
![Page 9: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/9.jpg)
Obtenir la valeur d'un dé
public static int getRandomDieValue(){
return Random.nextInt(6) + 1 ;
}
Cette Méthode retourne une valeur entre 1 et 6.
Nous reverrons les méthodes ultérieurement
![Page 10: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/10.jpg)
Refactorisation du Yahtzeeles constantes
• Refactoriser signifie simplifier le programme sans changer son comportement ;
• Exemple:
class Yahtzee{
public static final int NUMBRE_DE_DES = 5;
int[] dice = new int[NOMBRE_DE_DES];
...
}
• 5 est un nombre magique. Il ne faut pas créer un tableau int[] dice = new int[5]
• Cela rend les changements difficiles si on utilise 10 dés
CONSTANTE
![Page 11: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/11.jpg)
Réécriture de la méthode
Utilisation d'une boucle basée sur NOMBRE_DE_DES
for(int i = 0; i < NOMBRE_DE_DES; i++){
dice[i] = getRandomDieValue();
}
• Le code est plus général et fonctionne quel que soit le nombre de dés
• Le code est plus lisible
![Page 12: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/12.jpg)
Autres possibilités de créer des tableaux
• comme en C, on peut donner explicitement la liste de ses éléments à la déclaration (liste de valeurs entre accolades)– int [ ] t = {17, 8, 9, 23, 17} ;
– char [ ] voyelles = { 'a', 'e', 'i', 'o', 'u', 'y' } ;
• L'allocation mémoire (équivalent de new) est réalisée implicitement
![Page 13: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/13.jpg)
Synthèse
• Un tableau est une suite d’éléments du même type
• Le mot-clef new est utilisé pour allouer de l’espace mémoire
• Lors de l’allocation mémoire, il est nécessaire de préciser la taille du tableau
• Une fois que le tableau est créé, sa taille ne peut être modifiée
![Page 14: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/14.jpg)
Tableaux et boucles
• affecter un tableau aux valeurs : {2,4,...,100}
• nous pouvons affecter directement chaque élément, mais cela représente trop de travail
• on utilise plutôt une boucle !
int[] a = new int[500];
for(int i=2, j=0; i<=1000; i+=2, j++){
a[j] = i;
}
• Les boucles sont très pratiques pour le parcours dans un tableau
![Page 15: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/15.jpg)
La classe Arrays
• Java dispose d'une classe Arrays qui propose des méthodes pour trier et rechercher des éléments dans des tableaux
• import java.util.Arrays ; pour l'utiliser
• cf Cours9.java que fait ce code ?
• Exercice :
A partir d'un tableau trié de 100 éléments (cf Cours9.java) demander à l'utilisateur de rentrer une valeur entre 0 et 1000 et afficher si cette valeur est trouvée dans le tableau et si oui à quelle position
• cf Cours10.java recherche dans un tableau
![Page 16: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/16.jpg)
Méthodes
Méthodes statiques
![Page 17: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/17.jpg)
Méthodes
• 2 types de méthodes en java– Opérations sur les objets :
• String str = "coucou" ;
• str.toUpperCase() ; // mise en majuscules
– Opérations statiques (méthodes de classe)• Math.sin(double a) // méthode sin de la classe Math
• Math.max(int a, int b) // méthode max de la classe Math
• Files.delete(c:\temp\toto.txt") // méthode delete
– Pour le moment, nous nous intéressons aux méthodes statiques qui sont des outils
![Page 18: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/18.jpg)
Méthodes statiques
• En java, les méthodes dites « statiques » doivent être vues comme des outils offerts par une classe
• Une méthode statique ne s’applique pas sur un objet à la différente des méthodes d'objets
• Les méthodes statiques s'appliquent en dehors des objets
• C'est ce qui se rapproche le plus des fonctions des langages impératifs (C, Ada, ...)
![Page 19: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/19.jpg)
Exemple
import java.util.*;
public class Remodel {
public static void main(String[] args) {
callBob();
callPeter();
}
public static void callBob() {
System.out.println("Paint room");
}
public static void callPeter() {
System.out.println("Install hardwood floor");
}
}
![Page 20: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/20.jpg)
Déclaration
• public static <typeRetour> nomMethode ( <liste de paramètres>) {<corps de la méthode>}
• <typeRetour>
– quand la méthode renvoie une valeur, indique le type de valeur retournée
• static int max3(int a, int b, int c) // retourne un entier
• static int [ ] fibonacci(int n) // retourne un tableau d'entiers
– void si la méthode ne retourne pas de valeur
• static void dessinerCercle(Point p, int rayon)
![Page 21: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/21.jpg)
Déclaration
• public static <typeRetour> nomMethode ( <liste de paramètres>) {<corps de la méthode>}
• <corps de la méthode>– suite de déclaration de variables (types primitifs ou objets) et
d'instructions
– si la méthode retourne une valeur, le corps de la méthode doit contenir l'instruction return expression ; où expression délivre une valeur du type attendu en retour public static int abs(int a) {
if (a < 0) return -a ;else return a ;}
![Page 22: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/22.jpg)
Déclaration
• public static <typeRetour> nomMethode ( <liste de paramètres>) {<corps de la méthode>}
• <corps de la méthode>– return est indispensable lorsque la méthode retourne une valeur
– return est facultatif si la méthode ne retourne pas de valeur (void), toutes les instructions suivant le return sont ignorées. Quitte le bloc et retourne ) la fonction appelante
public static void sauteLignes(int a) {if (a <= 0) return ;int i ;for (i = 0 ; i < a ; i++) System.out.println("") ;}
![Page 23: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/23.jpg)
Notes sur les variables
• public static <typeRetour> nomMethode ( <liste de paramètres>) {<corps de la méthode>}
• <corps de la méthode>– elles conservent les données qui sont manipulées par la méthode
– elles ne sont accessibles que dans le bloc dans lequel elles ont été déclarées, et leur valeur est perdue lorsque la méthode termine son exécution public static int methode1(...)
{ double x ; int [ ] t = new int[10] ; double a ;…}
public static int methode2(...){ double y ; int [ ] t = new int[10] ; double a ;…}
on peut utiliser le
même identificateur
dans 2 méthodes distinctes.Variables locales
![Page 24: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/24.jpg)
Appel des méthodes statiques
• Déclaration
• Appel– <liste des paramètres effectifs>
– liste d'expressions séparées par des virgules et dont le nombre et le type correspond au nombre et au type des paramètres de la méthode
nomMethode( <liste des paramètres effectifs>)
public static <typeRetour> nomMethode ( <liste de paramètres>) {<corps de la méthode>}
déclaration Appel
public static void sauteLignes(int a) {}
sauteLignes(10) ;
public static int abs(int a){}
n = abs(-5) ;b = abs(x) ;
public static int [ ] fibonacci(int n){}
int [ ] t = new int[10] ;t = fibonacci(6) ;
![Page 25: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/25.jpg)
Passage de paramètres
• Comme en C, le passage de paramètres se fait par valeur– seule une copie des variables est transmise aux méthodes statiques
– ces paramètres sont considérées comme des variables locales à l'intérieur de la méthode
– cf Cours11.java et Cours12.java
![Page 26: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/26.jpg)
Notes
• Pour nous, tous les méthodes seront public et static
• L’appel à la méthode provoque une interruption du flot de contrôle. Une fois que la méthode est exécutée, le contrôle repart à la méthode appelante
• Les noms de méthode commencent toujours par une minuscule
• Il faut toujours utiliser les parenthèses lors de l’appel de méthodes method_name( ... ) ceci indique à Java que l’on appelle une méthode et qu’on n’utilise pas une variable
• Une méthode soit toujours retourner un type. Si aucune valeur n’est retournée on utilise void
![Page 27: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/27.jpg)
Notes
• Il y a deux manières d’appeler une méthode :
– m(...) à utiliser si la méthode ne retourne rien (méthode void)
– a = m(...) à utiliser si la méthode retourne une valeur
• Lorsque la méthode retourne une valeur cette dernière doit être sauvegardée ou utilisée (par un System.out.print par exempel)
• Une erreur très classique est d’utiliser une méthode qui retourne une valeur et ne pas la mettre dans une variable. Cela ne provoque pas d’erreur mais est totalement inutile
![Page 28: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/28.jpg)
public class Remodel { public static void main(String[] args) { double prixBob = callBob(8, 12); double prixPierre = callPeter(8, 12); double prixTotal = prixBob +prixPierre; System.out.println("prix total du projet : "
prixTotal + "€"); }
public static double callBob(int larg, int long) { System.out.println("Peinture"); double prixM2 = 0.80; return prixM2 * larg * long; }
public static double callPeter(int larg, int long) { System.out.println("Installation matériel électrique"); double prixM2 = 3.20; return prixM2 * larg * long; }}
![Page 29: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/29.jpg)
Qu’est ce qui sera affiché ?
public class Example{
public static void inc(int i){
i++;
}
public static void main(String[] args) {
int i = 3;
inc(i);
System.out.println(i);
}
}
![Page 30: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/30.jpg)
Exercice
• Modifier la méthode inc de manière à obtenir la valeur 4 en sortie de la méthode
![Page 31: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/31.jpg)
Le jeu du marché
• Nous pouvons échanger des pommes et des poires
• Le jeu dure 10 jours
• Les prix changent aléatoirement tous les jours
• Le but étant bien évidemment de gagner le plus de €€€
• Chaque journée, il est possible de vendre ou d’acheter des pommes ou des poires
• Le jeu débute avec 100 €
• Il y a des restrictions– on ne peut acheter plus que ce que l’on peut offrir
– il n’est pas possible de vendre si on n’a pas le produit
![Page 32: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/32.jpg)
Le marché (suite)
• on dispose des méthodes calculePrix(PRIX_DE_BASE, VARIATION) qui calculent le prix pour chaque jour
• PRIX_DE_BASE et VARIATION sont des constantes fourniesprixPomme = calculePrix(PRIX_DE_BASE, VARIATION)
• écrire la méthode main
![Page 33: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/33.jpg)
Classes et Objets
![Page 34: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/34.jpg)
Les concepts de l'OO
• L'OO en quelques mots– Une boite noire
– Un objet sans classe n'a pas de classe
– Les objets parlent aux objets
– Héritage
– Le modèle devient la référence → UML
– Avantages de l'OO
![Page 35: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/35.jpg)
Aux origines de l'informatique
• Programmation dictée par le fonctionnement des processeurs
• Programme = succession d'instructions
• Organisation du programme et nature des instructions le plus proche possible de la façon dont le processeur les exécute
➔ Modification des données mémorisées➔ Déplacement des données d'un emplacement à un autre➔ Opérations arithmétiques et de logique élémentaires
● Programmation en langage « machine »● Exemple : « c = a + b » se programme
➔ LD A, REG1➔ LD B, REG2➔ ADD REG3, REG1, REG2➔ MV c, REG3
![Page 36: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/36.jpg)
Langages procéduraux
• Mise au point d'algorithmes plus complexes
• Nécessité de simplifier la programmation– Distance par rapport au fonctionnement des processeurs
• Apparition des langages procéduraux– Cobol, Fortran, C, etc...
• Le raisonnement reste néanmoins conditionné par la conception des traitements et leur succession
➔ Éloigné de la manière humaine de poser et résoudre les problèmes➔ Mal adapté à des problèmes de plus en plus complexes (sauf pour les
étudiants très brillants!)
![Page 37: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/37.jpg)
Avènement de l'objet
• Libérer la programmation des contraintes liées au fonctionnement des processeurs
• Rapprocher la programmation du mode cognitif de résolution des problèmes
• Mise au point d'un nouveau style de langage de programmation– Simula, Smalltalk, C++, EIffel, Java, C#, Delphi
• Idée centrale :– Placer les entités, objets ou acteurs du problème à la base de la
conception
– Étudier les traitements comme des interactions entre les entités
– Penser aux données AVANT de penser aux traitements
![Page 38: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/38.jpg)
Une boite noire
• Un objet est une boite noire qui reçoit et envoie des messages
![Page 39: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/39.jpg)
Classe
• Une classe est constituée de descriptions de :– données : que l'on nomme attributs
– procédures et fonctions : que l'on nomme méthodes
• Une classe est uniquement un modèle de représentation d'objets– ayant même structure (même ensemble d'attributs)
– ayant même comportement (même ensemble de méthodes)
• Les objets sont des représentations, on parle d'instances du modèle défini dans les classes– une classe permet d'instancier (créer) plusieurs objets
– en général, un objet est instance d'une classe
![Page 40: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/40.jpg)
Exemple de classe
La classe Étudiant
Etudiant
nom : Stringprenom : StringanneNaissance : intNbNotes: intnotes : [] int
nom de la classe
attributs
méthodes
![Page 41: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/41.jpg)
Syntaxe java
Les attributs sont des variables dites « d'instances » qui serontdisponibles dans toutes les instances de la classe Etudiant.Attention, ces variables seront très certainement différentesd'une instance de Etudiant à une autre.Les attributs peuvent être utilisés dans toutes les méthodesdéfinies par la classe.
attributs
![Page 42: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/42.jpg)
Attributs de classeattribut non initialisé
• La déclaration d'un attribut se fait grâce à la syntaxe suivante :– type nomAttribut ;
ou
– type attribut = expression ;
• type peut soit être un type primitif (char, int, byte, …) soit être un type structuré (un objet)
attribut automatiquement initialisé
public class Vecteur2d{float x ;float y ;}
![Page 43: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/43.jpg)
Déclaration des méthodes
• Une méthode définit du code exécutable qui peut être invoqué par les objets
• On distingue 3 types de méthodes:– Les constructeurs : méthodes servant à créer des objets
– Les accesseurs : méthodes servant à accéder aux données de nos objets
– Les méthodes de classe : méthodes servant à la gestion des objets
![Page 44: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/44.jpg)
Constructeurs
• Méthode appelée automatiquement lors de la création d'une instance de classe (mot-clef new)
• Une classe permet de créer un nombre quelconque d'objets (instance)
• Chaque instance est engendrée par une classe– Pour notre classe Etudiant
• Un constructeur générique (nom inconnu, …)
• Un constructeur explicite. On fournit dans ce cas le nom de l'étudiant, son prénom, sa date de naissance, ...
![Page 45: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/45.jpg)
Accesseurs
• Permet d'accéder aux différents attributs d'une classe
• Récupération des attributs d'une classe
• Modification des attributs d'une classe– Pour la classe Etudiant :
• Récupération du nom
• Modification de la date de naissance en cas d'erreur de saisie
![Page 46: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/46.jpg)
CommentairesL'outil javadoc permet de récupérer automatiquement les commentaires des méthodes Il faut donc OBLIGATOIREMENT commenter les méthodes
paramètres
javadoc
Cours13.java
![Page 47: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/47.jpg)
Méthodes de classe
• Permet de travailler directement sur les instances de classe
• Gestion, édition, affichage, calcul sur les objets
• Pour notre classe Etudiant :– Calcul de la moyenne
– Ajout d'une note dans un examen
• Pour la classe String– toUpper() mise en majuscules
– subString() récupération d'une sous-chaîne
![Page 48: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/48.jpg)
Les constructeurs
• Un constructeur est une méthode qui va se charger de créer un objet et, le cas échéant d'initialiser ses variables de classe
• Un constructeur n'est pas obligatoire, car il existe un constructeur par défaut qui créera l'objet
• Il peut y avoir plusieurs constructeurs pour une même classe (cf plus loin)mais
• Le (les) constructeur(s) doit (doivent) toujours porter le même nom que la classe sans valeur de retour
![Page 49: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/49.jpg)
Méthode de classes
• Déclaration d'une méthode<typeRetour> nomMethode ( <liste de paramètres> ) {
<corps de la méthode>}
• Le principe est très semblable à celui des méthodes statiques
![Page 50: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/50.jpg)
Paramètres de classes
• Déclaration d'une méthode<typeRetour> nomMethode ( <liste de paramètres> ) {
<corps de la méthode>}
• <liste de paramètres>– Vide si la méthode n'a pas de paramètres
• int nextInt() de la classe Scanner
• String nextLine() de la classe Scanner
– Une suite de couples type identificateur séparés par des virgules• int max3(int a, int b, int c)
• Int sort(int [] t) de la classe Arrays
![Page 51: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/51.jpg)
Corps de la méthode
• Déclaration d'une méthode<typeRetour> nomMethode ( <liste de paramètres> ) {
<corps de la méthode>}
• <corps de la méthode>– Même principe que pour les méthodes statiques
– Si la méthode a un type de retour, le corps de la méthode doit contenir au moins une instruction return expression où expression délivre une valeur du type retourné
![Page 52: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/52.jpg)
Corps de la méthode
• Déclaration d'une méthode<typeRetour> nomMethode ( <liste de paramètres> ) {
<corps de la méthode>}
• <corps de la méthode>– Suite de déclaration de variables locales et d'instructions (cf méthodes
statiques)
– Les variables déclarées à l'intérieur de la méthode sont des variables locales
– Elles ne sont accessibles que dans la méthode où elles sont déclarées
![Page 53: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/53.jpg)
Visibilité des variables
![Page 54: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/54.jpg)
Méthodes
• 2 types de méthodes en java– Opérations sur les objets :
• String str = "coucou" ;
• str.toUpperCase() ; // mise en majuscules
– Opérations statiques (méthodes de classe)• Math.sin(double a) // méthode sin de la classe Math
• Math.max(int a, int b) // méthode max de la classe Math
• Files.delete(c:\temp\toto.txt") // méthode delete
– Intéressons nous maintenant aux méthodes statiques qui sont des outils
![Page 55: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/55.jpg)
Objets
• Un objet est une instance d'une seule classe :– Chaque attribut déclaré dans la classe de l'objet admet une valeur
propre dans chaque instance
– Ces valeurs caractérisent l'état de l'objet
– Les méthodes de classes agissent sur les instances. Attention, les méthodes statiques sont indépendantes des objets. Ce sont en général des boites à outils
![Page 56: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/56.jpg)
Objets: Etudiant
• Chaque instance de la classe Etudiant possédera ses propres attributs (nom, prénom, ...)
Etudiant
e2 : Etudiante1 : Etudiant e3 : Etudiant
Nom : alfred Nom : paul Nom : jean
![Page 57: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/57.jpg)
Décomposition d'un objet
• Un objet est en général constitué d'une partie dynamique et d'une partie statique– La partie statique est :
• commune à toutes les instances
• Un seul exemplaire pour l'ensemble des classes
– La partie dynamique est :• Propre à chaque instance
• Varie durant la vie d'un objet
nom : alfred nom : paul
prénom : prénom :
Partie statique
double calculerMoyenne()
![Page 58: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/58.jpg)
Création d'objets en java
• Le mot a déjà été utilisé de nombreuses fois. La création d'un objet java à partir de son modèle (sa classe) s'appelle instanciation
• L'instanciation en java comporte trois parties :– Création de l'espace mémoire nécessaire pour la nouvelle instance
– Appel à une méthode ou à des méthodes particulières appelées constructeurs
– Renvoi d'une référence sur l'objet créé
![Page 59: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/59.jpg)
Instanciation en java
• new constructeur (< liste de paramètres>)
• Les constructeurs ont le même nom que la classe
• Il existe toujours un constructeur par défaut qui ne fait que l'action 1 du processus d'instanciation, c'est-à-dire allocation de la mémoire pour l'objet– Sans paramètre
Etudiant e1 ;e1 = new Etudiant()Etudiant e2, e3 ;e2 = new Etudiant() ;e3 = e2 ;
![Page 60: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/60.jpg)
Gestion de la mémoire
• L'instanciation provoque une allocation dynamique de la mémoire
• En Java, le programmeur n'a pas à se soucier de la gestion de la mémoire– Si un objet n'est plus référence (n'est plus utilisé par aucune référence),
la mémoire allouée est libérée automatiquement. Ce processus de libération de la mémoire est appelé « garbage collector » ou « ramasse-miettes »
![Page 61: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/61.jpg)
Constructeur par défaut
RIEN ! Mais ça marche
![Page 62: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/62.jpg)
Références en Java
• Déclarations de références
• Par défaut à la déclaration une référence vaut null– Etudiant e1; ↔ Etudiant e1 = null;
Etudiant e1;Etudiant e2, e3;
Nom de la classe
Identificateur(références)
![Page 63: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/63.jpg)
Créer une instance de Ville
• Utilisation du mot-clef new– rappel String toto = new String() ;
– création d'une instance de l'objet String appelé toto
• Même principe que pour String
public class Test1{ public static void main(String[] args){ Ville v = new Ville(); } }
v est de type Ville
cf Cours14.java
![Page 64: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/64.jpg)
Un constructeur plus élaboré
constructeur de laclasse Etudiant
![Page 65: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/65.jpg)
Plusieurs constructeurs
• Une classe peut avoir plusieurs constructeurs
• C'est le principe dit de la surcharge, le constructeur sera choisi suivant les paramètres
• Cf Cours15.java
![Page 66: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/66.jpg)
Les méthodes des objets
• Pour exécuter une méthode d'un objet, on parle dans le cadre de la POO d'envoi de messages
• Un message est composé de 3 parties :– Une référence (nom de l'instance) qui permet de déterminer l'objet à qui
le message est envoyé
– Le nom de la méthode à exécuter (cette méthode doit bien entendue être décrite dans la classe de l'objet)
– Les éventuels paramètres de la méthode
• Envoi de message est similaire à l'exécution d'une fonction mais les méthodes ne sont disponibles que pour un objet donné
![Page 67: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/67.jpg)
syntaxe
• nomObjet.nomMéthode(< liste de paramètres>)
![Page 68: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/68.jpg)
Paramètre des méthodes
• Un paramètre d'une méthode peut être– Une variable de type simple, type primitif, déjà vu
– Une référence à une classe (par exemple String, mais également Dossier qui peut être le dossier d'un étudiant)
/** * teste si un étudiant est plus vieux que l'étudiant courant * * @param e étudiant * * @return vrai si l'étudiant courant est plus agé que celui passé en paramètre */ boolean plusVieux(Etudiant e){
if (anneeNaissance < e.anneeNaissance) return true;else return false;
}
Comment utiliser cetteméthode ?
![Page 69: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/69.jpg)
L'objet « this »
• En java, l'accent est mis sur l'objet (et non pas sur l'appel de fonction)– e1.ajouterNote(17)
– e1.plusVieux(e2)
• L'objet qui reçoit un message est implicitement passé comme argument à la méthode invoquée
• Cet argument implicite défini par le mot-clef this– Désigne l'objet courant (objet récepteur du message)
– Peut être utilisé pour rendre explicite l'accès aux propres attributs et méthodes définis dans la classe
– Est en général facultatif
![Page 70: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/70.jpg)
Réécriture de Etudiant
Cf classe EtudiantThis
![Page 71: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/71.jpg)
Accès aux attributs d'un objet
• Pour accéder aux attributs d'un objet, on utilise la notation :– nomObjet.nomAttribut
Etudiant e1;e1 = new Etudiant();Etudiant e2 = new Etudiant;Etudiant e3 = e2;e1.nom = "toto";e2.nom = "alfred";e3.anneeNaissance = 2000;
e1
e2
e3
toto
alfred
![Page 72: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/72.jpg)
Encapsulation
• Accès direct aux variables d'un objet possible en java
• Mais... n'est pas recommandé car contraire aux principes des langages orientés-objets– Les données d'un objet doivent être privées (c'est-à-dire protégées et
accessibles qu'au travers de méthodes prévues à cet effet)
• En Java, on peut définir de manière assez précise la visibilité des membres (attributs et méthodes) d'une classe vis-à-vis d'une autre– private
– public
– protected
![Page 73: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/73.jpg)
Encapsulation
• public/private
La classe peut être utilisée dans n'importe quelle classe
Attribut accessible depuis n'importe quelle classeClasse.attribut
Attribut accessible uniquement dans la classe où il est défini
Méthode pouvant être invoquée depuis n'importe quelle classeClasse.methode(...)
Méthode utilisable uniquement dans la classe où elle est définie
public private
classe
attribut
méthode
![Page 74: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/74.jpg)
Exemple d'attributs private
![Page 75: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/75.jpg)
private (suite)
Ne foncti
onne plus
Car anneNaiss
ance est
Maintenant un attri
but
private
![Page 76: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/76.jpg)
Intérêt
• On accède aux données seulement à travers des méthodes définies dans le code de la classe. On obtient ainsi un code robuste
• Cela maque l'implémentation et facilite l'évolution du logiciel
• Les méthodes qui accèdent aux attributs sont appelées accesseurs
• Les méthodes qui modifient les attributs sont appelées modificateurs
![Page 77: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/77.jpg)
Accesseurs
• Les accesseurs sont conventionnellement préfixés par get
![Page 78: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/78.jpg)
Modificateurs
![Page 79: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/79.jpg)
Rap
pels
classe
attributs
méthodes
constructeur
![Page 80: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/80.jpg)
Questions
• Inutile d'aller plus loin– Quelle est la différence entre une classe et une instance ?
– Qu'est-ce qu'un constructeur ?
– Qu'est-ce qu'une méthode ?
– Un constructeur est-il une méthode ?
– Qu'est-ce qu'un attribut ?
• Construire une classe Voiture– Année (millésime)
– Marque
– Couleur
– Neuve (booléen)
![Page 81: Les tableaux en java - fonlupt/Enseignement/2015/java/cp 2... · Déclaration • syntaxe : type ... • int [ ] tableau ; – la déclaration ne fait que déclarer le tableau mais](https://reader033.vdocuments.mx/reader033/viewer/2022052919/5b9db85209d3f2ed218cbffc/html5/thumbnails/81.jpg)
Questions
• Inutile d'aller plus loin– Quelle est la différence entre une classe et une instance ?
– Qu'est-ce qu'un constructeur ?
– Qu'est-ce qu'une méthode ?
– Un constructeur est-il une méthode ?
– Qu'est-ce qu'un attribut ?
• Construire une classe Voiture– Année (millésime)
– Marque
– Couleur
– Neuve (booléen)