Plan du cours La sérialisation: – comment stocker et restaurer les Objets? Les interfaces graphiques et la programmation évènementielle. –Comment concevoir.

Slides:



Advertisements
Présentations similaires
La programmation orientée objet avec Java L3-MIAGE Plan
Advertisements

Sérialisation des objets
Flots et Sérialisation des objets
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen
La classe String Attention ce n’est pas un type de base. Il s'agit d'une classe défini dans l’API Java (Dans le package java.lang) String s="aaa"; // s.
C.
Programmer en JAVA par Tama
JAV - TD 6 Structures de données JAVA
Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV1 JAV – TD 5 Lhéritage en Java.
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
Principes de programmation (suite)
Classes locales classes définies à l'intérieur d'un bloc de code,
Programmation orientée objet
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
COURS DE PROGRAMMATION ORIENTEE OBJET :
JavaBeans Réalise par: EL KHADRAOUY TARIK AOUTIL SAFOWAN.
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
Langage Oriente Objet Cours 4.
Principes de programmation (suite)
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
77 Utilisation des classes (suite). 7-2 Objectifs A la fin de ce cours, vous serez capables de : Définir des méthodes surchargées dans une classe Fournir.
Système d’Exploitation
POO : Objets et classes (Rappels)
1 Objectifs de ce cours (I21) Cours JAVA (I21) -Licence 1 Semestre 2 / Y.Laborde Résumé du cours précédent.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 5 – Héritage, Interfaces et Listes génériques.
Interfaces : comment classifier ?
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen
Programmation concurrente
Design Pattern: Decorator
IFT 6800 Atelier en Technologies d’information
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
COURS DE PROGRAMMATION ORIENTEE OBJET :
COURS DE PROGRAMMATION ORIENTEE OBJET :
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Développement dapplication avec base de données Semaine 10 : WCF avec Entité Framework Automne 2013.
1212 Entrée et sortie de fichiers Objectifs À la fin de ce cours, vous serez capables de : • Lire à partir de la console • Écrire sur la console.
J201 (JOC) Java Avancé juin 2007 ~ Brigitte Groléas ~
4 Introduction des objets. Les chaînes et tableaux
1 Fichers Binaires, Accès Direct et Objets. 2 Données binaires. Il s'agit ici de lire et écrire des données binaires par opposition à du texte. Pour ce.
LIFI-Java 2004 Séance du Mercredi 22 sept. Cours 3.
Cours n°3 rappels. POO-L3 H. Fauconnier2 Entrée-sortie public static void main(String[] args) { // sortie avec printf ou double a = 5.6d ; double b =
Cours 61 6 La sécurité, Portée, Visibilité Programmer avec sécurité.
Cours 7 Classes locales Clonage Divers: tableaux.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 6 – Exceptions.
Cours Les flux ou streams. Cours 162 Flux : objet possédant des méthodes capables de lire ou écrire des flots d’octets sur tout support (mémoire,
CEG3585/CEG3555 Tutorat 2 Hi ver 2013.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Les erreurs communes en Java.
Tutorat en bio-informatique
Entrées / Sorties.
Réaliser par: Sadok Amel Cheboui hassiba
Strings et Tableaux en Java
Les sockets.
Les classes présenté par: RAHMOUNE RIME / ZEKRI SELMA.
Schéma de conception Factory Method Exemple Sylvain Giroux.
Cours du 5 novembre.
Héritage H. Batatia. plan Notion (que signifie l’héritage) Ecriture en java Héritage multiple (interdit) Instanciation (partie propre et partie héritée)
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
1 Chapitre III (~70 transparents) Compléments. 2 Au sommaire de ce chapitre 1. Les fichiers Les classes utilitaires
Ingénierie des réseaux - Chapitre 2 bis Les sockets en Java
Fichier et Stream d’Entrée-Sortie IFT1025, Programmation 2 Jian-Yun Nie Version court par Douglas Eck; Version
Introduction à la programmation objet avec java
Héritage Conception par Objet et programmation Java
Classes abstraites, interface Classe interne Classes enveloppes
Généricité.
JAVA Les Entrées-sorties
L. Gurret – M. Herve – P. Mignon – J. Prarioz. Introduction  Dernière étape d’analyse  Cahier des charges, spécifications et conception orientée objet.
Master Réseaux et Systèmes Distribués (RSD) Algorithmique des systèmes
STREAMS (et fichiers).
Transcription de la présentation:

Plan du cours La sérialisation: – comment stocker et restaurer les Objets? Les interfaces graphiques et la programmation évènementielle. –Comment concevoir les écrans? –Comment programmer les évènements? –Comment développer une application en java? Les Threads ou les processus légers –Quest ce que la programmation parallèle. –Comment programmer les processus en java Les Applets : java sur le Web. –Comment utiliser java pour programmer vos pages.

Exemple Entrée/Sortie Sérialisation

problématique La portée de chaque variable est limitée au bloc de déclaration. A la fin de lapplication, les variables (objets) sont détruites par le GarbageCollector (perte de données). Certaines variables ou objets (pour des raisons applicatives) doivent persister à la fin du programme.

Exemple: gestion des employés On veut écrire un programme de saisie demployés. Solution: Class Employé Nom Prénom Adress …. ListPersonnels Employé[] list Add(Employé) Remove(Employé) Public static void main(String[] args) {ListPersonel base= new ListPersonel(); boolean fin=false; While(!fin) {// lire les données de lemployé data base.add(new Employé(data)); // lire décision de poursuite de lutilisateur fin= decision; } }// fin main piletas base ListEmployé liste Employé[] Employé ….. piletas base ListEmployé liste Employé[] Employé …..

Solution: Trouver le moyen de persister les données. Solution : utiliser un fichier pour stocker les données: –Définir un modèle de stockage des Objets –Définir le moyen de restauration des Objets –Exemple: public class MyClass { public void saveYourself(Writer o) throws IOException { … } public static MyClass loadYourself(Reader r) throws IOException { … } } InputStream ou FileWriter OutputStream ou FileReader

Limite de cette solution Le stockage de lobjet passe par le stockage de ses données membres. Chaque Objet membre doit appartenir à une classe qui implémente le même mécanisme. Impossible de passer par les interfaces (la méthode de restauration doit être static). La solution devient très complexe pour gérer les références

Problème de reférence emp loyé 1 emp loyé 2 emp loyé 3 Employé1 …… Patron: Employé3 …….. Employé2 …… Patron: Employé3 …….. Employé3 …….. emp loyé 1 emp loyé 2 emp loyé 3 Emp1. saveYourself(Writer o) Emp2. saveYourself(Writer o) Emp1=Employé.loadYourself(Reader r) Emp2=Employé.loadYourself(Reader r) Emp3=Employé.loadYourself(Reader r) empl oyé4

La sérialisation Le mécanisme offert par Java pour persister les données. Un format uniforme pour formater les objets sous forme dune séquence doctets. Il gère le problème de référence. Offre dautres mécanismes de personnalisation

Les Conditions nécessaires Le type de lobjet (Class) doit être déclaré public La classe doit disposer dun constructeur à zéro paramètres La classe doit implémenter linterface Serialisable Toutes les données membre doivent être « sérialisable »: type primitive ou des classes qui implémentent Serialisable. Les données membres static et static final ne sont pas sauvegardées

Implémentation de linterface Serializable Implémenter une interface induit à limplémentation de ses méthodes, Mais… Serializable ne définit aucune méthode. –Question1: A quoi sert une interface sans méthodes? –Réponse: Serialisable est une interface drapeau qui informe lenvironnement Java pour traiter la Classe de manière particulière. –Question2: pourquoi toutes les classes nimplémentent pas Serializable par défaut ? –Réponse: problème de sécurité (voire la suite).

Sérialiser un Object La Classe ObjectOutputStream. Elle prend en paramètre un OutputStream Utilise la méthode writeObject(Object) public class employé implements Serializable{………} ……… public class Sauvgarder{ public static void main(){ Employé emp1=new Employé(………); ObjectOutputStream out=new ObjectOutputStream( new FileOutputStream(fileName)) out.writeObject(emp1); Out.close …………}}

Restaurer un objet (« de-sérialiser ») Faut savoir à lavance le type de lobjet. Utilisé la classe ObjectInputStream. Prend un object InputStream. Utilise la méthode readObject(). Type de retour Object. Il faut savoir le type (pour le transtypage). Vous pouvez utiliser la méthode. getClass() pour savoir le type effectif. ObjectInputStream in= new ObjectInputStream( new FileInputStream(fileName)); Employé emp1=((Employé)in.readObject();

Exemple: problème de référence emp loyé 1 emp loyé 2 emp loyé 3 emp loyé 2 ObjectOutputStream out=new ObjectOutputStream( new FileOutputStream(fileName)) out.writeObject(emp1); out.writeObject(emp2); out.writeObject(emp3); Employé3 …….. Patron:null 2 2 Employé1 …… Patron: 1 Employé2 …… Patron: 3 2 ObjectInputStream in=new ObjectOutputStream( new FileInputStream(fileName)) emp1= ((Employé)in.readObject()); emp2= ((Employé)in.readObject());// ne crée pas dobjet emp3= ((Employé)in.readObject()); emp loyé 1 emp loyé 3 emp1 emp2 emp3

Aspects avancés Sécurité: –Une objet sérialisé est un fichier UTF(texte). –Un objet sérialisé peut être lu et modifié. le mot clé transient –Certaines données (non static) ne doivent pas être stockées (les valeurs calculées, mot de passe) –Le mot clé transient informe java de ne pas sérialiser la variable en question. public class Employé implements Serializable { ……………… private transient double salaire; // le salaire ne sera pas sérialisé}

En résumé: Désormais, il est possible de sauvegarder les variables objets. Implémenter linterface Serialisable Utilisez ObjectInputStream & ObjectOutputStream pour stocker et restaurer les objets. Les objets restaurés sont de type Object (transtypage). Faites attention lors de lhéritage, les classes mères doivent avoir des contructeurs à zéro paramètres……