Klassen 2 "Objekte" in einer Methode - wie?

BobbGott

Mitglied
Hallo,
ich habe die SuFu benutzt und allgemein viel Gegoogelt, aber leider nie genau das gefunden, was ich gemeint habe. Es könnte auch daran liegen, dass ich mir zu diesem Zeitpunkt nicht einmal genau sicher bin ob ich mit Objekten den richtigen Begriff benutze - nun ja.

Ich habe für die Uni ein Programm geschrieben mit 3 Datein - Arena, Gladiator und Würfel. Sie enthalten die jeweiligen Konstruktoren und die Funktion ist einwandfrei. Gladiator wird mit gewissen Rüstungs, Angriffs und ähnlichen Werten erstellt und durch eine Math.Random in den Würfeln werden Rundenbasiert Schläge ausgetauscht.

Nun zu meiner Frage:
in Arena öffne ich in der Methode starteKampf() die Methode attacke() welche sich in Gladiator befindet mit dem Namen des Angreiffers (_glad1.attacke). Da ich ja diese Attacke mit diesem Objekt ausführe habe ich ja auch nur diese Werte von _glad1 drin.
Gibt es eine Möglichkeit wie ich jetzt in der Methode attacke noch auf _glad2-Werte zugreifen kann ? im Sinne von irgendwie "_glad2 get Element ´By ID ('name')" o.ä.

Kleiner Hinweis:
Ihr helft mir nicht bei meiner Abgabe - der Auftrag ist schon komplett erledigt. Es interessiert mich nur persönlich und ich hatte dieses Problem schon ein paar mal

Danke im Vorraus und entschuldigung für den langen evtl. unnötigen Text
 

VfL_Freak

Top Contributor
Moin,
ohne den Code kann ich nur diffus antworten:
Wenn ich Dich richtig verstehe, erstellst Du doch ein Objekt "Gladiator _glad1" und machst was damit, richtig?

(a) Was spricht nun gegen ein zweites Objekt "Gladiator _glad2" ???

(b) Du hast schon 'irgendwo' das zweite Objekt "Gladiator _glad2"? Dann sollte es vor Dir geschriebene Gette und Setter für die Eigenschaften enthalten, wie naürlich "Gladiator _glad1" auch !!

Gruß Klaus
 

mariane

Mitglied
Ich vermute mal folgenden Zweck: Der eine haut dem anderem eins auf die Kapuze.
Also müsstest du entweder die Methode attacke() erweitern und den Gegner übergeben.
Also: _glad1.attacke(_glad2);
oder du hast in der Arena eine Methode kämpfen, in der Art: kampf(_glad1, _glad2);
 

BobbGott

Mitglied
Hi danke für die antwort.
ist denke ich allgemein viel Code und ich war mir nicht sicher was gebraucht wird, aber ich glaube ich habe echt zu kompliziert gedacht (leicht peinlich) und vollkommen vergessen, dass ich einen getter benutzen kann ^^


Java:
        public boolean nehmeSchaden(int tp){
            tp = tp - _rs;
            _le = _le - tp;
           
            if(_le<5 && _le>0){
                System.out.println("");
                System.out.println("");
                System.out.println("Gladiator "+_name+" ist Bewusstlos und kann nicht mehr weiter kämpfen.");
                System.out.println("");
                return true;
            }else if(_le<=0){
                System.out.println("");
                System.out.println("");
                System.out.println("Gladiator "+_name+" ist Tod und kann nicht mehr weiter kämpfen.");
                System.out.println("");
                return true;      
            }else
                return false;
        }

Wenn ich hier einfach ne Ausgabe möchte in der Art " Gladiator 2 gewinnt " - dann brauch ich ja eig nur schreiben: System.out.print(_glad2.getGladName()+" gewinnt.");
Wenn ich mich nach Vfl_Freak's NAchricht nicht irre ?!

Habe die getter komplett vergessen
 

Joose

Top Contributor
Wir können jetzt nur raten in welcher Klasse diese Methode steht, ich nehme mal an in Gladiator.
Steht dir denn in der Klasse Gladiator das Objekt _glad2 zur Verfügung? Ich hoffe nicht und ohne wird es nicht funktionieren.

Du hast einen kleinen Denkfehler in deinem Design: Die Klasse Gladiator kann ruhig auf die Konsole schreiben wenn der Gladiator nicht mehr fähig ist weiterzukämpfen. Welcher aber den Kampf gewonnen hat sollte die Klasse Arena entscheiden/ausgeben.
Um das zu realisieren wäre wie mariane schon gesagt hat eine Methode "kampf(Gladiator glad1, Gladiator glad2)" in der Klasse Arena passend.
Pseudocode:
Java:
public void kampf(Gladiator gladiator1, Gladiator gladiator2) {
  while(gladiator1 ist am leben && gladiator2 ist am leben) {
     // kampflogik wer wen schlägt usw.
     // sowas wie gladiator1.attacke(gladiator2);
  }
  
   if(gladiator1 ist tot && gladioator 2 ist tot) {
     ausgabe -> unentschieden;
   } else if (gladiator1 ist tot) {
     ausgabe -> gladiator2 hat gewonnen;
   } else {
     ausgabe -> gladiator1 hat gewonnen;
   }
}

Und wie Klaus schon sagt verwende sprechende Namen (egal ob für Attribute, Methoden, Klassen oder Variablen). Und vermeide "_" als Prefix einer Variable, keine Ahnung wozu das gut sein soll.
 

BobbGott

Mitglied
naja, mein Prof für OOSE hat das so gemacht und wir sollten diese Namen übernehmen ^^. Er macht das überall, wenn er ein Konstruktor anlegt - ich denke, weil er oftmals später 'name' als übergabe benutzt und so unterscheiden kann zwischen alten und neuen variablen.

Und danke für den Hinweis mit dem Gladiator @ Joose. ja der Code den ich kopiert hatte stand in der Klasse Gladiator und er muss in der Arena ausgegeben werden, da dort _glad2 erst erstellt wird.

Wie am Anfang beschrieben habe ich den Kampf und die Ausgabe und alles - auch so, dass sobald ein Gladiator tot ist, der andere nicht mehr zuschlagen kann. uach wenn es nicht schön geschrieben ist

Falls es jemand möchte kann ich gerne auch mal die 3 Dateien hier hoch schicken.
Aber ich denke ihr habt mein Problem gelöst :) - Danke
 

Joose

Top Contributor
naja, mein Prof für OOSE hat das so gemacht und wir sollten diese Namen übernehmen ^^. Er macht das überall, wenn er ein Konstruktor anlegt - ich denke, weil er oftmals später 'name' als übergabe benutzt und so unterscheiden kann zwischen alten und neuen variablen.
Dann sag deinem Prof das ist ein schlechter Stil, erspart vielleicht etwas Schreibarbeit. Aber er soll sich den Code dann in einem Jahr wieder anschauen und überlegen für was die Variablen stehen ;)
Und normalerweise bieten IDE eine Autovervollständigung an um nicht immer die ganzen Variablennamen schreiben zu müssen.
Um zwischen einen Parameter bzw. lokalen Variable und einem Instanzattribut zu unterscheiden sollte man mit this.[Name des Attributs arbeiten.

Beispiel:
Java:
public class Gladiator {
    private String name;

    public Gladiator(String name) {
        this.name = name;
    }
....
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Problem mit einer Methode, die beliebig viele Objekte in Array speichern soll Java Basics - Anfänger-Themen 6
N Methode um Objekte einer Liste hinzuzufügen Java Basics - Anfänger-Themen 1
H Auf Objekte bzw Variabeln aus einer anderen Methode zugreifen Java Basics - Anfänger-Themen 7
K Boolean in einer Methode um 2 Objekte zu vergleichen Java Basics - Anfänger-Themen 12
C Mehrere Objekte mit einer Methode ausgeben Java Basics - Anfänger-Themen 17
W Objekte einer ArrayList in txt-datei schreiben mit Paths? Java Basics - Anfänger-Themen 2
M Warum dürfen Objekte einer Klasse auf statische Variablen dieser Klasse referenzieren? Java Basics - Anfänger-Themen 10
N Typebound Objekte einer Arraylist hinzufügen Java Basics - Anfänger-Themen 7
U Objekte in einer LinkedList sortieren Java Basics - Anfänger-Themen 5
M Implementieren einer Datenstruktur, welche nur 5 Objekte speichert Java Basics - Anfänger-Themen 3
C Verschiedene Objekte in einer Liste speichern Java Basics - Anfänger-Themen 6
X Objekte einer ArrayList richtig ausgeben? Java Basics - Anfänger-Themen 8
V Collections Objekte einer ArrayList in der main() ausgeben Java Basics - Anfänger-Themen 9
M Objekte mit einer Schleife mehrmals erzeugen Java Basics - Anfänger-Themen 17
J Array Objekte einer Klasse zuordnen Java Basics - Anfänger-Themen 15
F Alle Objekte einer Klasse nach Eigenschaft durchsuchen Java Basics - Anfänger-Themen 8
J Objekte in einer Liste Java Basics - Anfänger-Themen 3
Z OOP Objekte einer Klasse weiteren Klassen zur Verfügung stellen Java Basics - Anfänger-Themen 17
A Objekte einer ArrayList auslesen und auf der Konsole ausgeben Java Basics - Anfänger-Themen 2
M Von einer Klasse aus, Objekte einer anderen Klasse verändern. Java Basics - Anfänger-Themen 2
F Objekte einer Klasse verwalten Java Basics - Anfänger-Themen 10
M Erste Schritte mehrere Objekte aus einer Klasse Java Basics - Anfänger-Themen 4
B OOP Objekte erzeugen mit Hilfe einer for Schleife Java Basics - Anfänger-Themen 29
F Adressverwaltungsprogramm: Objekte einer Klasse in Array Java Basics - Anfänger-Themen 6
M Input/Output Objekte in einer Textdatei ablegen (Highscore) Java Basics - Anfänger-Themen 9
C Methoden Objekte mit Hilfe einer Schleife in einer ArrayList erzeugen Java Basics - Anfänger-Themen 26
S OOP Foreach für Objekte einer Klasse? Java Basics - Anfänger-Themen 3
S Mehrere Objekte einer Klasse automatisch erzeugen Java Basics - Anfänger-Themen 15
B Objekte aus einer anderen Klasse(in der sich weitere Klassen befinden) erzeugen Java Basics - Anfänger-Themen 24
I Bestimmte Objekte einer Liste hinzufügen Java Basics - Anfänger-Themen 16
F Aller Objekte einer Klasse Java Basics - Anfänger-Themen 9
D Erste Schritte Viele Objekte einer Klasse "verwalten" Java Basics - Anfänger-Themen 17
J Klassen Objekte einer Klasse Java Basics - Anfänger-Themen 13
X Collections Reihenfolge bestimmter Objekte in einer ArrayList verändern Java Basics - Anfänger-Themen 2
I OOP Objekte in einer ArrayList Java Basics - Anfänger-Themen 5
K in Konstruktor neue Objekte einer anderen Klasse erzeugen Java Basics - Anfänger-Themen 9
W Objekte in einer Array sortieren Java Basics - Anfänger-Themen 3
O Ungleiche Objekte in einer Schleife erstellen Java Basics - Anfänger-Themen 3
T OOP Objekte einer Klasse mit schleife auslesen Java Basics - Anfänger-Themen 7
I Objekte einer Liste einer weiteren List anhängen Java Basics - Anfänger-Themen 8
L Mehrere Objekte einer Klasse aber nur einmal Konstruktor aufruf? Java Basics - Anfänger-Themen 2
D Wie Objekte einer Unterklasse erstellen? Java Basics - Anfänger-Themen 14
S OOP kann ich von einer Klasse aus auf andere Objekte zugreifen? Java Basics - Anfänger-Themen 7
Semox Sind Objekte in einer ArrayList überschreibbar? Java Basics - Anfänger-Themen 2
J Datensätze aus einer DB als Objekte erzeugen und in ArrayList abspeichern Java Basics - Anfänger-Themen 9
M Objekte aus einer Arraylist löschen Java Basics - Anfänger-Themen 7
T Objekte einer Klasse einer anderen Klasse übergeben Java Basics - Anfänger-Themen 5
A [gelöst]Objekte in einer Schleife erzeugen Java Basics - Anfänger-Themen 9
L Objekte in einer ArrayList vergleichen Java Basics - Anfänger-Themen 19
K Objekte innerhalb einer Klasse Java Basics - Anfänger-Themen 2
G auf Objekte in einer anderen Klasse zugreifen Java Basics - Anfänger-Themen 4
N Verständnisproblem: Mehrere Objekte einer Klasse erstellen Java Basics - Anfänger-Themen 2
H Objekte in einer Hashtable am einfachsten sortieren Java Basics - Anfänger-Themen 13
K Vergleich zweier Objekte in einer HashMap Java Basics - Anfänger-Themen 6
E Zugriff auf Objekte in einer ArrayList Java Basics - Anfänger-Themen 3
P Zugriff auf Objekte einer anderen Klasse Java Basics - Anfänger-Themen 1
J Objekte in einer for schleife referenzieren Java Basics - Anfänger-Themen 7
A auf objekte in einer bereits bestehenden klasse zugreifen Java Basics - Anfänger-Themen 2
B objekte einer klasse. Java Basics - Anfänger-Themen 14
C Mehrere Objekte in einer Liste einfügen und serialisieren Java Basics - Anfänger-Themen 1
L 2 Objekte einer Klasse Java Basics - Anfänger-Themen 8
J Objekte einer ArrayList in eine Tabelle einfügen Java Basics - Anfänger-Themen 2
B Wie kann ich in einer Schleife Objekte erzeugen? Java Basics - Anfänger-Themen 5
G Objekte in einer Schleife erzeugen Java Basics - Anfänger-Themen 2
C Objekte einer Klasse wiederfinden Java Basics - Anfänger-Themen 4
I Zapier -> wie werden Objekte gespeichert? Java Basics - Anfänger-Themen 10
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
K Hab ich dass so richtig erklärt (Objekte und Referenzen)? Java Basics - Anfänger-Themen 5
J Objekte in JSON speichern?? Java Basics - Anfänger-Themen 1
I Objekte in ShareProject speichern um später zu nutzen Java Basics - Anfänger-Themen 4
J Objekte Java Basics - Anfänger-Themen 22
T Objekte mit arrays erstellen Java Basics - Anfänger-Themen 6
Hzrfa Objekte, Referenz Java Basics - Anfänger-Themen 5
T 3D Objekte verarbeiten Java Basics - Anfänger-Themen 2
N Welche Objekte kann man zu einem Set hinzufügen Java Basics - Anfänger-Themen 4
I XML einlesen und Objekte bekommen Java Basics - Anfänger-Themen 2
Encera Zugriff auf Map-Objekte Java Basics - Anfänger-Themen 3
E Objekte löschen Java Basics - Anfänger-Themen 9
P Array-Objekte-Aufruf Java Basics - Anfänger-Themen 22
Encera Auf Objekte aus anderer Klassen zugreifen Java Basics - Anfänger-Themen 20
P Zähler Variable für mehrere Objekte Java Basics - Anfänger-Themen 6
B Objekte verschwinden beim Übersetzen Java Basics - Anfänger-Themen 5
D Zwei verschiedene Intellij Projekte, wie benutze ich wechselseitig objekte Java Basics - Anfänger-Themen 8
E Rekursiv Objekte erzeugen - geht das? Java Basics - Anfänger-Themen 2
T Collections Sind Subklassen-Objekte in Listen mit Generics erlaubt? Java Basics - Anfänger-Themen 16
F Aus eingelesener Datei korrekt Objekte erzeugen Java Basics - Anfänger-Themen 5
G Übergeordnete Objekte abrufen Java Basics - Anfänger-Themen 9
B Bin komplett am verzweifeln :( Verkettete Liste die Objekte hat Attribut auslesen Java Basics - Anfänger-Themen 14
A Objekte mit Parametern in eine Liste packen Java Basics - Anfänger-Themen 19
B Objekte, bspw. konkret Arraylists,manuell aus Speicher löschen? Java Basics - Anfänger-Themen 70
S Objekte von zwei klassen in zwei verschiedene Textdateien schreiben Java Basics - Anfänger-Themen 5
D Wie Objekte im JFrame frei bewegen lassen? Java Basics - Anfänger-Themen 3
Spandeli8 Erzeugte Objekte gegenüber Bildern hervorheben in Java Processing Java Basics - Anfänger-Themen 1
J Zwei Objekte vergleichen Java Basics - Anfänger-Themen 8
L Werte von Objekte addieren Java Basics - Anfänger-Themen 14
U Objekte in LinkedList löschen und editieren Java Basics - Anfänger-Themen 14
W Objekte über Scanner Input; ToString Probleme... Java Basics - Anfänger-Themen 4
G Methoden Informationen aus zwei Objekte bekommen? Java Basics - Anfänger-Themen 6
P Globale Objekte Java Basics - Anfänger-Themen 2
C Nachträglich neue grafische Objekte hinzufügen Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben