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

Java Discussion :

Confusion sur le terme interface POO


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 181
    Par défaut Confusion sur le terme interface POO
    Bonjour,

    Je souhaites savoir pourquoi on a déclarer une interface étudiant et on lui donne un nouvelle objet EtudiantDAO
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    		Etudiant e1= new Etudiant("0499499RR","alami","karim","2/2/1990","casa");
    		IEtudiant metier = new EtudiantDAO();
    		metier.ajouterEtudiant(e1);
    Merci

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Dans l'expression IEtudiant metier = new EtudiantDAO();, on déclare une variable metier de type IEtudiant et on lui affecte une instance d'objet de classe EtudianDAO.

    Ceci nécessite pour commencer que la classe EtudiantDAO implémente directement ou indirectement l'interface IEtudiant (c'est probablement une interface). Il est toujours préférable de typer par l'interface la plus générique possible (ou la classe le cas échéant), tant qu'on a à disposition sur la variable les méthodes qui nous sont nécessaires à la manipulation (et c'est le type qui permet au compilateur de connaître ces méthodes). Ceci permet éventuellement de faire des méthodes qui ne traitent que de l'interface générique et pas de la classe concrète spécifique, ou d'une interface/classe plus spécifique, , donc plus générique qu'une méthode qui traiterait de la classe spécifique, et donc, de pouvoir les invoquer dans un plus grand nombre de cas (donc de limiter la duplication de code). Cela pourra t'être utile en particulier si tu fais des tests unitaires avec un mock (une implémentation concrète de IEtudiant qui n'utilise pas la base de données comme source et qui sert de base pour pouvoir faire des tests unitaires avec des contenus de référence pour tester tes développements, donc pas EtudiantDAO). D'ailleurs, de la même façon, tu pourrais avoir la même construction pour la variable e1 (la typer avec une interface plus générique que l'implémentation concrète Etudiant).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Il est certain qu'écrit comme ça, ça n'a pas beaucoup d'intérêt d'utiliser l'interface plutôt que le type EtudiantDAO...

    Ceci dit, si tu passais par le pattern Factory, ça prendrait tout son sens
    L'intérêt serait alors de substituer une classe à une autre en fonction de contraintes et de la "traiter" sous sa forme contractuelle (l'interface) sans avoir à te soucier du type réel.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 181
    Par défaut
    Donc si j'ai bien compris, cela permet de rendre le code plus générique et donc éviter de répéter le même code dans la classe Etudiant, ce qui permet d’initialiser un nouvelle objet Etudiant si la classe implémente les méthodes de l'interface. C'est bien ca ?

  5. #5
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Non, non pas tout à fait.

    Code plus générique oui. Mais ça n'a aucune action sur l'implémentation de la classe Etudiant. C'est juste la variable metier qui est impactée, son type en particulier. Tu peux donc modifier l'instanciation (la classe invoquée par le new) sans impact sur le type de la variable, tant que la classe est compatible bien sûr.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 181
    Par défaut
    C'est bon j'ai compris, merci

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

Discussions similaires

  1. Bienvenue sur le forum Interfaces Graphiques en Java - règles à respecter par tous
    Par christopheJ dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 31/05/2009, 15h50
  2. Réponses: 3
    Dernier message: 07/09/2007, 17h57
  3. [POO] Erreur sur des tableaux en POO
    Par Xavier44214 dans le forum Langage
    Réponses: 4
    Dernier message: 06/06/2007, 16h26
  4. Informations sur le terme "Broadcast"
    Par Mut dans le forum Protocoles
    Réponses: 2
    Dernier message: 16/08/2006, 11h42
  5. Evenement clavier sur toute l'interface
    Par Guybrush dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 08/02/2005, 12h13

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