Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2020
603
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.45 KB | None | 0 0
  1. /**
  2. * Diese Klasse implementiert das Interface TitelListe mit "wachsenden" Arrays.
  3. *
  4. * @author Till Aust
  5. * @author Axel Schmolitzky
  6. * @author Petra Becker-Pechau
  7. * @author Alexander Pokahr
  8. * @author Christian Spaeh
  9. * @author Fredrik Winkler
  10. * @version WiSe 2013/14
  11. */
  12. class ArrayTitelListe implements TitelListe
  13. {
  14. // In diesem Array sind die Referenzen auf die enthaltenen Titel abgelegt.
  15. // Die Laenge des Arrays entspricht der Kapazitaet der Liste und muss daher nicht separat gespeichert werden.
  16. private Titel[] _titelArray;
  17.  
  18. // Die Kardinalitaet der Liste.
  19. private int _anzahlTitel;
  20.  
  21. // Die Anfangskapazitaet einer jeden neuen Liste.
  22. private static final int ANFANGSKAPAZITAET = 10;
  23.  
  24. /**
  25. * Initialisiert eine neue <code>ArrayTitelListe</code>.
  26. */
  27. public ArrayTitelListe()
  28. {
  29. _titelArray = new Titel[ANFANGSKAPAZITAET];
  30. _anzahlTitel = 0;
  31. }
  32.  
  33. /**
  34. * Initialisiert eine neue <code>ArrayTitelListe</code> mit einer angegeben Anfangskapazität.
  35. *
  36. * @param kapazitaet Anfangskapazität mit der die Liste erstellt werden soll.
  37. */
  38. public ArrayTitelListe(int kapazitaet)
  39. {
  40. _titelArray = new Titel[kapazitaet];
  41. _anzahlTitel = 0;
  42. }
  43.  
  44. /**
  45. * Fuege einen Titel an der Position <code>position</code> in die Titelliste
  46. * ein. Alle folgenden Eintraege werden um eine Position verschoben.
  47. * Wenn <code>position</code> gleich der Laenge der Titelliste ist, dann
  48. * fuege den <code>titel</code> am Ende an.
  49. *
  50. * @param titel Der einzufuegende Titel (darf nicht null sein).
  51. * @param position Die Position, an welcher der Titel eingefuegt werden soll.
  52. */
  53. public void fuegeEin(Titel titel, int position)
  54. {
  55. darfNichtNullSein(titel);
  56. mussGueltigeEinfuegepositionSein(position);
  57.  
  58. // TODO
  59. if(_anzahlTitel == _titelArray.length - 1) {
  60. Titel[] hilf = new Titel[2 * _titelArray.length];
  61. for (int i = 0; i < (_titelArray.length - 1); i++) {
  62. hilf[i] = _titelArray[i];
  63. }
  64. _titelArray = hilf;
  65. }
  66.  
  67. for( int i = _titelArray.length - 1; i > position; i--) {
  68. _titelArray[i] = _titelArray[i - 1];
  69. }
  70. _titelArray[position] = titel;
  71. _anzahlTitel++;
  72. // schreibeAufKonsole();
  73.  
  74. }
  75.  
  76. /**
  77. * Pruefe, ob ein Titel in der Liste enthalten ist.
  78. *
  79. * @param titel Der Titel, welcher in der Liste gesucht werden soll.
  80. * @return <code>true</code> wenn der Titel in der Liste ist,
  81. * ansonsten <code>false</code>.
  82. */
  83. public boolean enthaelt(Titel titel)
  84. {
  85. darfNichtNullSein(titel);
  86.  
  87. // TODO
  88. for(int i = 0; i < _anzahlTitel; i++) {
  89. if(_titelArray[i].equals(titel)) {
  90. return true;
  91. }
  92. }
  93.  
  94. return false;
  95. }
  96.  
  97. /**
  98. * Gib den Titel an der angegebenen Position zurueck.
  99. *
  100. * @param position Die Position des Titels, der zurueckgeben werden soll.
  101. * @return Der Titel an der Position <code>position</code>.
  102. */
  103. public Titel gibTitel(int position)
  104. {
  105. mussGueltigePositionSein(position);
  106. return _titelArray[position];
  107. }
  108.  
  109. /**
  110. * Entferne den Titel an der angegebenen Position. Alle folgenden Eintraege
  111. * werden um eine Position verschoben.
  112. *
  113. * @param position Die Position des Titels, der entfernt werden soll.
  114. */
  115. public void entferne(int position)
  116. {
  117. mussGueltigePositionSein(position);
  118.  
  119. // TODO
  120.  
  121. for(int i = position; i < _anzahlTitel; i++) {
  122. _titelArray[i] = _titelArray[i + 1];
  123. }
  124. _titelArray[_anzahlTitel] = null;
  125. _anzahlTitel--;
  126. }
  127.  
  128. /**
  129. * Gib die Laenge der Liste zurueck.
  130. *
  131. * @return Anzahl der Titel in der Liste.
  132. */
  133. public int gibLaenge()
  134. {
  135. return _anzahlTitel;
  136. }
  137.  
  138. /**
  139. * Entferne alle Titel aus der Liste.
  140. */
  141. public void leere()
  142. {
  143. // TODO
  144. _anzahlTitel = 0;
  145. _titelArray = new Titel[ANFANGSKAPAZITAET];
  146. }
  147.  
  148. /**
  149. * Schreibt den Array-Inhalt auf die Konsole (als Debugging-Hilfe gedacht).
  150. */
  151. public void schreibeAufKonsole()
  152. {
  153. System.out.println(java.util.Arrays.toString(_titelArray));
  154. }
  155.  
  156. /**
  157. * Liefert true fuer alle gueltigen Positionen innerhalb der Liste.
  158. *
  159. * @param position Die Position des Titels, die überprüft werden soll.
  160. * @return Das Ergebnis der Überprüfung
  161. */
  162. public boolean istGueltigePosition(int position)
  163. {
  164. return (position >= 0) && (position < gibLaenge());
  165. }
  166.  
  167. /**
  168. * Wirft eine IndexOutOfBoundsException, falls es sich um eine ungueltige Position handelt.
  169. *
  170. * @param position Die Position des Titels, die überprüft werden soll.
  171. */
  172. private void mussGueltigePositionSein(int position)
  173. {
  174. if (!istGueltigePosition(position))
  175. {
  176. throw new IndexOutOfBoundsException(position + " ist keine gueltige Position");
  177. }
  178. }
  179.  
  180. /**
  181. * Liefert true fuer alle gueltigen Einfuegepositionen innerhalb der Liste.
  182. *
  183. * @param position Die Position des Titels, die überprüft werden soll.
  184. * @return Das Ergebnis der Überprüfung
  185. */
  186. public boolean istGueltigeEinfuegeposition(int position)
  187. {
  188. return (position >= 0) && (position <= gibLaenge());
  189. }
  190.  
  191. /**
  192. * Wirft eine IndexOutOfBoundsException, falls es sich um eine ungueltige Einfuegeposition handelt.
  193. *
  194. * @param position Die Position des Titels, die überprüft werden soll.
  195. */
  196. private void mussGueltigeEinfuegepositionSein(int position)
  197. {
  198. if (!istGueltigeEinfuegeposition(position))
  199. {
  200. throw new IndexOutOfBoundsException(position + " ist keine gueltige Einfuegeposition");
  201. }
  202. }
  203.  
  204. /**
  205. * Wirft eine IllegalArgumentException, falls die uebergebene Titel-Referenz null ist.
  206. *
  207. * @param titel Der Titel der überprüft wird.
  208. */
  209. private static void darfNichtNullSein(Titel titel)
  210. {
  211. if (titel == null)
  212. {
  213. throw new IllegalArgumentException("Die Titel-Referenz darf nicht null sein.");
  214. }
  215. }
  216. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement