tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
1302
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von cocoon
    cocoon cocoon ist offline Mitglied Brokat
    Registriert seit
    Nov 2001
    Beiträge
    437
    Ich möchte mehrere Klassen um ein bestimmtes Attribut erweitern, ohne dafür jede Klasse einzeln anfassen zu müssen. Vielmehr möchte es flexibel halten, so dass auch neu hinzukommende Klassen einfach um dieses Attribut erweitert werden können.

    Per Mehrfachvererbung könnte ich einfach eine Klasse mit diesem neuen Attribut von allen bisherigen Klassen ableiten. Leider geht das in Java nicht.

    Wie kann ich das alternativ realisieren? Irgendein Entwurfsmuster? Habe mir schon Wrapper, Dekorierer usw. angeschaut, aber die fassen alle die ursprünglichen Klassen mit an.

    Konkret:
    Ich habe eine Bibliotheks-Verwaltung, die bspw. Medien, Benutzer usw. speichert. Bisher lief diese Anwendung allein. Nun sollen per JMS entfernte Bibliotheken angebunden werden. Ich würde daher gerne jedes Entitiy (Medium, User, etc.) unkompliziert um eine Library Id erweitern.
     
    Nur tote Fische schwimmen mit dem Strom

  2. #2
    jal1976 jal1976 ist offline Mitglied
    Registriert seit
    Aug 2008
    Ort
    Bückeburg (Niedersachsen)
    Beiträge
    21
    Wenn ich dich richtig verstanden habe, Stichwort: Interface (Schnittstellen). Damit kann man das "Prinzip der Mehrfachvererbung" erreichen, denn Klassen können beliebig viele dieser Schnittstellen implementieren...

    gruß
    jal1976
     
    Windows Bluescreen:
    Ihre Maus und Tastatur wurden aus dem System entfernt.
    Drücken Sie eine beliebige Taste zum Fortfahren...

    Nice try:
    public static void main(String[] args)
    {
    for(int i=1; i<500; i++)
    {
    System.out.println("I must not throw paper planes in the class!");
    }
    }

  3. #3
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    Moin,

    genau - die Konstruktoren der Klasse müssen sich nur in der Art oder Anzahl der Attribute unterscheiden ! !

    Gruß
    Klaus
     
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  4. #4
    Anime-Otaku Anime-Otaku ist offline Mitglied Brillant
    Registriert seit
    Aug 2005
    Ort
    Karlsruhe (Baden-Württemberg)
    Beiträge
    905
    Zitat Zitat von jal1976 Beitrag anzeigen
    Wenn ich dich richtig verstanden habe, Stichwort: Interface (Schnittstellen). Damit kann man das "Prinzip der Mehrfachvererbung" erreichen, denn Klassen können beliebig viele dieser Schnittstellen implementieren...

    gruß
    jal1976
    Bei den Attributen stößt man da schnell auf Probleme.
    Meine (spontane) Lösung ist eine getter Methode abstract zu machen und jede Instanz davon muss halt sein eigenes Attribut halten. So ist zumindest gewährleistet das der getter implementiert werden muss.
     
    Wäre super wenn ihr euren Code in dieser Form einfügt:
    Code java:
    1
    
    System.out.println("Hello World");
    [java]System.out.println("Hello World");[/java]
    Für erledigte Threads dürft ihr den "erledigt"-Button anklicken!
    Über Dank freut sich jeder, der euch geholfen hat - ein Klick auf "Danke" kostet ja nicht mal was
    Blog: http://javaeffective.wordpress.com/

  5. #5
    Tommytiger Tommytiger ist offline Rookie
    Registriert seit
    Feb 2007
    Beiträge
    6
    Zitat Zitat von Anime-Otaku Beitrag anzeigen
    Bei den Attributen stößt man da schnell auf Probleme.
    Meine (spontane) Lösung ist eine getter Methode abstract zu machen und jede Instanz davon muss halt sein eigenes Attribut halten. So ist zumindest gewährleistet das der getter implementiert werden muss.
    Konkret: In Interfaces gibt es keine deklarierten Instanzvariablen. Nur Konstanten können deklariert werden.

    Die Lösung mit den getter und setter -Methoden würde ich auch vorschlagen. Einfach in ein Interface und die Klassen alle benötigten Interfaces implementieren lassen.

    Deklaration der Methoden als "public abstract" in Interfaces ist redundant, da Methoden in Interfaces dies sowieso immer sind.
     

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 12.07.10, 22:12
  2. XSLT Problem - Brauche ein bestimmtes Attribut
    Von DerLukasz im Forum XML Technologien
    Antworten: 4
    Letzter Beitrag: 03.08.09, 11:08
  3. Klasse mit mehreren Klassen erweitern
    Von südpol im Forum PHP
    Antworten: 3
    Letzter Beitrag: 24.01.05, 17:43
  4. Mehrfachvererbung/eigene Klassen
    Von kittie im Forum Java
    Antworten: 7
    Letzter Beitrag: 14.04.04, 12:48
  5. allen <td> tags ein bestimmtes class attribut zuweisen
    Von sevi im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 15.11.03, 19:11