Maison Java javaDidacticiel Explication détaillée d'exemples de programmation orientée interface en Java

Explication détaillée d'exemples de programmation orientée interface en Java

Sep 20, 2017 am 10:24 AM
java 示例 编程

Cet article présente à tout le monde certaines choses sur la programmation orientée interface en combinant la nature des interfaces, la relation entre la programmation orientée objet et la programmation orientée interface, et la propre compréhension de l'auteur. Les amis qui en ont besoin peuvent en apprendre davantage.

Je pense que pour les programmeurs qui utilisent des langages de programmation orientés objet, le terme « interface » doit être familier, mais je me demande si vous avez de tels doutes : à quoi servent les interfaces ? Quelle est la différence entre cette classe et la classe abstraite ? Une classe abstraite peut-elle être utilisée à la place d’une interface ? De plus, en tant que programmeur, vous devez souvent entendre l'expression « programmation orientée interface », alors qu'est-ce que cela signifie ? Quelle est la connotation idéologique ? Quelle est sa relation avec la programmation orientée objet ? Cet article répondra à ces questions une par une.

1. Quelle est la relation entre la programmation orientée interface et la programmation orientée objet

Tout d'abord, la programmation orientée interface et ? La programmation orientée objet n'est pas au même niveau, ce n'est pas une idée de programmation indépendante plus avancée que la programmation orientée objet, mais elle est attachée au système idéologique orienté objet et en fait partie. En d’autres termes, c’est l’essence même des idées du système de programmation orientée objet.

2. L'essence de l'interface

L'interface, en apparence, est une collection de plusieurs définitions de méthodes sans code corporel. qui peut être implémenté (ou hérité) par une classe ou une autre interface. Sous sa forme, cela peut ressembler à ceci :


interface InterfaceName
{
void Method1();
void Method2(int para1);
void Method3(string para2,string para3);
}
Copier après la connexion

Alors, quelle est l'essence d'une interface ? En d’autres termes, quel est le sens de l’existence de l’interface. Je pense que cela peut être considéré sous les deux angles suivants :

1) Une interface est un ensemble de règles, qui stipule un ensemble de règles qu'une classe ou une interface qui implémente cette interface doit avoir. Incarne la philosophie de la nature selon laquelle « si vous êtes..., vous devez être capable de... ».

Par exemple, dans la nature, les gens peuvent manger, c'est-à-dire "si vous êtes un humain, vous devez pouvoir manger". Ensuite, lors de la simulation dans un programme informatique, il devrait y avoir une interface IPerson (habituellement, le nom de l'interface commence par "I") et une méthode appelée Eat(). Nous stipulons ensuite que chaque classe représentant "personne" doit implémenter l'interface IPerson, qui. simule la règle de la nature "Si vous êtes un humain, vous devez pouvoir manger".

À partir de là, je pense que vous pouvez également voir une certaine pensée orientée objet. L'un des cœurs de la pensée orientée objet est de simuler le monde réel et d'abstraire les choses du monde réel en classes. L'ensemble du programme s'appuie sur des instances de chaque classe pour communiquer entre elles et coopérer pour accomplir les fonctions du système. est très cohérent avec les conditions de fonctionnement du monde réel et est également orienté vers l'essence de la pensée objet.

2) Une interface est une représentation abstraite de choses similaires sur une certaine vue granulaire. Notez qu'ici j'insiste sur une certaine vue granulaire, car le concept de « choses similaires » est relatif, et il diffère en raison de vues granulaires différentes.

Par exemple, à mes yeux, je suis une personne fondamentalement différente d'un cochon. Je peux accepter que mes camarades de classe et moi soyons du même genre, mais je ne pourrai jamais accepter que moi et un cochon. sont les mêmes. Cependant, si aux yeux d'un zoologiste, les cochons et moi sommes de la même espèce, parce que nous sommes tous les deux des animaux, il peut penser que "les gens" et "le cochon" implémentent l'interface IAnimal, et lorsqu'il étudie le comportement animal, il ne le fera pas. Il traitera moi et le cochon séparément, et l'étudiera à partir de la plus grande granularité de « l'animal », mais il pensera qu'il y a une différence essentielle entre moi et un arbre.

Maintenant, je suis devenu généticien, et la situation est différente Parce que les êtres vivants peuvent être hérités, à ses yeux, je ne suis pas seulement différent d'un cochon, mais aussi d'un moustique, d'un. bactérie, a Il n'y a aucune différence entre un arbre, un champignon ou même un virus du SRAS, car il pensera que nous implémentons tous l'interface IDescendable (note : descendre vi. héritage), c'est-à-dire que nous sommes tous des choses héréditaires, et il Il ne nous étudiera pas séparément, mais il étudiera tous les êtres vivants comme étant de la même espèce. À ses yeux, il n'y a pas de distinction entre les humains et les virus, seulement les matériaux héréditaires et les matériaux non héréditaires. Mais au moins il y a une différence entre moi et une pierre.

Mais quelque chose de malheureux s'est produit. Un jour, un grand homme est apparu sur la terre. Il s'appelait Lénine. Il a donc fait une définition célèbre : la soi-disant substance est la réalité objective qui peut être reflétée. par la conscience. À ce stade, il n’y a aucune différence entre moi et une pierre, un souffle d’air, un idiome et le champ électromagnétique qui transmet les signaux des téléphones portables, car aux yeux de Lénine, nous sommes tous des réalités objectives qui peuvent être reflétées par la conscience. Si Lénine était programmeur, il dirait ceci : Ce qu'on appelle la matière, ce sont les instances générées par toutes les classes qui implémentent à la fois les interfaces "IReflectabe" et "IEsse". (Remarque : réfléchir v. refléter esse n. réalité objective)

Peut-être penserez-vous que mon exemple ci-dessus est absurde, mais c'est exactement la raison pour laquelle les interfaces existent. L'un des concepts fondamentaux de la pensée orientée objet est appelé polymorphisme. Qu'est-ce que le polymorphisme ? Pour parler franchement, cela signifie que les choses similaires sont traitées uniformément sans distinction à un certain niveau de vue granulaire. La raison pour laquelle nous osons le faire est l’existence d’interfaces. Comme le généticien, il comprend que tous les organismes implémentent l'interface IDescendable, donc tant qu'il s'agit d'un organisme, il doit avoir la méthode Descend(), afin qu'il puisse mener des recherches unifiées au lieu d'étudier chaque organisme séparément et finir par mourir d'épuisement.

Peut-être que je ne peux pas vous donner une impression intuitive de la nature et de la fonction de l'interface ici. Ensuite, dans les exemples suivants et l'analyse de plusieurs modèles de conception, vous découvrirez plus intuitivement la connotation des interfaces.

3. Aperçu de la programmation orientée interface

Grâce à ce qui précède, je pense que tout le monde a une compréhension des interfaces et de la connotation idéologique des interfaces , puis Qu'est-ce que la programmation orientée interface ? Ma définition personnelle est la suivante : dans l'analyse et l'architecture du système, distinguer les niveaux et les dépendances. Chaque niveau ne fournit pas directement de services à sa couche supérieure (c'est-à-dire qu'il n'est pas directement instancié dans la couche supérieure), mais uniquement en définissant un ensemble d'interfaces. . La couche supérieure expose sa fonction d'interface, et la couche supérieure dépend uniquement de l'interface de la couche inférieure et ne s'appuie pas sur des classes spécifiques.

Les avantages de cette méthode sont évidents. Tout d'abord, c'est excellent pour la flexibilité du système. Lorsque la couche inférieure doit être modifiée, tant que l'interface et la fonction d'interface restent inchangées, la couche supérieure n'a besoin d'aucune modification. Vous pouvez même remplacer toute la couche inférieure sans modifier le code de la couche supérieure, tout comme nous remplaçons un disque dur WD 60G par un disque dur Seagate 160G. Il n'est pas nécessaire d'apporter des modifications aux autres parties de l'ordinateur. le disque dur d'origine et installez le nouveau disque dur. Branchez-le simplement, car les autres parties de l'ordinateur ne dépendent pas d'un disque dur spécifique, mais uniquement d'une interface IDE. Tant que le disque dur implémente cette interface, il peut être remplacé. À partir de là, l'interface du programme est très similaire à l'interface dans la réalité, donc je pense toujours que le mot interface est vraiment similaire !

Un autre avantage de l'utilisation des interfaces est que les développeurs de différents composants ou niveaux peuvent commencer à travailler en parallèle, tout comme ceux qui construisent des disques durs n'ont pas à attendre ceux qui construisent des processeurs ou des moniteurs. tant que les interfaces sont cohérentes, la conception est raisonnable et peut être développée en parallèle pour améliorer l'efficacité.

Cet article se termine ici en premier. Enfin, je voudrais dire encore une chose : l'essence de l'orientation objet est de simuler la réalité, ce qui peut aussi être considéré comme l'âme de mon article. Par conséquent, réfléchir davantage aux choses orientées objet à partir de la réalité sera très utile pour améliorer les capacités d’analyse et de conception du système.

Dans le prochain article, j'utiliserai un exemple pour démontrer les méthodes de base de la programmation d'interface.

Dans le troisième article, j'analyserai quelques idées de programmation orientée interface dans les modèles de conception classiques et analyserai les idées orientées interface dans l'architecture en couches .NET.

1. Concernant les deux mots « interface » dans « programmation orientée interface » et « interface » dans des langages orientés objet spécifiques

Voir Un ami a suggéré un jour que le mot « interface » dans « programmation orientée interface » devrait avoir une portée plus large que le mot « interface » dans un langage de programmation pur. Après réflexion, je pense que c'est logique. Ce que j'ai écrit ici est en effet déraisonnable. Je pense que « interface » dans les langages orientés objet fait référence à une structure de code spécifique, telle que l'interface définie avec le mot-clé interface en C#. L'« interface » dans la « programmation orientée interface » peut être considérée comme faisant référence à un composant structurel utilisé pour masquer des classes sous-jacentes spécifiques et implémenter le polymorphisme du point de vue de l'architecture logicielle et à un niveau plus abstrait. En ce sens, si une classe abstraite est définie et que le but est de réaliser le polymorphisme, alors je pense qu'il est raisonnable d'appeler cette classe abstraite une « interface ». Mais est-il raisonnable d’utiliser des classes abstraites pour implémenter le polymorphisme ? Discuté dans le deuxième article ci-dessous.

En résumé, je pense que les deux concepts d'"interface" sont à la fois différents l'un de l'autre et liés l'un à l'autre. L'interface dans la « programmation orientée interface » est un composant architectural idéologique utilisé pour réaliser le polymorphisme, améliorer la flexibilité et la maintenabilité du logiciel, et « l'interface » dans un langage spécifique est un composant concret à ce niveau idéologique implémenté dans le code.

2. À propos des classes abstraites et des interfaces

J'ai vu qu'il s'agissait d'une question très débattue dans les réponses. Je suis désolé d'avoir mal pensé à discuter de cette question dans l'article. Ma compréhension personnelle de ce problème est la suivante :
Si vous regardez le code spécifique seul, il est facile de brouiller ces deux concepts, et vous pensez même que l'interface est redondante, car à partir de la seule fonction spécifique, à l'exception de héritage multiple (C# , Java), les classes abstraites semblent pouvoir remplacer complètement les interfaces. Cependant, l’interface existe-t-elle pour implémenter l’héritage multiple ? Bien sûr que non. À mon avis, la différence entre les classes abstraites et les interfaces réside dans la motivation de leur utilisation. Le but de l'utilisation de classes abstraites est la réutilisation du code, tandis que la motivation de l'utilisation des interfaces est d'atteindre le polymorphisme. Donc, si vous ne savez pas si vous devez utiliser une interface ou une classe abstraite quelque part, réfléchissez à votre motivation.

J'ai vu des amis remettre en question l'interface IPerson. Ma compréhension personnelle est que la définition de l'interface IPerson dépend de l'application spécifique. Si nous avons Women et Man dans notre projet, tous deux héritent de Person, et que la plupart des méthodes de Women et Man sont les mêmes, une seule méthode

DoSomethingInWC() est différente (l'exemple est plutôt vulgaire, veuillez pardonner moi), alors bien sûr, la définition d'une classe abstraite An AbstractPerson est plus raisonnable, car elle peut inclure toutes les autres méthodes, et la sous-classe définit uniquement DoSomethingInWC(), ce qui réduit considérablement la quantité de code répété.

Cependant, si les classes Women et Man de notre programme n'ont fondamentalement pas de code commun et qu'il existe une classe PersonHandle qui doit les instancier, et que nous ne voulons pas savoir s'ils sont de sexe masculin ou féminines, mais simplement les traiter comme des êtres humains et mettre en œuvre le polymorphisme, alors il faut les définir comme des interfaces.

En bref, la différence entre les interfaces et les classes abstraites réside principalement dans la motivation d'utilisation, pas en elles-mêmes. Le fait que quelque chose doive être défini comme une classe abstraite ou une interface dépend du contexte de l'environnement spécifique.

De plus, je pense qu'une autre différence entre les interfaces et les classes abstraites est qu'il devrait y avoir une relation générale et spéciale entre une classe abstraite et ses sous-classes, alors qu'une interface est simplement que ses sous-classes devraient Un ensemble de règles mises en œuvre. (Bien sûr, il peut parfois y avoir une relation générale et spéciale, mais le but de l'utilisation des interfaces n'est pas ici.) Par exemple, il est acceptable de définir les véhicules comme des classes abstraites, et les voitures, les avions et les navires comme des sous-classes, car les voitures , les avions, les navires sont un moyen de transport spécial. Un autre exemple est l'interface Icomparable. Elle dit simplement que les classes qui implémentent cette interface doivent être comparables. Si la classe Car implémente Icomparable, cela signifie simplement qu'il existe une méthode dans notre Car pour comparer deux instances de Car. Elle peut être plus chère ou plus grande, cela n'a pas d'importance. Mais nous ne pouvons pas dire « les voitures sont d'un type spécial ». de chose qui peut être comparée. » C’est grammaticalement déraisonnable.

Résumé

En général, la programmation orientée interface signifie qu'entre toutes les classes ou modules d'un système orienté objet L'interaction est complétée par l'interface.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Break or Return of Java 8 Stream Forach? Break or Return of Java 8 Stream Forach? Feb 07, 2025 pm 12:09 PM

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est

Résolution de problèmes avec Python : débloquez des solutions puissantes en tant que codeur débutant Résolution de problèmes avec Python : débloquez des solutions puissantes en tant que codeur débutant Oct 11, 2024 pm 08:58 PM

Python permet aux débutants de résoudre des problèmes. Sa syntaxe conviviale, sa bibliothèque complète et ses fonctionnalités telles que les variables, les instructions conditionnelles et les boucles permettent un développement de code efficace. De la gestion des données au contrôle du flux du programme et à l'exécution de tâches répétitives, Python fournit

La clé du codage : libérer la puissance de Python pour les débutants La clé du codage : libérer la puissance de Python pour les débutants Oct 11, 2024 pm 12:17 PM

Python est un langage d'introduction à la programmation idéal pour les débutants grâce à sa facilité d'apprentissage et ses fonctionnalités puissantes. Ses bases incluent : Variables : utilisées pour stocker des données (nombres, chaînes, listes, etc.). Type de données : Définit le type de données dans la variable (entier, virgule flottante, etc.). Opérateurs : utilisés pour les opérations mathématiques et les comparaisons. Flux de contrôle : contrôlez le flux d'exécution du code (instructions conditionnelles, boucles).

Démystifier C : un chemin clair et simple pour les nouveaux programmeurs Démystifier C : un chemin clair et simple pour les nouveaux programmeurs Oct 11, 2024 pm 10:47 PM

C est un choix idéal pour les débutants qui souhaitent apprendre la programmation système. Il contient les composants suivants : fichiers d'en-tête, fonctions et fonctions principales. Un simple programme C capable d'imprimer "HelloWorld" a besoin d'un fichier d'en-tête contenant la déclaration de fonction d'entrée/sortie standard et utilise la fonction printf dans la fonction principale pour imprimer. Les programmes C peuvent être compilés et exécutés à l'aide du compilateur GCC. Après avoir maîtrisé les bases, vous pouvez passer à des sujets tels que les types de données, les fonctions, les tableaux et la gestion des fichiers pour devenir un programmeur C compétent.

Libérez votre programmeur intérieur : C pour les débutants absolus Libérez votre programmeur intérieur : C pour les débutants absolus Oct 11, 2024 pm 03:50 PM

C est un langage idéal pour les débutants qui souhaitent apprendre la programmation, et ses avantages incluent l'efficacité, la polyvalence et la portabilité. L'apprentissage du langage C nécessite : Installer un compilateur C (tel que MinGW ou Cygwin) Comprendre les variables, les types de données, les instructions conditionnelles et les instructions de boucle Ecrire le premier programme contenant la fonction principale et la fonction printf() S'entraîner à travers des cas pratiques (comme le calcul de moyennes) Connaissance du langage C

Programme Java pour trouver le volume de la capsule Programme Java pour trouver le volume de la capsule Feb 07, 2025 am 11:37 AM

Les capsules sont des figures géométriques tridimensionnelles, composées d'un cylindre et d'un hémisphère aux deux extrémités. Le volume de la capsule peut être calculé en ajoutant le volume du cylindre et le volume de l'hémisphère aux deux extrémités. Ce tutoriel discutera de la façon de calculer le volume d'une capsule donnée en Java en utilisant différentes méthodes. Formule de volume de capsule La formule du volume de la capsule est la suivante: Volume de capsule = volume cylindrique volume de deux hémisphères volume dans, R: Le rayon de l'hémisphère. H: La hauteur du cylindre (à l'exclusion de l'hémisphère). Exemple 1 entrer Rayon = 5 unités Hauteur = 10 unités Sortir Volume = 1570,8 unités cubes expliquer Calculer le volume à l'aide de la formule: Volume = π × r2 × h (4

Créer l'avenir : programmation Java pour les débutants absolus Créer l'avenir : programmation Java pour les débutants absolus Oct 13, 2024 pm 01:32 PM

Java est un langage de programmation populaire qui peut être appris aussi bien par les développeurs débutants que par les développeurs expérimentés. Ce didacticiel commence par les concepts de base et progresse vers des sujets avancés. Après avoir installé le kit de développement Java, vous pouvez vous entraîner à la programmation en créant un simple programme « Hello, World ! ». Une fois que vous avez compris le code, utilisez l'invite de commande pour compiler et exécuter le programme, et « Hello, World ! » s'affichera sur la console. L'apprentissage de Java commence votre parcours de programmation et, à mesure que votre maîtrise s'approfondit, vous pouvez créer des applications plus complexes.

Comment exécuter votre première application Spring Boot dans Spring Tool Suite? Comment exécuter votre première application Spring Boot dans Spring Tool Suite? Feb 07, 2025 pm 12:11 PM

Spring Boot simplifie la création d'applications Java robustes, évolutives et prêtes à la production, révolutionnant le développement de Java. Son approche "Convention sur la configuration", inhérente à l'écosystème de ressort, minimise la configuration manuelle, allo

See all articles