Formations Unix, C, Java

Présentation

francais et anglais.

Supports de cours

Les supports de cours sont constitués par des diaporamas. Étant disponibles au format HTML, ils peuvent être visualisés sur chacun des écran utilisées par les participants ou présentés avec un rétroprojecteur.

Documentation

Une copie de la majeure partie de ces documents sera laissée à disposition des participants ainsi que les jeux d'exercices associés.

UNIX C JAVA


Diaporama UNIX Niveau: introduction
Aucune connaissance parituliere n'est nécessaire
Structure
Diaporama d'introduction:
- Syntaxe, Logging, Home, Repertoires et fichiers, Compression, Permissions, groupes, ...
Mise en pratique:
- Repertoires et fichiers
- Entrees-sorties
- Securite
- Interpreteur de commande: Shell
- Editeurs de fichiers
- Shell scripts

Diaporama C Niveau: introduction
La pratique préalable d'un autre langage de programmation est recommandée
Structure
Diaporama d'introduction:
- Rappel sur les commandes Unix de base
- Edition, compilation et execution
- Operateurs et entrees / sorties
- Executions conditionnelles et boucles
- Fonctions
Exercices:
- Structure de controle d'execution
- Initialisations, comparaison
- Functions, variables et prototypes
- Le Preprocessor
- Chaines de caracteres, tableaux et pointeurs
- Entrees / sorties - standards et fichiers
- Structures de donnees
- Allocation dynamique
- Manipulation des Characteres et champs de Bit
Programmation avancee
- Premier programme
- C avec UNIX : Edition, compilation, make, lint, execution
- Constantes, Variables et Tableaux
- Expressions et Operateurs
- Controler le flux d'execution
- Fonctions C
- Entrees-sorties et fichiers
- Donnees Structurees
- Le Preprocessor
- Fonctions de la librairie Unix
- Precedence des operateurs
- Caracteres speciaux
- Mise en forme des entrees-sorties
- Mots cle

Diaporama JAVA Niveau: introduction
Documents en francais
La pratique prealable d'un autre langage de programmation est nécessaire
Structure
Programmation sur la Machine virtuelle java
- Les JVM Internet et la Plate-forme Java
- Architecture d'un programme Java
- Chargement dynamique des classes
- Applications et Applets
Qu'est-ce qu'un objet ?
- Classes et instances
- Les methodes
- Les variables
- Initialisation et affectation d'une variable
- Encapsulation
- Constantes nombres et caractere
- Valeurs par defaut
- Reference d'un objet
- Le Gargbage Collector ou Ramasse-miettes
Le typage des données en Java
- Forcer un type en Java
- Structure lexicale du langage Java
- Operateurs
- Tableaux
- Paramètres de la ligne de commande
- Chaines de caracteres
Programmation structuree
- Blocs d'instructions
- Portee des identificateurs
- Expressions conditionnelle et boucles
- Paramètres et valeurs de retour des methodes
- Recursivite des methodes
- Paquetages
- Principaux paquetages du SDK
- Recherche des classes par la JVM, le Classpath
- Modularite et Encapsulation
- Vers une programmation par composants

Diaporama complements
Architecture interne des objets d'une application
  • Encapsulation: Cacher l'implémentation: "Boite noire"
  • Protection: Contrôler l'acces aux informations de la "Boite noire"
  • Réutilisabilité: Créer des objets fonctionnels
  • Compléments sur le langage Java
    Classes et interfaces internes
    Accessibilité des classes
    Classes internes static et non static
    Avantage des classes internes
    Classes internes anonymes
    Interfaces internes
    Pourquoi cloner un objet ?
    Clonage de surface ou clonage en profondeur
    Libération des ressources: Méthode finalize()

    Diaporama heritage Architecture fontionnelle d'un programme "OBJET"
  • Initialisation d'un objet: Ensemble de ressources fonctionnelles
  • Polymorphisme: Fonction aparentées - pareil, autrement, des plus et des moins
  • Interfaces: Le Multi-Héritage - Un contrat de services assurés
  • Le point de vue du compilateur, celui de la Machine Virtuelle
  • Implémentation et Délégation - Polymorphisme ou Réutilisation
  • Héritage, classes abstraites et interfaces
    - Réutilisation par l'héritage
    - Vocabulaire
    - Compléments sur les constructeurs d une classe
    - Initialisations au chargement d une classe
    - Initialisations à la création d une instance
    - De quoi hérite une classe ?
    - Protections des variables
    Mécanisme du polymorphisme
    - Redéfinition et surcharge
    - Cast : conversions de classes
    - UpCast : classe fille classe mère
    - DownCast : classe mère classe fille
    - Downcast pour récupérer les éléments d une liste
    - cast et late binding
    - Classe final (et autres final )
    - Classes abstraites
    - Classes et méthodes abstraites
    Interfaces
    - Définition des interfaces
    - Classe qui implémente une interface
    - A quoi servent les interfaces ?
    - Polymorphisme et interfaces
    - Accessibilité des interfaces
    - Implémentation de plusieurs interfaces
    - Les interfaces comme types de données
    - Cast et interfaces
    - Héritage d interfaces
    - Utilisation de l héritage
    Délégation, composition et réutilisation
    - Héritage multiple avec les interfaces
    - Inconvénients de l héritage
    - Avantages de l héritage
    Précisions sur le mécanisme du « late binding »
    - Quelle méthode sera sélectionnée par le compilateur
    - Quelle méthode sera exécutée par la JVM

    Diaporama exceptions Traitement des erreurs et incidents d'execution
  • Introduire le déterminisme dans toute circonstance prévisible
  • Trouver le bon responsable du traitement de chaque incident
  • Exceptions
    - Mécanisme de traitement des exceptions
    - Traitement par défaut des exceptions
    - Exemples de traitements dans un bloc try-catch
    - Les classes d erreurs/exceptions
    - Quelques exceptions du JDK, contrôlées par le compilateur
    - Clause finally
    - Lancer une exception
    - Créer une nouvelle classe d exception
    - Compléments sur les exceptions
    - Messages d'erreur

    Diaporama gui La partie visible des applications et Applets
  • Fenêtres principales
  • Les composants de ces fenêtres
  • Programation évênementielle: Les mécanismes d'interaction avec l'utilisateur
  • Architecture MVC: Distribution des rôles: l'application, l'utilisateur, le clavier, la souris, et l'écran
  • Mise en oeuvre des outils graphiques
  • Interfaces utilisateur
    Programmation conduite par les événements
    Boîtes à outils graphiques
    Swing ou AWT ?
    Paquetages principaux
    Classe java.awt.Toolkit
    Classes de base de Swing
    Composants lourds et légers
    Les Containers
    Gestionnaires de mise en place
    La solution Java pour traiter les événements: les écouteurs
    Classes d'événements
    Relation écouteurs - écoutés
    Adaptateurs
    Événements clavier
    Focus
    Architecture des applications avec interface graphique
    Séparation du GUI et des classes métier
    Architecture MVC
    Architecture avec UI delegate
    Pluggable Look and feel
    Un exemple d'utilisation des modèles: les listes
    Dessiner
    Système de coordonnées
    Surface disponible pour l affichage
    Couleurs et polices de caractères
    Calcul de la taille d un texte
    Images
    Chargement d'une image
    Images et applets

    Diaporama gui_swing SWING: Une interface utilisateur vraiment portable
  • Restructuration des composants visuels d'une application Java
  • Une achitecture plus élaborée - Un comportement plus prévisible à l'écran
  • La panoplie des interface utilisateur: Conteneurs, menus et composants
  • Composants de base des GUI en Java
    - Classe JComponent et ses -classes
    - Fonctionnalités de base des composants
    - Boutons
    - Code pour un bouton
    - Écouteur pour un bouton
    - Aspect visuel
    - Boîtes à cocher ItemListener
    - Boutons radio
    Composants pour la saisie de texte
    - Arbre d'héritage
    - JTextComponent
    - JTextComponent
    - JTextField
    - JPasswordField
    - JTextArea
    - Ecouteur pour JTextArea
    - Composants texte et threads
    Fenêtre de dialogue
    - Utilisation de JOptionPane
    - Types de messages
    - Franciser une fenêtre de dialogue
    - Exemple de JFileChooser
    - Filtrer les fichiers
    - Menus et barres d'outils
    - Mnémoniques et accélérateurs
    - Attacher des actions à un menu
    - Invalider des choix de menus
    - Menus popup
    Swing et threads
    - Event dispatch thread
    - Traitements longs effectués par les écouteurs
    - Swing n'est pas «thread-safe»
    - Utilisation de invokeLater() et invokeAndWait()
    - Classe SwingWorker
    - Barres de progression
    - Ascenseur (barres de défilement)
    - ComboBox
    - JSlider
    - SplitPane
    - Onglets
    Décorations Bordures et Bulles d'aide
    - Classe SwingUtilities: Principales fonctionnalités
    - Détails sur les JFrame
    - Afficher la hiérarchie des containers
    Une applet-application
    - Pattern «Observateur - Observé»

    Diaporama Entrées-Sorties Les moyens d'accès aux ressources extérieures: Fichiers et autre programmes
  • Les flux de données: Fichiers, filtres, analyse lexicale et compression
  • Acces Internet: Les URL
  • Entrées-sorties
    - Flots (streams)
    - Paquetage java.io
    - Filtres
    - Traitement des exceptions
    - Codage
    - Ecriture-lecture dans un fichier de texte
    - Analyse lexicale
    - Fichiers à accès direct
    - Les pipes (tubes)
    - Entrées-sorties sur clavier-écran
    - Portabilité
    Internet
    - Classe URL (Uniform Resource Locator)
    - Principaux protocoles
    - Lire le code HTML d une page Web
    - Mise en forme des nombres
    - Mise en forme des dates
    Sérialisation
    Compression/décompression

    Diaporama system Interaction avec le système
  • Accès aux fichiers de paramètrage
  • Déploiement et utilisation des applications Java
  • Interface avec le système
    - Fichiers de ressources
    - Exécuter un programme externe
    - Fichiers Java ARchives
    - Fichier MANIFEST des fichiers .jar
    - Signature d un fichier jar
    - Les propriétés
    - Valeurs de propriétés données sur la ligne de commande
    - Fichiers de propriétés
    - Ressources
    - Interface avec un autre langage

    Diaporama threads Plusieurs fils d'exécution pour plus de souplesse
  • Distribution des tâches: L'IHM reste disponible pendant les phases de traitement
  • Synchronisation des processus: organisation des rendez-vous entre tâches
  • Arbitrage des modifications concurentielles de ressources: Object Monitor
  • Threads
    - Utilité du multitâche
    - Interface Runnable
    - Classe Thread
    - 2 façons de créer un contrôleur de thread
    - Vie du contrôleur de thread
    Mécanisme de synchronisation des Threads
    - Moniteur d un objet
    - Problèmes de portabilité
    - Utilisation de wait
    - Affectations atomiques
    - Cycle de vie d'un thread
    Priorités
    - Partage de variables par les threads
    - Volatile
    - Autres classes liées aux threads
    Timers
    - Classes Timer et TimerTask
    - Timers et swing
    - Méthodes pour utiliser des classes non « thread-safe »
    - Collections synchronisées

    Diaporama collections Les outils de manipulation des ensembles d'objets
  • Listes, dictionnaires, queues
  • Optimisation du traitement de grands volumes de données
  • Classer, parcourir et modifier les ensembles de données
  • Interfaces et Classes
    - Hiérarchie des interfaces
    - Les classes
    - Classes concrètes d'implémentation des interfaces
    - Les classes utilitaires
    - Collections du JDK 1.1
    - Exemple de liste
    - Exemple de Table de Hachage
    - Interface Collection
    - Utilité des méthodes optionnelles
    - Constructeurs
    - Transformation en tableau
    - Définition de l'interface Set
    - Définition de l'Interface List
    - Interfaces et implementation
    - Fonctionnalités de la Classe ArrayList
    - Exemple d utilisation de Iterator
    - Interface Map
    - Récupérer les éléments d une Map
    - Récupérer les clés d une Map
    - Interfaces et classes d implementation
    - Classe HashMap: Table de hachage
    Principe général pour la réutilisation
    - Variables
    - Paramètres des méthodes
    - Type retour des méthodes
    - Compatibilité avec les classes fournies par le JDK 1.1
    - Classes du JDK 1.1
    - Exemple d utilisation de Vector, Enumeration et HashTable
    Tri et recherche dans une collection
    - Trier une collection
    - Interface Comparable
    - Interface Comparator
    - Exemple de comparateur
    - Rechercher dans une liste triée
    - Synchronisation
    - L agrégation en notation UML

    Diaporama securite Politique de sécurité d'exécution des applications
  • Paramètrage des privilèges accordé aux programmes bien identifiés
  • Processus d'authentification du code des objets mise en oeuvre
  • Sécurité en Java 2
    - Ecrire des programmes sûrs
    - Option verify de la commande java
    - Protection par le chargeur de classes
    - La sécurité dans les différentes versions
    API et outils pour la sécurité
    - Acteurs de la politique de sécurité
    - Choix du gestionnaire de sécurité
    - AccessControlException
    - Algorithme pour le contrôle d'accès
    - Code privilégié
    - Exemple de fichier de police de sécurité
    - Entrée grant
    - Messages d'erreur liés à la sécurité
    Généralités sur la cryptographie
    - Vocabulaire
    - Principaux algorithmes de chiffrement
    - Propriétés des signatures à clés asymétriques
    - Comment signer
    - Utilisation des certificats
    La chaîne de vérification
    - Comment obtenir un certificat
    - Outils pour la sécurité
    - Pratique de la signature avec les outils fournis par Sun
    - Créer les clés
    - Obtenir un certificat
    - Exporter un certificat
    - Signer un fichier jar
    - Fichiers jar scellés
    - Interface Guard
    - Filtrage des utilisateurs

    Diaporama rmi Remote Method Invocation
  • L'architecture de programme distribué en Java
  • Découpage côté client - coté serveur
  • RMI (Remote Method Invocation)
    - Objet distant
    - Principe de fonctionnement des communications dans RMI
    - La souche (ou stub)
    - Squelette
    - Enregistrement et localisation des objets distants
    - URL des objets distants
    - Interaction client-enregistreur
    - Localisation des objets distants
    - Chargement dynamique des classes
    - Police de sécurité
    - RMI et applets «untrusted»
    - RMI et les threads
    - RMI et les sockets
    - Ramasse-miette (grabage-collector)
    - Classes et interfaces
    - Ecriture du serveur
    - Ecriture du client
    - Mise en place de l"e;application
    - Les paquetages
    - Principales exceptions
    - RMI ou sockets ?
    - Exceptions «distantes»
    - Clonage des objets distants.