Interface Fragen zum Interface

Cygan93

Mitglied
Hallo,
ich mache gerade eine Aufgabe zu Rollenspiele:
Implementieren sie einen Programmausschnitt , bei dem ein Spieler seine Waffe wechseln kann.
Ich habe das UML mal mit hochgeladen.
Ich bin immoment soweit:
Klasse Spielfigur
Code:
package Rollenspiel;

public class Spielfigur {
    public static void main(String[] args){
   Spielfigur erste = new Spielfigur();
   Spielfigur zweite = new Spielfigur();
   
}

}
Interface Waffenverhalten
Code:
package Rollenspiel;

public interface Waffenverhalten{
   public void benutzeWaffe();
}
Klasse Axtschlagen
Code:
package Rollenspiel;

public class Axtschlagen implements Waffenverhalten {
   public void benutzeWaffe() {
     System.out.println("Benutze nun die Axt");
   }
}
Klasse Schwertschwingen
Code:
package Rollenspiel;

public class Schwertschwingen implements Waffenverhalten{

   @Override
   public void benutzeWaffe() {
     System.out.println("Benutze nun das Schwert");
     
   }

}
Meine Frage ist wie ich jetzt das Interface mit meiner Klasse verknüpfe. Sodass z.B "erster" die waffe von Axt zu Schwert wechseln kann.
Hat jemand tipps?
 

Anhänge

  • Unbenannt.jpg
    Unbenannt.jpg
    58,7 KB · Aufrufe: 27

Tarrew

Top Contributor
Verknüpfen tust du die Klassen in dem deine Klasse Spielfigur ein Attribut vom Typ "Waffenverhalten" hat. Also :
Java:
public class Spielfigur {

    Waffenverhalten waffenverhalten;

    public static void main(String[] args) {
        Spielfigur erste = new Spielfigur();
        Spielfigur zweite = new Spielfigur();
    }

}

Dazu musst du dann einer setter-Methode schreiben die dem Attribut "waffenverhalten" eben entweder ein Objekt vom Typ "Schwertschwingen" oder ein Objekt vom Typ "Axtschlagen" zuweist.
 

Cygan93

Mitglied
Hallo,
ersteinmal danke für die Antwort!
Ich habe jetzt folgendes:
Code:
package Rollenspiel;

public class Spielfigur {
   public static void main(String[] args){
   Spielfigur erste = new Spielfigur();
   Spielfigur zweite = new Spielfigur();
   
/*   
   erste.setWaffe(Axtschlagen);
   zweite.setWaffe(Schwertschwingen);
   */

}
    public void setWaffe(Waffenverhalten waffe) {
   }
}
Allerdings weiß ich noch nicht recht wie ich jetzt explizit sagen kann das "erste" auf Axtschlagen zugreifen soll.
Hast du noch einen Tip?
 

looparda

Top Contributor
Im einfachsten Fall rufst du setWaffe mit einer deiner beiden Implementierungen des Waffenverhaltens auf.
Java:
Spielfigur erste = new Spielfigur();
erste.setWaffe(new Axtschlagen());
erste.getWaffe().benutzeWaffe();
Außerdem musst du die Main-methode aus der Spielfigur ziehen. Da hat sie nichts zu suchen.
Was ich nicht schön finde ist, dass der setter suggeriert man setzt die Waffe, dabei ist der Parameter Waffenverhalten.

Entgegen dem Vorschlag von Tarrew denke ich: die Spielfigur sollte nichts vom Waffenverhalten wissen. Sie hat nur eine Waffe, die das Waffenverhalten kennt.
Es kommt darauf an wie du es Aufbauen möchtest. Im Prinzip bist du mit der kleinen Änderung fertig.
Ich würde es wie folgt machen: Das Waffenverhalten klingt für mich nach dem Strategie-Pattern.
Java:
class Main {

    public static void main(String... args) {

        final WaffenInventar waffenInventar = new WaffenInventar();
        final Spielfigur s1 = new Spielfigur();
        final Spielfigur s2 = new Spielfigur();
      
        s1.setWaffe( waffenInventar.getAxt() );
        s1.angreifen(s2);
        s1.setWaffe( waffenInventar.getSchwert() );
        s1.angreifen(s2);
    }
}
Java:
class WaffenInventar {

    Waffe getAxt() {
        final Waffe waffe = new Waffe();
        waffe.setWaffenverhalten(() -> System.out.println("Schwingt Axt"));
        return waffe;
    }

    Waffe getSchwert() {
        final Waffe waffe = new Waffe();
        waffe.setWaffenverhalten(() -> System.out.println("Schwingt Schwert"));
        return waffe;
    }
}
Java:
class Spielfigur {
    private Waffe waffe;

    void setWaffe(final Waffe waffe) {
        this.waffe = waffe;
    }

    public Waffe getWaffe() {
        return waffe;
    }

    void angreifen(final Spielfigur target) {
        // Hier kann man später den Schaden berechnen ..
        waffe.benutzen();
    }
}
Java:
class Waffe {

    private Waffenverhalten waffenverhalten;

    void benutzen() {
        // Delegation an konkrete Implementierung
        waffenverhalten.benutzeWaffe();
    }

    void setWaffenverhalten(final Waffenverhalten waffenverhalten) {
        this.waffenverhalten = waffenverhalten;
    }
}
 

Tarrew

Top Contributor
Entgegen dem Vorschlag von Tarrew denke ich: die Spielfigur sollte nichts vom Waffenverhalten wissen. Sie hat nur eine Waffe, die das Waffenverhalten kennt.
Das war kein Vorschlag von mir, ich befolge lediglich die Aufgabenstellung. Und das UML Diagramm gibt die Struktur eben so vor.

Wie ich es persönlich machen würde, ist dann noch ne ganz andere Sache ;)
 

looparda

Top Contributor
Das war kein Vorschlag von mir, ich befolge lediglich die Aufgabenstellung. Und das UML Diagramm gibt die Struktur eben so vor.

Wie ich es persönlich machen würde, ist dann noch ne ganz andere Sache ;)
Ich dachte das UML Diagramm ist selbsterarbeitet. Ich wollte dich nicht angreifen sondern meinen Ansatz von deinem abgrenzen.
 

Tarrew

Top Contributor
War auch nicht so aufgefasst ;)

Könnte natürlich sein, allerdings hätte mich es gewundert wenn das Klassendiagramm so erstellt wurde, aber im Code kein Ansatz für diese Verknüpfung zwischen Spielfigur und Waffenverhalten zu erkennen ist. Aber ich will es nicht ausschließen. Der TE scheint es ja gelöst zu haben ,)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
StrikeTom Fragen zu interface Java Basics - Anfänger-Themen 13
W Fragen zu Interface Java Basics - Anfänger-Themen 2
Zrebna Fragen zu einem Klassendiagramm Java Basics - Anfänger-Themen 8
H Fragen zu Wrapperklassen Java Basics - Anfänger-Themen 29
S Best Practice Fragen zu Projektstruktur einer Datenbank-Abfrage-App (MVC) Java Basics - Anfänger-Themen 13
A Bei VierGewinnt fragen ob man gegen CPU oder Menschen spielen will. Java Basics - Anfänger-Themen 7
A Bei VierGewinnt vorher fragen, ob man gegen den Computer spielen möchte oder gegeneinander. Java Basics - Anfänger-Themen 1
A Bei VierGewinnt fragen, ob man gegen den Computer spielen möchte oder gegeneinander Java Basics - Anfänger-Themen 1
sserio Wie kann man nach einer Klasse fragen? Java Basics - Anfänger-Themen 12
G Fragen zu Kompelierfehler in Aufgabe. Java Basics - Anfänger-Themen 25
E Bäume/ allgemeine Fragen Java Basics - Anfänger-Themen 21
O Falsche Antworten zu Fragen Java Basics - Anfänger-Themen 4
S Diverse Fragen vor Schulaufgabe ;) Java Basics - Anfänger-Themen 4
S Fragen zu Ausgabe double und float Java Basics - Anfänger-Themen 3
B fragen zu Aufbau eines UML-Klassendiagramm Java Basics - Anfänger-Themen 1
C 3 Fragen rund um Klassenattribute Java Basics - Anfänger-Themen 8
L Erste Schritte Log4J Fragen Java Basics - Anfänger-Themen 5
NeoLexx Fragen zu diversen Elementen der Javabibliothek Java Basics - Anfänger-Themen 5
D Budget Manager fragen zur Umsetzung Java Basics - Anfänger-Themen 9
N Fragen zur Datenspeicherung Java Basics - Anfänger-Themen 45
T Java Anfänger mit konkreten Fragen Java Basics - Anfänger-Themen 2
CT9288 Fragen zu Java Java Basics - Anfänger-Themen 16
W Fragen zu Generics Java Basics - Anfänger-Themen 14
T ObjectInput/OutputStream Fragen zur Funktionsweise Java Basics - Anfänger-Themen 3
J Fragen zu einer Methode Java Basics - Anfänger-Themen 3
J Fragen zum Code aus dem Buch "Schrödinger programmiert Java 2.te Ausgabe" Java Basics - Anfänger-Themen 6
Z Fragen zu Exception (Throws/throw) Java Basics - Anfänger-Themen 7
J Fragen zu Input/Output Java Basics - Anfänger-Themen 3
J Erste Schritte Oracle Tutorials zu Java 8 - Fragen dazu Java Basics - Anfänger-Themen 1
H Java Quereinsteiger Roadmap und Fragen Java Basics - Anfänger-Themen 29
H fragen Java Basics - Anfänger-Themen 15
M Samelsarium Grundlegender Fragen 2 Java Basics - Anfänger-Themen 9
M Sammelsarium an Grundlagen Grundlagen Fragen Java Basics - Anfänger-Themen 11
B Java ist / wird kostenpflichtig. Ein paar Fragen Java Basics - Anfänger-Themen 1
J Fragen zu synrchonized und kritischen Abschnitten Java Basics - Anfänger-Themen 5
S Fragen zu einem Rechentrainer Java Basics - Anfänger-Themen 2
B Java Vererbung Fragen (zu Code Beispiel) Java Basics - Anfänger-Themen 3
J Wo kann man Fragen zu ireport stellen. Java Basics - Anfänger-Themen 0
M Fragen zum Anlegen und Benutzen von Listen Java Basics - Anfänger-Themen 9
G Ein paar Anfänger Fragen zu StdDraw Java Basics - Anfänger-Themen 4
D Fragen zur Klassen Java Basics - Anfänger-Themen 4
Aprendiendo Zwei Fragen und ein geerbtes "protected"-Attribut Java Basics - Anfänger-Themen 2
J Interface Fragen bezüglich "Sauberkeit" von Code Java Basics - Anfänger-Themen 5
D Objekte-Fragen Java Basics - Anfänger-Themen 1
V Erste Schritte Habe Fragen zu der For und While Schleife als auch Inkrement und Dekrement Java Basics - Anfänger-Themen 4
D Anfänger-Fragen(Parameter einer Methode) Java Basics - Anfänger-Themen 7
K Zwei Fragen zu Graphics/Graphics2D Java Basics - Anfänger-Themen 5
R Fragen über den Konstruktor Java Basics - Anfänger-Themen 0
Azazel Ein paar Fragen zu Methodenaufrufen(java.awt) Java Basics - Anfänger-Themen 2
S Erste Schritte Fragen zur For-Schleife Java Basics - Anfänger-Themen 9
GreenTeaYT Exception und zur OOP fragen? Java Basics - Anfänger-Themen 3
C Fragen zum Spigot Plugin (1.8) Java Basics - Anfänger-Themen 6
J Fragen zu Exceptions Java Basics - Anfänger-Themen 24
N Quiz- Fragen zufällig anzeigen lassen Java Basics - Anfänger-Themen 7
J Verschieden Fragen über Java Programmierung Java Basics - Anfänger-Themen 3
L Viele Fragen zu den Grundlagen Java Basics - Anfänger-Themen 5
B Fragen zu ZIP-File Java Basics - Anfänger-Themen 9
L fragen zu arrays Java Basics - Anfänger-Themen 8
L Fragen zu selbstgeschriebenem Programm Java Basics - Anfänger-Themen 5
M Fragen zum Auslesen von HTML Seiten Java Basics - Anfänger-Themen 5
J Threading-Aufgabe. Totale Noob Fragen, aber bitte trotzdem beantworten ;) Java Basics - Anfänger-Themen 7
S Java Fragen Konstruktor & Statische Methoden Java Basics - Anfänger-Themen 4
K Erste Schritte Frage Antwort Spiel - Fragen zur Planung Java Basics - Anfänger-Themen 2
C Java Applet Fragen: Serialisierung, Excel import Java Basics - Anfänger-Themen 2
Anfänger2011 2 kleine Fragen zu ArrayListen Java Basics - Anfänger-Themen 5
S Fragen zu Ausdrücken&Bedingungen Java Basics - Anfänger-Themen 5
A 2 kurze Anfänger fragen Java Basics - Anfänger-Themen 6
H grundlegende Fragen Java Basics - Anfänger-Themen 3
V Interface ich schäme mich das zu fragen, aber ich schaff nicht ein Text zu zentrieren :( [javaFX] Java Basics - Anfänger-Themen 6
N Programm: Fragen beantworten Java Basics - Anfänger-Themen 6
C Anfänger Anfänger Fragen Java Basics - Anfänger-Themen 8
Z Compiler-Fehler LinkedList Fragen Java Basics - Anfänger-Themen 4
D Rekursion Allgemeine Fragen Java Basics - Anfänger-Themen 2
D [Fragen] zu Methoden Java Basics - Anfänger-Themen 2
S Fragen zur Implementierung eines Binärbaums Java Basics - Anfänger-Themen 3
T Ein paar Fragen zu OOP und Java. Java Basics - Anfänger-Themen 16
J Allgemeine Fragen zur GUI Java Basics - Anfänger-Themen 1
johnnydoe Erste Schritte Erster Blick - erste Fragen Java Basics - Anfänger-Themen 11
DStrohma Grundsätzliche Fragen zu Drag & Drop Java Basics - Anfänger-Themen 1
N Klassen fragen zur getter und setter methode Java Basics - Anfänger-Themen 11
S 3 Fragen, Verzeichnis, GridLayout psoitionieren, Werte für JSpinner Java Basics - Anfänger-Themen 2
T Fragen zu Set / Relationen verknüpfen Java Basics - Anfänger-Themen 4
S 2 Fragen Java Basics - Anfänger-Themen 4
S Hallo und Fragen zu Arbeitsverzeichnis und Menü Java Basics - Anfänger-Themen 8
N Java Fragen... Java Basics - Anfänger-Themen 10
F ExecutorService Fragen! Java Basics - Anfänger-Themen 2
O HashMap Fragen Java Basics - Anfänger-Themen 8
C Fragen zu Arrays Java Basics - Anfänger-Themen 19
T viele "kleine" Fragen... Java Basics - Anfänger-Themen 3
S Fragen zur Implementierung eines Adressbuches Java Basics - Anfänger-Themen 20
S Fragen zu Arrays Java Basics - Anfänger-Themen 6
K Diverse Fragen zum Fehlerlogging Java Basics - Anfänger-Themen 9
N StringReader - Fragen Java Basics - Anfänger-Themen 8
C Einige Fragen zu Frames Java Basics - Anfänger-Themen 7
M Erste Schritte Allgemeine Fragen Java Basics - Anfänger-Themen 4
PaulG Fragen zu Binärbaum Java Basics - Anfänger-Themen 21
P Methoden Aquarium (Fragen zum Scanner) Java Basics - Anfänger-Themen 5
T Erste Schritte Fragen zu meinen kleinen Programm Java Basics - Anfänger-Themen 9
D 2 Fragen: Position ändern vs. LayoutManager / Bilder einfügen im Vordergrund Java Basics - Anfänger-Themen 3
O Zwei Fragen zu Methoden Aufrufen Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben