Vererbung Hilfe bei einer Aufgabenstellung

AnkeBegin

Mitglied
Hallo zusammen :)
habe im Studium die folgende Aufgabe bekommen:

"Betrachten Sie das unten stehende UML-Klassendiagramm einer einfachen Bibliotheksverwaltung.
Implementieren Sie die darin definierten Klassen genau so, wie vorgegeben. Zur Implementierung
von mehrwertigen Beziehungen und der Methode search in der Klasse Library können Sie die
Klasse List verwenden. Laden Sie sich dafür auch die Klasse ListEntry herunter.
In der Methode search soll die Ausgabe der getDescription()-Methode jedes
LibraryItem-Objektes in der Library daraufhin untersucht werden, ob Sie den übergebenen
String search enthält. Alle LibraryItem-Instanzen, auf die dies zutrifft, sollen in einer
List gesammelt und diese dann zurückgegeben werden.
Schreiben Sie anschließend ein Testprogramm, das automatisiert die Funktionalität der Library
überprüft."

Hier auch noch das UML-Diagramm

uml.png

Ich tue mich zur Zeit schwer damit das ganze umzusetzen.
Ich weiß leider nicht, ob das was ich bisher geschrieben habe richtig ist und wie ich weitermachen kann.
Es fehlt doch die Verbindung, sprich ich muss doch irgendwie nun meine Instanzen anlegen können, aber ich komm nicht drauf wie. Außerdem verstehe ich nicht ganz was mir die Methode getDescription() zurückliefern soll, hat jemand von euch eine Idee? Vielleicht title, author, director? Wäre auch über einen Link dankbar, der mir bei meinem Problem helfen könnte, ich habe nichts dagegen mich mit einem Thema paar Stunden zu beschäftigen :)
Ich bin jetzt so weit:

Java:
public class Library{
        public Library(){            
        }
        
        public void addItem(LibraryItem item){            
        }
        
        public void deleteItem(LibraryItem item ){            
        }
        
        public List search(String text){
            List items;
            if (this. = text){
                items.add(this.);
            }
            return items;
        }    
    }

abstract class LibraryItem{
    private boolean isBorrowed;
    
    public LibraryItem(){        
    }
    
    public boolean isBorrowed(){
        return this.isBorrowed;
    }
    
    public void setBorrowed(boolean isBorrowed){
        this.isBorrowed = isBorrowed;
    }
    
    public String getDescription(){
        return this.;
    }
}

class Book extends Library{
    private String title;
    private String author;
    
    public Book(String title, String author){
        this.title = title;
        this.author = author;
    }
    
    public String getTitle(){
        return this.title;
    }
    
    public String getAuthor(){
        return this.author;
    }
    
    public String getDescription(){
        return this.title + " " + this.author;
    }
}

class BluRay extends Library{
    private String title;
    private String director;
    
    public BluRay(String title, String director){
        this.title = title;
        this.director = director;
    }
    
    public String getTitle(){
        return this.title;
    }
    
    public String getDirector(){
        return this.director;
    }
    
    public String getDescription(){
        return this.title + " " + this.director;
    }
}


Die List und Entry sind diese hier:
Java:
/**
 * A simple linked list. One may go through this list by {@link #advance()} until
 * the last position ({@link #endpos()}) is reached. One also may
 * {@link #delete()} and {@link #insert(Object)} elements. After advancing it is
 * possible to go back to the beginning by {@link #reset()}. 
 */
public class List {

   /**
    * Reference on the first Entry of this List
    */
   private Entry begin;
   /**
    * References before the actual Entry of this List
    */
   private Entry pos;

   /**
    * Create a new empty List.
    */
   public List() {
      pos = begin = new Entry();
   }

   /**
    * Determines if this List is empty or not.
    * 
    * @return <code>true</code>, if there are no elements in this List
    */
   public boolean empty() {
      return begin.next == null;
   }

   /**
    * Determines if it is possible to {@link #advance()} in this List. Returns
    * <code>true</code> if the last position of this List has been reached. An
    * {@link #empty()} List will alway deliver <code>true</code>
    * 
    * @return <code>true</code> if the last Entry in this List already has been
    *         reached.
    */
   public boolean endpos() { // true, wenn am Ende
      return pos.next == null;
   }

   /**
    * Returns to the beginning of this List.
    */
   public void reset() {
      pos = begin;
   }

   /**
    * Advances one step in this List.
    * 
    * @throws RuntimeExcpetion
    *            if the last Entry of this List already has been reached.
    */
   public void advance() {
      if (endpos()) {
         throw new RuntimeException("Already at the end of this List");
      }
      pos = pos.next;
   }

   /**
    * Returns the actual element of this List.
    * 
    * @return the actual element
    * 
    * @throws RuntimeException
    *            if the last Entry of this List already has been reached.
    */
   public Object elem() {
      if (endpos()) {
         throw new RuntimeException("Already at the end of this List");
      }
      return pos.next.o;
   }

   /**
    * Inserts <code>o</code> in this List. It will be placed before the actual
    * element. After insertion the inserted element will become the actual
    * element.
    * 
    * @param x
    *           the element to be inserted
    */
   public void add(Object x) {
      Entry newone = new Entry(x, pos.next);

      pos.next = newone;
   }

   /**
    * Deletes the actual element of this List. The element after the actual
    * element will become the new actual element.
    * 
    * @throws RuntimeExcpetion
    *            if the last Entry of this List already has been reached.
    */
   public void delete() {
      if (endpos()) {
         throw new RuntimeException("Already at the end of this List");
      }
      pos.next = pos.next.next;
   }
}


/**
 * An Entry holds an Object <code>o</code> and a reference <code>next</code> to
 * the next Entry such that a linked List of Entry elements is generated.
 */
class Entry {

   Object o;
   Entry next;

   Entry() {
      this(null, null);
   }

   Entry(Object o) {
      this(o, null);
   }

   Entry(Object o, Entry e) {
      this.o = o;
      this.next = e;
   }

}


Tut mir leid falls das ganze den Rahmen sprengt.

eure Anke :)
 

Ch4t4r

Aktives Mitglied
Der Sinn der Vererbung ist es (meistens), eine Art Hirachie darzustellen und komplexe Objekte derselben Typen zusammenfassen zu können. Siehst du dir eine Vererbungskette mal an, erkennst du, dass jede Klasse am Ende der Vererbung von der Klasse Object erbt, folglich sind alle Klassen in Java im Typ Object zusammenfassbar, zum Beispiel ist Object string = "hi" eine funktionierende Aussage
In dem UML-Diagramm erkennt man, dass LibaryItem (wie du richtig erkannt hast) nicht von Libary erbt, sondern in einer Liste des Inventar vorkommt. Dein Fehler ist es, dass Book und BluRay von LIbary erben, obwohl es LibaryItems sind.

Wie du es bereits mit LibaryItem mit abstract gemacht hast, solltest du die Klassen Book und BluRay als final deklarieren, in dieser Aufgabenstellung stehen sie am Ende der Vererbung, final verhindert somit, dass eine andere Klasse um diese erweitert.
Ich vermute es ist dir überlassen, was du mit der getDescription() Funktion anstellst, du solltest am besten alle Variablen ausgeben.

Vererbung ist ein großes Feld in Java, aber nicht allzu komplex, jedoch muss man auch hier erst den Dreh finden und erkennen, was möglich ist und was nicht.

Für die Ausführung musst du natürlich eine weitere Klasse anlegen, die ausführbar ist(public static void main ...).

Schöne Grüße,
Daniel
 

AnkeBegin

Mitglied
Hallo Daniel,

erst mal vielen Dank für deine ausführliche Antwort.
Es war gestern schon ein wenig spät, es ist klar, dass Book und BluRay von LibraryItem erben :D

Was ich aber immer noch nicht verstehe ist wie ich die Verbindung hinkriege. Sprich ich hab meine Library, aber was genau kommt in die addItem Methode rein? Ich muss ja mit der ListEntry Klasse arbeiten, nur habe ich überhaupt keinen Plan wie ich diese Verbindung zwischen den drei Sachen hinkriege(Library, LibraryItem, List).

Könntest du bzw. ihr mir das noch verraten?

Viele Grüße
 

Ch4t4r

Aktives Mitglied
Die Verknüpfung hierfür ist, dass die Liste den Typ LibaryItem speichern muss. Wie auch alle Variablen wie oben beschrieben im Typ Object zusammenfassbar sind, sind Book und BluRay im Typ LibaryItem zusammenfassbar. Mit diesem Wissen kannst du die Liste befüllen und wieder auslesen. Willst du prüfen, von welchem Typ ein Object ist, geht das so:
Code:
Object o = "";
if(o instanceof String){
//Es ist natürlich ein String :)
}
o = new Book("ABC","DEF");
if(o instanceof Book){
//Natürlich ein Book :)
}

Ich denke, das Wissen kannst du nutzen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Hilfe zu einer Aufgabe Java Basics - Anfänger-Themen 5
V Hilfe bei Implementierung einer boolean Methode Java Basics - Anfänger-Themen 6
D Hilfe bei einer Aufgabe mit for-Schleife Java Basics - Anfänger-Themen 6
Robert_Klaus Hamster java Simulation Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 5
S Hilfe bei Programmierung einer Hotelabrechnung Java Basics - Anfänger-Themen 5
jonathanpizza Hilfe bei einer Übungsaufgabe Java Basics - Anfänger-Themen 6
jonathanpizza Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 5
JD_1998 Random Array sortieren mit Hilfe einer Methode Java Basics - Anfänger-Themen 4
B Hilfe bei einer rekursiven Methode Java Basics - Anfänger-Themen 3
J Brauche Hilfe bei einer aufgabe Java Basics - Anfänger-Themen 1
B BITTE!! Ich brauche dringende Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 17
Y Konkrete Hilfe gesucht - Anzahl der Stellen einer eingegebenen Zahl überprüfen Java Basics - Anfänger-Themen 5
U Brauche Hilfe bei Programmierung einer Produktdatenbank App Java Basics - Anfänger-Themen 4
E Erste Schritte brauche hilfe zum verstehen einer Klasse(Tiefensuche) Java Basics - Anfänger-Themen 17
S Hilfe bei Fehlerfindung einer rekursiven Methode Java Basics - Anfänger-Themen 2
G Hilfe bei einer NPE Java Basics - Anfänger-Themen 9
P Hilfe zu einer Aufgabe Java Basics - Anfänger-Themen 9
C Erste Schritte Benötige Hilfe mit einer Stoppuhr Java Basics - Anfänger-Themen 20
S Klassen Brauche Hilfe bei Erstellung einer Klasse für einen Tachenrechner!!! Java Basics - Anfänger-Themen 6
Q Vererbung Kleine Hilfe bei einer aufgabe Java Basics - Anfänger-Themen 5
B OOP Objekte erzeugen mit Hilfe einer for Schleife Java Basics - Anfänger-Themen 29
J HILFE Benutzen einer Klasse aus JRE System Library Java Basics - Anfänger-Themen 4
E Hilfe bei einer Methode Java Basics - Anfänger-Themen 4
H Hilfe bei einer add.methode Java Basics - Anfänger-Themen 6
C Methoden Objekte mit Hilfe einer Schleife in einer ArrayList erzeugen Java Basics - Anfänger-Themen 26
S Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 19
2 kapitalwertberechnung mit hilfe einer methode Java Basics - Anfänger-Themen 8
3 Bitte um Hilfe bei Lösung einer Aufgabe Java Basics - Anfänger-Themen 16
A Brauche Hilfe mit einer Forschleife Java Basics - Anfänger-Themen 20
S BITTE UM HILFE: Unterschied Deklaration und Signatur einer Methode Java Basics - Anfänger-Themen 3
N Bitte um Hilfe - zyklisch Existenz einer Datei prüfen Java Basics - Anfänger-Themen 21
K Hilfe bei einer Shrink Funktion Java Basics - Anfänger-Themen 8
P Zeilnumbruch vermeiden bei einer Tabelle *hilfe* Java Basics - Anfänger-Themen 11
F Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 2
N Hilfe zur Erstellung einer Internet-Plattform Java Basics - Anfänger-Themen 5
H Hilfe bei Ausgabe in einer Datei. Java Basics - Anfänger-Themen 5
R Hilfe! Daten aus einer excelliste auslesen und. Java Basics - Anfänger-Themen 3
K Bräuchte dringend Hilfe bei einer Schulaufgabe Java Basics - Anfänger-Themen 2
G Hilfe zur einer Aufgabe: Datumsüberprüfung beim Gregorianis Java Basics - Anfänger-Themen 2
G [Hilfe] Keys aus einer Map auslesen? Wie? Java Basics - Anfänger-Themen 3
Kerstininer Vererbung Hilfe beim lernen von Objektorientierung für eine Klausur Java Basics - Anfänger-Themen 10
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
E Hilfe bei rekursiver Funktion Java Basics - Anfänger-Themen 3
H pdf stempel - Hilfe erbeten Java Basics - Anfänger-Themen 6
KogoroMori21 Wann ist der richtige Zeitpunkt, um sich Hilfe zu suchen? (Bin Informatik-Student) Java Basics - Anfänger-Themen 10
A Hilfe beim Lesen von Pfaden und Systemvariablen Java Basics - Anfänger-Themen 3
F RegEx Hilfe Java Basics - Anfänger-Themen 5
S Hilfe bei Endlosschleife Java Basics - Anfänger-Themen 2
S Hilfe bei Praktischen Aufgaben von Arrays Java Basics - Anfänger-Themen 39
U Ich bräuchte Hilfe Java Basics - Anfänger-Themen 1
Say abstract class und Objekt erzeugen - Dringend Hilfe Java Basics - Anfänger-Themen 10
Justin4687 Benötige Hilfe bei folgender Aufgabe Java Basics - Anfänger-Themen 2
aero043 Hilfe bei BlueJ Hausübung Java Basics - Anfänger-Themen 27
P Hilfe gesucht Java Basics - Anfänger-Themen 11
D Hilfe bei Calculator Test Java Basics - Anfänger-Themen 15
R Hilfe bei Aufgabe Java Basics - Anfänger-Themen 4
Zentriks Hilfe zu Sieb des Eratosthenes ohne boolean Java Basics - Anfänger-Themen 5
R Java Bücher hilfe Java Basics - Anfänger-Themen 9
U HILFE! - per ActionListener Felder enablen....... Java Basics - Anfänger-Themen 5
I Scheduling: "Quartz" verwenden, Hilfe bei Umstellung Java Basics - Anfänger-Themen 3
I Hilfe bei Klausur Frage Java Basics - Anfänger-Themen 8
L Hilfe! Liste mit Items werden ausgegeben aber nicht in zufälliger Reihenfolge Java Basics - Anfänger-Themen 6
Ekooekoo Hilfe spiel Java Basics - Anfänger-Themen 5
SpiritsHuner Hilfe!! Java Basics - Anfänger-Themen 16
Lacotto Java Kurs Aufgaben Hilfe Java Basics - Anfänger-Themen 14
M HILFE JPanel - Graphics Java Basics - Anfänger-Themen 1
X Hilfe beim Übertragen in eine For-Schleife Java Basics - Anfänger-Themen 1
Neuling47 Denkfehler? Hilfe Java Basics - Anfänger-Themen 11
S Hilfe bei Umänderung von Java Code Java Basics - Anfänger-Themen 16
X Erste Schritte Hilfe bei einem kleinen Spiel. Java Basics - Anfänger-Themen 19
D Bitte um Hilfe muss es schnellstmöglich erledigen Java Basics - Anfänger-Themen 15
L Hilfe bei RegEx Java Basics - Anfänger-Themen 4
I Bitte um Hilfe zu unterstehenden Code Java Basics - Anfänger-Themen 6
B Brauche Hilfe zu einem Code Java Basics - Anfänger-Themen 5
Neuling47 bräuchte dringend hilfe Java Basics - Anfänger-Themen 6
D Bräuchte Hilfe im Bezug zum printarray() Java Basics - Anfänger-Themen 4
M Bitte um Hilfe bei 2DArrays Java Basics - Anfänger-Themen 8
HeiTim Array hilfe Java Basics - Anfänger-Themen 14
M LCD-Ziffern-Hilfe Java Basics - Anfänger-Themen 6
özkan hilfe!! Java Basics - Anfänger-Themen 4
C Hilfe bei einem Anfängerprojekt Java Basics - Anfänger-Themen 25
D Abrechnung bitte um hilfe Java Basics - Anfänger-Themen 25
J Brauche Hilfe bei for-each Aufgabe Java Basics - Anfänger-Themen 1
D Zahlentabelle Anfänger braucht Hilfe Java Basics - Anfänger-Themen 1
HeiTim Brauche Hilfe soll ein nummeriertes Feld ausgeben lassen Java Basics - Anfänger-Themen 17
S Interaktive Abfrage, Hilfe mit Schleifen! Java Basics - Anfänger-Themen 6
N Hilfe bei der Installation Java Basics - Anfänger-Themen 2
J Brauche Hilfe bei Aufgabe Java Basics - Anfänger-Themen 4
enjoykimii Strukturierte Programmierung Hilfe Java Basics - Anfänger-Themen 29
H Bräuchte hilfe Java Basics - Anfänger-Themen 3
D Snake-Spiel ähnliche Aufgabe Hilfe Java Basics - Anfänger-Themen 3
H Brauche Hilfe Java Basics - Anfänger-Themen 2
D Dijkstra Algorithmus Hilfe!! Java Basics - Anfänger-Themen 9
H Hilfe Java Basics - Anfänger-Themen 6
H Brauche hilfe Java Basics - Anfänger-Themen 3
M Hilfe - Array Aufgabe Java Basics - Anfänger-Themen 8
R Schulaufgabe, Bruache Hilfe mit non-static Methoden Java Basics - Anfänger-Themen 2
kevkev Hilfe bei Schiffe versenken Java Basics - Anfänger-Themen 5
FelixxF Erste Schritte Hilfe bei Fußball Manager Java Basics - Anfänger-Themen 2
C Brauche Hilfe beim Schreiben eines Programmes :/ Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben