Introduction à JAVA - Université d`Avignon

publicité
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 J­Code
Le J­Code est interprété par une JVM
Le J­Code 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 J­Code 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 super­classe
La super­classe généralise ses sous­classes
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 super­classe>
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 mot­clef 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
…non­ordonnée !
Opérations :
–
Création
–
–
Ajout d’un élément
Suppression
–
Recherche
–
Vide/non­vide
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 sous­jacente
–
Curseurs sur des strucures non­ordonné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
Téléchargement