Methoden einer anderen Klasse aufrufen

mdk
Gast

Methoden einer anderen Klasse aufrufen

Beitrag von mdk »

Also ich hab ein grundsätzliches Zugriffsproblem. Ich verstehe nicht, wie ich beispielsweise in der Klasse Player eine Methode der Klasse Position oder Model oder irgendeiner anderen Klasse aufrufe.

Was für Voraussetzungen muss ich schaffen? Ich hab schon vieles ausprobiert: z.B. eine Variable der anderen Klasse zu erstellen und darüber dann auf die Methoden zuzugreifen. die jeweils andere Klasse in der Klasse wo ich die Methode ausführen will instanziiert. Irgendwie bekomme ich ständig Fehler angezeigt, spätestens wenn ich das GameWindow starten will!

Ich hab mir z.B. gedacht, dass ich in der Klasse Player (oder in irgendeiner anderen Klasse) folgendes irgendwie machen könnte:

Model.setHealthOfPlayer(int health);

Das möchte ich machen, um die Daten im Model zu verändern (Das Model soll ja schließlich alle Daten halten/bereitstellen).

Ist diese Denkweise überhaupt richtig? Ist so was überhaupt möglich? Wenn ja, WIE??? Ich brauch da echt ne Schritt-für-Schritt Anweisung. Seit Tagen dreh ich mich im Kreis, wie das funktionieren könnte.

Schonmal vielen Dank!

steffen12
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 205
Registriert: 14. Okt 2009 16:28

Re: Methoden einer anderen Klasse aufrufen

Beitrag von steffen12 »

Hi mdk,

um deine Frage gut zu beantworten bedarf es jeder Menge Text. Ich hab auch nicht in allen Punkten verstanden womit du Schwierigkeiten hast.
Möchtest du heute Mittag ab 15:00 mal in den CPool kommen? ich werd da sein. Oder auch im laufe der restlichen Woche.

VG

mdk
Gast

Re: Methoden einer anderen Klasse aufrufen

Beitrag von mdk »

Würde ich gerne, bin aber leider zu weit weg von Darmstadt. Zu welchen Uhrzeiten bist du diese Woche Mittwoch bis Freitag da? (bist du auch am Wochenende im CPool?)

steffen12
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 205
Registriert: 14. Okt 2009 16:28

Re: Methoden einer anderen Klasse aufrufen

Beitrag von steffen12 »

Ich werde den Rest der Woche immer Nachmittags dort sein. Am Wochenende nicht.

VG

midstar
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 172
Registriert: 29. Dez 2013 17:00

Re: Methoden einer anderen Klasse aufrufen

Beitrag von midstar »

Da du sicherlich nicht der einzige bist versuch ich mich mal grob, bei weiteren fragen nicht scheuen und weiterfragen:

Klassen:
Player
Model


Generell greifst du auf eine Klasse zu indem du eine Variable dieser Klasse anlegst. Sprich (in Model):
Player player;
Damit legst du eine Variable vom typ Player mit dem Namen player an. Im Konstruktor von Model legst du dann fest:
player = new Player();
Damit ist die Variable player initialisiert. Mit einem neuen festen Objekt.
So, die Klasse Player hat Methoden wie(setHealth(int health), getHealth, setPosition(Position position)...).
Um auf die Methoden zuzugreifen machst du wie folgt:
player.setHealth(100); als beispiel. diese 100 werden nun an die Klasse player weiter gegeben:

in der Klasse Player, sieht die Methode dann so aus:

public void setHealth(int health){
this.health = health; <- an der stelle wird this.health, was die klassenvariable ist (ausserhalb der methode), der werd von int health übergeben. int health steht in der klammer und entspricht diesen 100 aus dem beispiel
}

Jetzt hat die Variable ausserhalb der Methode den wert von 100; egal was vorher war. Diese musst du jetzt abrufen in der Klasse Model:
player.getHealth(); get health returnt einfach nur den wert der in der Klasse Player steht. und damit steht player.getHealth() für eine Variable. Nämlich der die wir vorher in der Methode setHealth mit this.health ansprechen


Hoffe das klärt ein paar fragen ;)

Benutzeravatar
SophiaLi1
Kernelcompilierer
Kernelcompilierer
Beiträge: 542
Registriert: 5. Jan 2014 11:48

Re: Methoden einer anderen Klasse aufrufen

Beitrag von SophiaLi1 »

Haha midstar, hab ichs dir gut über Whatsapp erklärt?^^ :D

midstar
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 172
Registriert: 29. Dez 2013 17:00

Re: Methoden einer anderen Klasse aufrufen

Beitrag von midstar »

Haha :P da brauch jemand wohl ein Lob :P

Benutzeravatar
SophiaLi1
Kernelcompilierer
Kernelcompilierer
Beiträge: 542
Registriert: 5. Jan 2014 11:48

Re: Methoden einer anderen Klasse aufrufen

Beitrag von SophiaLi1 »

Haha eigentlich nicht :D Freut mich nur, dass dus so schön zusammengefasst hast :P

Massim
Gast

Re: Methoden einer anderen Klasse aufrufen

Beitrag von Massim »

Gute Anleitung, danke!
Wenn ich das allerdings genau so mit der Klasse House mache (habt ihr das auch als Klasse?) bekomme ich im Model bei der Methode "getPositionOfHouse(String house) { house.getPosition(house) }" (die entsprechende Methode in der Klasse House ist vorhanden) die Fehlermeldung "cannot find symbol - method getPosition(java.lang.String)".
Bei allen anderen Methoden im Model funktionierts aber, nur eben nicht hier...

Benutzeravatar
SophiaLi1
Kernelcompilierer
Kernelcompilierer
Beiträge: 542
Registriert: 5. Jan 2014 11:48

Re: Methoden einer anderen Klasse aufrufen

Beitrag von SophiaLi1 »

Was steht denn in deiner Klasse House drin?
Zuletzt geändert von SophiaLi1 am 14. Jan 2014 22:05, insgesamt 1-mal geändert.

topracer
Mausschubser
Mausschubser
Beiträge: 53
Registriert: 10. Jan 2014 19:14

Re: Methoden einer anderen Klasse aufrufen

Beitrag von topracer »

Vielleicht ein Rechtschreibfehler in deiner House-Klasse bei der entsprechenden Methode oder sonstwie eine Abweichung im Namen? Kann auch schnell mal passieren, dass man bei der Groß-/Kleinschreibung was verwechselt...
Außerdem muss die Methode natürlich public sein.

Massim
Gast

Re: Methoden einer anderen Klasse aufrufen

Beitrag von Massim »

Also in der Klasse House steht bis jetzt (bin noch nicht so weit) nur ein Attribut "private int position;" sowie die Methode "public int getPosition(String house)" . An Schreibfehler hab ich auch schon gedacht, aber bin nicht fündig geworden...

Benutzeravatar
SophiaLi1
Kernelcompilierer
Kernelcompilierer
Beiträge: 542
Registriert: 5. Jan 2014 11:48

Re: Methoden einer anderen Klasse aufrufen

Beitrag von SophiaLi1 »

Hast du einen Konstruktor in der Klasse House und instanziierst du in deinem Model die Klasse House?

Benutzeravatar
SophiaLi1
Kernelcompilierer
Kernelcompilierer
Beiträge: 542
Registriert: 5. Jan 2014 11:48

Re: Methoden einer anderen Klasse aufrufen

Beitrag von SophiaLi1 »

Achso! Ich hab den Fehler :mrgreen: Deine Variable der Klasse House heißt "house" und deine übergebene String-Variable heißt auch "house". Da beides Objekte sind nimmt er natürlich erst die String-Variable und findet in der Klasse diese Methode nicht. Benenn mal den Parameter um.

Massim
Gast

Re: Methoden einer anderen Klasse aufrufen

Beitrag von Massim »

Welchen der Parameter in welcher Klasse meinst du genau? Sorry bin schon etwas müde :D

Antworten

Zurück zu „Archiv“