Exercice 1 : On dispose de la classe suivante PDF

Title Exercice 1 : On dispose de la classe suivante
Author Ayoub Lachguer
Pages 9
File Size 202.1 KB
File Type PDF
Total Downloads 155
Total Views 762

Summary

TD : 2 Programmation Java – Héritage, Polymorphisme, Classe abstraite, Interface Exercice 1 : On dispose de la classe suivante : class Point { public void initialise (int x, int y) { this.x = x ; this.y = y ; } public void deplace (int dx, int dy) { x += dx ; y += dy ; } public int getX() { return x...


Description

TD : 2 Programmation Java – Héritage, Polymorphisme, Classe abstraite, Interface Exercice 1 : On dispose de la classe suivante : class Point { public void initialise (int x, int y) { this.x = x ; this.y = y ; } public void deplace (int dx, int dy) { x += dx ; y += dy ; } public int getX() { return x ; } public int getY() { return y ; } private int x, y ; }

Réaliser une classe PointA, dérivée de Point disposa t d’u e éthode affiche affichant les oo do ées d’u poi t. E i e u petit p og a e utilisa t les deu lasses Point et PointA. Que se passerait-il si la classe Point ne disposait pas des méthodes getX et getY ? Exercice 2 : On dispose de la classe suivante : class Point { private int x, y ; public void setPoint (int x, int y) { this.x = x ; this.y = y ; } public void deplace (int dx, int dy) { x += dx ; y += dy ; } public void affCoord () { System.out.println ("Coordonnees : " + x + " " + y) ; } }

Réaliser une classe PointNom, dérivée de Point permettant de manipuler des points définis par deux coordonnées (int) et un nom (caractère). On y prévoira les méthodes suivantes :   

setPointNom pou défi i les oo do ées et le o d’u o jet de t pe PointNom, setNom pou défi i seule e t le o d’u tel o jet, affCoordNom pou affi he les oo do ées et le o d’u o jet de t pe PointNom.

Écrire un petit programme utilisant la classe PointNom.

Exercice 3 : O dispose de la lasse suiva te disposa t ette fois d’u

o st u teu :

class Point { private int x, y ; public Point (int x, int y) { this.x = x ; this.y = y ; } public void affCoord() { System.out.println ("Coordonnees : " + x + " " + y) ; } }

Réaliser une classe PointNom, dérivée de Point permettant de manipuler des points définis par leurs coordonnées (entières) et un nom (caractère). On y prévoira les méthodes suivantes :  

o st u teu pou défi i les oo do ées et le o d’u o jet de t pe PointNom, affCoordNom pou affi he les oo do ées et le o d’u o jet de t pe PointNom.

Écrire un petit programme utilisant la classe PointNom. Exercice 4 : On dispose de la classe suivante : class Point { private int x, y ; public Point (int x, int y) { this.x = x ; this.y = y ; } public void affiche() { System.out.println ("Coordonnees : " + x + " " + y) ; } }

Réaliser une classe PointNom, dérivée de Point permettant de manipuler des points définis par leurs coordonnées et un nom (caractère). On y prévoira les méthodes suivantes : • •

constructeur pou défi i les oo do ées et le o d’u o jet de t pe PointNom, affiche pou affi he les oo do ées et le o d’u o jet de t pe PointNom.

Exercice 5 : Quels résultats fournit ce programme ? class A { public A (int nn) { System.out.println ("Entree Constr A - n=" + n + " p=" + p) ; n = nn ; System.out.println ("Sortie Constr A - n=" + n + " p=" + p) ; } public int n ; // ici, exceptionnellement, pas d'encapsulation public int p=10 ; } class B extends A { public B (int n, int pp) { super (n) ; System.out.println ("Entree Constr B - n=" + n + " p=" + p + " q=" + q) ; p = pp ; q = 2*n ; System.out.println ("Sortie Constr B - n=" + n + " p=" + p + " q=" + q) ; } public int q=25 ; } public class TstInit { public static void main (String args[]) { A a = new A(5) ; B b = new B(5, 3) ; } }

Exercice 6 : Quels résultats fournit le programme suivant ? class A { public void affiche() { System.out.println ("Je suis un A") ; } } class B extends A { } class C extends A { public void affiche() { System.out.println ("Je suis un C") ; } } class D extends C { public void affiche() { System.out.println ("Je suis un D") ; } } class E extends B {} class F extends C {} public class DiagHeri { public static void main (String { A a = new A() ; a.affiche() B b = new B() ; b.affiche() C c = new C() ; c.affiche() D d = new D() ; d.affiche() E e = new E() ; e.affiche() F f = new F() ; f.affiche() } }

arg[]) ; ; ; ; ; ;

Exercice 7 : Quels résultats fournit le programme suivant ?

class A { public void f(double x) { System.out.print ("A.f(double=" + x +") ") ; } } class B extends A {} class C extends A { public void f(long q) { System.out.print ("C.f(long=" + q + ") ") ; } } class D extends C { public void f(int n) { System.out.print ("D.f(int=" + n + ") ") ; } } class E extends B {} class F extends C { public void f(float x) { System.out.print ("F.f(float=" + x + ") ") ; } public void f(int n) { System.out.print ("F.f(int=" + n + ") ") ; } } public class Surdf { public static void main (String arg[]) { byte bb=1 ; short p=2 ; int n=3 ; long q=4 ; float x=5.f ; double y=6. ; A a = new A() ; a.f(bb) ; a.f(x) ; System.out.println() ; B b = new B() ; b.f(bb) ; a.f(x) ; System.out.println() ; C c = new C() ; c.f(bb) ; c.f(q) ; c.f(x) ; System.out.println() ; D d = new D() ; d.f(bb) ; c.f(q) ; c.f(y) ; System.out.println() ; E e = new E() ; e.f(bb) ; e.f(q) ; e.f(y) ; System.out.println() ; F f = new F() ; f.f(bb) ; f.f(n) ; f.f(x) ; f.f(y) ; f.f(p) ; } }

Exercice 8 Quels résultats fournit le programme suivant ? class A { public void affiche() { System.out.print ("Je suis un A ") ; } } class B extends A {} class C extends A { public void affiche() { System.out.print ("Je suis un C ") ; } } class D extends C { public void affiche() { System.out.print ("Je suis un D ") ; } } class E extends B {} class F extends C {} public class Poly { public static void main (String arg[]) { A a = new A() ; a.affiche() ; System.out.println() ; B b = new B() ; b.affiche() ; a = b ; a.affiche() ; System.out.println() ; C c = new C() ; c.affiche() ; a = c ; a.affiche() ; System.out.println() ; D d = new D() ; d.affiche() ; a = d ; a.affiche() ; c = d ; c.affiche() ; System.out.println() ; E e = new E() ; e.affiche() ; a = e ; a.affiche() ; b = e ; b.affiche() ; System.out.println() ; F f = new F() ; f.affiche() ; a = f ; a.affiche() ; c = f ; c.affiche() ; } }

Exercice 9 Quels résultats fournit le programme suivant ? class A { public void f(double x) { System.out.print ("A.f(double=" + x +") ") ; } } class B extends A {} class C extends A { public void f(long q) { System.out.print ("C.f(long=" + q + ") ") ; } } class D extends C { public void f(int n) { System.out.print ("D.f(int=" + n + ") ") ; } } class F extends C { public void f(float x) { System.out.print ("F.f(float=" + x + ") ") ; } public void f(int n) { System.out.print ("F.f(int=" + n + ") ") ; } } public class PolySur { public static void main (String arg[]) { byte bb=1 ; short p=2 ; int n=3 ; long q=4 ; float x=5.f ; double y=6. ; System.out.println ("** A ** ") ; A a = new A() ; a.f(bb) ; a.f(x) ; System.out.println() ; System.out.println ("** B ** ") ; B b = new B() ; b.f(bb) ; b.f(x) ; System.out.println() ; a = b ; a.f(bb) ; a.f(x) ; System.out.println() ; System.out.println ("** C ** ") ; C c = new C() ; c.f(bb) ; c.f(q) ; c.f(x) ; System.out.println() ; a = c ; a.f(bb) ; a.f(q) ; a.f(x) ; System.out.println() ; System.out.println ("** D ** ") ; D d = new D() ; d.f(bb) ; c.f(q) ; c.f(y) ; System.out.println() ; a = c ; a.f(bb) ; a.f(q) ; a.f(y) ; System.out.println() ; System.out.println ("** F ** ") ; F f = new F() ; f.f(bb) ; f.f(n) ; f.f(x) ; f.f(y) ; System.out.println() ; a = f ; a.f(bb) ; a.f(n) ; a.f(x) ; a.f(y) ; System.out.println() ; c = f ; c.f(bb) ; c.f(n) ; c.f(x) ; c.f(y) ; } }

Exercice 10 : Soit les classes Point et PointNom ainsi définies : class Point { private int x, y ; public Point (int x, int y) { this.x = x ; this.y = y ; } public static boolean identiques (Point a, Point b) { return ( (a.x==b.x) && (a.y==b.y) ) ; } public boolean identique (Point a) { return ( (a.x==x) && (a.y==y) ) ; } } class PointNom extends Point { private char nom ; PointNom (int x, int y, char nom) { super (x, y) ; this.nom = nom ; } }

Quels résultats fournit ce programme ? Expliciter les conversions mises en jeu et les règles utilisées pour traiter les différents appels de méthodes : public class LimPoly { public static void main (String args[]) { Point p = new Point (2, 4) ; PointNom pn1 = new PointNom (2, 4, 'A') ; PointNom pn2 = new PointNom (2, 4, 'B') ; System.out.println (pn1.identique(pn2)) ; System.out.println (p.identique(pn1)) ; System.out.println (pn1.identique(p)) ; System.out.println (Point.identiques(pn1, pn2)) ; } }

Exercice 11 : O souhaite dispose d’u e hié a hie de lasses pe ettant de manipuler des figures géométriques. O veut u’il soit toujou s possi le d’éte dre la hiérarchie en dérivant de nouvelles classes mais on souhaite pouvoir imposer que ces dernières disposent toujours des méthodes suivantes : • • •

void affiche () void homothetie (double coeff) void rotation (double angle)

Écrire la classe abstraite Figure qui pourra servir de classe de base à toutes ces classes. Exercice 12 : Compléter la classe abstraite Figure de l’e e i e p é éde t, de faço •

u’elle i plé e te :

une méthode homoRot (double coef, double angle) qui applique à la fois une homothétie et une rotation à la figure,



des méthodes statiques afficheFigures, homothetieFigures et rotationFigures appliquant une même opération (affichage, homothétie ou rotation) à un tableau de figures (objets d’une classe dérivée de Figure).

Exercice 13 : On souhaite disposer de classes permettant de manipuler des figures géométriques, on souhaite pouvoir caractériser celles qui possèdent certaines fonctionnalités en leur demanda t d’i plé e te des interfaces, à savoir : • •

Affichable pou elles ui dispose o t d’u e éthode void affiche (), Tranformable pour celles qui disposeront des deux méthodes suivantes : o void homothetie (double coeff) o void rotation (double angle)

Écrire les deux interfaces Affichable et Transformable....


Similar Free PDFs