Introduction à JAVA - Université d`Avignon
Transcription
Introduction à JAVA - Université d`Avignon
Modélisation Objet Introduction à JAVA Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA ● Historique – Les langages objets ● ● ● ● ● Simula 67 (trop tôt) Smalltalk 80 : purement objet Objective C : extension du C, esprit Smalltalk C++ : extension du c; le plus utilisé … et JAVA Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA ● Historique – Ancêtre : OAK (SUN, 1991) ● – – – Langage indépendant de la machine Premier JAVA en 1994 (SUN) La vie de JAVA est liée à celle des navigateurs internet JAVA 2 (1.3) : 2000 Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA ● Objectifs – – ● La programmation internet Code mobile Problèmes : – – – Portabilité et transportabilité totales Sécurité Gestion mémoire Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA – Principes ● ● ● ● ● Langage objet Simplicité – Syntaxe c++ – Plus simple que C++ Code JAVA indépendant de la plateforme Gestion mémoire automatisée Langage sécurisé Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA – La machine virtuelle J AVA (JVM) ● ● ● ● ● – Une source JAVA se compile en JCode Le JCode est interprété par une JVM Le JCode est indépendant de l’environnement matériel et logiciel La JVM masque le système …mais elle est dépendante du système Le JCode est portable et mobile ! Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA – Compilation et exécution d’un programme JAVA ● Écriture du programme – ● ● Exemple : ex1.java Compilation : commande javac – Javac ex1 – Produit un ex1.class Exécution : invocation de java (la JVM) – Java ex1 Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA – Structure d’un programme JAVA ● En JAVA, tout est classe – – ● ● Sauf type numériques, booléens, caractères Écrire un programme JAVA, c’est définir et implémenter des classes Une classe peut contenir une fonction principale (main(string args[])) Cette méthode peut être invoquée à partir d’une console : – Java <nom de la classe> Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA – Structure d’un programme JAVA ● En JAVA, tout est classe – – ● ● Sauf type numériques, booléens, caractères Écrire un programme JAVA, c’est définir et implémenter des classes Une classe peut contenir une fonction principale (main(string args[])) Cette méthode peut être invoquée à partir d’une console : – Java <nom de la classe> Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA – Un premier programme JAVA Import java.io.* // importation du package io Class salut { Public static void main(string args[]){ Afficher(); } Public void afficher(){ System.out.println(« salut tout le monde »); System.exit(0); Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA ● Variables – – Toutes typées Définition et initialisation : ● ● – – <type> <nom> = <valeur> Int a =3;int b; Initialisation par défaut à 0/null Une variable ne peut être définie que dans une classe (pas de variable globale) Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA ● Types de données : – Types primitifs ● – Types références ● – Manipulés par valeurs Manipulés par référence Codage indépendant de la plateforme ● Indispensable pour la portabilité Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA ● Types primitifs byte 8 bits short 16 bits int 32 bits long 64 bits float 32 bits IEEE 754 double 64 bits IEEE 754 char 16 bits Unicode boolean True/false Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA ● Types références (complexes, composés)flo – Vecteurs et matrices ● ● ● – – Les tailles ne sont pas spécifiées à la déclaration Elles doivent être fixées par la méthode new ● ● ● ● – – Int tab[]; // vecteur d’entiers Int[] tabaussi; // idem ! Float matrice[][]; //matrices de flottants Int tab[] = new int[5} Float matrice[][] = new float[4][6]; Char tabchar[][] = new char[10][]; Tabchar[0]= new char[4]; On ne s’occupe pas de la libération de la mémoire Autres types références : classes, interfaces Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA ● variables finales – – Leur valeur ne peut être fixée qu’une fois Syntaxe : Final int t; Final float f = 0.0; …… T=3; Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA ● Les opérateurs – – – – – – – Similaire au C++ +, , *, /, % +=, =, %=, … >, <, <=, >=,==, != ! , &, |, ^ && || !=, &=, |=, ?= <<, >>, >>>, <<=, … Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA ● Les structures de contrôle – If (condition) {instructions } [else{instructions}] If (i=0) {System.out.println(« nul »);} Else {System.out.println(« non nul »);} Switch (variable) { case <valeur 0> : {instructions} ……… case <valeur n> : {instructions} Default : {instructions} } – Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA ● Les structures de contrôle – – – Do {instructions} while (condition) While (condition) do {instructions} For ( intialisation; condition; instructions) {Instructions} ● – For (int i=0; i<2;i++) j+=i; Break, continue …… Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA ● Classes et objets en JAVA – Définition d’une classe : ● ● – Class <nom> { definitions } Exemple :Class point { float x;float y;} Une classe contient : ● ● ● ● ● Des définitions de variables d’instances Des définitions de méthodes Des variables de classe Des méthodes de classe D’autres définitions de classe (classes encapsulées, inner class) Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA – Variables d’instance : ● ● Crées lors de l ’instanciation de la classe La variable appartient à l’instance ( à l’objet) – – – X et y sont des variables d’instance de la classe point Chaque objet possède un couple de variables x y Méthodes d’instance ● Déclaration classique Float norme() { return sqrt(x*x+y*y);} ● Invocation sur son instance Point p; …. Float n = p.norme(); ● Signature : type de retour, liste des paramètres, nom, classe Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA – Variables de classe : Durée de vie indépendante des instances ● Une variable de classe est partagée par toutes les instances ● C’est une variable commune aux instances d’une classe ● Définition : static <type> <nom>; ● Accès : <nom_classe>.<nom_variable> Exemple : ● Class pile { Point tab[]; Static public Int taille_maxi; …. } Pile.taille_maxi=3; Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA – Méthodes de classe : ● ● ● ● Peuvent être invoquées sans instance Exemple : la fonction main Permet d’encapsuler des méthodes sans créer d’instance Définition : – ● ● – Static <définition de la méthode> Utilisation : <nom_classe>.<nom_methode>(liste de paramètres); Exemple : Class pile { Point tab[]; Static void redimensionner(int t){…}; ….} Pile.redimensionner(3); Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA ● Constructeurs : – – – ● Une classe possède au moins un constructeur Un constructeur ne construit pas un objet : il l’initialise Les constructeurs diffèrent par la liste des paramètres (et l’implémentation !) Destructeurs – – En général inutile JAVA utilise un Garbage Collector (ramasse miettes) ● ● ● – Chaque objet possède un compteur de références Le GC détruit périodiquement les objets non référencés Automatique mais pas optimal Destruction explicite : ● Invocation d’une méthode finalize() Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA – Contrôle de l’accès aux membres d‘une classe ● ● ● ● ● Motivation : limiter l’utilisation des variables/fonctions membres Variables/méthodes privées (internes) Variables/méthodes publiques Variables/méthodes accessibles par les classes dérivées uniquement (protected) Accès aux composants du package (package) Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA – Contrôle de l’accès aux membres d‘une classe ● Protection au niveau classe – ● N’importe quel objet d’une classe peut accéder à tous les attributs des objets de même type Syntaxe : Class pile { Protected Point tab[]; Public void empiler(point p){}; Public point depiler(); Private void agrandir(); } Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA – Classes encapsulées ● Motivation : Limite la portée d’une définition de classe – Permet la définition de classes « assistantes » – Evite l’utilisation inadéquate de classes outils Exemple : class liste { Class maillon { int info; Maillon suiv; } Private Maillon debut; …. } – Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA – Héritage ● ● Pas d’héritage multiple direct en JAVA ( cf interfaces) Héritage simple : – – – – ● La sous classe spécialise sa superclasse La superclasse généralise ses sousclasses Une classe dérivée hérite des méthodes et des attributs de la super classe L’accès à ces attributs est réglementé par le statut des variables héritées : ● Public : les membre hérités sont public et accessibles ● Private : les attributs ne sont pas accessibles ● Protected : les attributs ne sont accessibles que par les héritiers Syntaxe : class <nom classe dérivée> extends <nom superclasse> Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA L’opérateur new – Deux rôles complémentaires ● 1 : Création d’une variable – Allocation de l’espace mémoire – Exemple : int a = new int; Employe = new personne; – Exception de type OutOfMemoryError si mémoire insuffisante – Implicite : l’allocation n’apparaît pas dans le constructeur Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA L’opérateur new – Deux rôles complémentaires ● – – – 2 : initialisation d’une variable – Exemple : int a = new int(2); Employe = new personne(« durand »); New renvoie une référence Allocation dynamique … mais on ne s’occupe de la libération de la mémoire Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA Les constructeurs – – Un objet est toujours construit et détruit Constructeur par défaut : ● Sans argument – – – – Initialisation des valeurs à 0 Invoqués par l’opérateur new Si un constructeur est défini, alors … … il n’y a plus de constructeur par défaut ! Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA Les constructeurs Exemple : Class point { Private int x,y; Point(int a,int b) {x=a;y=b;}; }; Point p=new point(2,4);// ok Point q = new point();// NON Class point { Private int x,y; }; Point p=new point(2,4);// non Point q = new point(); // ok Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA Constructeurs et héritage Un objet d’une classe dérivée est une instance de ses ancêtres – Invocation implicite ou explicite des constructeurs des super classes – Ces constructeurs doivent exister ! – Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA Constructeurs et héritage – Invocation implicite : Constructeur par défaut ● Exemple : ● Class compte { float solde;} Class compte_rem extends compte { Float taux; Compte_rem() {}; Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA Constructeurs et héritage Class cpte { Class cpte { float solde; } Class cpte_rem extends cpt { Float taux; Cpte_rem() {taux=5.5}; // OK float solde; Cpte(float s){solde=s;} }; Class cpte_rem extends cpte{ Float taux; Cpte_rem(){ taux=5.5; // ERREUR }; Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA Constructeurs et héritage Class cpte { float solde; Cpte(float s){solde=s;} }; Class cpte_rem extends cpte{ Float taux; Cpte_rem(float t){ Super(0.0);// appel au constructeur de la super classe taux=t; }; Cpte_rem() { this(5.5;);}; Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA L’affectation – Types primitifs : recopie de la valeur : int a,b=4; a=b; – Types référence : recopie de l’adresse Int t[],s[]; T = new int[3]; S=t; int p2, p = new point(2,3); P2=p; Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA L’affectation – Types primitifs : recopie de la valeur : int a,b=4; a=b; – Types référence : recopie de l’adresse Int t[],s[]; T = new int[3]; S=t; int p2, p = new point(2,3); P2=p; Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA Les exceptions – Anomalie dans une méthode : Class fraction{ int num; int den; Float frac2reel() { return num/(float) den;};// den == 0 ? } ● Valeur de retour particulière – Restrictif ou impossible Float frac2reel() { If (den==0.0) return ??? return num/(float) den;};// den == 0 ? Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA Les exceptions ● Paramètre dédié float frac2reel(Integer code_erreur){ If (den==0.) { code_erreur = 1; Return INF ; } Else code_erreur =0; Return num/(float)den; } – ● ● Coût important : erreur exceptionnelle Arrêt de l’application Rien … Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA Les exceptions ● Solution JAVA (C++) : exceptions – – – Mécanisme standard Gestion automatisée Modélisation objet des erreurs Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA Les exceptions ● ● ● ● Super classe exception Définitions de classes d’erreurs dérivées de exception Lorsqu’une erreur se produit, une exception est levée Les exceptions sont récupérées par l’appelant Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA Les exceptions ● Définition d’une classe d’exception Class err_num extends exception{ String msg; } Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA Les exceptions ● Levée d’une exception Class frac{ Int num; Int den; Float frac2reel() throws err_num { If (den==0.0) throw new err_num(); Return num/(float)den; Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA Les exceptions ● Levée d’une exception : – Le type de l’exception doit être spécifié dans la définition de la méthode (throws) – Lever une exception : créer un objet d’une dérivée de exception – Envoyer le signal (l’objet) par l’instruction throw – La levée d’une exception stoppe l’execution de la méthode Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA Les exceptions ● Récupération des exceptions Try { Frac f = new frac(2,0); Float t = f.frac2reel(); System.out.println(« salut »); } catch (err_num e) { System.out.println(e.msg;); } Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA Les exceptions ● Récupération des exceptions – – – Si une exception est levée par une instruction du bloc try {…} …alors un gestionnaire convenable est cherché dans les clauses catch() L’exécution reprend après la séquence try catch Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA Les exceptions – Recherche du gestionnaire ● ● ● Dans l’ordre d’apparition Le premier gestionnaire acceptable stoppe la recherche Un gestionnaire est acceptable si : – Le type de l’exception définie dans le catch est le type de l’exception levée – Ou si c’est une super classe de l’exception levée Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA Les exceptions – Recherche du gestionnaire Class err extends exception {;…} Class err_num extends err {…}; Try { Frac f = new frac(2,0); Float t = f.frac2reel(); System.out.println(« salut »); } catch (err e) { System.out.println(« erreur »); } catch (err_num e) { System.out.println(« erreur numérique »); } catch (ioexception) { System.out.println(« erreur entrée/sortie »); } Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA Les exceptions – Recherche du gestionnaire ● ● ● Si aucun ne convient …alors la recherche se poursuit dans la pile d’exécution (dans les méthodes appelantes) Jusqu’à trouver un gestionnaire ou stopper l’application Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA Les exceptions ● Clause finally : Try { Frac f = new frac(2,0); Float t = f.frac2reel(); System.out.println(« salut »); } catch (err e) { System.out.println(« erreur »); } finally { System.out.println(« erreur inconnue »); } Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA Les exceptions ● Hiérarchie des classes d’exception Object Throwable Error Exception RunTimeException IOException Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA Les classes abstraites – – – Certaines classes regroupent des propriétés/méthodes …mais ne sont pas instanciables Exemple : abstract Class valeur_num { abstract void afficher();}; Class fraction extends val_num{…}; – – Mot clef abstract Intérêt : ● ● Cohésion du modèle Classe : entitée conceptuelle Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA Les méthodes abstraites ● ● Une méthode abstraite n’a pas d’implémentation Les classes dérivées doivent implémenter les méthodes abstraires (virtuelles) – ● ● Contrainte imposée aux dérivées Une classe abstraite peut ne pas contenir de méthodes abstraites Le mot clef final bloque l’héritage polymorphe Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA Les Interfaces ● Motivations et principes: – – – – – Pas de séparation interface/implémentation en JAVA Interface : contrat entre une classe et ses utilisateurs Une interface est un patron définissant un ensemble de méthodes abstraites Une interface n’est pas instanciable Une interface peut être vue comme une classe abstraite Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA Les Interfaces ● Syntaxe Définition interface <id> { définitions de fonctions (abstraites) …et de constantes de classes (static final) }; – Utilisation classe <id classe> implements <id interface> { Implémentation des méthodes d’interfaces } – Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA Les Interfaces ● Méthodes d’interfaces – – – – Méthodes virtuelles Toutes publiques Mais inutile d’utiliser le motclef abstract Les classes implémentant l’interface doivent implémenter ses méthodes Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA Les Interfaces ● Implémentation d’interfaces multiples – – Forme d’héritage multiple Syntaxe : ● ● ● Class <id> implements <id 1>,<id 2> {…}; // <id> implémente les interfaces id 1 et id 2 Pas d’héritage répété – Deux implémentations ne sont jamais concurrentes lors de l’héritage Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA Héritage d’interfaces ● ● Héritage simple ou multiple Syntaxe : – – interface <id 1> extends <id 2>, <id 3> {…} id 1 hérite des interfaces id 2 et id 3 Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA Polymorphisme et interfaces ● une implémentation peut être manipulée par un identificateur d’interface classe cls implements itf {…} cls obj = new cls; itf it = obj; ● Forme de polymorphisme Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Introduction à JAVA Classes primitives ● ● Les types primitifs sont manipulés par valeur Ils sont encapsulés dans des classes : – – – Integer Float … Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Modélisation Objet Support JAVA Composants réutilisables ● Motivation – – – – Économie de codage Sureté de fonctionnement Efficacité Objectif essentiel de l’approche objet ! Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Modélisation Objet Support JAVA Composants réutilisables – Principes ● ● Fournir une infrastructure (modèle de composants) Fournir des composants – Structures de données – Algorithmes fréquement utilisés Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Modélisation Objet Support JAVA Composants réutilisables – – – – Séquences Ensembles Fonctions Collections Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Modélisation Objet Support JAVA Composants réutilisables : les séquences – – – Ensemble ordonné d’éléments Accès séquentiel Opérations : ● ● ● ● Création destruction Insertion d’un objet Recherche Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Modélisation Objet Support JAVA Composants réutilisables : les séquences – Opérations sur les séquences : ● Éventuellement : – Comparaisons Concaténations – Extractions – Fusions – … – Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Modélisation Objet Support JAVA Les séquences en JAVA ● ● Classe Vector du package java.util Opérations : – – – – Construction : Vector(); Ajouts : ● void addElement(Object obj); ● void addElementAt(Objet obj, int index); Suppression : ● boolean removeElement(Objet obj); ● void removeElementAt(int index); ● void removeAllElement(); Taille : ● int size(); ● Int isEmpty(); Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Modélisation Objet Support JAVA Les séquences en JAVA ● Opérations : – – Accès par la position: ● Object firstElement(); ● Object lastElement(); ● Object elementAt(int index); Recherche (accès par la valeur) : ● ● boolean contains(Object obj); int indexOf(Object obj); ● int indexOf(Object obj, int depart); ● int lastIndexOf(Object obj); ● int lastIndexOf(Object obj, int depart); Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Modélisation Objet Support JAVA Composants réutilisables : les ensembles ● ● ● Collection d’objets …nonordonnée ! Opérations : – Création – – Ajout d’un élément Suppression – Recherche – Vide/nonvide Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Modélisation Objet Support JAVA Composants réutilisables : les ensembles ● Opérations sur les ensembles: – Réunion Intersection – Différence symétrique – … – Inclusions – … – Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Modélisation Objet Support JAVA Composants réutilisables : les fonctions ● Définition : – – ● F de E>F : Association d’un unique élément de F à chaque élément de E Opérations : – – – – Ajout / suppression de liens (bof) Intérrogation : Deux éléments sont ils en relation ? Quelle est l’image d’un élément de E ? Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Modélisation Objet Support JAVA Les fonctions en JAVA : associations – – – – Classe Hashtable Package java.util Couples clefs/valeurs (argument/résultat) Méthodes de recherche type tables de hashage ● ● ● Méthode de hashage : hashCode() Générique Surchargeable pour uniformiser la répartition des éléments Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Modélisation Objet Support JAVA Les fonctions en JAVA : associations – Exemple : Hashtable annuaire = new Hashtable(); String nom = « dupont »; String numtel = « 0490234532 »; Annuaire.put(nom,numtel); Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Modélisation Objet Support JAVA Les collections – Principe ● ● ● ● ● ● Collection framework : environnement complet Gestion d’un ensemble d’éléments Spécifications par un ensemble d’interfaces Implémentations abstraites Implémentations sommaires algortihmes (fonction statiques sur des collections) Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Modélisation Objet Support JAVA Les collections – Collection Framework ● ● interfaces : – collection – collection :: Set, List, SortedList – Map, Sorted Map certaines implémentations sont optionnelles – mutable, modifiable, fixed size – les opérateurs correspondants lèvent des execeptions Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Modélisation Objet Support JAVA Les collections – Interface collection ● ● ● Pas d’hypothèse de séquentialité Interface racine Quelques méthodes : – – – – – – boolean add(Object); boolean remove(Object); boolean contains(Object); Int hashcode(); Object[] toArray() boolean iterator(); Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Modélisation Objet Support JAVA Les collections – Les itérateurs ● Motivations : – Parcours uniforme des collections Indépendants de la structure sousjacente – Curseurs sur des strucures nonordonnées – Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Modélisation Objet Support JAVA Les collections – Les itérateurs ● ● ● Équivalent aux itérateurs de la STL du C++ Pointeurs généralisés Opérations : – – – – Créations Liens avec les collections Accès à l’élément courant Déplacement Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Modélisation Objet Support JAVA Les collections – Les itérateurs : exemple Hashtable annuaire = new Hashtable(); String nom = « dupont »; String numtel = « 0490234532 »; Annuaire.put(nom,numtel); Enumeration ptr; ….//remplissage de la table Ptr = annuaire.keys(); While (ptr.hasMoreµElements()) { String nom= (String) ptr.nextElements(); String numtel = (String) annuaire.get(nom); Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Modélisation Objet Support JAVA Les collections – – – – Les interfaces dérivées : set interface set extends collection interface sortedSet extends set Implémentation : ● ● AbstractSet, HashSet, LinkedHashSet, TreeSet … Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Modélisation Objet Support JAVA Les collections – – Les interfaces dérivées : List Classes implémentant List : ● ● ● ● ArrayList LinkedList Vector AbstractList Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Modélisation Objet Support JAVA Les packages – – Outils de génie logiciel Motivations : ● ● ● Structurer les applications de grande taille Regrouper les classes en groupes homogènes Stocker/recupérer des ensembles de classes Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Modélisation Objet Support JAVA Les packages – Critères de regroupement ● ● ● ● Fonctionalités Niveau de traitement Domaine Variantes d’implémentations Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Modélisation Objet Support JAVA Les packages – Définitions ● ● ● ● ● Package <id> … placé en début du fichier Les classes définies dans le fichiers appartiennent alors au package <id> Certaines implémentation exigent que les fichiers soient regroupés dans un répertoire .. Dont le nom est le nom du package Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Modélisation Objet Support JAVA Les packages – Organisation hiérarchique des packages ● ● ● Notation : pack1.pack2 …pack2 est un sous package de pack1 Pack2 peut devoir être un sous répertoire de pack1 Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Modélisation Objet Support JAVA Les packages – Classes privées et publiques d’un package ● public : – ● La classe est utilisable par les classes des autres apckages private : – La classe est masquée aux autres package – Elle reste utilisable à l’intérieur du package Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Modélisation Objet Support JAVA Les packages – Visibilité et packages ● ● ● Private : attributs et méthodes visibles par la seule classe Public : visibilité totale Protected : visibilité par toutes les classes du package et par les dérivées de la classe – Accés par défaut (package) Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Modélisation Objet Support JAVA Les packages – Rappel : encapsulation des données ● ● ● Les variables doivent être privées L’accès est réglementé par des méthodes accesseurs L’encapsulation garantis la stabilité de l’interface de la classe Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse Modélisation Objet Support JAVA Les packages – Utilisation ● ● – Instruction import Suppose les classes compilées Chemin de recherche des packages : ● Les packages standards sont dans un fichier classes.zip ● Variable d’environnement CLASSPATH – – Exemple : CLASSPATH=.;C:\java\JDK\Lib\classes.zip; Georges Linares – IUP GMI – Université d’Avignon et des Pays de Vaucluse