Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
1841 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Probleme constructeurs héritage

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Probleme constructeurs héritage

n°2203606
beginner93​6
Posté le 20-09-2013 à 13:09:04  profilanswer
 

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

mood
Publicité
Posté le 20-09-2013 à 13:09:04  profilanswer
 

n°2203766
willy le k​id
Posté le 22-09-2013 à 21:49:06  profilanswer
 

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
n°2203768
Terminapor
I'll see you rise.
Posté le 22-09-2013 à 22:30:29  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Probleme constructeurs héritage

 

Sujets relatifs
Problème avec unlink et chmodproblème programmation Python
[EXCEL] Impression d'une zone variable (problème de Range) [Résolu]code du problème en c++
Problème lors de la modification des droits NTFS par vbaProblème avec Typeahead
[Ada][Débutant POO] Problème d'héritage à l'instantiation d'un paquetProblème avec jdk 1.8
Problème reception données port serie 
Plus de sujets relatifs à : Probleme constructeurs héritage



Copyright © 1997-2016 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR