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

2D Java Discussion :

[Débutante] Héritage


Sujet :

2D Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 28
    Par défaut [Débutante] Héritage
    Hello!

    J'ai hérité la classe Point avec trois constructeurs, dont un qui est sans paramètres:
    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
     
    import java.awt.*; 
     
    public class PointGraphic extends Point{
     
      public PointGraphic(){
    		super();
      }
     
    ...
     
      public void dessine(Graphics g){
    		g.fillOval(x, y, d, d);
      } 
    }
    Cette classe je l'utilise dans un programme, qui devrait donc dessiner un oval sur le point 0,0 (comme le constructeur est sans paramètres):

    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
     
    import java.applet.*;
    import java.awt.*;
     
    public class Test extends Applet {  
     
    	PointGraphic point;
     
    	public void init() {	
    		point= new PointGraphic ();	
    	}
     
     	public void paint(Graphics g) {
    	 	point.dessine(g);
     	}
    }
    Mais il ne le fait pas... Vous voyez pourquoi? Merci d'avance!

  2. #2
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    258
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 258
    Par défaut
    lorsque ton applet se 'dessine' elle appelle point.dessine(g) mais celle-ci necessite que tu informe x,y,d,d (???? pkoi 2*d) .... ce n'est pas le constructeur par default de Point () qui dessine mais belle est bien t'as fonction dessine ...

    Sinon Point est-elle un Component ou est-ce que c toi qui l'a cree parce que je suis pas trop sur pour ta fonction dessine ... pour dessiner ds qq chose il faut un Graphics (de la fonction paint ou paintComponent) mais peut etre je me trompe sur ton code

  3. #3
    Gfx
    Gfx est déconnecté
    Expert confirmé
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Par défaut
    suckthewindow > 2*d car un cercle est un oval dont les deux diametres sont egaux. Son code de dessin fonctionne normalement.

    Tootsi > Comment initialise-tu ton membre "d" ? Et "x" et "y" ?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 28
    Par défaut
    Merci pour vos réponses!

    J'ai donc deux constructeurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
      public PointGraphic (){
    	super();
      } 
     
      public PointGraphic (int x, int y, int d){
    	super(x,y);
    	this.d=d;
      }
    Je les appelle comme suit (donc j'initialise les x, y et d dans l'appelle de constructeur).

    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
     
    import java.applet.*;
    import java.awt.*;
     
    public class Test extends Applet { 
     
       PointGraphic point;
       PointGraphic point2;
     
       public void init() {   
          point= new PointGraphic ();  
          point2= new PointGraphic (120, 120, 50);
       }
     
        public void paint(Graphics g) {
           point.dessine(g);
           point2.dessine(g);
        }
    }
    Le point sans paramètres ne s'affiche pas mais l'autre oui.

    T'as raison Gfx, dans le cas ou mon constructeur est sans paramètres, j'initialise pas les x et y... Comment pourrais-je faire? Si je les initialise dans la classe PointGraphic, tous mes cercles vont dans le 0,0.

    Sinon Point, d'où est hérité le PointGraphic, est un Component.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 7
    Par défaut
    Mais tu peux envisager une methode pour changer le centre des cercles, puis tu les dessine. n'oublie pas que tu as une méthode repaint qui te permet de redissiner l applet. this.repaint().

    Bon courage

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 28
    Par défaut
    Merci ramcis, t'as raison, je pourrais faire une méthode pour ça. Mais si non, pour comprendre, est-ce quelqu'un sait comment utiliser un constructeur sans paramètres, pour dessiner dans les coordonnés 0,0?

  7. #7
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    258
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 258
    Par défaut
    Et pkoi pas ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      public PointGraphic (){
       super(0,0);
       this.d=0;
      }
    dis moi si ca marche

Discussions similaires

  1. [débutant][héritage] ou pas
    Par luta dans le forum Schéma
    Réponses: 7
    Dernier message: 13/10/2006, 16h04
  2. Réponses: 3
    Dernier message: 15/05/2006, 19h04
  3. [Débutant]Héritage
    Par Ryadus dans le forum Langage
    Réponses: 6
    Dernier message: 30/01/2006, 11h27
  4. [débutant]héritage
    Par pacha1 dans le forum Langage
    Réponses: 4
    Dernier message: 26/05/2004, 17h12
  5. [Débutant] Héritage & appel de méthodes
    Par KooX dans le forum Langage
    Réponses: 4
    Dernier message: 11/05/2004, 23h37

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