Licence Informatique Année 2005-2006



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

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

TD/TP PAC - Programmation n 3

Java Licence Professionnelle CISII,

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

Premiers Pas en Programmation Objet : les Classes et les Objets

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

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

Programmation par les Objets en Java

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

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

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

Programmation avec des objets : Cours 7. Menu du jour

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

TD/TP PAC - Programmation n 3

TP, première séquence d exercices.

Corrigés des premiers exercices sur les classes

Programmation Par Objets

TD3: tableaux avancées, première classe et chaînes

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

Corrigé des exercices sur les références

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

2. Comprendre les définitions de classes

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Package Java.util Classe générique

Programmer en JAVA. par Tama

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

Synchro et Threads Java TM

Chapitre 10. Les interfaces Comparable et Comparator 1

Remote Method Invocation Les classes implémentant Serializable

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

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

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

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

Une introduction à Java

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

Langage Java. Classe de première SI

Chapitre VI- La validation de la composition.

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

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

JAVA TD0. Prise en main du langage Environnement de base JAVA 1

INITIATION AU LANGAGE JAVA

as Architecture des Systèmes d Information

TP1 : Initiation à Java et Eclipse

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

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 )

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

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

Utilisation d objets : String et ArrayList

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

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

Prendre le marteau, le tableau, le mètre, le crayon, la ficelle, le clou, la pointe ;

PROGRAMMATION PAR OBJETS

Chapitre 2. Classes et objets

Programmation Objet I

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr

Bases Java - Eclipse / Netbeans

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Cours 1: Java et les objets

Initiation à JAVA et à la programmation objet.

Auto-évaluation Programmation en Java

Projet de programmation (IK3) : TP n 1 Correction

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Programmation Objet II

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

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5

Chapitre V. Les classes : Object, Vector, etc.

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

ACTIVITÉ DE PROGRAMMATION

INF 321 : mémento de la syntaxe de Java

Calcul Parallèle. Cours 5 - JAVA RMI

Un ordonnanceur stupide

2 e édition JAVA 5 et 6. Jérôme Bougeault. TSoft et Groupe Eyrolles, 2003, 2008, ISBN :

Programmation Orientée Objet application au langage Java Version Novembre 2007

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Programme Compte bancaire (code)

Développement Logiciel

Design patterns. Design patterns - définition. Design patterns - avantages

Java 1.5 : principales nouveautés

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Exercices sur les interfaces

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Langage à objets : JAVA (1)

ETUDE DE CAS en UML : GESTION DES COMMANDES DE PIECES FABRIQUEES PAR LA SOCIETE C

TD2 Programmation concurrentielle

Threads. Threads. USTL routier 1

Solutions du chapitre 4

Anne Tasso. Java. Le livre de. premier langage. 6 e édition. Groupe Eyrolles, 2000, 2002, 2005, 2006, 2008, 2010, ISBN :

C f tracée ci- contre est la représentation graphique d une

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

RMI le langage Java XII-1 JMF

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Dis papa, c est quoi un bus logiciel réparti?

Support de cours et TD Programmation Orientée Objet

COMPARAISONDESLANGAGESC, C++, JAVA ET

Utiliser Java sans BlueJ

Classe Interne, Anonyme & Enumération

1 Définition d une classe en Java

Programmation Objet Java Correction

Transcription:

Université Paris 7 Java Licence Informatique Année 2005-2006 TD n 6 - Correction Héritage Exercice 1 On modélise une application devant servir à l inventaire d une bibliothèque. Elle devra traiter des documents de nature diverse : des livres, des dictionnaires, et autres types de documents qu on ne connaît pas encore précisément mais qu il faudra certainement ajouter un jour (articles, bandes dessinées...). Tous les documents possèdent un numéro d enregistrement et un titre. À chaque livre est associé, en plus, un auteur et un nombre de pages, les dictionnaires ont, eux, pour attributs supplémentaires une langue et un nombre de tomes. On veut manipuler tous les articles de la bibliothèque au travers de la même représentation : celle d un document. 1. Définissez les classes Document, Livre et Dictionnaire. Définnissez pour chacune un constructeur permettant d initialiser toutes ses variables d instances. public class Document { static private int numerosuivant = 0; static private int getid() { return ++numerosuivant; private int numero; private String titre; public Document(String titre) { this.numero = getid(); this.titre = titre; public int getnumero(){ return numero; public String gettitre(){ return titre; public class Dictionnaire extends Document { private int nbtomes; private String langue; public Dictionnaire(String titre, int nbtomes, String langue) { super(titre); this.nbtomes = nbtomes; this.langue = langue; public int getnombredetomes() { return nbtomes; public String getlangue() { return langue; public class Livre extends Document{ private String auteur; private int nbpages; 1

public Livre(String titre, String auteur, int nbpages) { super(titre); this.nbpages = nbpages; this.auteur = auteur; public String getauteur() { return auteur; public int getnombredepages() { return nbpages; 2. Définissez une classe Bibliothèque réduite à une méthode main permettant de tester les classes précédentes (ainsi que les suivantes). Par exemple : public class Bibliotheque{ public static void main(string[] argv){ Document d = new Document("Configurer son compte utilisateur"); Livre l = new Livre("La communication sous unix","j-m Rifflet",799); Dictionnaire di = new Dictionnaire("Man pages",4,"anglais"); System.out.println(d.getTitre()) ; System.out.println(l.getTitre()) ; System.out.println(di.getTitre()) ; 3. Définissez la classe ListeDeDocuments permettant de créer une liste vide de documents, puis y adjoindre une fonction permettant d ajouter un document. import java.util.enumeration; // utile pour l ajout de la question suivante import java.util.vector; public class ListeDeDocuments { private Vector lesdocuments; public ListeDeDocuments() { lesdocuments = new Vector(); public void ajoutedocument(document undocument) { lesdocuments.add(undocument); 4. Dans la classe ListeDeDocuments définissez une méthode touslesauteurs() qui affiche la liste des numéros des documents de la liste avec, pour chacun, l éventuel auteur. public void touslesauteurs() { Enumeration e = lesdocuments.elements(); Document undocument; while( e.hasmoreelements() ) { undocument = (Document)e.nextElement(); System.out.print(unDocument.getNumero()); if (undocument instanceof Livre) System.out.println( " " + ((Livre)unDocument).getAuteur()); else System.out.println() ; 2

5. Redéfinnisez la méthode tostring() dans la classe Document ainsi que dans les classes Livre et Dictionnaire et qui renvoie une chaîne de caractères décrivant un document, un livre ou un dictionnaire. Ajoutez alors dans la classe ListeDeDocuments une méthode touslesdocuments() qui affiche consécutivement la description de tous les documents. Dans Document : public String tostring() { return ("numero: "+numero+" titre: "+titre); Dans Livre : return (super.tostring()+" auteur: "+getauteur()+" pages: "+getnombredepages()); Dans Dictionnaire : public String tostring() { return (super.tostring()+" tomes: "+getnombredetomes()+" langue: "+getlangue()); Dans ListeDeDocuments : public void touslesdocuments() { Enumeration e = lesdocuments.elements(); Document undocument; while (e.hasmoreelements()){ undocument = (Document)e.nextElement(); System.out.println(unDocument); 6. Proposez quelques lignes de codes à ajouter à la classe Bibliotheque afin de tester la classe ListeDeDocuments. public class Bibliotheque{ public static void main(string[] argv) { Document d = new Document("Configurer son compte utilisateur"); Livre l = new Livre("La communication sous unix","j-m Rifflet",799); Dictionnaire di = new Dictionnaire("Man pages",4,"anglais"); System.out.println(d.getTitre()); System.out.println(l.getTitre()); System.out.println(di.getTitre()); ListeDeDocuments ld = new ListeDeDocuments(); ld.ajoutedocument(d); ld.ajoutedocument(l); ld.ajoutedocument(di); ld.touslesauteurs(); ld.touslesdocuments(); Exercice 2 Écrire trois classes Figure, Carre, et Rectangle, telles que : 1. Figure a des attributs abscisse et ordonnée, ainsi qu une couleur (encodée par un entier). 3

2. Carre et Rectangle héritent de Figure, mais ont en plus une ou deux longueur pour les côtés. 3. Figure a un attribut privé Vector référençant toutes les instances de sa classe et de ses sous classes. 4. Figure a une méthode statique getinstances() renvoyant ce vecteur. 5. Carre et Rectangle redéfinissent cette méthode getinstances() de manière à ne récupérer que les instances qui correspondent à leur type. On déduira aisément une solution pour la classe Rectangle d une solution pour la classe Carre : //Fichier Figure.java import java.util.vector ; public class Figure { private static Vector instances = new Vector(); private int abscisse; private int ordonnee; private int couleur; public Figure( int abscisse, int ordonnee, int couleur ) { this.abscisse = abscisse; this.ordonnee = ordonnee; this.couleur = couleur; instances.add(this); public static Vector getinstances() { return instances ; return (abscisse+" "+ordonnee+" "+couleur); public class Carre extends Figure { private int cote ; public Carre(int abscisse, int ordonnee, int couleur, int cote) { super(abscisse,ordonnee,couleur); this.cote = cote; public static Vector getinstances() { int ncarre = 0; Vector instancescarre = new Vector(); Vector instances = Figure.getInstances(); Enumeration e = instances.elements(); Figure unefigure; while(e.hasmoreelements()) { unefigure = (Figure)e.nextElement(); if (unefigure instanceof Carre) instancescarre.add(unefigure); return instancescarre; return (super.tostring()+" "+cote); 4

//Fichier Test.java import java.util.vector ; import java.util.enumeration ; public class Test { public static void main(string[] argv) { Figure f1 = new Figure(1,1,1); Figure f2 = new Figure(2,2,2); Carre c3 = new Carre(3,3,3,3); Figure f4 = new Figure(4,4,4); Carre c5 = new Carre(5,5,5,5); System.out.println("Liste des figures") ; Enumeration e = Figure.getInstances().elements() ; while(e.hasmoreelements()){ System.out.println(e.nextElement()) ; System.out.println("Liste des carres") ; e = Carre.getInstances().elements() ; while(e.hasmoreelements()){ System.out.println(e.nextElement()) ; 5