Cours d ’Informatique, DEUG 2 MASS/MIASS UVSQ Présentation générale, rappel de notions acquises, présentation du projet. Gestion de fichiers, application en JAVA Gestion des évènements, gestion d ’interfaces en JAVA Gestion des erreurs et exceptions. Applets et HTML Notions de théorie de la complexité Arbres et récursivité Notions de théorie des graphes et applications
NOTION ACQUISES : - problèmes à résoudre - algorithme, boucles - structures de données, variables et type - classes et objet - langage, compilation, interprétation - complexité d ’un algorithme - algorithmes de tri
ENTIER : - qui forme un tout, à qui rien ne manque - nombre formé d ’une somme d ’unités ENTIER : - k octets consécutifs en mémoire - comparaison, somme, produit, .. avec entiers et réels
Définir le mot Définition générale et complète Définir par les besoins Définir une entité : Implantation mémoire Notions de type : Opération réalisable Programmation orientée par les traitements : programmes impératifs Programmation orientée par les données : programmes objets
RAPPEL DE NOTIONS - Algorithmes de TRI : 2 principes - Classes et instances (=objets) - Gestion mémoire (application JAVA)
Fichiers et entrées-sorties - Notions de fichiers . - Fichiers en JAVA . - Fichiers et flots . - Exemples JAVA .
NOTIONS DE FICHIERS : - pour un humain analogie avec la bureautique 3 types = lisible (par un éditeur), de données (par un programme), exécutable (par le système) - pour un programme mode d ’accès, gestion système, notion de flux exemples pour COBOL, C, JAVA - pour le système (exemple d ’UNIX) unité de stockage, pas de type à priori
COBOL, langage C, JAVA Enregistrements données formatées flux Opérations de base : - Lecture, recherche - Ecriture, Mise à jour - Tri, fusion Type d ’accès : - séquentiel - séquentiel indexé - direct Stockage : - disque - mémoire - mémoire virtuelle
Remarques en vrac : - lien format - type - logiciel - notions de moulinettes ou traducteurs - vision UNIX du « tout fichier »
Entrées-Sorties en JAVA Trois types d ’entrée de données - Arguments du programme, - Saisies par l ’utilisateur, - Fichiers entrants FLUX (ou flots) Deux types de sortie de données - Affichage, - Fichiers sortants
Flux en JAVA : objet associé à une source et/ou une destination de données (interne ou externe) Deux types de flux : - standards (entrée, sortie, erreur) - défini (package java.io) Deux types d ’accès : - séquentiel (nature, sens, type) avec ou sans traitement - séquentiels indexés (classe RandomAccessFile) (position en #octets, bidirectionnel)
Nom du flux = indication globale Avec traitement : type de traitement/stockage Préfixe = Sans traitement : type de la source/destination Suffixe = nature (caractères ou octets) et sens (lecture ou écriture) SUFFIXES : Flux d ’entrée Flux de sortie flux de caractères Reader Writer flux d ’octets InputStream OutputStream
PREFIXE SANS TRAITEMENT (ou FILTRE) : Source ou destination Prefixe tableau de caractères CharArray flux d ’octets InputStream (OutputStream) chaine de caractères String programme Pipe fichiers File tableau d ’octets ByteArray objet Object
PREFIXE AVEC TRAITEMENT/STOCKAGE (ou FILTRE) Traitement Préfixe tampon Buffered concaténation de flux d ’entrée Sequence conversion de données Data numérotation des lignes LineNumber lecture avec retour arr. PushBack impression Print Voir package java.io
InputStream : classe générale de flux d ’entrée dont dérivent les autres (cf. aussi la classe OuputStream) InputStream flux1 = new FileInputStream (« file »); InputStream flux2 = new BufferedInputStream (flux1); InputStream flux3 = new LineNumberInputStream (flux2); InputStream flux4 = new DataInputStream (flux3); Flux4 : flot d ’entrée de données typées, dont on peut compter le nombre de lignes, lues depuis un buffeur capturant les données d ’un fichier « file »
FLUX ET FICHIERS Fichier « général » : Objet de la classe java.io.File Fichiers d ’octets : Objets des classes java.io.FileInputStream et java.io.FileOuputStream Fichiers de caractères : Objets des classes java.io.FileReader et java.io.FileWriter
File f = new File(« fichier.mp3 »); FileInputStream fis = new FileInputStream(f); DataInputStream dis = new DataInputStream(fis); Int a = dis.readInt(); short s = dis.readShort(); boolean b = dis.readBoolean(); BufferedReader entree = null; DataInputStream clacier = new DataInputStream(System.in); String nomFicEntr = clavier.readline(); entree = new BufferedReader(new FileReader(nomFicEntr));
Interface et Evènements - Principes de la programmation . Évènementielle . - Interface graphiques . - Interface et évènements en JAVA . - Dessiner en JAVA .
Programmation évènementielle : concevoir un programme comme une entité normalement inactive qui réagit de facon particulière à chaque événement (prévu) qui intervient. Capture ? PAS SEULEMENT Tant que 1=1 faire Tant que NON(Evt) faire Rien Selon que Evt=evt1: action1 Evt=evt2: action2 ….. Instruction bloquante ? NON Tant que 1=1 faire Saisir(X) Afficher(X) Appels Système
Logiciel STIMULI Système Act. 2 Act. 1 Act. 3 Act. 4 Exécutions non bloquante
Interface (Homme-Machine) : Application et/ou matériels permettant à un utilisateur et un programme de communiquer Interface graphique : interface logicielle consistant en un ensemble d ’éléments graphiques, dont certains interactifs Fenêtres, messages, boutons, sons,.. Clavier, souris, .., micros, ..
HISTORIQUE PASCAL : dessins sommaires Positions du curseur Capture retour/chariot C, C++ : associé à des outils externes, (Xmotif,..), dépendants du système JAVA : bibliothèque propre
Bouton 1 Bouton 2 Gestion d ’interface - affichage initial - raffraichissement - ... Evt Act. 1 Act. 2 Click + Posit. Gestion des Evènements Système
Dialog Choice Checkbox Window Frame Component Container Button Panel Fenêtres simples sans menu Fenêtres indépendantes Checkbox Window Frame Fenêtres principales Component Container Composition d ’autres composants Button Boutons Panel Applet Groupe d ’objet dans une fenêtre Canvas
Positionnement d ’éléments graphiques dans une fenêtre FRAME Utilisation du champs LayoutManager d ’un Container FlowLayout (gauche à droite, haut en bas) BorderLayout (Nord, sud, est, ouest, centre) GridLayout (grille carrées ) ... Valué par la fonction membre setLayout Ajout d ’un élément graphique dans une fenêtre FRAME Fonction membre add : add (Component c) add (Component c, int i) add (String s, Component c);
Import java.awt.*; class exemple1 { static public void main () { Window w= new Frame (« exemple »); w.setlayout (new FlowLayout ()); w.add(new Label (« UN »); w.add (« Center », new Label (« DEUX »)); w.resize (200,200); w.show(); } exemple UN DEUX
DEFINITION DE ZONES DE DESSIN - dessiner - écrire du texte - afficher une image Utilisation des objets de la classe Canvas Redéfinition obligatoire de la méthode de tracage : paint(Graphics G) G : objet de la classe Graphics associé au contexte graphique dans lequel on veut dessiner
GESTION DES EVENEMENTS Objet de java.awt.Event Fonction membre public boolean handleEvent Evènement 4 types possibles : - Souris - Clavier - Action - Autre Méthode de Gestion Spécifique
Gestion des erreurs et Exceptions - Types de gestion d ’erreurs . - Exceptions : principe en JAVA . - Exceptions en JAVA : classes et . Exemples .
GESTION DES ERREURS Ordinateur Système Processus Instruction 1 Appel Instruction 2 Instruction 3 Appel Primitive Instruction k opération
Processus X=Instruction 1 If X==-1 exit(-1); Instruction 2 X=Instruction 3 IF X==-1 { …. } ... IF Z>0 Instruction k Solution 1 : gérer au coup par coup
Processus In next part, possibly :err1, err2, err3 Instruction 1 Instruction 2 Instruction 3 Instruction k If err1 : action1 If err2 : action2 If err3 : action3
Capture et traitement des exceptions CATCH (ou de base) THROW (autom.) Toute exception doit être explicitement levée (mais pas forcément explicitement capturée) ex3 ex1 TRY Partie de code Système
Exceptions contrôlées (devant être capturées par le programme) Object Throwable Exception Error StackOverflowError OutOfMemoryError RuntimeException Exceptions contrôlées (devant être capturées par le programme) NullPointerException IndexOutOfBoundsException IOExceptionArithmeticException Capturée par le gestionnaire de base si pas d ’autre traitement prévu
try Bloc instructions try susceptible de lever des exceptions automatiquement ou par throw catch (ClasseException exceptionInterceptee) Bloc Instructions traitant l ’exception capturée ... Public class Clas2 { … public int fonct1 () throws Except1 { try { …. } catch (Exception e1) { throw new Except1 (e1,3); Clas2 v= new Clas2 (); try { … x=v.fonct1(); } catch (Except1 e) {