Modélisation Objet. Introduction à JAVA. Georges Linares IUP GMI Université d Avignon et des Pays de Vaucluse



Documents pareils
Programmer en JAVA. par Tama

as Architecture des Systèmes d Information

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Programmation Par Objets

Package Java.util Classe générique

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Une introduction à Java

Plan du cours. Historique du langage Nouveautés de Java 7

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Facultés Universitaires Notre-Dame de la Paix. Conception et Programmation Orientées- Object

Généralités sur le Langage Java et éléments syntaxiques.

Programmation en Java IUT GEII (MC-II1) 1

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Initiation à JAVA et à la programmation objet.

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

PROGRAMMATION PAR OBJETS

Premiers Pas en Programmation Objet : les Classes et les Objets

Remote Method Invocation (RMI)

TP1 : Initiation à Java et Eclipse

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Chapitre V. Les classes : Object, Vector, etc.

Java Licence Professionnelle CISII,

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Cours 1: Java et les objets

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr

TD/TP PAC - Programmation n 3

Chapitre VI- La validation de la composition.

Auto-évaluation Programmation en Java

Objets et Programmation. origine des langages orientés-objet

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

INITIATION AU LANGAGE JAVA

Héritage presque multiple en Java (1/2)

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

1 Définition d une classe en Java

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

TD/TP PAC - Programmation n 3

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

Java Licence Professionnelle CISII,

Chapitre 10. Les interfaces Comparable et Comparator 1

Présentation. Au programme. Fonctionnement. A l issue de ce module vous devriez...

Java c est quoi? Java pourquoi?

Java 1.5 : principales nouveautés

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Remote Method Invocation Les classes implémentant Serializable

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Langage Java. Classe de première SI

Threads. Threads. USTL routier 1

Bases du langage. Historique Applications et applets Éléments de base du langage Classes et objets Les exceptions

Programmation Orientée Objet application au langage Java Version Novembre 2007

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

Corrigé des exercices sur les références

JAVA. Introduction à la programmation objet avec java 1/4. Nadir BOUSSOUKAIA

RMI le langage Java XII-1 JMF

Génie Logiciel avec Ada. 4 février 2013

Support de cours et TD Programmation Orientée Objet

Java DataBaseConnectivity

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Chapitre 2. Classes et objets

Introduction au langage de programmation Java

Environnements de développement (intégrés)

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés)

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

4. Groupement d objets

Classe Interne, Anonyme & Enumération

Calcul Parallèle. Cours 5 - JAVA RMI

TP, première séquence d exercices.

Utilisation d objets : String et ArrayList

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Programmation MacOSX / ios

La JVM. La machine virtuelle Java. La JVM. La JVM

Initiation à la programmation orientée-objet avec le langage Java

INF 321 : mémento de la syntaxe de Java

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

OCL - Object Constraint Language

Design patterns. Design patterns - définition. Design patterns - avantages

Un ordonnanceur stupide


Introduction au langage Java

Cours d initiation à la programmation en C++ Johann Cuenin

Introduction au langage C

Programmation Objet Java Correction

Introduction. Les méthodes. Les méthodes. Identité et égalité. Identité et égalité. La copie d'objets. Identité et égalité.

Synchro et Threads Java TM

Dis papa, c est quoi un bus logiciel réparti?

La carte à puce. Jean-Philippe Babau

Création d objet imbriqué sous PowerShell.

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Derrière toi Une machine virtuelle!

2 e édition JAVA 5 et 6. Jérôme Bougeault. TSoft et Groupe Eyrolles, 2003, 2008, ISBN :

Apprendre Java en 154 minutes

Remote Method Invocation en Java (RMI)

Traduction des Langages : Le Compilateur Micro Java

Transcription:

Modélisation Objet 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

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

Objectifs La programmation internet Code mobile Problèmes : Portabilité et transportabilité totales Sécurité Gestion mémoire

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é

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!

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

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>

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>

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);

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)

Types de données : Types primitifs Manipulés par valeurs Types références Manipulés par référence Codage indépendant de la plateforme Indispensable pour la portabilité

Types primitifs byte short int long float double char boolean 8 bits 16 bits 32 bits 64 bits 32 bits IEEE 754 64 bits IEEE 754 16 bits Unicode True/false

Types références (complexes, composés)flo Vecteurs et matrices Int tab[]; // vecteur d entiers Int[] tabaussi; // idem! Float matrice[][]; //matrices de flottants Les tailles ne sont pas spécifiées à la déclaration Elles doivent être fixées par la méthode new 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

variables finales Leur valeur ne peut être fixée qu une fois Syntaxe : Final int t; Final float f = 0.0; T=3;

Les opérateurs Similaire au C++ +,, *, /, % +=, =, %=, >, <, <=, >=,==,!=!, &,, ^ &&!=, &=, =,?= <<, >>, >>>, <<=,

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} }

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

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)

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

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;

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){ };.} Georges Pile.redimensionner(3); Linares IUP GMI Université d Avignon et des Pays de Vaucluse

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()

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)

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(); }

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;. }

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 superclasse 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>

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

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

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!

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

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!

Constructeurs et héritage Invocation implicite : Constructeur par défaut Exemple : Class compte { float solde;} Class compte_rem extends compte { Float taux; Compte_rem() {};

Constructeurs et héritage Class cpte { float solde; } Class cpte_rem extends cpt { Float taux; Cpte_rem() {taux=5.5}; // OK Class cpte { float solde; Cpte(float s){solde=s;} }; Class cpte_rem extends cpte{ Float taux; Cpte_rem(){ taux=5.5; // ERREUR };

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;);};

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;

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;

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?

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

Les exceptions Solution JAVA (C++) : exceptions Mécanisme standard Gestion automatisée Modélisation objet des erreurs

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

Les exceptions Définition d une classe d exception Class err_num extends exception{ String msg; }

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;

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

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;); }

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

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

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»); }

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

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»); }

Les exceptions Hiérarchie des classes d exception Object Throwable Error Exception RunTimeException IOException

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

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

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

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 }

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

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

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

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

Classes primitives Les types primitifs sont manipulés par valeur Ils sont encapsulés dans des classes : Integer Float

Modélisation Objet Support JAVA Composants réutilisables Motivation Économie de codage Sureté de fonctionnement Efficacité Objectif essentiel de l approche objet!

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

Modélisation Objet Support JAVA Composants réutilisables Séquences Ensembles Fonctions Collections

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

Modélisation Objet Support JAVA Composants réutilisables : les séquences Opérations sur les séquences : Éventuellement : Comparaisons Concaténations Extractions Fusions

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();

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);

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

Modélisation Objet Support JAVA Composants réutilisables : les ensembles Opérations sur les ensembles: Réunion Intersection Différence symétrique Inclusions

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?

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

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);

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)

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

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();

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

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

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);

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

Modélisation Objet Support JAVA Les collections Les interfaces dérivées : List Classes implémentant List : ArrayList LinkedList Vector AbstractList

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

Modélisation Objet Support JAVA Les packages Critères de regroupement Fonctionalités Niveau de traitement Domaine Variantes d implémentations

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

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

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

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)

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

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;