Interface

Résolu
didoux95 Messages postés 845 Date d'inscription mardi 25 avril 2006 Statut Membre Dernière intervention 1 août 2017 - 23 avril 2008 à 19:10
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 - 24 avril 2008 à 12:26
Bonjour à tous, ...

Est ce que vous pourriez m'en dire plus sur le fait qu'on soit obligé d'écrire toutes les méthodes d'une interface lorsqu'on se sert de celle ci. Par exemple, j'ai créer une interface contenant plusieurs méthodes (public void xxx ();) et j'aimerais ne pas être contraint de toutes les reécrires lorsque je me sers de l'interface en question (surtout lorsque je n'ai besoins que d'une ou deux de ces méthodes).

Merci ...

7 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
23 avril 2008 à 20:40
Salut,

C'est le principe des interfaces : il s'agit d'un contrat à respecter afin de pouvoir l'utiliser dans toutes les situations. Il s'agit du principe de l'encapsulation : un utilisateur n'a besoin de connaitre que l'interface et non l'implémentation (ou les implémentations).
______________________________________
DarK Sidious
3
indiana_jules Messages postés 750 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 décembre 2008 22
24 avril 2008 à 08:45
Salut,
Souvent, on hérite de classes implémentant des interfaces, et il arrive que nous ne déclarions que certaines méthodes. Cela est normale car souvent ce sont des classes abstraites. Si tu ne veux pas tout implémenter, essai de voir si il n'existe pas une classe abstraite ayant implémenter une partie, ou une classe ayant tout impélementer, et tu surcharges certaines méthodes.

Sinon, tu seras forcement obligé de déclarer toutes ces méthodes car comme l'a justement dit Darksidious, c'est un contrat, un peu comme les fichiers .h en C/C++

Voili voilà

le monde a des idées : la preuve, c'est qu'il y en a de mauvaises
ne comprends pas tout, mais je parle de tout : c'est ce qui compte
3
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
24 avril 2008 à 09:52
Salut:

Utilises le patron [Adapter] qui offre une implémentation par défaut des méthodes d'une interface.

En Swing, toutes les [Listeners] qui sont des interfaces ont des adaptateurs (sauf bien sur ActionListener qui contient une seule méthode).

public interface I {
    public void doTaskX();
    public void doTaskY();
}

public class IAdapter implements I {
    public void doTaskX() {}

    public void doTaskY() {}
}
3
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
24 avril 2008 à 10:51
Salut:

[auteur/INDIANAJULES/242730.aspx indiana_jules] >> "essai de voir si il n'existe pas une classe abstraite ayant implémenter une partie, ou une classe ayant tout impélementer".

C'est une très bonne démarche.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
didoux95 Messages postés 845 Date d'inscription mardi 25 avril 2006 Statut Membre Dernière intervention 1 août 2017 2
24 avril 2008 à 11:48
Merci à vous, ..
Je penses que je vais créer ma propre classe abstraite (puisque j'ai créer l'interface en question parce que je ne la trouvais pas .. ) ou utiliser la méthode de Ombitious_Developper.
0
indiana_jules Messages postés 750 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 décembre 2008 22
24 avril 2008 à 12:11
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
24 avril 2008 à 12:26
Salut:

ça me rappele:

                                    TableModel
                                             ^
                                             |
                                             |
                            AbstractTableModel

                                             ^

                                             |

                                             |

                             DefaultTableModel
0