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); } }