[x]

OFPPT Maroc

Guide des formations professionnelles

Vous avez téléchargé 0 fois ce fichier durant les dernières 24 heures. La limite est fixée à 5 téléchargements.
Vous avez téléchargé 0 fichier(s) durant ces 24 dernières heures. La limite est fixée à 5 téléchargements.

Cours et exercices de programmation II

Télécharger

Cours et exercices de programmation II

Cours 2 : Exceptions

Lorsqu’une erreur est détectée, les exceptions permettent de :

• transférer le contrôle à un gestionnaire d’exception (exception handler)

• de passer une valeur quelconque décrivant l’erreur (p.ex. sa raison)

Lorsqu’on programme au moyen des exceptions, on peut effectuer deux actions :

• installer un gestionnaire d’exception, qui sera activé si une exception d’un certain type se produit, et ignoré sinon

• lever une exception, ce qui transfère immédiatement le contrôle au gestionnaire d’exception du bon type installé le plus récemment, ou à défaut termine l’exécution

En Java, on utilise l’énoncé try…catch pour installer un gestionnaire d’exceptions, et l’énoncé throw pour lever une exception. Les exceptions sont des objets comme les autres, à un détail près : ils doivent être des instances d’une sous­classe de

Throwable.

La classe Throwable possède quelques méthodes intéressantes :

• getMessage – fournit le message d’erreur

• getCause – fournit la cause de l’exception

• printStackTrace – affiche la pile d’appels

L'interpréteur cherche un bloc catch(){} à partir de l'endroit où l'exception a été créée en cherchant vers le bas. S'il ne trouve aucun bloc catch{}, l'exception est lancée dans le bloc de niveau supérieur, ainsi de suite jusqu'au bloc de la classe qui par défaut enverra l'exception au handler de l'interpréteur.

Gestionnaire qui s’applique à toutes les exceptions :

try { … } catch (Throwable e) { … }

Gestionnaire qui s’applique uniquement aux erreurs d’entrées­sorties :

try { … } catch (IOException e) { … }

L’énoncé try…finally permet de s’assurer qu’un morceau de code sera exécuté, même en présence d’exceptions, et même en cas de retour explicite de la fonction ! (return...) La gestion des exceptions est obligatoire sauf dans deux cas : les sous­classes de Error et de RuntimeException. Il est possible de chaîner les exceptions. Pour ce faire, toute exception possède une cause, qui est soit une autre exception, soit null. Le chaînage permet d’éviter que les exceptions ne détruisent l’abstraction.

Exemple :

Bloc try...finally :

private static int countLines(String fileName) throws IOException

//avertit la JVM que la fonction peut lever une IOException

//pas besoin de mettre un catch, quand on utilisera la fonction

//on sera obligé de try{}catch{} la fonction, autrement erreur

{

BufferedReader reader = new BufferedReader(new

FileReader(fileName));

try {

int count = 0;

while (reader.readLine() != null)

++count;

return count;

} finally {

reader.close();

}

}

Bloc try...catch :

public static void main(String[] args) {

if (args.length != 1) {

System.out.println('Usage: count ');

System.exit(1);

} try {

String name = args[0];

int lines = countLines(name);

System.out.println('Le fichier '+name +' contient

'+lines+' lignes');

}

catch (IOException e) {

//exécute le code suivant si le bloc try lève une IOException

//ou une autre exception « extends » à celle­ci, autrement

//passe le relais à l'interpréteur

System.out.println('Erreur E/S:\n'+e.getMessage());

…

Cours 3 : Généricité

class Pair {

public final F fst;

public final S snd;

public Pair(F f, S s) {

fst = f; snd = s;

}

}

Pair est une classe générique possédant deux paramètres de type, nommés ici F et S. Désormais, le compilateur signale une erreur lors d’une utilisation incorrecte de la paire. Pour utiliser une classe générique comme Pair, il faut spécifier quels types utiliser pour ses paramètres de type F et S. Par exemple, le type des paires composées d’une chaîne et d’un entier se note : Pair. On appelle un tel type une instanciation de la classe générique Pair. Plusieurs instanciations d’un même type générique ne sont jamais sous­type l’une de l’autre. Le type Cell est celui des cellules dont l’élément est de type inconnu, donc quelconque. Le compilateur n’accepte le code que s’il est certain qu’il pourra s’exécuter sans problème quelque soit le type qui remplace le joker. On dit que le type Object est la borne supérieure (upper bound) du joker, car c’est le type le plus haut dans la hiérarchie qui pourrait s’y substituer. Object est la borne supérieure attribuée par défaut aux jokers, mais il est possible d’en spécifier une autre explicitement, p.ex. : Nous pouvons également spécifier une borne inférieure (lower bound), p. ex. : Les méthodes peuvent également être génériques. Notez que lorsqu’on appelle une méthode générique, il ne faut pas spécifier les paramètres de type. Ils sont inférés par le compilateur. Exemple : cell2pair(new Cell(42))

…

Cours 4 : Introduction aux structures de données

Le paquetage java.util définit trois genres de structures de données : les listes, les ensembles et les tables associatives. A chaque genre de structure de données correspond une interface. Chaque interface est implémentée par une ou plusieurs classes, qui mettent en oeuvre la structure de données d’une certaine manière.

L’interface List représente le concept de liste d’éléments de type E. Les opérations définies par cette interface permettent d’ajouter et de supprimer des éléments, de les parcourir, etc.

Evaluation :
Total des Votes : 0
Soyez le premier à écrire un commentaire sur ce fichier!
Veuillez vous identifier ou vous enregistrer.