Exercices dirigés n 5

Documents pareils
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

Programmation par les Objets en Java

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

Programmer en JAVA. par Tama

Cours 1: Java et les objets

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

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

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

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

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

Package Java.util Classe générique

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

Introduction à l héritage en C++

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

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

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

Initiation à JAVA et à la programmation objet.

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

TD/TP PAC - Programmation n 3

Java Licence Professionnelle CISII,

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 )

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

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

TP1 : Initiation à Java et Eclipse

PROGRAMMATION PAR OBJETS

Support de cours et TD Programmation Orientée Objet

Auto-évaluation Programmation en Java

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

RMI le langage Java XII-1 JMF

as Architecture des Systèmes d Information

Environnements de développement (intégrés)

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code

Premiers Pas en Programmation Objet : les Classes et les Objets

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

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Interfaces graphiques avec l API Swing

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

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

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

Exercices sur les interfaces

Une introduction à Java

Threads. Threads. USTL routier 1

Bases Java - Eclipse / Netbeans

Programmation Objet II

Examen d informatique première session 2004

Classe Interne, Anonyme & Enumération

Langage Java. Classe de première SI

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

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

Les algorithmes de base du graphisme

Introduction au langage Java

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

INITIATION AU LANGAGE JAVA

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

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

Programmation Orientée Objet

Programmation Par Objets

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

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

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

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

ACTIVITÉ DE PROGRAMMATION

LOG4430 : Architecture logicielle et conception avancée

Chapitre 10. Les interfaces Comparable et Comparator 1

TD/TP PAC - Programmation n 3

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

Programme Compte bancaire (code)

Corrigé des exercices sur les références

Projet de programmation (IK3) : TP n 1 Correction

TP, première séquence d exercices.

Applet pour visualiser les variables «automate» notifiées

2. Comprendre les définitions de classes

Notion de thread (1/2)

Chapitre VI- La validation de la composition.

Java Licence professionnelle CISII,

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

Programmation Orientée Objet en C#

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

Diagramme de classes

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

Remote Method Invocation en Java (RMI)

Un ordonnanceur stupide

et Programmation Objet

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

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

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

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

Synchro et Threads Java TM

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

Facultés Universitaires Notre-Dame de la Paix. Conception et Programmation Orientées- Object

Solutions du chapitre 4

Programmer en Java. OC Informatique GYMNASE DE BURIER

4. Groupement d objets

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

Java c est quoi? Java pourquoi?

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

CPR Informatique. (poste 3159 ou 3164) Septembre 2002

TD2 Programmation concurrentielle

Développement Logiciel

Transcription:

Exercices dirigés n 5 Design Pattern Composite : étant données 2 schémas de classes représentant des exemples de formes possibles : public class Cercle{ private Point centre; private double rayon; private Color couleur; public Cercle(Point p,double r,color c){ centre = p; rayon = r; couleur = c; public void sedessiner(){// connaissance du code indispensable public class Polygone{ private Point[] sommets; private Color couleur; public Polygone(Point[] s,color c){ sommets = s; couleur = c; public void sedessiner(){// connaissance du code indispensable et une classe Dessin capable de dessiner un ensemble de formes. Elle devra rester invariante en cas d'introduction de nouvelles formes. public class Dessin{ private Vector<Forme> elements; public void ajouter(forme f){ if(elements == null) elements = new Vector<Forme>(); elements.add(f); Compléter, modifier ce programme pour faire en sorte de pouvoir dessiner n'importe quel dessin quelles que soient les formes qui le composent. On aura ainsi créé un schéma de conception unique tel qu'une classe quelconque composée d'un nombre quelconque d'objets présentant des fonctionnalités communes pourra appliquer ces fonctionnalités à chacune d'entre elles. public class Polygone extends Forme public class Cercle extends Forme public abstract class Forme{ protected abstract void sedessiner(); Dans la classe Dessin, introduire la méthode : public void dessiner(){ for( Forme f : elements ) f.sedessiner(); 1

Compléter ce programme en remplaçant les points de suspension par le code adapté en ayant en tête d'utiliser au maximum les possibilités offertes par l'héritage. class Point{ protected int x; protected int y; public Point(int x, int y){... public void deplacer(int dx, int dy){ x=x+dx; y=y+dy; System.out.println"(position du point : x = "+x+", y = "+y); class PointZCouleur extends Point{ private int z; private Color c; public PointCouleur(int x,int y,int z,color c){... public void deplacer(int dx,int dy){....; System.out.println"(couleur du point : "+c+", z = "+z); public Point(int x, int y){ this.x;this.y; public PointCouleur(int x,int y,int z,color c){ super(x,y);this.z;this.c; public void deplacer(int dx,int dy){ deplacer(dx,dy); super.ou(); System.out.println"(couleur du point : "+c+", z = "+z); Considérant le programme suivant : interface Personne{ public void quiestu(); public Personne complements(); abstract class PersonneAbstraite implements personne{ public void quiestu(){ System.out.print("Je suis "); class Femme extends PersonneAbstraite{ public void quiestu(){ super.quiestu(); System.out.println("une femme"); public Personne complement(){ return new Homme(); class Homme extends PersonneAbstraite{ 2

public void quiestu(){ super.quiestu(); System.out.println("un homme"); public Personne complement(){ return new Femme(); Compléter la classe Test en remplaçant les commentaires par le code adapté : class Test{ // Création d'un tableau constitué de 2 hommes et de 2 femmes // Parcourir ce tableau et afficher le statut (méthode quiestu()) // de chaque élément ainsi que le statut de son complément. // Afficher aussi le message suivant seulement s'il s'agit d'une // femme : " Je suis blonde " (vous pouvez changer le message) Personne [] p = new Personne[2]; p[0] = new Femme(); p[1] = new homme(); for( int i=0;i<2;i++){ p[i].quiestu(); p[i].complement().quiestu(); if( p[i] instanceof Femme ) System.out.println(" Je suis blonde "); Quel est le résultat de l'exécution de ce programme (C2.java)? Le constructeur sans paramètre de la classe Object est-il invoqué lorsque new B(5)est exécuté : public class C2{ B b = new B(5); class A{ public A(){ System.out.println("Je suis dans A "); public B(int x){ System.out.println("Je suis dans B"); Je suis dans A Je suis dans B 3

ED n 5 Quels sont les problèmes identifiés à la compilation dans ce fichier source (C3.java): public class C3{ B b = new B(); class A{ public A(int x){ System.out.println("Je vaux: "+x); public B(){ System.out.println("Je suis dans B"); A la compilation de la classe B, le constructeur A()n'est pas trouvé. La classe B peut-elle être compilée? Quelle que soit la réponse, déterminer le modificateur le plus adapté aux membres i et m de la classe A? // fichier A.java package p1; public class A{ int i; void m(){ System.out.println("i= "+i); // fichier B.java package p1; public void main(string[] args){ System.out.println("i= "+i); m(); La classe B peut être compilée car ses membres i et m()sont visibles dans tout le package, toutefois, la visibilité la plus stricte est : protected int i; protected void m(){... Les assertions suivantes sont elles vraie ou fausse? - un membre protected (donnée ou méthode) peut-il être accédé par n'importe quelle classe du même package? - un membre protected (donnée ou méthode) peut-il être accédé par n'importe quelle classe de différents packages? - un membre protected (donnée ou méthode) peut-il être accédé par ses sous-classes de différents packages? 4

- une classe final peut-elle être instanciée? - une classe final peut-elle être étendue (dérivée)? - une méthode final peut-elle être redéfinie? oui oui Elle peut être surchargée mais pas redéfinie Déterminer 2 façons de compléter le programme suivant pour que le constructeur de la classe B initialise les variables d'instance x et y : public class A{ protected int x,y; public A( int x,int y ){ this.x = x;this.y = y; private int r; public B( int x,int y,int r ){ this.r = r; super(x,y); this.x;this.y; 5