Tutorium Java I, Sitzung 11, 19.01.2009 Die Klasse Filter stellt eine

Werbung
Tutorium Java I, Sitzung 11, 19.01.2009
Die Klasse Filter stellt eine allgemeine Klasse zum filtern von Texten dar. Die Methode filter() liest jedes
Wort des Textes aus. Die Methode accept() akzeptiert hier noch alle Buchstaben. In den abgeleiteten
Klassen soll diese Methode überschrieben werden und bestimmte Buchstaben aussortieren (s.u.).
import java.util.Arrays;
import java.util.Vector;
public class Filter {
Vector text;
Filter(Vector text) {
this.text = text;
}
Vector filter() {
Vector result = new Vector();
Integer length = text.size();
for (Integer i = 0; i < text.size(); i++) {
String current = (String) text.get(i);
if (accept(current)) {
result.add(current);
}
}
return result;
}
Boolean accept(String word) {
return true;
}
public static void main(String[] args) {
Filter filter = new Filter(new Vector(Arrays.asList("aloha",
"kaluha",
"heinz", "herbert")));
Vector res = filter.filter();
System.out.println("Herausgefiltert: ");
for (Integer i = 0; i < res.size(); i++) {
System.out.println(res.get(i));
}
}
}
Die Klasse HawaiianFilter erbt alle Methoden und Eigenschaften von Filter und stellt eine „ist-ein“Beziehung her. D.h. HawaiianFilter „ist-ein“ Filter. Die accept()-Methode lässt nun ausschließlich
Buchstaben zu, die dem hawaianischen Alphabet entsprechen. Der Aufruf von filter() in der Main-Methode
dieser Klasse, ruft die Methode der Superklasse auf.
import java.util.Arrays;
import java.util.Vector;
public class HawaiianFilter extends Filter {
//Verwendung des Konstruktors der Superklasse
HawaiianFilter(Vector text) {
super(text);
}
Boolean accept(String word) {
for (Integer pos = 0; pos < word.length(); pos++) {
if (!hawaiianischerBuchstabe(word.charAt(pos))) {
return false;
}
}
return true;
}
public boolean hawaiianischerBuchstabe(char pos){
switch (pos) {
case 'a': ;return true;
case 'e': return true;
case 'i': return true;
case 'o': return true;
case 'u': return true;
case 'k': return true;
case 'l': return true;
case 'm': return true;
case 'n': return true;
case 'p': return true;
case 'w': return true;
case 'h': return true;
default:return false;
}
}
public static void main(String[] args) {
Filter filter = new HawaiianFilter(new Vector(Arrays.asList("aloha",
"kaluha", "heinz", "herbert")));
Vector res = filter.filter();
System.out.println("Herausgefiltert: ");
for (Integer i = 0; i < res.size(); i++) {
System.out.println(res.get(i));
}
}
}
Herunterladen