java-forum.org - Java programmieren aus Leidenschaft
Java 6 Einstieg und professioneller Einsatz
Alter Preis: 34,90 EUR
Jetzt: 0,00 EUR

zzgl. Versandkosten

Zurück   java-forum.org - Java programmieren aus Leidenschaft > Java - Programmierung > Java Basics - Anfänger-Themen

Java Basics - Anfänger-Themen Fragen ausschließlich zu Java-Grundlagen von Ein- und Umsteigern

Antwort    
Themen-Optionen Thema durchsuchen Ansicht
Alt 04.06.2012, 15:28   #1 (permalink)
Neuer Benutzer
short
 
Registriert seit: 31.05.2012
Fachbeiträge: 21
Abgegebene Danke: 21
Erhielt 0 Danke für 0 Beiträge
Standard Kombinierte Klassen

Ich möchte eine kombinierte Klasse erzeugen. Also hier mal ein Pseudocode Beispiel:

Code:
       class Basis {
               String meineBasisData; 
       }

       class Editierbar {
               Boolean editierbar;
               public boolean editierbar { return editierbar; }
               public void edit();
       }

       class Veroeffentlicht {
               Boolean veroeffentlicht;
               public boolean  veroeffentlicht { return veroeffentlicht; }
               public boolean  veroeffentlichen {  }
       }

       class Ordnung {
               int  Ordnung;
               public void move( richtung : int ) { ... ];
               public void reorder() { ... };
       }

class main {
        main() {
                   editierbaresObject = new EditObject() : Base, Editierbar;
                     editierbaresObject.editierbar();
                     editierbaresObject.edit();

                   editierbaresveroeffentlichsObject = new EditVeroeffentlichtlichesObject() : Base, Editierbar, Veroeffentlicht;
                   editierbaresveroeffentlichsObject.edit();
                   editierbaresveroeffentlichsObject.veroeffentlichen();

                   veroeffentlichsgeordnetesObject = new EditVeroeffentlichtlichesObject() : Base, Veroeffentlicht, Ordnung;                   
                  veroeffentlichsgeordnetesObject.veröffentlichen();
                  veroeffentlichsgeordnetesObject.reorder();

                   editierbaresgeordnetesObject = new EditVeroeffentlichtlichesObject() : Base, Editierbar, Ordnung;                   
                  veroeffentlichsgeordnetesObject.edit();
                  veroeffentlichsgeordnetesObject.reorder();
        }
}
Mir ist schon klar das man Mehrfachvererbung über Interfaces löst, aber bei Interfaces muss man in jeder beliebig zusammengestellten Klasse alle Funktionen >neu< definieren.

Ich suche eine Möglichkeit, das ich eine Klasse definiere und hierzu beliebige Funktion und Attribute, die ich einmal definiert habe, für alle Kombinationsmöglichkeiten hinzufügen könnte.

Ist soetwas machbar?
Bouyo ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 04.06.2012, 15:42   #2 (permalink)
Java-Forum Team
IRC-Operator (Java-Chat)
Moderator
 
Registriert seit: 09.04.2010
Fachbeiträge: 5.562
Blog-Einträge: 2
Abgegebene Danke: 3
Erhielt 842 Danke für 812 Beiträge
Kannst ja richtung Decorator oder Adapter schauen. Aber ich würde noch mal über die Aufteilung nachdenken: editierbar und veröffentlicht lassen sich ja noch unter einen Hut bringen, aber "Ordnung" bezieht sich irgendwie nicht auf ein Objekt, sondern auf eine Menge von Objekten.
XHelp ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 04.06.2012, 18:25   #3 (permalink)
Stammbenutzer
Megabyte
 
Registriert seit: 06.01.2012
Fachbeiträge: 1.354
Abgegebene Danke: 24
Erhielt 242 Danke für 241 Beiträge
Schreib dir eine Adapter-Klasse, die alle drei Interfaces implementiert. Im Konstruktor der Klasse gibst du an, welche Parameter für die jeweilige Instanz gelten sollen (editierbar, ...) und setzt diese entsprechend. Diese prüfst du dann einfach in den jeweiligen Funktionen (edit, ...) und führst die Operation ggf. aus.

Also etwa sowas:
Java Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Adapter implements Base, Edittierbar, Veroeffentlicht, Ordnung {
    boolean editierbar, veroeffentlicht;
    int ordnung;
 
    Adapter(params) {
        // setze parameter    
    }
 
    void edit() {
        if (edit) { // do something;}
    }
    void veroeffentliche () {
        if (!veroeffentlicht) { // do something;}
    }
    // wie das ganze mit der Ordnung aussieht, durchblicke ich grade nicht, musst du mal selbst drüber nachdenken...
}
 
class MyClass {
    Adapter a = new Adapter("editierbar");
    a.edit();
    a.reorder(); // sollte dann eine Exception werfen, weil nicht möglich...
}
__________________
Ich bin ein Rechtschreipunk
HimBromBeere ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Antwort    

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
(Vererbung) Methode nur für einige Klassen? membersound Java Basics - Anfänger-Themen 8 26.09.2011 23:02
(BCE) Java Controll Klassen static ? xX_QueAnw_Xx Allgemeine Java-Themen 0 09.03.2011 17:13
public Klassen Reen Java Basics - Anfänger-Themen 12 21.08.2007 15:47
Frage zu a)Innere Klassen und b)OO Design WeirdAl Softwareentwicklung 13 18.07.2007 13:40
Statische Klassen oder neue Instanz einer Klasse nutzen? WeirdAl Softwareentwicklung 11 21.06.2007 08:56


Lesezeichen

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:51 Uhr.


Powered by vBulletin® Version 3.8.6 (Deutsch)
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.2
Thanks for Smilies by smilies.4-user.de