Initial commit of the source files.
This commit is contained in:
parent
1e077e1545
commit
8b02002d1f
|
@ -0,0 +1,3 @@
|
|||
public class Anwendung {
|
||||
|
||||
}
|
|
@ -0,0 +1,58 @@
|
|||
/**
|
||||
* Objekte dieser Klasse halten Informationen ueber Befehle, die der Benutzer
|
||||
* eingegeben hat. Ein Befehl besteht momentan aus zwei Zeichenketten: einem
|
||||
* Befehlswort und einem zweiten Wort. Beim Befehl "nimm karte" beispielsweise
|
||||
* sind die beiden Zeichenketten "nimm" und "karte".
|
||||
*
|
||||
* Wenn der Befehl nur aus einem Wort bestand, dann ist das zweite Wort <null>.
|
||||
*
|
||||
* @author tebe
|
||||
* @version 20.10.2013
|
||||
*/
|
||||
|
||||
class Befehl {
|
||||
private String befehlswort;
|
||||
private String zweitesWort;
|
||||
|
||||
/**
|
||||
* Erzeuge ein Befehlsobjekt. Beide Woerter muessen angegeben werden, aber
|
||||
* jedes oder beide duerfen 'null' sein. Ist das erste Wort 'null', wird der
|
||||
* Befehl als nicht verstanden betrachtet. Ist das zweite Wort 'null' wurde
|
||||
* kein zweites Wort angegeben.
|
||||
*
|
||||
* @param befehlswort
|
||||
* Das erste Wort des Befehls.
|
||||
* @param zweitesWort
|
||||
* Das zweite Wort des Befehls.
|
||||
*/
|
||||
public Befehl(String befehlswort, String zweitesWort) {
|
||||
this.befehlswort = befehlswort;
|
||||
this.zweitesWort = zweitesWort;
|
||||
}
|
||||
|
||||
/**
|
||||
* Liefere das Befehlswort (das erste Wort) dieses Befehls.
|
||||
*
|
||||
* @return Das Befehlswort.
|
||||
*/
|
||||
public String gibBefehlswort() {
|
||||
return befehlswort;
|
||||
}
|
||||
|
||||
/**
|
||||
* Liefere das zweite Wort dieses Befehls.
|
||||
* Liefere 'null', wenn es kein zweites Wort gab.
|
||||
* @return Das zweite Wort dieses Befehls.
|
||||
*/
|
||||
public String gibZweitesWort() {
|
||||
return zweitesWort;
|
||||
}
|
||||
|
||||
/**
|
||||
* Testet, ob dieser Befehl ein zweites Wort hat.
|
||||
* @return 'true', wenn dieser Befehl ein zweites Wort hat.
|
||||
*/
|
||||
public boolean hatZweitesWort() {
|
||||
return (zweitesWort != null);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,53 @@
|
|||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
|
||||
/**
|
||||
* Diese Klasse haelt eine Aufzaehlung der akzeptierten Befehlswoerter.
|
||||
* Mit ihrer Hilfe werden eingetippte Befehle erkannt.
|
||||
*
|
||||
* @author tebe
|
||||
* @version 1.0
|
||||
*/
|
||||
public class Befehlswort {
|
||||
|
||||
// Ein HashSet mit den gueltigen Befehlswoertern als Klassenvariable
|
||||
private static final HashSet<String> gueltigeBefehle = new HashSet<String>();
|
||||
static {
|
||||
gueltigeBefehle.add("gehe");
|
||||
gueltigeBefehle.add("beenden");
|
||||
gueltigeBefehle.add("hilfe");
|
||||
}
|
||||
|
||||
/**
|
||||
* Konstruktor - initialisiere die Befehlswörter.
|
||||
*/
|
||||
public Befehlswort()
|
||||
{
|
||||
// tut momentan nichts
|
||||
}
|
||||
|
||||
/**
|
||||
* Pruefe, ob eine gegebene Zeichenkette ein gueltiger
|
||||
* Befehl ist.
|
||||
*
|
||||
* @return 'true', wenn die gegebene Zeichenkette ein gueltiger
|
||||
* Befehl ist, 'false' sonst.
|
||||
*/
|
||||
public static boolean istBefehl(String eingabe)
|
||||
{
|
||||
return gueltigeBefehle.contains(eingabe);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gibt die akzeptierten Befehlsworte als Text zurueck.
|
||||
*
|
||||
* @return Die akzeptierten Befehlsworte als Text
|
||||
*/
|
||||
public static String gibBefehlsworteAlsText() {
|
||||
String text = "";
|
||||
for (String befehl : gueltigeBefehle) {
|
||||
text = text + befehl + " ";
|
||||
}
|
||||
return text;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
/**
|
||||
* Diese Klasse verarbeitet Befehle vom Typ
|
||||
* {@link Befehl Befehl} und lösst die dazu
|
||||
* passenden Aktionen aus.
|
||||
*
|
||||
* @author tebe
|
||||
*
|
||||
*/
|
||||
public class Kontroller {
|
||||
/**
|
||||
* Verarbeite einen gegebenen Befehl
|
||||
*
|
||||
* @param befehl
|
||||
* Der zu verarbeitende Befehl.
|
||||
* @return 'false', wenn ein Abbruchbefehl verarbeitet wurde
|
||||
*/
|
||||
public boolean verarbeiteBefehl(Befehl befehl) {
|
||||
boolean macheWeiter = true;
|
||||
String befehlswort = befehl.gibBefehlswort();
|
||||
if (Befehlswort.istBefehl(befehlswort)) {
|
||||
|
||||
if (befehlswort.equals("gehe")) {
|
||||
System.out.println("Befehl GEHE " + befehl.gibZweitesWort() + " wird ausgefuehrt");
|
||||
} else if (befehlswort.equals("hilfe")) {
|
||||
System.out.println("Gueltige Befehle: "
|
||||
+ Befehlswort.gibBefehlsworteAlsText());
|
||||
} else if (befehlswort.equals("beenden")) {
|
||||
System.out.println("Befehl BEENDEN wird ausgefuehrt.");
|
||||
macheWeiter = false;
|
||||
} else {
|
||||
System.out.println("Befehlswort ohne zugehoerige Aktion: Abbruch.");
|
||||
macheWeiter = false;
|
||||
}
|
||||
} else {
|
||||
System.out.println("Ich weiss nicht, was Sie meinen...");
|
||||
}
|
||||
return macheWeiter;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,40 @@
|
|||
import java.util.Scanner;
|
||||
|
||||
/**
|
||||
* Dieser Parser liest Benutzereingaben und wandelt sie in Befehle um. Bei jedem
|
||||
* Aufruf liest er eine Zeile von der Konsole und versucht, diese als einen
|
||||
* Befehl aus bis zu zwei Woertern zu interpretieren. Er liefert den Befehl als
|
||||
* ein Objekt der Klasse Befehl zurueck.
|
||||
*
|
||||
* Der Parser verfuegt ueber einen Satz an bekannten Befehlen. Er
|
||||
* vergleicht die Eingabe mit diesen Befehlen. Wenn die Eingabe
|
||||
* keinen bekannten Befehl enthaelt, dann liefert der Parser ein als
|
||||
* unbekannter Befehl gekennzeichnetes Objekt zurueck.
|
||||
*
|
||||
* @author tebe
|
||||
* @version 18.10.2013
|
||||
*/
|
||||
class Parser {
|
||||
// Lieferant fuer eingegebene Befehle
|
||||
private Scanner leser = new Scanner(System.in);
|
||||
|
||||
/**
|
||||
* @return Der naechste Befehl des Benutzers.
|
||||
*/
|
||||
public Befehl liefereBefehl() {
|
||||
Befehl befehl;
|
||||
String eingabezeile; // fuer die gesamte Eingabezeile
|
||||
|
||||
System.out.print("> "); // Eingabeaufforderung
|
||||
eingabezeile = leser.nextLine();
|
||||
String[] woerter = eingabezeile.split(" ");
|
||||
|
||||
if (woerter.length >= 2) {
|
||||
befehl = new Befehl(woerter[0], woerter[1]);
|
||||
} else {
|
||||
befehl = new Befehl(woerter[0], null);
|
||||
}
|
||||
return befehl;
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue