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 :

Classe Abstraite, Interface....


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 22
    Par défaut Classe Abstraite, Interface....
    Salut,

    Je veux manipuler des fichiers de différents types. Ces fichiers vont me retourner une liste d'infos sous forme de Vector. En fonction du type de fichier le vector est remplit differement.

    J'ai donc voulu definir une interface :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public interface IModele {
     
    	public Vector lireFichier(String nomFichier);
     
    }
    Dans chaque cas, quelque soit le type de fichier je dois charger en mémoire le fichier, donc j'ai voulu créer une classe abstraite comme celle-ci :
    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 abstract class AModele implements IModele{
     
    	static Category log = Category.getInstance(CSolide.class.getName());
     
    	BufferedReader in;
     
    	public AModele(String nomFichier) {
    		try {
    			in = new BufferedReader(new FileReader(nomFichier));
    			log.info("fichier "+nomFichier+" charge");
    		}catch(Exception e) {
    			e.printStackTrace();
    		}
    	}
     
    	public abstract Vector lireFichier(String nomFichier);
     
    }
    Comme cela par la suite je peux implementer autant de classe différentes que de type de fichier. Voici un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public class CModele_OBJ extends AModele{
     
    	public Vector lireFichier(String nomFichier) {
    		//super.lireFichier(nomFichier);
    		return new Vector();
    	}
     
    }
    Or mon probleme est le suivant (cf eclipse):
    Implicit super constructor AModele() is undefined for default constructor. Must define an explicit constructor
    Pouvez vous m'expliquer mon erreur ???

  2. #2
    Membre Expert
    Avatar de zekey
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 036
    Par défaut
    Oui c'est normal, il te faut reecrire un constructeur.
    Comment souhaites tu utiliser ton objet. Ce sera plus facile pour te conseiller la bonne design pattern.


    -----------------------------------------------
    Steve Hostettler
    ze_key@hotmail.com / www.zekey.net

  3. #3
    Membre averti
    Inscrit en
    Août 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 22
    Par défaut
    Je pensais ecrire un constructeur ou je chargeait directement mon fichier dans un buffer.

    Sinon, je met en place une factory qui va se charger de me construire le bon objet suivant l'extension du fichier.

  4. #4
    Membre Expert
    Avatar de zekey
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 036
    Par défaut
    La design pattern factory me semble pas mal oui.

  5. #5
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    +1 pour la factory.

    Sinon ton erreur vient du fait que tu n'as pas donné de constructeur à ta classe CModele_OBJ, ce qui fait qu'il utilise le constructeur par défaut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public CModele_OBJ() {
      super();
    }
    Or super() appelle AModele() qui n'existe pas, d'où ton erreur de compilation.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  6. #6
    Membre chevronné
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Par défaut
    Citation Envoyé par xavlours
    +1 pour la factory.

    Sinon ton erreur vient du fait que tu n'as pas donné de constructeur à ta classe CModele_OBJ, ce qui fait qu'il utilise le constructeur par défaut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public CModele_OBJ() {
      super();
    }
    Or super() appelle AModele() qui n'existe pas, d'où ton erreur de compilation.
    Il faut simplement qu'à la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public class CModele_OBJ extends AModele{ 
     
       public Vector lireFichier(String nomFichier) { 
          //super.lireFichier(nomFichier); 
          return new Vector(); 
       } 
     
    }
    tu implémentes de cette façon:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public class CModele_OBJ extends AModele{ 
     
       public Vector lireFichier(String nomFichier) { 
          super(nomFichier); 
          return new Vector(); 
       } 
     
    }

  7. #7
    Membre averti
    Inscrit en
    Août 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 22
    Par défaut
    +1 pour xavlours

    Probleme resolu !

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

Discussions similaires

  1. Classe Abstraite / Interface
    Par Mornor dans le forum Général Java
    Réponses: 6
    Dernier message: 08/12/2013, 15h19
  2. Classe abstraite ? Interface ?
    Par Gaetch dans le forum Modélisation
    Réponses: 1
    Dernier message: 17/10/2010, 19h45
  3. Réponses: 3
    Dernier message: 03/11/2008, 21h01
  4. Réponses: 6
    Dernier message: 27/07/2005, 09h06
  5. [Debutant][Conception] Classes abstraites et interface.
    Par SirDarken dans le forum Langage
    Réponses: 4
    Dernier message: 29/10/2004, 00h02

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