Qu'est-ce que la classe d'adaptateur en Java ? Avantages de la classe d'adaptateur et de ses types

Publié: 2021-05-19

Table des matières

Qu'est-ce qu'une classe d'adaptateur ?

En JAVA, une classe d'adaptateur permet l'implémentation par défaut des interfaces d'écoute. La notion d'interfaces d'écoute découle du modèle d'événement de délégation. C'est l'une des nombreuses techniques utilisées pour gérer les événements dans les langages de programmation d'interface utilisateur graphique (GUI), tels que JAVA.

La programmation de l'interface graphique est principalement pilotée par les événements, l'utilisateur interagissant avec le système via des visuels et des graphiques associés. Cela signifie que chaque activité initiée par l'utilisateur, comme un mouvement de souris qui modifie les coordonnées du pointeur de la souris à l'écran, clique sur un bouton ou fait défiler une page, est considérée comme un événement indépendant.

Chacune de ces activités événementielles indépendantes est intrinsèquement liée à un segment de code qui itère la réponse que l'application doit fournir à l'utilisateur. Le cheminement est simple. L'utilisateur (source) génère un événement et l'envoie à une ou plusieurs interfaces d'écoute. Une fois qu'un potentiel d'événement est reçu, l'interface d'écoute traite l'événement et renvoie la réponse appropriée.

Cette voie justifie le processus de gestion des événements. Une classe adaptateur en JAVA est donc utilisée pour implémenter une interface ayant un ensemble de méthodes factices. Si un programmeur choisit d'hériter d'une classe d'adaptateur, il ne sera pas obligé d'implémenter toutes les méthodes répertoriées sous une interface d'écoute particulière. La classe d'adaptateur peut en outre être sous-classée afin que le programmeur ne puisse remplacer que les méthodes requises. En d'autres termes, en utilisant une classe d'adaptateur, le programmeur peut rapidement construire sa propre interface d'écoute pour les événements de champ. Cela permet d'économiser du code.

Quelle est la relation entre une classe d'adaptateur et une interface d'écoute ?

Les écouteurs sont utilisés lorsque le programmeur a l'intention d'utiliser la plupart des méthodes répertoriées sous l'interface. Si une interface d'écoute est implémentée directement par une classe, toutes les méthodes de cette interface doivent être implémentées, ce qui rend le code déraisonnablement volumineux. Cette complexité peut être résolue en faisant appel à une classe d'adaptateur. Une classe d'adaptateur s'avère essentielle dans les cas où un événement n'appelle que des méthodes spécifiques.

Le programmeur n'a qu'à en créer une sous-classe et à remplacer les méthodes d'intérêt pour utiliser une classe d'adaptateur. Les classes d'adaptateur sont donc bénéfiques pour les interfaces d'écoute dans JAVA ayant plus d'une méthode. Pour mieux comprendre cela, considérons l'exemple de l'interface MouseListener. Cette interface est notifiée chaque fois qu'il y a un changement d'état de la souris. Il a cinq méthodes, souris cliqué, mouseExited, mouseEntered, mousePressed et mouseReleased.

Lorsqu'un événement est notifié, même si seule l'une de ces méthodes est nécessaire, toutes doivent être mises en œuvre. Les méthodes qui ne sont pas nécessaires sont laissées vides. Une classe d'adaptateur est utilisée pour éviter cette implémentation inutile d'un corps de méthode vide.

Comprendre le modèle de conception d'adaptateur

En langage non technique, un adaptateur, par définition, est structurellement conçu pour permettre à deux interfaces incompatibles de fonctionner ensemble. Un pattern adaptateur est donc capable de rendre compatibles deux interfaces incompatibles sans changer leur code existant. Les interfaces correspondantes peuvent être incohérentes, mais leurs fonctionnalités internes doivent correspondre à l'exigence recherchée. Pour mieux clarifier cela, prenons un exemple pertinent.

Nous sommes conscients que différents pays ont des prises électriques, des tensions et des mesures de fréquence différentes. Si nous devons utiliser un appareil conçu selon les spécifications d'un pays dans un autre, nous devons nous assurer que l'appareil est compatible.

Par exemple, au Royaume-Uni, les prises de type G sont couramment utilisées, aux États-Unis et au Japon, les prises de type A et de type B, et en Inde, de type C, de type D et de type M. Un ordinateur portable ou un appareil mobile transporté depuis l'Inde sera donc être incompatible avec les spécifications électriques, par exemple, des États-Unis et du Japon. C'est là que le but d'un adaptateur devient essentiel pour convertir un code incompatible en un code compatible.

Types de classes d'adaptateurs

Les classes d'adaptateur peuvent être trouvées dans java. awt.the event, java.awt.dnd et java.swing.event packages. Les classes d'adaptateur standard avec leurs interfaces d'écoute correspondantes dans JAVA sont mentionnées ci-dessous pour chacun de ces packages.

1. Java. awt. veille

Classe d'adaptateur Interface d'écoute
Adaptateur de fenêtre WindowListener
Adaptateur de clé KeyListener
SourisAdaptateur MouseListener
MouseMotionAdapter SourisMouvementÉcouteur
FocusAdapter FocusListener
ComponentAdapter ComponentListener
ConteneurAdaptateur ContainerListener
HierarchyBoundsAdapterHierarchyBoundsAdapter HierarchyBoundsListener

2. java.awt.dnd

Classe d'adaptateur Interface d'écoute
DragSourceAdapter DragSourceListener
DragTargetAdapter DragTargetListener

3. javax.swing.event

Classe d'adaptateur Interface d'écoute
MouseInputAdapter MouseInputListener
Adaptateur de cadre interne InternalFrameListenerInternalFrameListenerInternalFrameListenerInternalFrameListener

Ceux-ci sont présents dans la boîte à outils de fenêtre abstraite de leurs packages Java respectifs. Pour comprendre la nature des méthodes contenues dans les interfaces d'écoute, considérons quelques exemples :

  1. L'interface WindowListener définit les méthodes liées aux événements de fenêtre, y compris l'ouverture et la fermeture d'une fenêtre, l'activation et la désactivation d'une fenêtre, et l'iconification et la désintoxication d'une fenêtre.
  2. L'interface KeyListener définit des méthodes qui gèrent les événements de touches déclenchés par l'utilisateur interagissant avec les composants du clavier.
  3. L'interface MouseListener est avertie lorsqu'une souris est stable et reçoit un potentiel d'événement lié à la sortie, à l'entrée, au clic, à la pression ou au relâchement d'un composant sur le cadre visuel de l'utilisateur.
  4. L'interface Component Listener reçoit les potentiels d'événement de composant. Ici, un composant fait référence à tout objet graphique conçu pour interagir avec l'utilisateur, tel que des boutons, des cases à cocher et des barres de défilement.

Différence entre l'adaptateur de classe et l'adaptateur d'objet

Pour garantir fonctionnalité et flexibilité, la programmation orientée objet telle que JAVA offre aux programmeurs des fonctionnalités telles que l'héritage et la composition. Si vous essayez de réutiliser un code particulier en héritant ses fonctionnalités d'une autre classe, la sous-classe que vous créez restera dépendante de la classe parente pendant toute la durée du programme.

Cela rend le système, dans de nombreux cas, de plus en plus complexe et moins testable et rend l'échange de fonctionnalités au moment de l'exécution extrêmement difficile. En composition, une classe n'en utilise qu'une autre. Le découplage entre les deux est encore favorisé en définissant clairement les interfaces.

Le débat entre adaptateur de classe et adaptateur d'objet peut donc être résolu comme suit. L'adaptateur de classe utilise l'héritage et n'est donc capable que d'encapsuler une classe. Il ne peut pas envelopper une interface car, par définition, il doit dériver d'une classe de base. Un adaptateur d'objet utilise la composition et est donc capable d'encapsuler à la fois les classes et les interfaces. Ceci est principalement réalisé parce que, dans la composition, chaque classe ou interface est un membre privé et encapsulé.

Avantages d'une classe d'adaptateur

  1. Une classe d'adaptateur aide les classes non liées à travailler ensemble.
  2. Avec l'utilisation d'une classe d'adaptateur, la même classe peut être utilisée de plusieurs façons.
  3. Les utilisateurs ont la possibilité d'utiliser un kit enfichable pour développer des applications. L'utilisation de la classe devient donc hautement réutilisable.
  4. Il améliore la transparence des classes.
  5. Il fournit un moyen d'inclure des modèles liés dans une classe.

Apprenez des cours de génie logiciel en ligne dans les meilleures universités du monde. Gagnez des programmes Executive PG, des programmes de certificat avancés ou des programmes de maîtrise pour accélérer votre carrière.

Conclusion

Avec cet article, nous avons compris les mécanismes d'une classe d'adaptateur en JAVA, les trois principaux packages qui contiennent des classes d'adaptateur et les avantages des classes d'adaptateur pour les programmeurs. Les classes d'adaptateur sont des classes abstraites pour recevoir divers événements et existent pour faciliter la création d'objets d'écoute. Avec leurs différentes fonctionnalités, les classes adaptatrices offrent aux programmeurs la plateforme pour innover via la méthodologie Swing.

Si vous souhaitez améliorer vos compétences en Java, vous devez mettre la main sur ces projets Java. Si vous souhaitez en savoir plus sur Java, le développement full-stack, consultez le programme Executive PG upGrad & IIIT-B en développement logiciel full-stack, qui est conçu pour les professionnels et offre plus de 500 heures de formation rigoureuse, 9+ projets et affectations, statut d'ancien de l'IIIT-B, projets de synthèse pratiques et aide à l'emploi avec les meilleures entreprises.

Qu'est-ce que la classe d'adaptateur en Java ?

La classe d'adaptateur est une classe définie à l'aide du modèle d'adaptateur. Un adaptateur peut être utilisé pour ajouter de nouvelles fonctionnalités à une classe existante sans modifier la classe d'origine. Par exemple, la classe java.util.Scanner provient du package java.util. La classe Scanner ne peut pas lire à partir d'un fichier car un fichier n'est pas un InputStream. Pour lire à partir d'un fichier, nous créons une classe d'adaptateur qui accepte un InputStream comme argument et renvoie les données traitées comme un objet. Le modèle d'adaptateur est utilisé pour étendre les fonctionnalités d'une classe existante sans modifier son code de quelque manière que ce soit.

Que sont les modèles de conception en Java ?

Un modèle de conception est une solution générale réutilisable à un problème courant dans un contexte donné de conception de logiciels. Ce n'est pas une conception finie qui peut être transformée directement en code. Il s'agit d'une description ou d'un modèle de résolution d'un problème qui peut être utilisé dans de nombreuses situations différentes. Dans la programmation orientée objet, les modèles de conception sont des conventions établies qui facilitent la conception et la mise en œuvre de systèmes logiciels. Il existe plusieurs modèles de conception en Java. Il n'est pas nécessaire qu'un patron de conception soit tiré d'un autre langage. Les modèles de conception peuvent être écrits sous une forme très simple et courte.

Quel est le design pattern le plus utilisé en Java ?

Vous trouverez de nombreux modèles de conception en java. Le modèle de conception le plus utilisé est le modèle d'usine. Il a de nombreuses applications dans le développement d'entreprise. Cela aide à supprimer la dépendance vis-à-vis des classes concrètes dans l'application. Laissez-nous vous donner un exemple concret. Dans une application de commerce électronique, vous pouvez avoir besoin de créer un objet d'un utilisateur dans un environnement de test et de production. La classe d'utilisateurs peut avoir de nombreuses sous-classes comme Admin, Commerçant, Vendeur, Utilisateur, etc. La méthode principale commune dans le modèle d'usine ressemble à : public class UserFactory { public static Object create () { User user = createAdmin (); // voir si admin est autorisé return user ; // renvoie l'utilisateur actuel } }. Voyez ici comment la classe d'utilisateurs ne dépend pas de la classe concrète. Bien qu'il ne s'agisse pas d'un exemple complet, il vous montre comment fonctionne le modèle Factory.