Die Kunden
  Nun wird das eigentliche Verleihen und Zurückgeben der Videos vorbereitet. Es ist notwendig, daß die Kunden eindeutig identifiziert werden können. Dies geschieht durch das Anmelden am Automaten mit einer Kundennummer. In dieser Anwendung wird das Identifizieren der Kunden vereinfacht. Jede (positive) natürliche Zahl ist als Kundennummer gültig. Außerdem wird angenommen, daß jeder Kunde, der den Automaten bedient, rechtmäßiger Kunde des "HOMECINEMA" ist - es findet keine weitere Überprüfung statt.  
  Es wird die Klasse Customer benötigt. Eine Instanz dieser Klasse repräsentiert einen angemeldeten Kunden. Zuerst wird wieder das Grundgerüst der Klasse implementiert. Die Variable customerID enthält dabei die jeweilige Kundennummer:  
   neue Javaklasse    Customer.java  
 

  public class Customer extends User
  {
    private String customerID;

    public Customer(String customerID)
    {
      super(customerID);
      this.customerID = customerID;
    }
  }
        
 
  Um die Klasse Usersp apilogo nutzen zu können muß das Paket userssp apilogo importiert werden:  
 

  import users.*;
        
 
  Da die Variable customerID als private deklariert wurde, benötigt man eine Methode, die den Wert dieser Variable zurückliefert:  
 

  public String getCustomerID()
  {
    return customerID;
  }
        
 
  Jeder Kunde erhält ein Benutzerkonto, in dem die ausgeliehenen Videos abgespeichert werden. Zurückgegebene bzw. gekaufte Videos werden aus dem Benutzerkonto entfernt. Durch einen StoringStock, der Attribut von Customer ist, erfolgt die Realisierung. Zuerst wird die Variable customerStoringStock definiert:  
 

  private StoringStock customerStoringStock; 
        
 
  Im Konstruktor wird der StoringStocksp apilogo erzeugt, der auf dem "Video-Catalog" basiert, und in die globale Stockliste aufgenommen.  
 

  customerStoringStock =
    new StoringStockImpl(
      customerID,
      (CatalogImpl)Shop.getTheShop().getCatalog("Video-Catalog"));
  Shop.getTheShop().addStock(customerStoringStock);
        
 
  Für die Verwendung von StoringStocksp apilogo, StoringStockImplsp apilogo und Shopsp apilogo werden folgende import-Anweisungen benötigt:  
 

  import sale.*;
  import data.*; 
  import data.ooimpl.*;
        
 
  Die Elemente des customerStoringStock sind Instanzen der Klasse CassetteStoringStockItem, die nun implementiert wird. Neben dem Schlüsselwert und dem Namen des entliehenen Videos wird das Datum der Ausleihe vermerkt.  
   neue Javaklasse    CassetteStoringStockItem.java  
 

  import sale.*;
  import data.ooimpl.*;
  import data.*;

  public class CassetteStoringStockItem extends StockItemImpl
  {
    private Object date;

    public CassetteStoringStockItem(String name, Object date)
    {
      super(name);
      this.date = date;
    }
  }  
        
 
  Zum Schluß wird die Methode getDate geschrieben, die das Ausleihdatum des speziellen Videos liefert.  
 

  public Object getDate()
  {
    return date;
  }
        
 
   neue Javaklasse    Customer.java  
  Es sind alle Voraussetzung erfüllt, um Videos über Methoden zum customerStoringStock hinzufügen und entfernen zu können. Die Klasse Customer wird wie folgt ergänzt:  
 

  public void addVideoCassette(CassetteStoringStockItem cassette)
  {
    customerStoringStock.add(cassette, null);
  }

  public void removeVideoCassette(CassetteStoringStockItem cassette)
  {
    try {
      customerStoringStock.remove(cassette, null); 
    }
    catch (VetoException ve) {
    }
  }
        
 
  Die Methoden addsp apilogo und removesp apilogo erwarten als zweiten Parameter wieder einen DataBasketsp apilogo. Da ein DataBasketsp apilogo hier keine Rolle spielt, wird null übergeben. Es ist zu beachten, daß einige Kataloge in der Lage sind, das Verändern bzw. Löschen eines CatalogItemssp apilogo zu blockieren, indem sie eine VetoExceptionsp apilogo werfen, z.B. wenn das CatalogItemsp apilogo gerade anderweitig benutzt wird. Die Exception ist im Paket data.eventssp apilogo implementiert, das in die import-Anweisungen aufgenommen werden muß:  
 

  import data.events.*;
        
 
  Eine Übersicht aller Videos, die ein Kunde ausgeliehen hat, wird durch die Methode getStoringStock geliefert.  
 

  public StoringStock getStoringStock()
  {
    return customerStoringStock;
  }
        
 
   neue Javaklasse    VideoMachine.java  
  Die Verwaltung der Kunden erfolgt in der Klasse VideoMachine. In einem HashSet werden alle registrierten Kunden abgespeichert. Folgende Variablendeklaration wird in die Klasse VideoMachine eingefügt:  
 

  private static Set customerSet = new HashSet();
        
 
  Desweiteren werden Methoden benötigt, mit denen Kunden in die Liste aufgenommen und entfernt werden können. Die Klasse VideoMachine wird erweitert:  
 

  public static void addCustomer(Customer customer)
  {
    customerSet.add(customer);
  }

  public static void removeCustomer(Customer customer)
  {
    customerSet.remove(customer);
    Shop.getTheShop().removeStock(customer.getCustomerID());
  }
        
 
  Eine weitere Methode wird gebraucht, um eine Liste von allen registrierten Kunden abzurufen:  
 

  public static Set getAllCustomer()
  {
    return customerSet.isEmpty() ? null : customerSet;
  }
        
 
  Um die Kundenliste nach einem Kunden mit einer bestimmten ID zu durchsuchen, wird die Klasse VideoMachine noch einmal ergänzt:  
 

  public static Customer getCustomerByID(String customerID)
  {
    Iterator i = customerSet.iterator();
    while (i.hasNext()) {
      Customer customer = (Customer)i.next();
      if (customer.getCustomerID().equals(customerID))
	return customer;
    }
    return null;
  }
        
 
 Quelltexte
  Hier der Quelltext der in diesem Kapitel geänderten Klassen:  
 
vorherige Seite  Das Angebot anzeigen Der Ausleihvorgang  naechste Seite
 

by kk15

Valid HTML 4.01!