← (précédent) C.5 Héritage et Polymorphisme
C.7 Des classes particulières
Accueil S O M M A I R E

C.6 Exercices corrigés de P.O.O (2)

Exercice 1 : Héritage

Ecrivez une classe Felins avec 5 caractériqtiques et 2 comportements des félins. Puis écrivez 2 classes dérivés de Felins. Choisissez 2 sous-espèces de félins (Exemple : chat, tigre, léopard, panthere, lynx, guépard, lion, jaguard, puma, etc... ). Pour chacune des 2 classes, 2 caractéristiques propres et 2 comportements propres.
Les comportements sont des méthodes. Ces méthodes seront toutes de type void et auront une seule instruction réduite à l' affichage du comportement. Pour se documenter, regardez le site suivant F E L I N S
Vous pouvez aussi faire des recherches sur Wikipedia. Par exemple, tapez sur le moteur google Lion wikipedia

Les classes :

1.     class Felin
2.     {
3.          String formeTete = "arrondie";
4.          String vue = "perçante";
5.          String oreilles = "fines";
6.          String taille = "svelte";
7.          int nombreDents = 30;
8.
9.          public void voir()
10.         {
11.              System.out.println("Mes pupilles s' adaptent aux variations de la lumière");
12.         }
13.         
14.         public void manger()
15.         {
16.               System.out.println("Je suis un carnivore");
17.         }
18.    }
19.
20.
21.     class Chat extends Felin
22.     {
23.          double poids = 5; // poids moyen en kilos
24.          int nombreOs = 250;
25.    
26.         public void moncri()
27.         {
28.              System.out.println("Je miaule");
29.         }
30.       
31.         public void sauter()
32.         {
33.              System.out.println("Je peux sauter à une hauteur, 5 fosi supérieure à ma taille");     
34.         }
35.    }
36.     
37.     class Tigre extends Felin
38.     {
39.          int longevite = 16; //moyenne en années
40.          int population : 3500; // nombre d' individus
41.    
42.          public void QuantiteMangee()
43.          {
44.               System.out.println("Je peux manger jusqu' à 50 kilos de viande en un seul repas");
45.          }
46.    
47.          public void sociabilite()
48.          {
49.                System.out.println("Je suis plutôt solitaire");
50.          }
51.     
52.     }    
Exercice 2 : polymorphisme et redéfinition d' une méthode

Prévoir l' affichage du programme ci-dessous en expliquant pourquoi.
Le programme :

1.     class Felin
2.     {
3.          public void comportement()
4.          {
5.               System.out.println("se comporter comme un félin");
6.          }
7.     }
8.
9.     class Chat extends Felin
10.    {
11.        
12.    }     
13.              
14.         
15.    
16.
17.    class Tigre extends Felin
18.    {
19.         public void comportement()
20.         {
21.              System.out.println("se comporter comme un tigre");
22.         }
23.    }
24.
25.    class TigreSiberie extends Tigre
26.    {
27.         public void comportement()
28.         {
29.              System.out.println("se comporter comme un tigre deSiberie");
30.         }
31.    }
32.
33.    class ChatPekinois extends Chat
34.    {
35.          
36.    }     
37.              
38.        
39.   
40.
41.    class TigreBengale extends Tigre
42.    {
43.         
44.    }    
45.              
46.         
47.    
48.
49.
50.     public class TesterFelins
51.     {
52.          public static void main(String [] args)
53.          {
54.               Felin f = new Felin();
55.               f.comportement();
56.               System.out.println();
57.                 
58.               Chat c = new Chat();
59.               c.comportement();
60.               f = c;
61.               f.comportement();
62.               System.out.println();
63.
64.               Tigre t = new Tigre();
65.               t.comportement();
66.               f = t;
67.               f.comportement();
68.               System.out.println();
69.
70.               TigreSiberie ts = new TigreSiberie();
71.               f = ts;
72.               f.comportement();
73.               t = ts;
74.               t.comportement();
75.               System.out.println();
76.
77.               ChatPekinois cp = new ChatPekinois();
78.               cp.comportement();
79.               f = cp;
80.               f.comportement();
81.               c = cp;
82.               cp.comportement();
83.               System.out.println();
84.               
85.               TigreBengale tb = new TigreBengale();
86.               f = tb;
87.               f.comportement();
88.               t = tb;
89.               t.comportement();
90.               
91.          }
92.     }
Si vous compilez et exécutez ce programme, il sera affiché :

se comporter comme un félin

se comporter comme un félin
se comporter comme un félin

se comporter comme un tigre
se comporter comme un tigre

se comporter comme un tigre deSiberie
se comporter comme un tigre deSiberie

se comporter comme un félin
se comporter comme un félin
se comporter comme un félin

se comporter comme un tigre
se comporter comme un tigre

explications :

En ligne 54, je crée un objet Felin. Puis à la ligne 55, j' applique la méthode comportement(). Java recherche la méthode comportement() définie dans la classe quia permis de créer l' objet f. Et c' est la classe Felin. Donc, c' est sa méthode qui est utilisée. D' où l' affichage : se comporter comme un félin

En ligne 57, on crée un objet Chat. Puis on applique la méthode comportement() en ligne 58. Comme cette méthode n' existe pas dans la classe Chat , java va la chercher dans la classe mère. Et c' est la classe Felin. Donc, c' est la méthode comportement() de la classe Felin qui est utilisée. D' où à l' affichage : se comporter comme un félin

En ligne 60, je prends la référence c de l' objet new Chat, que je mets dans la variable f. f pointe maintenant vers l' objet de type Chat. Puis en ligne 61, j' applique la méthode comprtement(). Bien que f soit de type Felin, java va quand même chercher la méthode comportement() de la classe Chat. Puisque c' est la méthode de la classe de l' objet qui compte. Et pas la méthode de la classe de la référence. Mais comme la classe Chat ne possède pas de méthode comportement(), java va la chercher dans la classe mère qui est Felin. En fin de compte, c' est donc la méthode de la classe Felin qui est utilisée. D' où à l' affichage : se comporter comme un félin

En ligne 64, on crée un objet de type Tigre. En ligne 65, on applique la méthode comportement à cet Objet. C' est la méthode comportement() de la classe Tigre qui est appelée. D' où à l ' affichage : se comporter comme un félin
En ligne 66, je mets la référence de l' objet Tigre dans la référence de type Felin. Puis en ligne 67, j' applique la méthode comportement() à f. Puisque f contient la référence d' un objet Tigre, c' est la méthode comportement() de la classe Tigre qui est appelée. D' où l' affichage se comporter comme un félin

Faîtes un effort de comprendre le reste en utilisant le même raisonnement.
Exercice 3 : polymorphisme et sur-définition d' une méthode

Prévoir l' affichage du programme ci-dessous en expliquant pourquoi.

Le programme :

1.     class Alpha
2.     {
3.          public void afficher(double d)
4.          {
5.               System.out.println("renvoyer double de alpha : " + d);   
6.          }
7.     }
8.     
9.     class Beta extends Alpha
10.    {
11.         
12.    }
13.   
14.    class Gamma extends Alpha
15.    {
16.         public void afficher(long l)
17.         {
18.              System.out.println("renvoyer long de gamma : " + l);
19.         }
20.    }
21.    
22.    class Delta extends Gamma
23.    {
24.         public void afficher(int i)
25.         {
26.              System.out.println("renvoyer int de delta : " + i);
27.         }
28.    }
29. 
30.    class Omega extends Gamma
31.    {
32.         public void afficher(float f)
33.         {
34.             System.out.println("renvoyer float de omega : " + f);
35.         }
36.         
37.         public void afficher(int i)
38.         {
39.              System.out.println("renvoyer int de omega : " + i);
40.         }
41.    }
41.    
42.
43.    public class TesterSurdefinitionETpolymorphisme
44.    {
45.         public static void main(String [] args)
46.         {
47.              byte b = 1; short s = 5; int i = 22; long l = 44;
48.              float f = 2.5f; double d = 33.01;
48.          
49.              Alpha a = new Alpha();
50.              a.afficher(b);
51.              a.afficher(f);
52.              System.out.println();
53.
54.              Beta b = new Beta();
55.              b.afficher(b);
56.              b.afficher(f);
57.              
58.              a = b;
59.              a.afficher(b);
60.              a.afficher(f);
61.              System.out.println();
62.
63.              Gamma g = new Gamma();
64.              g.afficher(b);
65.              g.afficher(l);
66.              g.afficher(f);
67.              a = g;
68.              a.afficher(b);
69.              a.afficher(l);
70.              a.afficher(f);
71.              System.out.println();
72.
73.              Delta d = new Delta();
74.              d.afficher(b);
75.              d.afficher(l);
76.              d.afficher(d);
77.              a = g;
78.              a.afficher(b);
79.              a.afficher(l);
80.              a.afficher(d);
81.              System.out.println();
82.              
83.              Omega o = new Omega();
84.              o.afficher(b);
85.              o.afficher(i);
86.              o.afficher(f);
87.              o.afficher(d);
88.     
89.              a = 0;
90.              a.afficher(b);
91.              a.afficher(i);
92.              a.afficher(f);
93.              a.afficher(d);
94.
95.              g = o;
96.              g.afficher(b);
91.              g.afficher(i);
92.              g.afficher(f);
93.              g.afficher(d);
95.         }
96.    }


La connaissance, c'est bien. La partager, c'est mieux
Conseiller ce site à un(e) ami(e):

Son e-mail est :       
Une suggestion à faire pour ce site ? ... Contact : webmaster@debutantprog.com
← (précédent) C.5 Héritage et Polymorphisme
C.7 Des classes particulières
Accueil S O M M A I R E

C.6 Exercices corrigés de P.O.O (2)