TP2 - LIPN

publicité
C. Recanati
InHM Java
Master 1, 2007-2008
TP 2
Exercice 1 Le but de cet exercice est de créer l’architecture nécessaire
pour la mise en place d’un logiciel de dessin (intitulé « Sketcher »,
pour croquis) que nous implanterons au fur et à mesure des TP.
1) Reprendre les lignes de code données dans le cours (pp. 84 et 87)
pour commencer l’implémentation du logiciel Sketcher en
définissant l’interface Constants dans un fichier séparé.
Architecture : on prévoit une classe SketcherFrame (ou Cadre) qui
introduira les éléments nécessaires à la gestion de la fenêtre dans
laquelle sera affiché le contenu du croquis, et une classe
SketcherModel (ou Modele) qui définira les éléments nécessaires à
la gestion du modèle de données de la feuille de dessin.
L’application elle-même sera implémentée par une classe autonome
(intitulée Sketcher), qui sera instanciée dans le main par un new. La
classe de l’application « mémorisera » dans deux variables privées
une instance de la classe cadre et une instance de la classe modèle.
2) Dans un premier temps, le cadre ne sera utilisé que pour
mémoriser le titre de la fenêtre et le type de l’élément (courant) à
dessiner. Cette classe aura donc trois membres privés : un membre
elementType de type int, un membre elementColor de type Color,
et un membre title de type String. Ecrire les différents membres
de cette classe, et utiliser l’interface Constants pour en initialiser les
valeurs (avec les constantes par défaut). Ecrire également un
constructeur de la classe qui initialise le champ title.
3) Ecrire le squelette de la classe Sketcher.
4) Ecrire le squelette de la classe SketcherModel. Le modèle d’un
dessin sera implémenté avec une LinkedList intilulée
ListeElements et comportera une méthode add et une méthode
remove. La méthode add permettra d’ajouter un élément à la liste, et
la méthode remove, qui retournera un booléen indiquant si
l’élément existait dans la liste et a donc bien pu en être supprimé.
Exercice 2 le but de cet exercice est de tester et vérifier des objets de classe
File.
1) Ecrire une classe Test
- qui crée un objet File monRep avec l’instruction
File monRep = new File («/usr/java/jdk/src/java/io») ;
- puis teste et imprime s’il s’agit ou non d’un répertoire.
Ensuite cette classe crée un nouvel objet de type File avec
File monFichier = new File (monRep,«File.java») ;
imprime si ce fichier existe, si on peut le lire, et si on peut écrire
dedans.
2) Ecrire une classe permettant d’obtenir la liste de tous les fichiers
d’un répertoire donné et de consigner la date de leur dernière
modification.
3) Modifier le code précédent pour que l’application lise le nom du
répertoire et celui du fichier à vérifier en argument au programme.
 Utiliser les méthodes getAbsolutePath, getName et
getParent pour imprimer les informations sur le répertoire initial.
Récupérer ensuite un tableau contents de File avec la méthode
listFiles et imprimer les éléments de ce tableau en indiquant à
chaque fois s’il s’agit ou non d’un répertoire, et en donnant la date
de leur dernière modification (créer un objet Date à partir de
contents[i].lastModified() ).
// (Eléments de correction) squelette de SketcherFrame.java
public class SketcherFrame implements Constants {
// type et couleur de l'element courant
private int elementType = ...;
private Color elementColor = ... ;
// titre de la fenetre
private String title ;
// constructeur
public SketcherFrame(String
...
}
}
//
titre) {
squelette de Sketcher.java
public class
private
private
private
Sketcher {
SketcherModel model;
static SketcherFrame window;
static Sketcher theApp;
public SketcherFrame getWindow() {
return window;
}
public SketcherModel getModel() {
return model;
}
public void init() {
window = new SketcherFrame("Dessin");
model = new SketcherModel() ;
}
public static void main(String[] args) {
theApp = new Sketcher();
theApp.init();
}
}
//
squelette de SketcherModel.java
class SketcherModel {
protected LinkedList ListeElements = new LinkedList();
public boolean remove(Element element) {
boolean removed =
ListeElements.remove(element);
return removed;
}
public void add(Element element) {
ListeElements.add(element);
}
}
Téléchargement