2016-04-14 8 views
-1

Ich bin derzeit auf einem Brettspiel arbeiten java, und ich habe eine Frage, wie genau funktioniert OOP in dieser Situation:ich etwas Hilfe Verständnis OOP brauchen

Gerade jetzt, ich habe zwei Objekte:

  1. Spielbrett Objekt
  2. Win-Objekt, das
  3. in seinem Konstruktor in dem Spielbrett Objekt nimmt

Beide Objekte wurden zu Beginn meiner Haupt Methode instanziiert.

Das Spielbrett Objekt wird das aktive sein mit allen Stücken hin und her bewegen und zerstört werden.

Jedes Mal, wenn ein Zug ausgeführt wird, überprüft das Win-Objekt, ob der aktuelle Spieler das Spiel gewonnen hat oder nicht.

Nun, die Frage ist:

Wird das Board-Objekt, das an den in das Win-Objekt übergeben wird Update als aktives Board Objekt im Hauptverfahren beginnen?

public static void main(String[] args){ 

    Matrix m = new Matrix(); 
    Win w = new Win(m); 
+4

Nun, ich denke, eine einfache Antwort auf Ihre Frage ist ... probieren Sie es aus: P. – 3kings

+2

Ja, es wird aktualisiert. Nicht sicher, warum Sie das Win-Objekt benötigen. Ich denke, in diesem Fall wäre es am besten, den Vorstand zu fragen, ob es einen Gewinner gibt oder wer es ist und nicht wie dieser. Vielleicht bin ich falsch. – Rig

+0

Es ist lustig, wie ich etwas poste, und nach ein paar Sekunden denke ich über eine Möglichkeit nach, das Problem selbst zu beantworten und es tatsächlich zu beantworten. Aber danke Jungs sowieso! –

Antwort

1

Dies ist nicht einmal eine OOP-Frage, dies ist eine grundlegende Java. Weil Java Verweise auf Objekte im Speicher speichert (Zeiger, deshalb heißt es NullPointer), wenn Sie Objekt A und B auf den gleichen Speicherort verweisen und A-s Wert aktualisieren, wird auch der B-s Wert aktualisiert.

Wenn Sie ein Objekt in ein anderes kopieren (Objekt A = B), kopieren Sie nur eine Speicheradresse.

+0

Danke für die Antwort! Diese Erklärung war sehr hilfreich. Aber ich denke, ich bin immer noch ein wenig verwirrt über den Unterschied zwischen grundlegender Java-Sprache und OOP. Gibt es einen großen Unterschied zwischen den beiden? Ich dachte, dass Java selbst eine objektorientierte Programmiersprache ist. –

+0

@ JasonJ.Y.Kim Java ist nur eine objektorientierte Programmiersprache. Sie können OOP in C++ oder Python oder vielen anderen Sprachen ausführen. –

+0

@Jason J.Y. Kim Wenn ich "Basic Java" sage, spreche ich über die Kernsprache, ohne irgendwelche ausgefallenen Dinge wie eingebaute Bibliotheken oder richtige OOP. Sie können es lesen wie "Diese Frage bezieht sich nicht direkt auf OOP-Funktionalität von Java" –

-1

Win ist kein Objekt! Gewinn ist eine Aktion a.k.a eine Methode! Einige Objekte für Ihr Spiel:

  • Spiel
  • Vorstand
  • Spieler
  • Console
+0

Nun, ähm ... technisch ist es eine Objekt Instanziierung einer Klasse namens Win. –

+0

Hm? Willst du sagen "Win sollte eine Methode sein"? Auch, Konsole? Warum? Warum nur? –

+0

Natürlich können Sie eine Klasse namens Walk erstellen und in ein Objekt instanziieren, aber aus der OOP Perspektive sind Objekte keine Aktionen! –