IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Problème constructeurs héritage


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 6
    Points : 11
    Points
    11
    Par défaut Problème constructeurs héritage
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public class Polygone {
     
        protected Point[] sommets;
     
        public Polygone(Point[] tab) {
            this.sommets = tab;
        }

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    public class Rectangle extends Polygone {
    //
     
        private Point sg;
        private Point id;
        private Point sd;
        private Point ig;
     
        //constructeur
        public Rectangle(Point[] tab){
            super(tab);
        }
     
        public Rectangle(Point[] tab, Point sg, Point id) {
            super(tab);
            this.sg = sg;
            this.id = id;
     
    }
    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

  2. #2
    Membre éclairé Avatar de Ceddoc
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2009
    Messages : 493
    Points : 698
    Points
    698
    Par défaut
    Euh si j'ai bien compris je pense que tu as besoin de quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      public Rectangle(Point sg, Point id) {
            Point[] tab =  // ici calcul des points manquants puis on met les points calculés et ceux déjà existants dans un tableau.
            super(tab);
     
    }
    Cependant il y a une bonne pratique qui dit qu'il vaut mieux éviter les traitements dans les constructeurs donc je te conseillerais d'initialiser une rectangle (hérité de polygone) sans tableau de points puis d'ajouter une méthode sur rectangle de type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public void initialiser(Point sg, Point id)
    Qui calcule les points manquants et appler un setter de tab[] que tu auras ajouter dans polygone.

  3. #3
    Membre expérimenté Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Points : 1 622
    Points
    1 622
    Par défaut
    Salut,

    Pour déterminer tous les points d'un rectangle tu as simplement d'un point d'origine, et du couple (hauteur,largeur) avec :

    A=(x,y) point d'origine (supérieur gauche)
    B=(x+dx,y) point supérieur droit
    C=(x+dx,y+dy) inférieur droit
    D=(x,y+dy) inférieur gauche

    Ducoup

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public class Polygone {
     
        protected Point[] sommets;
     
        public Polygone(Point[] tab) {
            this.sommets = tab;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
     
    public class Rectangle extends Polygone {
    //
     
        private Point sg;
        private Point id;
        private Point sd;
        private Point ig;
     
        //constructeur
        public Rectangle(Point o, int dx, int dy){
     
             sg = o;
             sd = new Point( o.x + dx, o.y );
             id = new Point( o.x + dx ,o.y + dy);
             ig = new Point( o.x, o.y + dy );
     
            Point[] rectangle = {
               { o }, 
               { sd },
               { id },
               { id },
            }
            super(rectangle);
        }
    }
    Dans tous les cas tu dois spécifier à l'avance combien de points tu veux pour construire ton rectangle.

    Si jamais tu veux absolument garder la possibilité de pouvoir faire ça 1, 2, ou p points, tu dois prévoir autant de constructeurs avec une méthode d'initialisation différente.

    Après si tu dois certainement avoir possibilité de chainer les différents appels constructeurs pour traiter tous les cas.

  4. #4
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par beginner936 Voir le message
    Le problème c'est que je n'ai pas besoin du tableau... mais plutot de 2 points
    Si ton Rectangle ne respecte pas les spec de sa classe parente, cela signifie que tu as un problème de logique dans ton héritage...


    @Nico02 : Ton code ne peut pas marcher puisque l'appel au constructeur supérieur doit être la première instruction de la classe.
    Il faut passer par une méthode static pour créer le tableau.

    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public class Rectangle extends Polygone {
    	public Rectangle(Point sg, Point id) {
    		super(createPolygoneTabs(sg, id));
    	}
     
    	private static Point[] createPolygoneTabs(Point a, Point b) {
    		return new Point[] {
    				a,
    				new Point(a.x, b.y),
    				b,
    				new Point(b.x, a.y)
    		};
    	}
    }

    a++

Discussions similaires

  1. problème d'héritage au niveau du constructeur
    Par khadijadadou dans le forum Débuter
    Réponses: 1
    Dernier message: 16/08/2013, 19h03
  2. Problème d'héritage et constructeurs
    Par popy67 dans le forum Débuter avec Java
    Réponses: 8
    Dernier message: 23/11/2010, 22h49
  3. probléme d'héritage constructeur
    Par bdptaki dans le forum Langage
    Réponses: 2
    Dernier message: 07/01/2009, 21h39
  4. problème constructeur + héritage
    Par BOLARD dans le forum C++
    Réponses: 10
    Dernier message: 13/04/2006, 09h11
  5. Problème d'héritage d'une méthode protégée
    Par shenron666 dans le forum C++
    Réponses: 9
    Dernier message: 29/04/2005, 00h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo