Logo der Hochschule  
 aufwärts

Objektorientierte Programmierung (MI2),   10.05.2017

Wir wollen jetzt das abstrakte Modell des Spiels Vier gewinnt (Objekt der Klasse Board) mit dem View, also der Darstellung auf dem Bildschirm (Objekt der Klasse CircleGrid in unserem PaintPanel) verknüpfen.

Aufgabe 15:  

  1. Hierzu benötigen wir in der Klasse PaintPanel als Attribute wie bisher ein Objekt circlegrid der Klasse CircleGrid (den View) und jetzt zusätzlich auch ein Objekt board der Klasse Board (das Model).
  2. Ferner benötigen wir in der Klasse CircleGrid eine Methode
    public void display(Board board)
    

    die das als Parameter übergebene Objekt board in die Darstellung als CircleGrid überführt. Hierbei sollen die in board gespeicherten Einträge als entsprechend gefärbte Circles dargestellt werden (0entsprichtgelb, 1entsprichtrot, -1entsprichtweiß).

  3. Beim Klicken in der Klasse PaintPanel soll jetzt die Methode applyMove (aus Aufgabe 12 b) mit dem ent­sprechenden Spielzug auf dem Board ausgeführt werden; als Farbe nehmen Sie zunächst einfach 0entsprichtgelb, denn wir wissen noch nicht, welcher Spieler gerade dran ist.
  4. Nach applyMove rufen Sie display auf, um circlegrid zu aktualisieren, und anschließend repaint.

 

Aufgabe 16:  Modifizieren Sie Ihr Programm in der Weise, dass es dem Observer-Software­muster entspricht (Vorlesung 8):

  1. Leiten Sie die Klasse Board von der abstrakten Klasse Observable ab.
  2. Rufen Sie in der Methode applyMove die Methoden setChanged und notifyObservers auf.
  3. Implementieren Sie in der Klasse PaintPanel das Interface Observer; in die geforderte Methode update verschieben Sie die beiden Zeilen aus Aufgabe 15 d. (Die Methode update wird automatisch aufgerufen, wenn der Observer durch notifyObservers benachrichtigt wird.)
  4. Verknüpfen Sie zum Schluss das Observable mit dem Observer, indem Sie im Konstruktor von PaintPanel die Anweisung
    board.addObserver(this);
    

    einfügen.

 

Bearbeiten im Labor ab 10.05.2017

 

 

 

up

 

homeH.W. Lang   Hochschule Flensburg   lang@hs-flensburg.de   Impressum   ©  
Valid HTML 4.01 Transitional