Probleme constructeurs héritage

Probleme constructeurs héritage - Java - Programmation

Marsh Posté le 20-09-2013 à 13:09:04    

Bonjour,
Je débute en programmation et notamment en java.
Pour progresser, j'essaye de résoudre des feuilles exercices que je trouve sur google. J'essaye également d'y  ajouter des difficultées moi même.
 
J'aimerai bien avoir un coup de main sur celui-ci
 
J'ai une classe Point
 
J'ai une classe polygone avec pour constructeur un tableau de point :
 
 

Code :
  1. public class Polygone {
  2.     protected Point[] sommets;
  3.     public Polygone(Point[] tab) {
  4.         this.sommets = tab;
  5.     }


 
 
J'aimerais faire une classe rectangle qui hérite de polygone et qui prends en constructeur 2 points (de là j'en détmerine les 2 autres).
Le problème se situe ici :
j'appel mon construteur de classe mère (mais je n'ai pas forcément besoin d'un tableau, immaginons que dans mon tableau il y ai 3 points, je ne peux construire de rectangle...
 
Je bloque complètement sur ce ou ces constructeurs.
 
J'ai tenté d'ajouter des variables d'instances (classe Point) mais je n'arrive pas à déterminer les 2 autres points.
 

Code :
  1. public class Rectangle extends Polygone {
  2. //
  3.     private Point sg;
  4.     private Point id;
  5.     private Point sd;
  6.     private Point ig;
  7.     //constructeur
  8.     public Rectangle(Point[] tab){
  9.         super(tab);
  10.     }
  11.    
  12.     public Rectangle(Point[] tab, Point sg, Point id) {
  13.         super(tab);
  14.         this.sg = sg;
  15.         this.id = id;
  16. }


 
Le problème c'est que je n'ai pas besoin du tableau... mais plutot de 2 points
 
 
Je ne sais pas si j'ai été très clair... Avez-vous une idée pour m'aider un peu sur le constructeur?
 
Merci à vous

Reply

Marsh Posté le 20-09-2013 à 13:09:04   

Reply

Marsh Posté le 22-09-2013 à 21:49:06    

La manière 'pro' de faire c'est de prendre le tableau de points en constructeur.
Ca te fais une classe pouvant évoluer.
Si moins de deux points : pas possible de créer un Rectangle
Si deux points : ok, reste à déterminer les deux points manquants
Si trois points : a priori pas exploitable
Si quatre points : ok tout va bien
Plus de quatres points : pas exploitable

 

Ensuite dans le constructeur de ta classe Rectangle qui n'hérite plus de Polygone

 
Code :
  1. public class Rectangle extends Polygone {
  2.   private Point sg;
  3.   private Point id;
  4.   private Point sd;
  5.   private Point ig;
  6.   //constructeur
  7.   public Rectangle(Point[] tab) throws Exception {
  8.     super(tab);
  9.     if (tab.length <2 || tab.length ==3 || tab.length > 4 ){
  10.       throw new Exception("Nombre incorrect de points pour construire un rectangle" );
  11.     } else if (tab.length == 2 ){
  12.       //tu vérifies que les deux points passés ont des x et y différents
  13.       //tu détermines ensuite les deux points manquants
  14.     }  else if (tab.length == 4 ){
  15.       //a priori tout est ok, tu as tes quatres points
  16.     }
  17. }
 


Message édité par willy le kid le 22-09-2013 à 21:49:26
Reply

Marsh Posté le 22-09-2013 à 22:30:29    

Ouais enfin, vaut mieux faire deux constructeur différent.
Un qui prend 2 points, l'autre 4 sans passer par un array, tu remplis ensuite l'array et appelle le c-tor de polygone avec l'array que tu as fait.
Sinon, s'il faut absolument utiliser un array, pas besoin de faire le "if (tab.length <2 || tab.length ==3 || tab.length > 4 )", suffit de faire :  
 

Code :
  1. public Rectangle(Point [] tab) throws Exception
  2. {
  3.   if (tab.length == 2)
  4.   {
  5.     // Deux points
  6.   }
  7.   else if (tab.length == 4)
  8.   {
  9.     // Quatre points
  10.   }
  11.   else
  12.     throw new Exception("erreur blablabla" );
  13. }


 
Ça fait que 2 tests au lieu de 5.


---------------
Perhaps you don't deserve to breathe
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed