2009-11-15 12 views
7

Ich habe eine Programmieraufgabe zugewiesen und eines der Dinge, die ich tun muss, ist die Implementierung einer Methode, die auf einer anderen Methode beruht, um die Koordinaten vom niedrigsten zum höchsten zu sortieren. Ich bin mir nicht sicher, was genau mit der Implementierung einer Wrapper-Methode gemeint ist.Was bedeutet "Implementieren einer Wrapper-Methode"?

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 
} 
+0

@Dougman - es ist nicht klar, dass dies Hausaufgaben sind (ich für einen bekomme "Programmierung Aufgaben" bei der Arbeit), also entferne ich das Tag, es sei denn, der Fragesteller sagt etwas anderes. Siehe http://meta.stackexchange.com/questions/11189/what-to-do-about-tag-abuse. –

Antwort

2

Es wickelt eine andere Methode :) fügt es wahrscheinlich einige zusätzliche Argumente, wie Anfangswerte von lo und hallo in Ihrem Fall und fungiert als Einstiegspunkt für Ihre Sortierung.

9

Ein Wrapper-Verfahren ist ein adapter oder ein façade; Es bietet eine alternative Schnittstelle für eine vorhandene Methode.

Sie wurden gebeten, eine Fassade (Fassade) zu schreiben - um eine einfachere Schnittstelle für Clients zu bieten, die keine hohen und niedrigen Werte angeben müssen.

5

Wenn Sie eine Wrappermethode implementieren, codieren Sie effektiv eine Variante einer vorhandenen Methode, weil die vorhandene Methode Ihren aktuellen Anforderungen nicht entspricht. Die ursprüngliche Methode ist möglicherweise zu kompliziert (zu viele Parameter), oder sie kann die erforderliche Funktion nicht ausführen, was bedeutet, dass Sie einen Wrapper (oder eine Überladung) schreiben müssen, der die zusätzliche Arbeit erledigt, die die ursprüngliche Methode nicht leistet. Normalerweise werden Sie beim Schreiben eines Wrappers die ursprüngliche Funktion für alles, was sie tut, nutzen und die Lücken mit Ihrem Wrapper füllen.

7

Sie handeln jetzt als Wrapper-Methode, indem Sie Ihre Aufgabenfrage zu Stack Overflow stellen!

Eine Wrapper-Methode beantwortet eine Frage, indem sie eine "Experten" -Methode für die Antwort anfordert. Im Allgemeinen macht es drei Dinge:

  1. Es gestaltet die Frage so, dass die "Experten" -Methode es verstehen kann.
  2. Es fragt die "Experten" -Methode die Frage
  3. Es tut etwas leicht auf die Antwort, um es in das richtige Format für den Anrufer zu setzen.

In Ihrem Fall der „Experte“ Methode ist recursiveSort() und Ihre sortCoordsByZ() Methode haben recursiveSort() mit den richtigen Parametern zu rufen, und dann vielleicht mit der Antwort etwas zu tun, bevor es zurückkehrt.

3

In diesem Fall sollte das nicht alles sein, was ich in die "sort by z" -Methode setzen muss, wenn es ein Array namens coords durchläuft, das alle seine Slots gefüllt hat?

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

Ja, genau das sollten Sie tun. – bcat

1

Wrapper Methoden können

Zum Beispiel für Abstraktion, Standardisierung und Refactoring verwendet werden, wenn Sie eine Bibliothek mit speziellen Hilfsmethoden importieren und verwenden Sie sie später entscheidet, dann aus der Anwendung bis hin zu einem anderen wechseln Bibliothek, die Ihnen mehr Funktionalität gibt, müssten Sie dann jede Codezeile neu schreiben, die die vorherigen Bibliotheken aufgerufen hat, um die Methoden der neuen Bibliotheken aufzurufen. Mit Anwendungen, die Zehntausende von Zeilen erreichen, ist dies eine große Aufgabe. Dies passiert häufiger, wenn Software lizenziert wird und wenn sie abläuft, wird eine neue Option ausgewählt.

Um dieses Problem zu lösen, können Sie alle Helper-Methoden in Ihre eigenen Methoden einbinden. Diese Methoden sind einfach eine Zeile, die die Methoden in Ihrer importierten Bibliothek aufruft. Sie würden alle Wrapper-Methoden durch Ihre Anwendung aufrufen, anstatt die importierte Bibliothek direkt aufzurufen.

Jetzt kommt der Nutzen aller Abstraktion, wenn Sie die neue Bibliothek importieren möchten. Anstatt jeden Aufruf über die Anwendung neu zu schreiben, können Sie einfach nur die Wrapper-Methoden umschreiben, die eine eigene Klasse sein sollten. Wenn Sie jetzt eine Methode in der Wrapper-Klasse ändern, wird die gesamte Anwendung, in der diese Methode verwendet wird, aktualisiert. (Siehe MVC4 .NET HTML Helper-Methoden für ein Beispiel)

Zum Thema Standardisierung können die Wrapper verwendet werden, um Standardwerte für viele Dinge festzulegen, die beim Erstellen des Objekts manuell festgelegt werden. Aber jetzt, wenn sie im Wrapper gesetzt sind, müssen sie nicht mehr jedes Mal gesetzt werden, wenn die ursprüngliche Methode aufgerufen wird. Beispielsweise könnten Sie die Dimensionen einer Rasteransicht im Gridview-Wrapper festlegen. Wenn Sie jetzt die Wrapper-Methode in Ihrer Anwendung aufrufen, haben alle Rasteransichten die gleichen Dimensionen und weniger Codezeilen müssen in der gesamten Anwendung verwaltet werden. auch Refactoring durchführen.