Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>



Documents pareils
TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Chapitre 10. Les interfaces Comparable et Comparator 1

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Java Licence Professionnelle CISII,

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Corrigé des exercices sur les références

Programmation par les Objets en Java

Auto-évaluation Programmation en Java

TP1 : Initiation à Java et Eclipse

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

RMI le langage Java XII-1 JMF

Package Java.util Classe générique

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

Une introduction à Java

Généralités sur le Langage Java et éléments syntaxiques.

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés)

Programmation Réseau. Sécurité Java. UFR Informatique jeudi 4 avril 13

Applet pour visualiser les variables «automate» notifiées

Tp 1 correction. Structures de données (IF2)

Programmer en JAVA. par Tama

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Remote Method Invocation (RMI)

Programmation Objet Java Correction

Synchro et Threads Java TM

API04 Contribution. Apache Hadoop: Présentation et application dans le domaine des Data Warehouses. Introduction. Architecture

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Cours 1: Java et les objets

Projet de programmation (IK3) : TP n 1 Correction

Programmation avec des objets : Cours 7. Menu du jour

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Java 7 Les fondamentaux du langage Java

Programmation Par Objets

Exercices sur les interfaces

Threads. Threads. USTL routier 1

Héritage presque multiple en Java (1/2)

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

Serveur d'archivage 2007 Installation et utilisation de la BD exist

Introduction au langage Java

Utiliser Java sans BlueJ

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

TD/TP PAC - Programmation n 3

Interfaces graphiques avec l API Swing

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Java DataBaseConnectivity

Introduction à Eclipse

Cours 14 Les fichiers

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Exercices INF5171 : série #3 (Automne 2012)

TP1 : Initiation à Java et Eclipse

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

1 Définition d une classe en Java

Étude de l interopérabilité de deux langages de programmation basée sur la machine virtuelle de Java

2 Grad Info Soir Langage C++ Juin Projet BANQUE

ACTIVITÉ DE PROGRAMMATION

Programmation d application Bases de données avec Java

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

OpenPaaS Le réseau social d'entreprise

La JVM. La machine virtuelle Java. La JVM. La JVM

Tutoriel d installation de Hibernate avec Eclipse

Programmation Orientée Objet Java

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

Manuel d implémentation des Web Services Sous Axis1 et Axis2/Tomcat/linux. Par Pr Bouabid EL OUAHIDI

Classe Interne, Anonyme & Enumération

Notion de thread (1/2)

Communication inter-processus (IPC) : tubes & sockets. exemples en C et en Java. F. Butelle

Création d une application JEE

Présentation. Au programme. Fonctionnement. A l issue de ce module vous devriez...

Gestion distribuée (par sockets) de banque en Java

Initiation à JAVA et à la programmation objet.

Remote Method Invocation Les classes implémentant Serializable

TP, première séquence d exercices.

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

PROGRAMMATION PAR OBJETS

Objets et Programmation. origine des langages orientés-objet

INITIATION AU LANGAGE JAVA

Java 1.5 : principales nouveautés

La base de données XML exist. A. Belaïd

Bases du langage. Historique Applications et applets Éléments de base du langage Classes et objets Les exceptions

Programmation Par Objets et Langage Java

Calcul Parallèle. Cours 5 - JAVA RMI

IFT287 Exploitation de base de données relationnelles et orientées objet. Laboratoire Mon premier programme Java en Eclipse

Un ordonnanceur stupide

Réalisez votre propre carte de vœux Éléctronique

TD/TP PAC - Programmation n 3

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java

Premiers Pas en Programmation Objet : les Classes et les Objets

Application web de gestion de comptes en banques

Plan du cours. Historique du langage Nouveautés de Java 7

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN

Eclipse atelier Java

Programmation par composants (1/3) Programmation par composants (2/3)

Desktop Intégration. Rémi Forax

Par Laurent DESECHALLIERS. Mastère Spécialisé en Management de Projets en Milieu Industriel. CESI de Rouen Promotion 2002/2003.

et se trouve popularisé rapidement pour ses possibilités de développement liés au Web. Les

Java et les annotations

Transcription:

Page 1 sur 5 TP3 Lectures préalables : l Java_II l tutorial Interfaces Thèmes du TP : l la classe Object l Vector<T> l Stack<T> Une pile d'objects Les éléments de la classe Pile sont maintenant des instances de la classe java.lang.object : classe racine de toute classe Java. question1-1 Proposer en conséquence une nouvelle version de la classe Pile et de l'ihm demandées au TP précédent question3.applettepile ou ApplettePile2 un exemple de la "nouvelle" ApplettePile question1-2) Soit cet extrait d'une classe d'utilisation d'une Pile (classe UneUtilisation), vérifier l'affichage produit package question1; public class UneUtilisation{ public static void main(string[] args) throws Exception{ Pile p1 = new Pile(6); Pile p2 = new Pile(10); // p1 est ici une pile de polygones réguliers PolygoneRegulier.java p1.empiler(new PolygoneRegulier(4,100)); p1.empiler(new PolygoneRegulier(5,100)); p1.empiler("polygone"); p1.empiler(new Integer(100)); System.out.println(" la pile p1 = " + p1); // Quel est le résultat? p2.empiler( new Integer(1000)); p1.empiler(p2); System.out.println(" la p1 = " + p1); // Quel est le résultat? try{ p1.empiler(new Boolean(true)); //... // erreur de compilation? pourquoi?

Page 2 sur 5 String s = (String)p1.dépiler(); // erreur d'execution? pourquoi? catch(exception e ){ e.printstacktrace(); question1-3) Proposez une classe conséquente de tests unitaires de la classe Pile, lire ce tutoriel avec bluej, menu Outils, item Préférences, onglet divers cochez "Montrer les outils de test", puis clic droit classe Pile, item Créer classe de test Vous devriez obtenir cette classe en arrière plan de la classe Pile comme suit : ensuite, en travail personnel et à l'aide du tutoriel, enregistrez plusieurs méthodes de test, et vérifiez le bon fonctionnement.

Page 3 sur 5 La classe Pile implémente l'interface PileI, modifier la classe Pile en conséquence package question2; import question1.pilepleineexception; import question1.pilevideexception; public interface PileI{ public final static int TAILLE_PAR_DEFAUT = 10; public void empiler(object o) throws PilePleineException; public Object dépiler() throws PileVideException; public Object sommet() throws PileVideException; public int capacité(); public int taille(); public boolean estvide(); public boolean estpleine(); public String tostring(); question2-1) Proposez deux autres implémentations de l'interface PileI, l utiliser les classes prédéfinies java.util.stack<t> (Pile2.java), et java.util.vector<t> (Pile3.java) l pour l'utilisateur ce sont toujours des piles bornées l Vos deux nouvelles classes "Pile" seront composées d'une instance d'une classe prédéfinie comme le suggère les extraits de code suivants : import java.util.stack; public class Pile2 implements PileI{ private Stack<Object> stk; // La classe Pile2 est implémentée par... import java.util.vector; public class Pile3 implements PileI{ private Vector<Object> v;... Remarque l Cette approche est nommée par Mark Grand le "Pattern delegation". Elle consiste à définir une donnée d'instance d'une classe, ensuite utilisée dans les méthodes. Ce pattern réalise une interface entre le client de la classe et l'implémentation effective par une classe de service. Il permet un couplage moins fort entre les deux classes que si l'une héritait de l'autre.

Page 4 sur 5 ci dessous l' ApplettePile avec une implémentation de la classe Pile par délégation à la classe java.util.stack<object> Généricité : un premier usage L'interface pilei est désormais paramétrée par le type des éléments package question3; import question1.pilepleineexception; import question1.pilevideexception; public interface PileI<T>{ public final static int TAILLE_PAR_DEFAUT = 10; public void empiler(t o) throws PilePleineException; public T dépiler() throws PileVideException; public T sommet() throws PileVideException; public int capacité(); public int taille(); public boolean estvide(); public boolean estpleine(); public String tostring(); question3-2) vérifiez le source de la classe Pile2<T> et modifier l'ihm ApplettePile, ce type de message obtenu à la compilation ne doit plus apparaître

Page 5 sur 5 question3-3) Dans la méthode main de la classe UneUtilisation, proposez toutes les déclarations correctes afin que la compilation de cette classe s'effectue sans aucun message d'erreur ou alertes. i.e. proposez les déclarations telles que p1 contient des éléments "de type PolygoneRegulier", p2 que des Piles de Polygone régulier, etc... Peut-on/doit-on imposer une implémentation particulière pour les piles contenues dans p2? import question1.polygoneregulier; public class UneUtilisation{ public static void main(string[] args) throws Exception{ PileI... p1 = new Pile2... (6); PileI... p2 = new Pile2... (10); etc... Vérifiez ensuite que ces lignes extraites de la question 1 ne se compilent plus! try{ p1.empiler(new Boolean(true)); String s = (String)p1.dépiler(); catch(exception e ){ e.printstacktrace(); N'oubliez pas de faire un submit avant de quitter la salle!