0% ont trouvé ce document utile (0 vote)
171 vues7 pages

TP3 Polymorphisme

Cet exercice présente plusieurs classes pour modéliser différents types d'animaux et leur comportement. La classe mère Animal définit une méthode pour décrire chaque animal. Les classes dérivées comme Chien et Chat redéfinissent cette méthode. Le programme principal crée des animaux dans un tableau et les fait décrire un par un.

Transféré par

ايمان ايمان
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
171 vues7 pages

TP3 Polymorphisme

Cet exercice présente plusieurs classes pour modéliser différents types d'animaux et leur comportement. La classe mère Animal définit une méthode pour décrire chaque animal. Les classes dérivées comme Chien et Chat redéfinissent cette méthode. Le programme principal crée des animaux dans un tableau et les fait décrire un par un.

Transféré par

ايمان ايمان
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Exercice 1 :

Quels résultats fournit le programme suivant ?

class A

{ public void f(double x) { [Link] ("A.f(double=" + x +") ") ; }

class B extends A {}

class C extends A

{ public void f(long q) { [Link] ("C.f(long=" + q + ") ") ; }

class D extends C

{ public void f(int n) { [Link] ("D.f(int=" + n + ") ") ; }

class F extends C

{ public void f(float x) { [Link] ("F.f(float=" + x + ") ") ; }

public void f(int n) { [Link] ("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. ;

[Link] ("** A ** ") ;

A a = new A() ; a.f(bb) ; a.f(x) ; [Link]() ;

[Link] ("** B ** ") ;


B b = new B() ; b.f(bb) ; b.f(x) ; [Link]() ;

a = b ; a.f(bb) ; a.f(x) ; [Link]() ;

[Link] ("** C ** ") ;

C c = new C() ; c.f(bb) ; c.f(q) ; c.f(x) ; [Link]() ;

a = c ; a.f(bb) ; a.f(q) ; a.f(x) ; [Link]() ;

[Link] ("** D ** ") ;

D d = new D() ; d.f(bb) ; c.f(q) ; c.f(y) ; [Link]() ;

a = c ; a.f(bb) ; a.f(q) ; a.f(y) ; [Link]() ;

[Link] ("** F ** ") ;

F f = new F() ; f.f(bb) ; f.f(n) ; f.f(x) ; f.f(y) ;

[Link]() ;

a = f ; a.f(bb) ; a.f(n) ; a.f(x) ; a.f(y) ; [Link]() ;

c = f ; c.f(bb) ; c.f(n) ; c.f(x) ; c.f(y) ;

Exercice 2 :
Soit les classes Point et PointNom ainsi définies :

class Point

{ 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) ) ; }


private int x, y ;

class PointNom extends Point

{ PointNom (int x, int y, char nom)

{ super (x, y) ; [Link] = nom ; }

private char nom ;

Quels résultats fournit ce programme ?

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') ;

[Link] ([Link](pn2)) ;

[Link] ([Link](pn1)) ;

[Link] ([Link](p)) ;

[Link] ([Link](pn1, pn2)) ;

2. Doter la classe PointNom d’une méthode statique identiques et d’une


méthode identique fournissant toutes les deux la valeur true lorsque les
deux points concernés ont à la fois mêmes coordonnées et même nom.
Quels résultats fournira alors le programme précédent ?

Exercice 3:
On souhaite définir un ensemble de classes pour "modéliser" des
animaux. On veut munir chaque animal d'une méthode nommée decrire.
On veut pouvoir mettre un mélange d'animaux dans un même tableau
puis, dans une boucle, pouvoir appliquer successivement la méthode
decrire à tous les "animaux" du tableau.

Il s'agit de faire en sorte qu'une méthode main construise un tableau


d’animaux variés (par exemple des chiens et des chats), et que, grâce à
une boucle appropriée, la sortie du programme soit (par exemple):

Animal : je suis un chien

Animal: je suis un chat

Animal: je suis un animal "quelconque"

Animal: je suis un chat

Exercice 4 :

On dispose de la classe suivante :

class Point

{ public Point (double x, double y) { this.x=x ; this.y=y ; }

public void deplace (double dx, double dy) { x+=dx ; y+=dy ; }

public void affiche ()

{ [Link] ("Point de coordonnees " + x + " " + y) ;

public double getX() { return x ; }

public double getY() { return y ; }

private double x, y ;

On souhaite réaliser une classe Cercle disposant des méthodes suivantes :


1. • constructeur recevant en argument les coordonnées du centre du cercle et
son rayon,
2. • deplaceCentre pour modifier les coordonnées du centre du cercle,
3. • changeRayon pour modifier le rayon du cercle,
4. • getCentre qui fournit en résultat un objet de type Point correspondant au
centre du cercle,
5. • affiche qui affiche les coordonnées du centre du cercle et son rayon.

6. 1. Définir la classe Cercle comme classe dérivée de Point.


7. 2. Définir la classe Cercle comme possédant un membre de type Point.

Dans les deux cas, on écrira un petit programme mettant en jeu les différentes
fonctionnalités de la classe Cercle.

Exercice 5 :

On va créer un zoo avec différents animaux. Chaque animal a une race un nom,
et fait quelque chose comme bruit Créez la classe Animal.

8. Créez une méthode pour la classe Animal qui écrit sur l'écran la
présentation d'un animal : son nom, sa race et ce qu'il fait comme bruit.
9. Créez les classes dérivées pour les différentes races : chein, chat, majom,
etc...
[Link]éez une classe ZooMain qui contient la méthode main.
[Link]éez les animaux du zoo dans une variable static de la classe ZooMain
en forme d'un tableau. Les cases du tableau correspondent aux cages du
zoo.
[Link]éez un chien et deux chats dans votre zoo et faites les présenter.
[Link] une interface pour la méthode de présentation et modifier le code.

Exercice 6 :
Soit un programme dont la spécification en termes d’interfaces et de
classes est la suivante :

1. On aura trois interfaces


1. Vendable par kilogramme: l'interface pour les produits qui se
vendent par kilogramme
Méthodes:
1. vendre: cette méthode reçoit la quantité vendue du produit,
retourne le revenu du magasin et modifie le stock
2. Vendable par pièce: l'interface pour les produits qui se vendent par
pièces
Méthodes:
1. vendre: cette méthode reçoit la quantité vendue du produit,
retourne le revenu du magasin et modifie le stock
3. Succeptible d'être vendu en solde
Méthode:
1. lancer le solde: cette méthode baisse le prix du produit par le
pourcentage donné
2. terminer le solde: cette méthode augmente le prix du produit
par le pourcentage donné
2. On aura une classe générale des Arcticles.
Propriétés:

1. prix d'achat: le prix pour lequel le supermarché achète le produit


2. prix de vente: le prix pour lequel le supermarché vend le produit
3. nom: le nom du produit
4. fournisseur: le nom du fournisseur du produit

Méthodes (autre que le constructeur):

5. calculateur du taux du rendement


6. description des caractéristiques du produit sur l'écran (les prix, le
nom, le fournisseur; rendement)

Cette classe n'implémente aucune interface.

3. On a deux classes dérivées des Articles

Chaque classe dérivée des articles respecte la règle suivante: au moment


de la construction de l'objet, le stock et vide.

1. La classe des artciles élécroménagers

Propriétés suplémentaires:

1. nombre de pièces en stock

Méthodes supplémentaires (autre que le constructeur):


2. remplir le stock
3. description des caractéristiques du produit sur l'écran (les
prix, le nom, le fournisseur; rendement; stock)

Il faut implémenter les interfaces correspondantes à cette classe.

2. La classe des primeurs


Propriété supplémentaires:
1. quantité en stock
Méthodes supplémentaires:
2. remplir le stock
3. description des caractéristiques du produit sur l'écran (les
prix, le nom, le fournisseur; rendement; stock)
Il faut implémenter les interfaces correspondantes à cette classe,
sachant que les primeurs ne peuvent pas être vendu en solde.
4. On a une classe pour les magasins
Propriétés:
1. Dépenses: le coût d'achat des produits
2. Revenus: les revenus après la vente des produits
3. Produits: deux tableaux de deux articles (éléctroménagers et
primeurs)
Méthodes (autre que le constructeur):
4. description de l'état du magasin
5. calculateur du taux de rendement

Vous aimerez peut-être aussi