Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Diese Klasse implementiert das Interface TitelListe mit "wachsenden" Arrays.
- *
- * @author Till Aust
- * @author Axel Schmolitzky
- * @author Petra Becker-Pechau
- * @author Alexander Pokahr
- * @author Christian Spaeh
- * @author Fredrik Winkler
- * @version WiSe 2013/14
- */
- class ArrayTitelListe implements TitelListe
- {
- // In diesem Array sind die Referenzen auf die enthaltenen Titel abgelegt.
- // Die Laenge des Arrays entspricht der Kapazitaet der Liste und muss daher nicht separat gespeichert werden.
- private Titel[] _titelArray;
- // Die Kardinalitaet der Liste.
- private int _anzahlTitel;
- // Die Anfangskapazitaet einer jeden neuen Liste.
- private static final int ANFANGSKAPAZITAET = 10;
- /**
- * Initialisiert eine neue <code>ArrayTitelListe</code>.
- */
- public ArrayTitelListe()
- {
- _titelArray = new Titel[ANFANGSKAPAZITAET];
- _anzahlTitel = 0;
- }
- /**
- * Initialisiert eine neue <code>ArrayTitelListe</code> mit einer angegeben Anfangskapazität.
- *
- * @param kapazitaet Anfangskapazität mit der die Liste erstellt werden soll.
- */
- public ArrayTitelListe(int kapazitaet)
- {
- _titelArray = new Titel[kapazitaet];
- _anzahlTitel = 0;
- }
- /**
- * Fuege einen Titel an der Position <code>position</code> in die Titelliste
- * ein. Alle folgenden Eintraege werden um eine Position verschoben.
- * Wenn <code>position</code> gleich der Laenge der Titelliste ist, dann
- * fuege den <code>titel</code> am Ende an.
- *
- * @param titel Der einzufuegende Titel (darf nicht null sein).
- * @param position Die Position, an welcher der Titel eingefuegt werden soll.
- */
- public void fuegeEin(Titel titel, int position)
- {
- darfNichtNullSein(titel);
- mussGueltigeEinfuegepositionSein(position);
- // TODO
- if(_anzahlTitel == _titelArray.length - 1) {
- Titel[] hilf = new Titel[2 * _titelArray.length];
- for (int i = 0; i < (_titelArray.length - 1); i++) {
- hilf[i] = _titelArray[i];
- }
- _titelArray = hilf;
- }
- for( int i = _titelArray.length - 1; i > position; i--) {
- _titelArray[i] = _titelArray[i - 1];
- }
- _titelArray[position] = titel;
- _anzahlTitel++;
- // schreibeAufKonsole();
- }
- /**
- * Pruefe, ob ein Titel in der Liste enthalten ist.
- *
- * @param titel Der Titel, welcher in der Liste gesucht werden soll.
- * @return <code>true</code> wenn der Titel in der Liste ist,
- * ansonsten <code>false</code>.
- */
- public boolean enthaelt(Titel titel)
- {
- darfNichtNullSein(titel);
- // TODO
- for(int i = 0; i < _anzahlTitel; i++) {
- if(_titelArray[i].equals(titel)) {
- return true;
- }
- }
- return false;
- }
- /**
- * Gib den Titel an der angegebenen Position zurueck.
- *
- * @param position Die Position des Titels, der zurueckgeben werden soll.
- * @return Der Titel an der Position <code>position</code>.
- */
- public Titel gibTitel(int position)
- {
- mussGueltigePositionSein(position);
- return _titelArray[position];
- }
- /**
- * Entferne den Titel an der angegebenen Position. Alle folgenden Eintraege
- * werden um eine Position verschoben.
- *
- * @param position Die Position des Titels, der entfernt werden soll.
- */
- public void entferne(int position)
- {
- mussGueltigePositionSein(position);
- // TODO
- for(int i = position; i < _anzahlTitel; i++) {
- _titelArray[i] = _titelArray[i + 1];
- }
- _titelArray[_anzahlTitel] = null;
- _anzahlTitel--;
- }
- /**
- * Gib die Laenge der Liste zurueck.
- *
- * @return Anzahl der Titel in der Liste.
- */
- public int gibLaenge()
- {
- return _anzahlTitel;
- }
- /**
- * Entferne alle Titel aus der Liste.
- */
- public void leere()
- {
- // TODO
- _anzahlTitel = 0;
- _titelArray = new Titel[ANFANGSKAPAZITAET];
- }
- /**
- * Schreibt den Array-Inhalt auf die Konsole (als Debugging-Hilfe gedacht).
- */
- public void schreibeAufKonsole()
- {
- System.out.println(java.util.Arrays.toString(_titelArray));
- }
- /**
- * Liefert true fuer alle gueltigen Positionen innerhalb der Liste.
- *
- * @param position Die Position des Titels, die überprüft werden soll.
- * @return Das Ergebnis der Überprüfung
- */
- public boolean istGueltigePosition(int position)
- {
- return (position >= 0) && (position < gibLaenge());
- }
- /**
- * Wirft eine IndexOutOfBoundsException, falls es sich um eine ungueltige Position handelt.
- *
- * @param position Die Position des Titels, die überprüft werden soll.
- */
- private void mussGueltigePositionSein(int position)
- {
- if (!istGueltigePosition(position))
- {
- throw new IndexOutOfBoundsException(position + " ist keine gueltige Position");
- }
- }
- /**
- * Liefert true fuer alle gueltigen Einfuegepositionen innerhalb der Liste.
- *
- * @param position Die Position des Titels, die überprüft werden soll.
- * @return Das Ergebnis der Überprüfung
- */
- public boolean istGueltigeEinfuegeposition(int position)
- {
- return (position >= 0) && (position <= gibLaenge());
- }
- /**
- * Wirft eine IndexOutOfBoundsException, falls es sich um eine ungueltige Einfuegeposition handelt.
- *
- * @param position Die Position des Titels, die überprüft werden soll.
- */
- private void mussGueltigeEinfuegepositionSein(int position)
- {
- if (!istGueltigeEinfuegeposition(position))
- {
- throw new IndexOutOfBoundsException(position + " ist keine gueltige Einfuegeposition");
- }
- }
- /**
- * Wirft eine IllegalArgumentException, falls die uebergebene Titel-Referenz null ist.
- *
- * @param titel Der Titel der überprüft wird.
- */
- private static void darfNichtNullSein(Titel titel)
- {
- if (titel == null)
- {
- throw new IllegalArgumentException("Die Titel-Referenz darf nicht null sein.");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement