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

Langage Java Discussion :

Comment bien utiliser super ?


Sujet :

Langage Java

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 8
    Par défaut Comment bien utiliser super ?
    Bonjour/Bonsoir à toutes et à tous.

    Mon problème est le suivant :

    J'ai une classe véhicule qui se "divise" en deux parties : voiture et moto.
    J'aurais aimé mettre une partie des infos comme le prix, la puissance, etc dans un constructeur de véhicule et mettre les informations plus "personnels" comme le nombre de porte dans voiture. Seulement voilà, je pense avoir fait une bourde quelque part !

    ---

    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
    public class Véhicules
    {
    	protected String marque, genre, carburant;
    	protected int puissance;
    	protected float prix;
     
    	public Véhicules(String marque, String genre, String carburant, int puissance, float prix)
    	{
    		this.marque=marque;
    		this.genre=genre;
    		this.carburant=carburant;
    		this.puissance=puissance;
    		this.prix=prix;
    	}
    	...
    }
    ________

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class Voiture extends Véhicules
    {
    	protected int NbrPorte, NbrAirbags;
     
    	public Voiture(String marque, String genre, String carburant, int puissance, float prix, int NbrPorte, int NbrAirbags)
    	{
    		super(marque,genre,carburant,puissance,prix);
    		this.NbrPorte = NbrPorte;
    		this.NbrAirbags = NbrAirbags;
    	}
    	...
    }
    ________

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class Moto extends Véhicules
    {
    	protected int Cylindree, reservoir;
     
    	public Moto(String marque, String genre, String carburant, int puissance, float prix, int Cylindree, int reservoir)
    	{
    		super(marque,genre,carburant,puissance,prix);
    		this.Cylindree = Cylindree;
    		this.reservoir = reservoir;
    	}
    	...
    }
    Je ne sais pas si j'utilise correctement les méthodes mais il ne me semble pas y avoir d'erreur. Cependant, quand j'ajoute mon objet Voiture dans mon ArrayList de Voiture, une erreur survient ..

  2. #2
    Nouveau candidat au Club
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 2
    Par défaut
    c'est quoi l'erreur, peux être c'est pas super
    conseil:respecte les règles de développement Java(nom d'attribut commence par minuscule, ne pas utiliser les accents dans les noms de classe,...)

  3. #3
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Par défaut
    Citation Envoyé par dOuki Voir le message
    Je ne sais pas si j'utilise correctement les méthodes mais il ne me semble pas y avoir d'erreur. Cependant, quand j'ajoute mon objet Voiture dans mon ArrayList de Voiture, une erreur survient ..
    L'erreur est ?
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,

    Vu la façon dont tu utilises la classe Vehicule, je pense aussi que tu dois le mettre en abstract.

    A+.

  5. #5
    Membre chevronné Avatar de Ceddoc
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    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
    Par défaut
    J'ai tenté de reproduire avec les éléments que tu nous as donné, mais je n'ai aucune erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public static void main(String[] args) {
    		Voiture maVoiture1 = new Voiture("Renault", "Clio", "Essence", 150, 24000, 5, 8);
    		Voiture maVoiture2 = new Voiture("Renault", "Espace", "Diesel", 150, 34000, 5, 8);
    		List<Voiture> maListeVoiture = new ArrayList<Voiture>();
    		maListeVoiture.add(maVoiture1);
    		maListeVoiture.add(maVoiture2);
    		for (Voiture voiture : maListeVoiture) {
    			System.out.println("voiture : " + voiture.marque + "  " + voiture.genre + " " + voiture.carburant + " " + voiture.prix);
    		}
    	}
    Tout marche très bien chez moi...

  6. #6
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Par défaut
    Citation Envoyé par machimachi Voir le message
    c'est quoi l'erreur, peux être c'est pas super
    Si et comme l'a testé Ceddoc, ça devrait fonctionner.
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  7. #7
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    List<Vehicule> mesVehicules = new ArrayList<Vehicule>();
    Voiture maVoiture = new Voiture("Renault", "Clio", "Essence", 150, 24000, 5, 8);
    Moto maMoto = new Voiture("Tsutzuki", "rien", "Essence", 150, 24000, 5, 10);
    mesVehicules.add(maVoiture);
    mesVehicules.add(maMoto);
    Mais seulement quand tu va utiliser la liste, tu dois s'assurer que d'appeler les méthode de la classe mère Vehicule, sinon tu dois caster les éléments.

    A+.

  8. #8
    Membre chevronné Avatar de Ceddoc
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    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
    Par défaut
    Petite correction (rien de bien méchant (new Moto( au lieu de new Voiture( ))

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    		List<Vehicule> mesVehicules = new ArrayList<Vehicule>();
    		Voiture maVoiture = new Voiture("Renault", "Clio", "Essence", 150, 24000, 5, 8);
    		Moto maMoto = new Moto("Tsutzuki", "rien", "Essence", 150, 24000, 5, 10);
    		mesVehicules.add(maVoiture);
    		mesVehicules.add(maMoto);
    		for (Vehicule vehic : mesVehicules) {
    			System.out.println("voiture : " + vehic.marque + "  " + vehic.genre + " " + vehic.carburant + " " + vehic.prix);
    		}

  9. #9
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 8
    Par défaut
    Merci pour vos réponses.

    Pour ce qui est des "règles" concernant les majuscules, les accents et autres, j’essaie de faire de mon mieux, tu remarqueras que je n'en mets déjà plus dans les noms de variables !

    Alors l'erreur apparait lorsque j'ajoute la "Voiture" dans l'Array et est :

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    	at VehiculeAjouter$BoutonsListener.actionPerformed(vehiculeAjouter.java:211)
    	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    	at java.awt.Component.processMouseEvent(Unknown Source)
    	at javax.swing.JComponent.processMouseEvent(Unknown Source)
    	at java.awt.Component.processEvent(Unknown Source)
    	at java.awt.Container.processEvent(Unknown Source)
    	at java.awt.Component.dispatchEventImpl(Unknown Source)
    	at java.awt.Container.dispatchEventImpl(Unknown Source)
    	at java.awt.Component.dispatchEvent(Unknown Source)
    	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    	at java.awt.Container.dispatchEventImpl(Unknown Source)
    	at java.awt.Window.dispatchEventImpl(Unknown Source)
    	at java.awt.Component.dispatchEvent(Unknown Source)
    	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    	at java.awt.EventQueue.access$000(Unknown Source)
    	at java.awt.EventQueue$1.run(Unknown Source)
    	at java.awt.EventQueue$1.run(Unknown Source)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    	at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    	at java.awt.EventQueue$2.run(Unknown Source)
    	at java.awt.EventQueue$2.run(Unknown Source)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    	at java.awt.EventQueue.dispatchEvent(Unknown Source)
    	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    	at java.awt.EventDispatchThread.run(Unknown Source)
    Cependant, j'étais peut-être plus assez en forme hier soir pour coder correctement, j'ai vais donc aller revoir ça avec plus de .. "fraicheur" (et avec vos commentaires bien entendus)

  10. #10
    Membre chevronné Avatar de Ceddoc
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    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
    Par défaut
    NullPointerException signifie que tu essaie d'accéder a des méthodes/propriétés d'un objet non initialisé ou null.

    Du coup j'aurais tendance à dire que ta liste n'est pas initialisée correctement

  11. #11
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 8
    Par défaut
    En fait, J'ai une classe que j'ai créé moi-même qui crée l'ArrayList.
    Je m'explique :

    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
    public class MotoDB 
    {
    	private ArrayList<Moto> m;
    	private Moto mot;
    	MotoDB arrayList;
     
    	public MotoDB()
    	{
    		m = new ArrayList<Moto>();
    	}
     
    	public void add(Moto m1)
    	{
    		m.add(m1);
    	}
    	..
    }
    Et pour sauvegarder dans un fichier, j'utilise :

    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
    public class SaveMoto 
    {
    	public SaveMoto(MotoDB e) 
    	{
    		File fichier = new File("Motos.bin");
        	try
        	{
        		ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(fichier));	
        		oos.writeObject(e);
        		oos.close();
        	}
        	catch(Exception ex)
        	{
        		ex.printStackTrace();
        		System.out.println("Le fichier n'a pas pu etre sauvé");
        	}
        }
    }
    Mais lorsque j'utilise comme vous, le code, celà donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public static void main(String[] args) 
    {
    	Voiture maVoiture1 = new Voiture("Renault", "Clio", "Essence", 150, 24000, 5, 8);
    	Moto maMoto1 = new Moto("Tsutzuki", "rien", "Essence", 150, 24000, 5, 10);
     
    	MotoDB maListeMot = new MotoDB();
    	VoitureDB maListeVoit = new VoitureDB();
    	maListeMot.add(maMoto1);
    	maListeVoit.add(maVoiture1);
    	SaveMoto sm2=new SaveMoto(maListeMot);
    	SaveVoiture sv2=new SaveVoiture(maListeVoit);
    }
    cela m'affiche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    java.io.NotSerializableException: MotoDB
    	at java.io.ObjectOutputStream.writeObject0(Unknown Source)
    	at java.io.ObjectOutputStream.writeObject(Unknown Source)
    	at SaveMoto.<init>(SaveMoto.java:13)
    	at miniTest.main(miniTest.java:12)
    Le fichier n'a pas pu etre sauvé
    java.io.NotSerializableException: VoitureDB
    	at java.io.ObjectOutputStream.writeObject0(Unknown Source)
    	at java.io.ObjectOutputStream.writeObject(Unknown Source)
    	at SaveVoiture.<init>(SaveVoiture.java:13)
    	at miniTest.main(miniTest.java:13)
    Le fichier n'a pas pu etre sauvé
    Comme j'ai utilisé la même façon de faire avec ma gestion de clients, et que cette partie c'est impeccablement bien déroulée,
    J'ai tout de suite pensé que le problème venait du fait qu'ici, j'utilisais super().

  12. #12
    Membre chevronné Avatar de Ceddoc
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    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
    Par défaut
    Je me suis pas penché plus que ça sur les derniers éléments donnés mais j'aurais tendance à penser que tu as oublié un implements Serializable quelque part non?

  13. #13
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 8
    Par défaut
    Effectivement il me manquait 2 "implements Serializable".

    Cependant après ces changements, j'avais toujours l'erreur dans mon "projet". Mais j'ai changé quelques trucs, et ce serait la ligne du .add qui était mise au mauvais endroit ..

    Merci à toutes et à tous pour votre aide si précieuse !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment bien utiliser ce forum ?
    Par Community Management dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 28/01/2007, 17h13
  2. [Optimisation] Comment bien utiliser le StringBuffer?
    Par mathieu dans le forum Langage
    Réponses: 4
    Dernier message: 17/05/2004, 14h22
  3. Comment bien utiliser ce forum ?
    Par Alcatîz dans le forum Pascal
    Réponses: 0
    Dernier message: 21/04/2004, 16h37

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