ENSTA : cours IN204 Introduction JAVA et UML - PowerPoint PPT Presentation

1 / 47
About This Presentation
Title:

ENSTA : cours IN204 Introduction JAVA et UML

Description:

Anciennement OAK, projet Green chez Sun, D cembre 90, de 3 30 pers. ... contr le num riques et les ordinateurs. Comment ? : mettre ensemble des technologies ... – PowerPoint PPT presentation

Number of Views:72
Avg rating:3.0/5.0
Slides: 48
Provided by: DASS5
Category:

less

Transcript and Presenter's Notes

Title: ENSTA : cours IN204 Introduction JAVA et UML


1
ENSTA cours IN204 Introduction à JAVA et UML
  • Thierry Bommart
  • DASSAULT AVIATION
  • DGT/DPR/EOS
  • thierry.bommart_at_dassault-aviation.fr
  • 01.47.11.54.93

2
Plan du cours 6
  • Petit historique et vue d'ensemble
  • Réflexivité
  • Principe, Philosophie, Pratique.
  • Sérialisation
  • But, Principe, exemples
  • Des conteneurs les Collections
  • Principes, Implémentations, Exemples
  • Sécurité et le Système des ClassLoaders
  • principes, cas d'utilisation

3
JAVA?
  • Un développement
  • collégial..
  • pour un spectre d'applications
  • .immense !

4
Petit historique.
  • Anciennement OAK,
  • projet Green chez Sun, Décembre 90, de 3 à 30
    pers.
  • sujet
  • convergence entre les appareils domestiques
  • à contrôle numériques et les ordinateurs
  • Comment ?
  • mettre ensemble des technologies existantes

5
  • Résultat

6
  • Résultat
  • Un PDA couleur, sparc, wireless et réseau,
    PCMCIA,
  • audio codecs, mini Unix, flash RAM, . Et...
  • un nouveau langage
  • objet, dynamique, hautes performances,
  • neutre architecturalement, multi-thread, garbage
    collecté,
  • interprété, robuste, distribué, sûr, et petit.
  • Une librairie de classes graphiques
  • (esprit télécomande TV intéractive)
  • Un protocole de téléchargement d'objets actifs
  • mises à jour, show-me-more etc...

7
un spectre d'applications immense !
Réflexion sérialisation collections sécurité
Cours 6
Cours 9
Exceptions threads
Cours 10
communications
Cours 12
IHM
Cours 13
Java2D, 3D infrastructure
8
La Réflexivité
9
  • Introspection
  • Un objet peut être  exploré  sans être connu à
    priori
  • Le JDK offre une API complète
  • Exemples dutilisation
  • Débuggers,
  • Environnements danalyse, espions
  • Beans..
  • Moyens
  • La Classe dun objet quelconque EST un objet
  • Les Champs dune classe SONT des objets.
  • Les méthodes d'une classe SONT des objets
  • manipulables !!

10
Philosophie de la réflexivité
1
Java.lang.reflect
Votre programme
un ObjetQuelconque
Objets méthodes
)
(
(
)
Objets attributs
2
Objet  Classe de ObjetQuelconque 
11
Manipulations de base
Dans un source Java if (monObjet instanceof
MaClasse) Vérifie si l'objet monObjet est bien
du type (ou sous-type de) MaClasse méthode de
java.lang.Object public final Class getClass()
Renvoie la classe de l'objet (un objet de la
classe Class !) méthode de java.lang.Class
public String getName() Renvoie le nom dune
Classe
12
Accès aux champs dun objet
  • méthodes de java.lang.Class
  • public Field getDeclaredFields()
  • throws
    SecurityException
  • Retourne un tableau des champs non hérités.
  • Que peut on faire avec un Objet  Field  ?
  • demander son nom String getName()
  • demander son type Class getType()
  • demander ses  modifieurs  int getModifiers()
  • accéder en lecture et en écriture au contenu du
    champ
  •  xxx getxxx  ou  Object get(Object obj) 
  •   void setxxx  ou void set(Object obj, Object
    value) 

13
Accès aux méthodes
  • public Method getDeclaredMethods()
  • throws
    SecurityException
  • Retourne un tableau des Méthodes non héritées.
  • Que peut on demander à un objet méthode ?
  • demander son nom String getName()
  • demander son type de retour Class
    getReturnType()
  • demander le type (et le nombre) de ses paramètres
  • Class getParameterTypes()
  • On peut linvoquer 

14
Accès aux constructeurs et aux interfaces
  • méthodes de java.lang.Class
  • public Class getInterfaces()
  • Retourne un tableau des Interfaces publiques
    directes.
  • public Constructor getConstructors()
  • throws
    SecurityException
  • Retourne un tableau des Constructeurs publics.

15
  • java.lang.reflect contient et définit les Classes
  • Field
  • Array (création dynamique de tableaux)
  • Method
  • accès à la réflexivité
  • sous contrôle du security manager.

16
La sérialisation
17
Quest-ce que cest ?
  • Linéarisation
  • (écriture de graphes dobjets sur disques,
    bandes, tableau doctets, net..)

Bandes
disques
réseau
Graphe d'objets
18
Comment ?
  • classes de flux
  • ObjectOutputStream flux de sérialisation
  • ObjectInputStream flux de désérialisation
  • interface serializable doit être implantée
    (vide) pour être sérialisé

19
Que stocke-t-on ?
  • le nom et une clé (checksum) de la classe
  • tous les champs (de données) sérialisables

20
Exemple de code écriture
  • Try
  • FileOutputStream out new
    FileOutputStream("leFichier.data")
  • ObjectOutputStream s new ObjectOutputStream(out
    )
  • s.writeObject("Today")
  • s.writeObject(new Date())
  • s.flush()
  • catch..

21
Exemple de code lecture
  • Try
  • FileInputStream in new FileInputStream("leFichi
    er.data")
  • ObjectInputStream s new ObjectInputStream(in)
  • String today (String)s.readObject()
  • Date date (Date)s.readObject()
  • catch (java.lang.ClassNotFoundException
    exc).
  • catch (StreamCorruptedException exc) .
  • catch (IOException exc) ...

22
Cohérence du graphe d'objets
  • Cohérence du graphe d'objets reconstruit lors de
    la relecture
  • gt
  • Parcours récursif des références de l'objet
    "racine" vers les objets référencés et écriture
    de ceux-ci.

23
Attention.
  • Si quelque chose change dans vos
    classes.(attributs en /en -, compilateur)
  • gt
  • JAVA refusera de recharger vos "vieux" objets
    sérialisés -gt mécanisme de protection par le
    "serialUID"

24
Les Collections
25
  • Formellement
  • Collection ensemble
  • 2 types Set (ensemble) et Map (couples
    clef-valeur)
  • Exemples de Set
  • Lettres de lalphabet, Mots réservés de Java,
    Composants dans un Container
  • Exemples de Map
  • Adresse IP ? nom DNS, Key -gt database records,
    dictionnaire mots -gt signification..)
  • Intérêt
  • Encapsule à la fois les structures ET les
    algorithmes qui les manipulent...

26
Hiérarchie des Interfaces
Collection
Map
duplications autorisées
Set
List
SortedMap
duplications interdites
duplications autorisées Index de position
SortedSet
27
(No Transcript)
28
Interface Collection
  • Opérations de base ajout/retrait (un retrait ne
    retire quun élément)
  • boolean add(Object element)
  • boolean remove(Object element)
  • Requêtes
  • int size()
  • boolean isEmpty()
  • boolean contains(Object element)
  • Iterator iterator() pour parcourir la collection

29
  • Autres opérations groupe
  • boolean containsAll(Collection collection)
  • Optionnelles
  • boolean addAll(Collection collection)
  • void clear()
  • void removeAll(Collection collection)
  • void retainAll(Collection collection)
  • Tout nétant pas implémenté
  • UnsupportedOperationException
  • (RuntimeException et pas Exception)

30
  • Iterator
  • boolean hasNext()
  • Object next()
  • void remove() (enlève le dernier élément next())
  • Exemple ditération

Collection collection Iterator iterator
collection.iterator() while(iterator.hasNext())
Object element iterator.next() if(removalCheck(
element)) Iterator.remove()
31
Interface Set
  • Etend collection mais duplications interdites
  • (les implémentations concrètes utilisent la
    méthode equals())
  • Sous interface de Set
  • SortedSet maintient un ordre dans ses éléments
  • 2 implémentations concrètes
  • HashSet
  • ensemble simple
  • TreeSet
  • Collection ordonnée qui implémente SortedSet

32
Exemple.
import java.util. public class ExempleSet
public static void main(String args) Set set
new HashSet() set.add("Bernard")
set.add("Elisabeth") set.add("Gilles")
set.add("Elisabeth") set.add("Zebulon")
set.add("Clara") System.out.println(set) //
Bernard, Zebulon, Clara, Elisabeth,
Gilles Set sortedSet new TreeSet(set) System
.out.println(sortedSet) // Bernard,
Clara, Elisabeth, Gilles, Zebulon
33
Interface List
  • collection ordonnée, duplications autorisées,
    opérations dindexation
  • Ajouts/retraits
  • Insertion délément ou de collection,
    consultation délément, retrait délément,
    remplacement délément
  • Indexation
  • Recherche délément avec retour dindex si
    trouvé
  • Sous listes
  • List sublist(int fromInInclus, int toInExclus)
  • Les changements sur les sous-listes (add, remove,
    set..) ont un effet sur la liste dorigine.

34
  • ListeIterator nouveau type qui étend Iterator
    avec parcours bidirectionnel

Exemple List list ListIterator iterator
list.listIterator(list.size()) while(iterator.has
Previous()) Object element iterator.previous()
// traitement de element...
35
Deux implémentations de List...
  • ArrayList
  • Optimale pour gestion accès aléatoire, sans
    ajout/retrait ailleurs quà la fin.
  • LinkedList
  • Pour ajouts/retraits fréquents en milieu de
    liste, accès séquentiels...
  • Six méthodes supplémentaires de gestion des
    extrémités
  • addFirst, addLast, getFirst, getLast,
  • removeFirst, removeLast

36
Interface Map
  • Ensemble de relations clef - valeur, clef
    unique
  • Opérations daltérations
  • Object put(Object key, Object value)
  • Object remove(Object key)
  • void putAll(Map mapping) void clear()
  • Requêtes
  • Object get(Object key)
  • boolean containsKey(Object key)
  • boolean containsValue(Object value)
  • boolean isEmpty() int size()

37
Le tri
  • Implantation du tri au cur du JDK 1.2
  • Ex String et Integer implémentent linterface
  • java.lang.Comparable
  • Permet de décrire un ordre  naturel 
  • Lors dun tri, appel de ...
  • public int compareTo(Object element)
  • lt 0 si this avant element
  • gt 0 si this après element
  • 0 si même position

38
  • Classe non prévue pour être Comparable ?
  • Utilisation dun objet  tiers  qui prend en
    charge la comparaison entre deux objets
  • Cet objet tiers doit implémenter
  • java.util.Comparator
  • public int compare(Object objet1, Object objet2)
  • Même signification que  compareTo , méthode de
    java.lang.Comparable

39
Exemple
class Restaurant . // .. public class
GuideMichelin implements Comparator public
int compare(Object rest1, Object rest2) double
iqual1 (Restaurant)rest1.formuleMagique() doub
le iqual2 (Restaurant)rest2.formuleMagique() r
eturn (int) (iqual1 - iqual2)
.... //ailleurs ... List listeRestos
... GuideMichelin guide new GuideMichelin
() Collections.sort(listeRestos, guide)
cast
40
Le Système des ClassLoaders
41
Sécurité en Java
  • Système des ClassLoaders ()
  • Vérification des fichiers class avant exécution
  • Mécanismes de sécurité dans la JVM
  • Security manager () et lAPI Java.
  • (1) et (2) customisables souplesse (au prix
    dune certaine complexité).

42
  • Quest-ce quun ClassLoader ?
  • Un programme java ensemble de classes chargées
    à la demande...
  • QUI charge ?
  • Le(s) ClassLoader(s)
  • Un ClassLoader est écrit en JAVA
  • Vous pouvez créer le vôtre.

43
  • Plusieurs ClassLoaders par défaut (JDK 1.2)
  • bootstrap class loader
  • Sert à charger au minimum les classes de l'API
    java.
  • Localisation des données binaires laissée libre à
    l'implémentation
  • Standard extensions class loader
  • Sert à charger les extensions dans lib/ext
  •  user defined  class loader
  • Créé automatiquement
  • Charge les classes en exploitant le CLASSPATH
  • Hiérarchie
  • ClassLoaders chaînés dans une relation de
    délégation.

44
Classloaders chaînés
bootstrap class loader
Charge les classes du runtime dans rt.jar
Standard extensions class loader
Charge les classes des jar dans lib/ext du JRE
user class loader
Charge les classes dans le chemin spécifié dans
la propriété java.class.path
network class loader
45
  •  Etanchéité 
  • Plusieurs classes chargées par des classLoader
    différents résident dans des espaces de noms
    différents.
  • runtime package
  • Ensemble de types qui appartiennent au même
    package ET chargés par le même classLoader.
  • Exemple (sécurité)
  • Aucun accès aux classes protected entre
    java.lang.Virus (chargé par un userClassLoader)
    et java.lang.Object (chargé par bootstrap
    ClassLoader)) pas le même runtime package

46
Namespace 1
Namespace 2
Avion
. . . Avion . . Moteur . .
. . . Voiture . . Moteur . .
Voiture
Moteur
Moteur
Types dans la zone des méthodes
Classloader 1
Classloader 2
47
  • Pourquoi écrire un autre ClassLoader ?
  • Celui par défaut ne charge les classes QUE depuis
    le système de fichier local.
  • Il peut être intéressant de charger des
    classes...
  • depuis le réseau,
  • en les  trustant  grâce à une clef
  • en les décryptant, ou décompressant à la volée
  • créées dynamiquement en fonction des besoins.
  • Bref tous les cas où on crée du bytecode java
    qui doit être intégré à votre application.
  • Deux exemples connus de ClassLoaders
     customisés  Appletviewer, Navigateurs.
Write a Comment
User Comments (0)
About PowerShow.com