2006_IFT232_Exercices_I

publicité
IFT 232 Méthodes de conception orientée objets
Séance d’exercices I
Date : Semaine 1
Thèmes abordés : Le langage Java, la réflexivité, les exceptions
Quelques questions sur le langage Java
1. Si la classe Point possède une sous-classe, par exemple Tortue, quel sera l’effet de
this() ? Que se passe-t-il si vous remplacez par super()
/**
* Point constructor comment.
*/
public Point(int x, int y)
{
this();
//
//
this.setX(x); //
this.setY(y);
}
super();
this.x = x;
setX(x);
2. Au niveau des membres static, comment s’appliquent
a. les règles d’héritage ?
b. les règles de visibilité ?
3. Vérifier les règles d’accès aux constructeurs.
a. Est-il vrai que le système fourni un constructeur par défaut si aucun n’est
fourni?
b. Que se passe-t-il si un constructeur avec un paramètre est fourni? Peut-on
utiliser le constructeur sans paramètre fourni par défaut? Que se passe-t-il
si une superclasse invoquait this() ?
4. Peut-on définir la même variable plusieurs fois dans la hiérarchie ? avec des types
différents ? avec une visibilité différente ?
5. Quelle est la visibilité par défaut d’une classe ? d’une variable ? d’une méthode ?
6. Supposons deux fichiers .jar (ou répertoire) possédant deux définitions différentes
d’une même classe située dans le même package ? Laquelle sera utilisée ?
7. Pour tester vos connaissances, http://www.dickbaldwin.com/tocknowledge.htm .
Les premières sont simples, mais certaines ne sont pas toujours évidentes.
Faire les sections
Fundamentals Part 5
Fundamentals Part 6
Using Modifiers, Part 1
Using Modifiers, Part 2
La Réflexivité
Écrire un programme qui permet de manipuler par réflexivité n’importe quel objet. Ce
programme devra réaliser les opérations suivantes
1. lecture du nom d’une classe (sur la console ou sur une interface graphique au
choix)
2. création d’une instance de cette classe
3. construction de la liste des méthodes publiques sans paramètre
4. affichage de la liste des méthodes publiques sans paramètres (sur la console ou
sur une interface graphique au choix)
5. choix d’une méthode par l’usager et invocation de la méthode sur l’objet créé
6. affichage du résultat
7. retour en 4 ou en 1
Pour réaliser ce programme, les éléments suivants devraient vous être utiles




Le package java.lang.reflect
La classe java.lang.Class
La méthodes java.lang.Class.forName()
http://java.sun.com/j2se/1.5.0/docs/api/index.html
Les exceptions, les collections et les threads
Implémenter une banque. Une banque est composée d’un ensemble de comptes de
banques. Les opérations bancaires disponibles sur un compte sont : dépôt, retrait et
virement. Une banque reçoit des séries de transactions bancaires à traiter en bloc. Une
suite d’opérations peut être par exemple
[(dépôt, C1, 100), (retrait, C2, 200), (virement, C1, C2, 300)]
La banque lance alors un thread indépendant responsable du traitement de chaque série
de transactions.
Les contraintes suivantes doivent être respectées :








A leur création, le solde des comptes est 100.
Un solde ne doit jamais être négatif.
On ne peut pas déposer/retirer/virer un montant négatif ou supérieur à 1000
Avant d’effectuer une série d’opérations, il faut d’abord bloquer en lecture tous
les comptes impliqués.
Si une opération échoue, toutes les opérations précédentes de la suite de
transactions doivent être défaites.
Quoiqu’il arrive lors du traitement d’une série de transactions, les comptes
doivent être débloqués.
Si une ou plusieurs opérations échouent, la banque doit être informé de
l’opération fautive et de la ou des raisons de l’échec.
Un thread doit toujours se terminer que le traitement des transactions se passe
bien ou non et quelque soit l’erreur.
Pour réaliser ce programme, les éléments suivants devraient être utiles



http://java.sun.com/docs/books/tutorial/collections/index.html
http://java.sun.com/docs/books/tutorial/essential/exceptions/index.html
http://java.sun.com/docs/books/tutorial/essential/threads/index.html
Téléchargement