Programmierwettbewerb
Wettbewerbsseite

Demohamster stehe im folgenden fuer den Namen eures Hamsters. Lasst euch wohlklingende Namen fuer euren Hamster einfallen (oder wenigstens eindeutige)!

Legt ein package an, welches alle Klassen enthaelt ausser einer Startklasse, die vom System aufgerufen wird (package demohamster und Startklassen-Datei Demohamster.java). Den Packagenamen solltet ihr klein schreiben, weil das immer so gemacht wird. Die Dokumentation soll ebenfalls in diesem package (=Unterverzeichnis) liegen.

Wuenschenswert waere diese Dateistruktur im Verzeichnis java/contest/hamster(*):

Demohamster.java                (Erbt von demohamster.Demohamster)
demohamster/Demohamster.java    (Enthaelt die Hamsterroutinen)
demohamster/Hilfsklasse1.java   (Ein paar..)
demohamster/Hilfsklasse2.java   (..andere..)
demohamster/NochmehrHilfe.java  (..Klassen )
demohamster/readme.txt          (Die Doku als TXT)
demohamster/readme.html         (oder als HTML)
Die Datei Demohamster.java muss nicht mehr enthalten als das folgende:
/**
 * Demohamster.
 * @author ...
 */
public class Demohamster extends demohamster.Demohamster{
}
Alle Hamstereigenschaften stehen in demohamster/Demohamster.java:
package demohamster;
// Hier ist die Angabe, in welchem Package der Hamster ist.
// Diese Zeile muss als erste in allen Quelltexten stehen,
// die im Package liegen.
import algds.c2002.Hamster;
// Hiermit kann man den Hamster ohne sein Package ansprechen

/**
 * Der eigentliche Hamster.
 * @author ...
 */
public class Demohamster extends Hamster{
  ...
  ...
  public void run(){
    ...
  }
  public String getHamsterAuthor() { ... }
  public String getHamsterVersion() { ... }
  public String getHamsterDate() { ... }
  ...
  ...
}
Ein Beispiel:
Mein eigener Hamster hat diese Dateistruktur:
H2D2.java                  // Startklasse
h2d2/H2D2.java             // Hamsterklasse
h2d2/Map.java              // Interne Karte
h2d2/Cell.java             // Einzelnes Feld der Karte
h2d2/DoStopException.java  // Geworfen um Hamster zu stoppen
h2d2/IntPoint.java         // Kapselung eines 2d-Punktes
h2d2/Way.java              // Informationen fuer Suchalgorithmus
h2d2/H2D2Constants.java    // Konstanten fuer alle Klassen
h2d2/readme.html           // Dokumentation
Meine Hamsterklasse beginnt so:
package h2d2; 
import algds.c2002.Hamster2; 
import java.util.LinkedList; 

/** 
 * @author Christian Semrau 
 */ 
public class H2D2 extends Hamster2 implements H2D2Constants { 
Tip zum Kompilieren: Ich hab mir eine Batch-Datei angelegt (namens c_h2d2) mit folgendem Befehl, damit auch sicher alles kompiliert wird:
javac -classpath ../contest.jar:. h2d2/*.java H2D2.java
Diesen Befehl fuehre ich im Verzeichnis hamster aus. (Beachte wieder, dass unter Windows im Pfad ein ; statt : stehen muss.) Ein aehnliches Script fuer euren Hamster erspart euch viel Tipparbeit.

Wenn ihr so sparsam seid, dass ihr für dem Hamster nur eine einzige Klasse (und keine inneren Klassen!) und fuer die Dokumentation auch nur eine einzige Datei braucht, kann es aber auch einfach so aussehen:

Demohamster.java        (Enthaelt den Hamster als eine Klasse)
Demohamster.txt         (Die Doku als TXT oder als HTML)
Als ZIP packen koennt ihr euren Hamster im Verzeichnis hamster so:

jar cvfM demohamster.zip demohamster/*.* Demohamster.*
(Nennt eure ZIPs entsprechend eurem Hamsternamen, ich moechte nicht ein Dutzendmal hamster.zip oder demohamster.zip bekommen!)
Natuerlich koennt ihr jedes ZIP-Programm eurer Wahl benutzen. (jar, winzip, zip oder wie sie alle heissen)

Die ZIP schickt ihr per EMail an contest2002@cs.uni-magdeburg.de.

Seitenanfang
Status vom 04.04.2002, Christian Semrau