Dans une conférence sur Java, un professeur de sciences informatiques indique que les interfaces Java d'une classe sont prototypes forts> pour des méthodes publiques, ainsi que des descriptions de leurs comportements. P>
et à 8h13 dans la vidéo, il dit une section de discussion avec des assistants d'enseignement pour apprendre ce qu'il veut dire par prototype. P>
Que signifie "prototype" en Java dans le contexte ci-dessus? P>
(Source https://www.youtube.com/watch?v=-c4i3gfye3w 8: 47) p>
7 Réponses :
"prototype" n'est pas le terminus le mieux / droit à utiliser. Les têtes / définitions de la méthode devront être implémentées dans la classe d'implémentation (à l'aide de Je suppose que ces conventions de nommage laissent beaucoup de place pour de nombreux débats idéologiques. P>
ou l'auteur a eu une sorte de missus mental et mappé la construction de héritage prototypique de JavaScript dans Java dans son esprit d'une manière ou d'une autre. P> interfaces code> ressemble plus à des "contrats", que la mise en œuvre de classes doit remplir. p>
Implements code> dans la définition de la tête / classe de classe / Classe publique XY Implements ... Code> ). p>
Je pense que l'utilisation du mot prototype dans ce contexte est malheureuse, certaines langues comme JavaScript utilisent quelque chose appelé héritage prototypique totalement différent de ce qui est discuté dans la conférence. Je pense que le mot "contrat" serait plus approprié. Une interface Java est une fonctionnalité linguistique permettant à l'auteur d'une classe de déclarer que toute mise en œuvre concrète de cette classe fournira des implémentations de toutes les méthodes déclarées dans toutes les interfaces qu'ils implémentent. P>
Il est utilisé pour permettre aux classes Java de former plusieurs relations - une relation sans recourir à plusieurs héritages (non autorisés dans Java). Vous pouvez avoir une classe de voiture les hérités d'une classe de véhicule mais implémente une interface de produit, la voiture est à la fois un véhicule et un produit. P>
La véritable "malheurement" est que le "modèle" est légitimement utilisé dans CS et la littérature informatique pour signifier de nombreuses choses différentes. Il n'est pas pratique d'éviter d'utiliser un terme entièrement parce que d'autres personnes l'utilisent de manière incohérente.
@Bewarned, le mot prototype dans ce contexte n'est pas regrettable comme vous le dites. ECMAScript est l'une des seules différentes langues qui utilisent le héritage prototypique comme une alternative à une hiérarchie de classe. Le prototype de mot dans ce sens est un «report» de C, une langue qui a fortement influencé Java. En C (et C ++, Obj-C), en plaçant le prototype de fonction ci-dessus principal (), on peut appeler ce code de Main () mais avoir le code de mise en œuvre ci-dessous principal (). En fait, dans CS, ECE, EE, et le prototype de mots anglais a une variété de significations en fonction du contexte dans lequel elle est utilisée. Ce n'est pas regrettable!
Ce n'est pas que le prototype est incorrect, cela peut entraîner une confusion lorsque ces élèves sont finalement exposés à JavaScript. Les gens ont déjà assez de difficultés à saisir JavaScript Oo, ne le permettent pas de l'incliner en utilisant ce mot lorsque vous décrivez Java Oo. Surtout quand il y a beaucoup d'autres synonymes.
@Bewarned Je ne comprends pas comment cela pourrait conduire à la confusion. En fait, les seules personnes que je pouvais voir être confuses sont des personnes qui ne connaissent que JavaScript, ou peut-être n'avoir aucune expérience avec une langue fortement dactylographiée. EN.Wikipedia.org/wiki/interface_(java) <- une citation < - "Les méthodes d'interface sont publiques, abstraites et jamais finales. Pensez à eux comme des prototypes uniquement; aucune implémentation n'est autorisée." <- ce qui est exactement comme des prototypes dans C, C ++, Obj-C ... enfer, même des interfaces PHP. Le prototype était le mot parfait à utiliser dans ce contexte. J'ai vu la vidéo Op fait référence à, avez-vous?
Les interfaces ne sont pas des prototypes pour les classes en Java. P>
Dans des langues telles que C & C ++, qui compile le code de la machine Sirectement, le compilateur doit être conscient de la nature de tout identifiant (variable / classe / fonctions) avant qu'ils ne soient références dans le programme. Cela signifie que ces langues nécessitent de connaître la nature de l'identifiant pour générer une sortie de code de machine qui lui est liée. P>
En mots simples, le compilateur C ++ doit être au courant des méthodes et un membre d'une classe avant que cette classe soit utilisée n'importe où dans le code. Pour accomplir cela, vous devez définir la classe avant la ligne de code où elle est utilisée ou que vous devriez au moins déclarer sa nature. Déclarer que seule la nature d'une fonction ou d'une classe crée un «prototype». P>
en Java, une "interface" est quelque chose comme la description d'une classe. Cela définit la totalité de toutes les méthodes qu'un type particulier de classe devrait être obligatoire. Vous pouvez ensuite créer des cours qui implémentent cette interface. Objectif principal que les interfaces servent en Java sont la possibilité qu'une variable déclarée comme de type d'interface particulier puisse contenir des objets de n'importe quelle classe qui implémente l'objet. P>
Il le dit dans C / C ++ CODE> WAY, laissez-moi vous expliquer, dans c ++ code> Vous pouvez définir des prototypes pour des méthodes dans les fichiers d'en-tête des classes afin que d'autres classes puissent reconnaître Ces méthodes, également dans C code> où il n'y a pas de concept de classe, vous pouvez définir des prototypes au début du fichier, puis à quelque part dans le même fichier, vous pouvez implémenter ces prototypes, de sorte que les méthodes puissent être utilisées avant Leur mise en œuvre est fournie. Donc, dans java code> Les interfaces fournissent à peu près de la même manière, vous pouvez définir des prototypes pour des méthodes (en-têtes de méthodes) qui seront implémentées par des classes qui implémentent cette interface. P>
Que signifie "prototype" en Java dans le contexte ci-dessus? P> blockQuote>
Le mot "prototype" n'est pas une terminologie Java standard. Il n'est pas utilisé dans les JLS, et il n'est pas mentionné dans le tutoriel Java Glossaire . En bref, il n'y a pas de sens spécifique Java. P>
Votre conférencier utilise ce mot dans un sens plus large plutôt qu'un sens spécifique Java. En fait, son utilisation correspond à "prototype de fonction" comme décrit dans Cette page Wikipedia . P>
Malheureusement, la langue "informatique anglaise" est pleine d'exemples où un mot ou une phrase signifie des choses différentes (et parfois contradictoires) dans différents contextes. Il y a Autres significations EM> pour "Modèle" que vous y rencontrerez. Par exemple: P>
en C ++ "Modèle" fait référence à ce que Java appelle une classe ou une méthode générique. p> li>
en JavaScript, un objet a un attribut "modèle" qui donne les méthodes d'objets. P> li>
Plus généralement, la frappe à base de modèles est une voie alternative (plus dynamique) de faire de la dactylographie de OO. P> li> ul>
Mais le fait que ces significations n'existent pas ne signifie pas que votre conférencier était faux de se référer aux signatures de méthode d'interface comme des "modèles". P>
dans une conférence sur Java, un professeur d'informatique déclare que: em> Java pour 1. Est ok: - Oui, ce sont des prototypes pour des méthodes publiques mises en œuvre d'une classe. Oui, un peu délicat pour comprendre :) p>
blockQuote> bibliographie: em> Extrawork: em> < / p> c ++: p>
1. Les prototypes pour les méthodes publiques sont-elles
2. Plus des descriptions de leurs comportements. p>
BlockQuote>
Pour 2. Cette partie pourrait être un peu délicate. :) p>
Définition vs Description
dépendant du contexte
Nom Visibilité - Tutoriels C ++ P>
prototypes fournissent les signatures des fonctions que vous utiliserez dans votre code. Ils sont un peu facultatifs, si vous pouvez commander votre code de telle que vous utilisez uniquement des fonctions qui sont auparavant Défini alors vous pouvez vous échapper sans les définir
en dessous d'un prototype pour une fonction qui résume deux entiers est donnée. p>
Il n'y a pas de mot-clé de prototype Java. Il disait un prototype dans l'utilisation de la langue anglaise, ce qui signifie un modèle à partir de laquelle des choses peuvent être faites.
Il vient de deux mots grecs, "proto" en premier état et "typ" signifiant un modèle à utiliser pour faire des copies.
"Prototype" n'est pas une chose en Java. Il se réfère probablement au Concept en C / C ++ / etc. .
Première fois, je vois l'utilisation du mot "prototype" pour la définition d'interfaces, le terme que j'ai lu dans de nombreux livres est "contrat" comme "les interfaces sont le contrat de billets que vos classes doivent mettre en œuvre s'ils sont bien sûr
implémente code> il ""Interface" a également différentes significations. "L'interface d'une classe" implique qu'il se réfère à un concept plus général que la construction d'interface en Java.