2012-04-10 8 views
0

Ich habe eine verknüpfte Liste Frage, die von dieser Hausaufgabe Prompt stammt ich bin im Begriff zu posten. es könnte mit der Antwort helfen:verknüpfte Liste MutableString Hausaufgaben erben vs Delegierung

Besonderheiten

Die Java-String-Klasse unveränderlich ist (man kann nicht den Inhalt ändern). Dies ist manchmal eine Behinderung dessen, was Sie mit einer Zeichenkette machen möchten (d. H. Änderungen an der bestehenden Zeichenkette vornehmen). Für diese Aufgabe erstellen Sie eine Klasse namens MutableString. HINWEIS/HAFTUNGSAUSSCHLUSS: Die Java-API hat eine Klasse String, die wandelbar ist, aber für die Absichten und Zwecke dieser Aufgabe werden wir so tun, als wir nicht wissen, über sie

An object of the MutableString class contains the following operations/behaviors -- which means the class itself must contain the following methods: 

Character charAt(int index): returns the Character at the specified index in the string -- if the index lies outside the string, throw a MutableStringIndexOutOfBoundsException (you must write this class) 

void set(int index, Character ch): replaces the existing Character at the specified location -- if the index lies outside the string throw a MutableStringIndexOutOfBoundsException 

void add(int index, Character ch): creates a new spot in the list for the Character at the index specified -- if the index lies outside the string throw a MutableStringIndexOutOfBoundsException 

Character remove(int index): removes the Character at specified index -- if the index lies outside the string, throw a MutableStringIndexOutOfBoundsException 

boolean remove(Character ch): removes the first occurrence (starting from the beginning of the MutableString) of the Character -- if the Character is not found, return false 

boolean removeAll(Character ch): removes all occurrences of the specified Character -- if Character is not found, return false 

void toUpper(): converts the current string to all upper case 

void toLower(): converts the current string to all lower case 

MutableString substring(int start, int finish): returns a string starting at the Character specified by start and concluding with the Character specified by finish -- if start or finish is outside the the string, throw a MutableStringIndexOutOfBoundsException 

char [] toCharArray(): returns a char array containing all the characters in the string -- be sure and handle all cases 

int length(): reports/returns the length of the string 

String toString(): returns a String containing all the Characters 

String toReverseString(): returns a String containing all the Characters in reverse order -- you must utilize recursion to accomplish this task 

int compareTo(MutableString that): allows comparison of two MutableString objects -- this implies you will implement the Comparable interface for your MutableString class 

void sort(): alphabetizes the letters in case-insensitive fashion in ascending order -- you must write the code for this sort (no API calls are allowed) 

;-) müssen Sie verwenden eine verkettete Liste zur Darstellung der Zeichen der Zeichenkette (Sie müssen die Klasse LinkeList schreiben). Ihre LinkedList-Klasse sollte grundlegende Operationen zum Aktualisieren und Ändern der Liste enthalten. In diesem Sinne implementieren Sie die List-Schnittstelle in der Java-API. Für Methoden, die Sie für die Funktionalität Ihrer LinkedList als unnötig erachten, stub diese Methoden aus und werfen Sie eine Exception, die Informationen darüber enthält, welche Methode aufgerufen wurde und nicht implementiert wurde. Hinweis: Stellen Sie sicher, dass Ihre LinkedList-Klasse nichts MutableString-spezifisch tut. Fühlen Sie sich frei, die folgende herausgebrochene LinkedList-Klasse für Ihre Aufgabe zu verwenden. Es enthält möglicherweise nicht alle Methoden, die Sie benötigen, aber es enthält die Methoden aus der List-Schnittstelle der Java-API.

MutableString muss die LinkedList-Verhaltensweisen (Methoden) verwenden, wo immer dies möglich ist (schreiben Sie keinen Code in MutableString, der dasselbe wie etwas in der LinkedList-Klasse tut). Daher enthält Ihr MutableString ein Feld, das ein Verweis auf ein LinkedList-Objekt ist. BTW, dieses Konzept ist bekannt als Delegation, eine sehr wichtige Idee in Software-Engineering und Design. Erstellen Sie MutableString NICHT so, dass er von LinkedList erbt.

Jeder Knoten Ihres MutableString sollte ein Zeichen enthalten - beachten Sie, dass dies nicht bedeutet, dass der Verweis auf die Daten in Ihrer Knotenklasse sollte/muss Typ Character - das würde Ihre LinkedList-Klasse für MutableString und wir das will ich in diesem Fall nicht.

** Der Teil, den ich nicht verstehe, ist der obige Absatz 2, der davon redet, von der Klasse der verknüpften Liste zu erben. Ich war immer daran gewöhnt, etwas wie öffentliche Klasse zu schreiben. MutableString erweitert LinkedList, aber das können wir nicht tun und ich weiß wirklich nicht, wie ich anfangen soll, diese Mutablestring-Klasse zu schreiben, ohne von der Klasse zu erben. Hilfe zur Erklärung, wie man es macht und der Unterschied wäre großartig. Vielen Dank.

Ich bin nicht sehr gut in verkettete Listen so kahl mit dieser Frage :) **

Antwort

0

Er sagt, dass Sie Delegation statt Vererbung verwenden sollten.

Für den Unterschied zwischen Delegation und Vererbung, überprüfen Sie this aus. Es erklärt mit einem Beispiel.