Frage bzgl. OOP.

phreeak

Mitglied
Weiss nicht genau wie ich das Thema nennen soll.


Mal angenommen man hat 4 Klassen.

Eine Superklasse Names Spieler und 2 Subklassen Mensch und Computer. Alles mit Extends versteht sich..

Dazu eine Klasse Spielsteuerung.

So meine Frage,

wenn man nun ne Variable macht mit

Java:
Spieler aktuell;

oder ne Methide macht

Java:
 public Spieler wechselSpieler(Spieler spieler1, Spieler spieler2) {}]

in der Spielsteuerung. Was macht das "Spieler" genau? Statt nen Datentyp, Void, Static zu nehmen, nimmt man ja den Klassename...

Man bezieht sich auf die Klasse und der aktueler Spieler, mit dieser Verbunden ist?! Wie bei einem Object, nur ohne "new ...."


spieler1 und spieler2 werden vorher auch instanziert durch
Java:
 Mensch spieler1 = new Mensch("Spieler1",'x')

und

Java:
Computer spieler2 = new Computer("Spieler2",'o')
oder
Java:
 Mensch spieler2 = new Mensch("Spieler2",'o')

in einer anderen Methode. Je nachdem welchen Spieltyp man auswählte zuvor.

Versteh das noch nicht 100%, aber finde dazu auch sonst nix.


thx im vorraus
 
Zuletzt bearbeitet:
Hi

das hat irgendwie nichts mit OOP zu tun, eher komplette Grundlagen...

Wenn man das mit int machen würde statt dem Klassennamen,
wäre es dann klarer?
Nichts anderes ist das.

Ein int ist ein Datentyp, der eine kommalose Zahl speichern kann.
Wenn du eine Klasse Spieler programmierst hast du damit einen weiteren, neuen Datentyp.
Was der speichern kann und so legst du in der Klasse fest.

Zum new: Wenn du mit "Spieler xyz;" einen Behälter für den Wert gemacht hast,
musst/kannst du mit new dann wirklich was reinfüllen.
Der Behälter kann mit einem =... auch was Anderes zugewiesen bekommen,
muss nicht immer den ersten Spieler haben.
Am Anfang ist er aber leer.

Was int etc. angeht, wenn man da schreibt "=4" gibt es ja schon eine Zahl 4,
die man in den Behälter steckt. Spieler kann man aber nicht so per Tastatur anschreiben,
die muss man mit new machen.
...oder so, kA wie man das erklären soll.

Zu Datentypen void und static":
Nö.
ein "void xyz; kann man nicht machen.
Und static ist kein Datentyp.
if und while sind doch auch keine Datentypen...
 
ah ok, nun hab ich es verstanden..
Irgendwie in meinen Notizen zu den Vorlesungen dazu nix mehr gefunden und in den Scripts war auch nix.

Anscheinend hat der das nicht so wirklich erklärt. (Programmier auch erst seit 3 Monaten) - Mir hats nur einer Kurz erklärt letztens und habs so jetzt ausm Kopf nachgebaut (klappt auch), mir fehlte aber die 100% erklärung wieso. Aber nun weiss ichs. Dachte es mir schon. Wollte aber sicherheit.

aso das mit void und static war nicht auf den Datentyp bezogen. Hab mich unglücklich ausgedrückt. Meinte, dass man in der Methode statt "public void" oder was auch immer Spieler macht.


vielen dank :)
 
Zuletzt bearbeitet:
Der "Spieler" nach public in der Methodendeklaration

Java:
public Spieler wechselSpieler(Spieler spieler1, Spieler spieler2) {}

ist der Rückgabewert dieser Methode.

Damit kannst du den Rückgabewert der Methode gleich auf eine Spieler-Instanz schreiben.
Also so (davon ausgehend, dass die Methode zur Klasse Spielsteuerung gehört):

Java:
Spieler aktuellerSpieler = new Spieler();
aktuellerSpieler = spielSteuerungsInstanz.wechselSpieler(spieler1, spieler2);

Schau mal in deinen Unterlagen nach Rückgabewert von Methoden, oder hier:
http://openbook.galileocomputing.de...tml#dodtpd9fac048-d167-4086-aa87-b56b62f7e302

lg
 
Zuletzt bearbeitet von einem Moderator:
Zurück