10
votes

Qu'est-ce que l'on entend par "implémenter une méthode d'emballage"?

On m'a donné une mission de programmation et une des choses que je dois faire est de mettre en œuvre la méthode qu'une méthode d'emballage qui repose sur une autre méthode pour trier les coordonnées du plus bas au plus élevé. Je ne suis pas sûr sur ce que l'on entend exactement en mettant en œuvre une méthode d'emballage.

static void sortCoordsByZ(double[][] coords) {
    //implement the wrapper method for the recursive sort method. all work is done the recursive sort method
}

static void recursiveSort(double[][] coords, int lo, int hi) {
    //recursive sort method
}


1 commentaires

@Dougman - Il n'est pas clair que ceci est des devoirs (i pour un «missions de programmation» au travail), donc je supprime la balise à moins que le questionneur indique le contraire. Voir meta.stackexchange.com/questions / 11189 / ... .


6 Réponses :


3
votes

Il enveloppe une autre méthode :) Il ajoute probablement des arguments supplémentaires, tels que les valeurs initiales de LO et HI dans votre cas et agit comme un point d'entrée à votre tri.


0 commentaires

14
votes

Une méthode d'emballage est un Adaptateur ou A façade ; Il fournit une interface alternative pour une méthode existante.

On vous a demandé d'écrire une façade (façade) - pour fournir une interface plus simple pour les clients qui n'ont pas besoin de spécifier des valeurs élevées et basses.


0 commentaires

8
votes

Lorsque vous implémentez une méthode d'emballage, vous codez efficacement une variante d'une méthode existante, généralement parce que la méthode existante ne satisfait pas à vos besoins actuels. La méthode d'origine peut être trop compliquée (trop de paramètres) ou ne peut pas tout à fait la chose requise, ce qui signifie que vous devez écrire une enveloppe (ou une surcharge) qui fonctionne hors de la méthode d'origine. Habituellement, lors de la rédaction d'une enveloppe, vous devez toujours exploiter la fonction d'origine pour tout ce qu'elle fait, et remplissez les lacunes avec votre wrapper.


0 commentaires

10
votes

Vous agissez en tant que méthode d'emballage en ce qui concerne la question de votre affectation sur le débordement de la pile!

Une méthode d'emballage répond à une question en posant une méthode "expert" pour la réponse. Généralement, il fait trois choses:

  1. Il cadra la question de telle sorte que la méthode "expert" puisse la comprendre.
  2. Il demande à la méthode "expert" la question
  3. Cela fait quelque chose de facile à la réponse à la mettre dans le bon format pour l'appelant.

    Dans votre cas, la méthode "Expert" est recursiveor () et votre sortcoordsbyz () La méthode devra appeler recoursive () Avec les bons paramètres, puis peut-être faire quelque chose avec la réponse avant de le renvoyer.


0 commentaires

3
votes

Dans ce cas, cela ne devrait-il pas être tout ce que j'ai besoin de mettre dans la méthode "Trier par z" si sa réalisation d'un tableau appelé des coords contenant tous ses emplacements remplis?

recursiveSort(coords, 0, coords.length-1);


1 commentaires

Oui, c'est précisément ce que vous devriez faire.



2
votes

Les méthodes d'emballage peuvent être utilisées pour l'abstraction, la normalisation et le refactoring

Par exemple, si vous importez une bibliothèque de méthodes spéciales d'assistance et utilisez-les à votre demande, puis décidez ensuite de passer à une autre bibliothèque qui vous donnera plus de fonctionnalités que vous devez alors réécrire chaque ligne de code qui appelle la ligne de code qui appelle la Méthodes de bibliothèques précédentes pour appeler les nouvelles méthodes de bibliothèques. Avec une application atteignant des dizaines et des centaines de milliers de lignes, il s'agit d'une tâche énorme. Cela se produit plus souvent lorsque le logiciel est sous licence, puis lorsqu'il expire une nouvelle option est cueillie.

Pour résoudre ce problème, vous pouvez envelopper toutes les méthodes d'assistance dans vos propres méthodes. Ces méthodes sont simplement 1 ligne qui appelle les méthodes de votre bibliothèque importée. Vous appelez toutes les méthodes d'emballage via votre application au lieu d'appeler directement la bibliothèque importée.

L'avantage de tout l'abstraction s'inscrit lorsque vous souhaitez importer la nouvelle bibliothèque. Au lieu de réécrire chaque appel de l'application, vous pouvez simplement réécrire les méthodes d'emballage qui devraient être sa propre classe. Maintenant, la modification de 1 méthode dans la classe wrapper met à jour la totalité de l'application où cette méthode est utilisée. (Voir méthodes d'assistance HTML MVC4 .NET pour un exemple)

sur le sujet de la normalisation Les wrappers peuvent être utilisés pour définir des valeurs par défaut pour de nombreuses choses définies manuellement lorsque l'objet est créé. Mais maintenant, s'ils sont installés dans l'emballage, ils ne doivent plus être définis à chaque fois que la méthode d'origine est appelée. Par exemple, vous pouvez définir les dimensions d'une vue en grille dans l'emballage de la grille et maintenant, lorsque vous appelez la méthode Wrapper dans votre application, toutes les vues de la grille ont les mêmes dimensions et moins de lignes de code doivent être maintenues dans l'application; Aussi accomplir refactoring.


0 commentaires