Programmation en Java - TD4 M1 ISIFAR 2008 2009 Révisions et héritage



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

Programmation par les Objets en Java

Exercices sur les interfaces

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

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

Premiers Pas en Programmation Objet : les Classes et les Objets

Programmer en JAVA. par Tama

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

TD/TP PAC - Programmation n 3

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

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

Java Licence Professionnelle CISII,

Corrigé des exercices sur les références

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

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

Cours 1: Java et les objets

Chapitre 10. Les interfaces Comparable et Comparator 1

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

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

as Architecture des Systèmes d Information

Package Java.util Classe générique

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

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

Projet de programmation (IK3) : TP n 1 Correction

TD/TP PAC - Programmation n 3

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

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

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

TP1 : Initiation à Java et Eclipse

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

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

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

Corrigés des premiers exercices sur les classes

Programmation avec des objets : Cours 7. Menu du jour

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Langage Java. Classe de première SI

Un ordonnanceur stupide

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

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

Programmation en Java IUT GEII (MC-II1) 1

Auto-évaluation Programmation en Java

INITIATION AU LANGAGE JAVA

Programmation Objet Java Correction

2. Comprendre les définitions de classes

Synchro et Threads Java TM

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

Programmation Objet I

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

Chapitre VI- La validation de la composition.

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

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

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

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

Flux de données Lecture/Ecriture Fichiers

TP, première séquence d exercices.

Une introduction à Java

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

Initiation à JAVA et à la programmation objet.

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

Java 1.5 : principales nouveautés

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

PROGRAMMATION PAR OBJETS

Java c est quoi? Java pourquoi?

Utilisation d objets : String et ArrayList

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

INF 321 : mémento de la syntaxe de Java

Programme Compte bancaire (code)

Threads. Threads. USTL routier 1

Traduction des Langages : Le Compilateur Micro Java

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

Java Licence Professionnelle CISII,

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

Classe Interne, Anonyme & Enumération

Interfaces graphiques avec l API Swing

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

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

Introduction : les processus. Introduction : les threads. Plan

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

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 )

Langage à objets : JAVA (1)

Programmation Orientée Objet

Apprendre Java en 154 minutes

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

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

Programmation Par Objets

Support de cours et TD Programmation Orientée Objet

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Applet pour visualiser les variables «automate» notifiées

TP1. Outils Java Eléments de correction

Développement Logiciel

Remote Method Invocation Les classes implémentant Serializable

Bases Java - Eclipse / Netbeans

Java DataBaseConnectivity

TD2 Programmation concurrentielle

Corrigé des exercices avancés sur les structures récursives

C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy

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

Chapitre 2. Classes et objets

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

Généricité. en Java. (polymorphisme paramétrique) Philippe GENOUD UJF Janvier

Transcription:

Programmation en Java - TD4 M1 ISIFAR 2008 2009 Révisions et héritage Exercice 1. Toute réponse doit être justifiée. Vous proposerez une correction lorsque le code n est pas correct. 1. Le code suivant est-il correct? class A{ private String nom; class B{ private A mona; B(String s){ mona = new A(); mona.nom = s; 2. La méthode suivante de la classe A doit-elle être statique ou dynamique? boolean memeensemble(char a, char b){ if ( a == b%4 ) return true; return false; 3. Le code suivant est-il correct? class C extends B{ private int nb; C(String s, int a){ this.nb = a; super(s); 4. On ajoute à la classe B, la méthode public void affiche(). Le code suivant est-il correct? int main(string []args){ B monb; switch(args[0]){ case "B": monb = new B("Bonjour"); break; case "C": monb = new C("Bonjour", 15); break; monb.affiche();

5. On ajoute à la classe C, la méthode void mult(int coeff){ nb *= coeff; et dans le main l instruction monb.mult(2); en dernière ligne. Le code obtenu est-il correct? Exercice 2. Qu affiche le programme suivant? Expliquez. private int val=0; public static void afficheplus(int a) { a++; System.out.println(a); public static void afficheplus(a a) { a.val++; System.out.println(a.val); public static void main(string[] args) { A uneclasse = new A(); A uneautreclasse = new A(); afficheplus (uneclasse.val); afficheplus (uneclasse.val); afficheplus (uneclasse); afficheplus (uneclasse); afficheplus (uneautreclasse); afficheplus (uneautreclasse); if (uneclasse == uneautreclasse) System.out.println("Egales"); else System.out.println("Differentes"); Exercice 3. Examinons le programme suivant : Fichier Figure.java public class Figure { double x, y ; public Figure() { x = 0 ; y = 0 ; public Figure(double x, double y) { this.x = x ; this.y = y ; public String tostring() { return "Position : (" + x + "," + y + ")" ; Fichier Cercle.java

public class Cercle extends Figure { final static double PI = 3.141592564 ; private double rayon ; public Cercle() { rayon = 0 ; public Cercle(double x, double y, double r) { super(x,y) ; rayon = r ; public String tostring() { return super.tostring() + " Rayon : " + rayon ; fichier TestFigure.java : public class TestFigure { public static void main(string[] args) { Cercle c1,c2 ; c1 = new Cercle(1,1,3) ; c2 = new Cercle() ; System.out.println(c1.toString() + "\n" + c2.tostring()) ; 1. De quelles variables d instance de Figure hérite la classe Cercle? 2. La variable rayon étant déclarée private, on ne peut pas la modifier de l extérieur de la classe. Ajoutez une méthode setrayon pour pouvoir le fixer et getrayon pour le lire. 3. Ajoutez une variable surface à la classe Cercle. Modifiez les méthodes setrayon et tostring en conséquence. Ajoutez les méthodes d accès à ce champ. On notera que le fait de protéger les variables par private et de restreindre leur accès à l utilisation de méthode permet de maintenir la cohérence d un état. 4. Écrivez une méthode c1.estplusgrand(cercle c2) renvoyant true si le cercle c1 est plus grand que c2. Comment écrire une méthode ayant un comportement similaire, mais prenant les deux cercles en argument? 5. Étendez la classe Cercle avec une classe Cylindre ajoutant une variable h pour la hauteur et une méthode volume. On ajoutera les constructeurs adéquats et on surchargera tostring en conséquence. 6. Étendez la classe Cercle avec une classe CercleDeCouleur. La classe Cylindre hérite-t elle de l attribut de coloration? Exercice 4. Les exemples suivants sont ils corrects? Justifiez. class Ex2a { int a ; Ex2a() { System.out.println(a) ; Ex2a(int a) { this() ;

class Ex2b { int a ; class Ex2b2 extends Ex2b { int b ; Ex2b2(int a,int b) { this.b = b ; class Ex2c { int a ; Ex2c(int a) { class Ex2c2 extends Ex2c { int b ; Ex2c2(int a,int b) { this.b = b ; class Ex2d { public int a ; Ex2d() { Ex2d(int a) { class Ex2d2 extends Ex2d { private int a ; int b ; Ex2d2(int a,int b) { this.b = b ; class Ex2e { public int a ; Ex2e(int a) { void seta(int c) { a=c ; class Ex2e2 extends Ex2e { private int a ; private Ex2e2(int a) { System.out.println("Hello") ; super(a) ;

private void seta(int c) { a=2*c ; Exercice 5. Pour chacune des classes demandées, vous écrirez une méthode tostring() renvoyant les caractéristiques de l objet sous forme de chaîne. Écrivez une classe Vehicule contenant un champ : private int nbpassager; dans laquelle vous définirez un constructeur Vehicule(int n) initialisant le nombre de passagers du véhicule, et une métode tostring retournant une chaîne de caractères indiquant le nombre de passager d un véhicule. Écrivez maintenant une classe Velo étendant la classe Véhicule contenant un champ : private int nbroues=2; mais pas de constructeur. Le programme compile-t-il? Justifiez votre réponse et proposez une solution le cas échéant. Écrivez maintenant une classe Avion étendant la classe Véhicule contenant un champ : private int nbmoteur; en utilisant les méthodes this et super, écrivez un constructeur Avion(int nbp) puis Avion(int nbp, nbm) initialisant le nombre nbp de passagers de l Avion et le nombre nbm de moteurs. Faites de même avec une classe Voiture et représentez la hiérarchie des classes sous forme d un arbre. Proposez un nouveau schéma permettant de mieux «classer» les classes Avion, Velo et Voiture et écrivez la/les classes suggérée(s). Exercice 6. Qu affiche le programme suivant? int i = 1 ; int f() { return i ; static char g() { return A ; class B extends A { int i = 2 ; int f () {return -i ; static char g() { return B ; public class Ex3 { public static void main(string args[]) { B b = new B() ; System.out.println(b.i) ; System.out.println(b.f()) ; System.out.println(b.g()) ; System.out.println(B.g()) ; A a = b ; System.out.println(a.i) ; System.out.println(a.f()) ; System.out.println(a.g()) ; System.out.println(A.g()) ;

Exercice 7. Dans l exemple suivant, si l on écrit dans B ((A)this).f(), quelle méthode est appelée? Que se passe-t-il avec ((A)this).i? int i = 1 ; int f() {return i ; class B extends A { int i = 2 ; int f() {return super.f() * 2 + i ; Exercice 8. On considère les définitions de classes suivantes : void f(a o) { System.out.println("void f(a o) dans A"); class B extends A { void f(a o) { System.out.println("void f(a o) dans B"); Qu affiche le fragment de programme suivant? A a = new A(); A ab = new B(); B b = new B(); a.f(a); a.f(ab); a.f(b); ab.f(a); ab.f(ab); ab.f(b); b.f(a); b.f(ab); b.f(b); Exercice 9. On ajoute maintenant à la classe B la méthode suivante : void f(b o) { System.out.println("void f(b o) dans B"); Est-ce une redéfinition ou une surcharge? Qu affiche alors le fragment de programme de l exercice 8? Exercice 10. On ajoute finalement à la classe A la méthode suivante : void f(b o) { System.out.println("void f(b o) dans A"); Est-ce une redéfinition ou une surcharge? Qu affiche alors le fragment de programme de l exercice 8?

Exercice 11. Qu affiche le fragment de programme suivant? System.out.println(a instanceof A); System.out.println(ab instanceof A); System.out.println(b instanceof A); System.out.println(a instanceof B); System.out.println(ab instanceof B); System.out.println(b instanceof B);