Nachdem die leeren Klassen angelegt wurden, sollen sie sinnvoll mit Code gefüllt werden. Begonnen wird mit der zentralen Klasse VideoMachine. Zuerst werden der Konstruktor und der Code zum Starten hinzugefügt.


  public class VideoMachine extends Shop 
  {
       
    public VideoMachine()
    {
      super();
    } 

    public static void main(String[] args) 
    {
      VideoMachine vidMachine = new VideoMachine();
      setTheShop(vidMachine);
    }
  } 
        

Konstruktor und main-Methode

Der Konstruktor legt ein neues Objekt vom Typ VideoMachine an. Die Methode setTheShop in der main-Methode legt den gerade erzeugten Shop als den Shop fest, der für die Applikation zu verwenden ist. Um die Methode einsetzen zu können, muß noch das Paket sale mit der unten stehenden Anweisung importiert werden. Es enthält die zentralen Klassen des Frameworks.


  import sale.*;
        

Zur grundlegenden Funktionalität eines Shops gehört das Protokollieren wichtiger Aktivitäten. Die dafür notwendigen Funktionen stellt das Framework zur Verfügung. Dazu muß mittels der in Log statisch definierten Methode setGlobalOutputStream ein Datenstrom angegeben werden, auf den die Logdaten vom Framework geschrieben werden können. Als Datenstrom bietet sich ein FileOutputStream an, der alle Daten in eine Datei schreibt. Die folgende Anweisung legt die Datei machine.log als Logdatei fest:

Log


  try {
    Log.setGlobalOutputStream(new FileOutputStream("machine.log",true));
  } 
  catch (IOException ioex) { 
    System.err.println("Unable to create log file.");
  }  
        

Dieser Code wird in die main-Methode eingefügt. Die Anweisung muß in einen try-Block geschrieben werden, da bei einem Fehler eine IOException erzeugt wird, die in einem catch-Block verarbeitet werden muß. Außerdem müssen noch die notwendigen import-Anweisungen ergänzt werden. Für die Verwendung der Klassen Log, FileOutputStream und IOException wird der Kopf der Klasse wie folgt erweitert:


  import log.*;
  import java.io.*;
       

Nun sind alle Voraussetzungen zum Starten des Shops erfüllt. Die main-Methode muß nur noch um folgende Zeile erweitert werden:

Starten des Shops


  vidMachine.start();
        

Wird das Programm kompiliert und ausgeführt, öffnet sich ein Fenster, das die Menüs "Shop" und "MultiWindow" enthält. Dort werden Menüpunkte zur Verfügung gestellt, die bereits im Framework implementiert wurden und somit funktionsfähig sind. Im Shop ist es bereits möglich, einen vorher abgespeicherten Videoautomaten zu laden bzw. den aktuellen Zustand abzuspeichern. Beim Beenden des Programms wird vom Framework automatisch ein Dialog zum Speichern geöffnet. Um das zu vermeiden (schließlich kann man mit Hilfe des Menüs schon speichern) wird in der Klasse VideoMachine die Methode quit implementiert.

Menüleiste


  public void quit() 
  {
    if (Shop.getTheShop().shutdown(false)) {
      System.exit(0);
    }
  }
        

Im "MultiWindow"-Menü stehen Funktionen zur Verfügung, die das Aussehen des Fensters steuern. Es kann zwischen einer Karteikartenansicht und einer Ansicht mit mehreren kleinen Fenstern innerhalb des Shop-Fensters umgeschalten werden.

Dem Fenster können außerdem noch ein Titel und eine Größe zugewiesen werden. Der Methodenaufruf vidMachine.start() wird durch folgenden Code ersetzt:

Formatierung des Fensters


  vidMachine.setShopFrameTitle("Videoverleihautomat *** HOMECINEMA *** 24h");
  vidMachine.start();

  vidMachine.getShopFrame().setSize(640,480);
  vidMachine.getShopFrame().validate();
       

Durch die Methode validate wird das Layout aller im Fenster dargestellten Elemente aktualisiert und der neuen Größe angepasst.

Hier der Quelltext der in diesem Kapitel geänderten Klasse:

Aufgabenstellung Kataloge und Bestände

last modified on 24.09.2001
by kk15 and ch17