1. Übungsangabe

Werbung
Praktikum aus Softwareentwicklung 2
SS 2008, LVA 365.009
Abgabetermin: 8.4.2008
Erreichbare Punkte: 24
Übung 1 – Grundlegende Java-Bibliotheken
Aufgabe 1: I/O
16 Punkte
Implementieren Sie eine Filemanager Klasse mit folgender Schnittstelle:
public interface FileManager {
public void copy(String from, String to);
public void copy(String from, String fromCharset,
String to, String toCharset);
public int grep(String from, String txt, PrintWriter out);
public void encrypt(String from, String to);
public void decrypt(String from, String to);
}
Die beiden Methoden copy kopieren eine Datei from möglichst performant nach to,
wobei optional eine Konvertierung in einen bestimmten Zeichensatz erfolgt. Testen Sie
das Konvertieren mit einer Textdatei, die mit dem Default-Zeichensatz Ihrer
Laufzeitumgebung gespeichert ist und beim Kopieren in die UTF-8 Kodierungen
umgewandelt wird. Die resultierende Kopie sollte wiederum kopiert werden, wobei
diese wieder in den Default-Zeichensatz konvertiert werden soll. Zur Bestimmung des
Default-Zeichensatzes verwenden Sie bitte die Methode:
java.nio.Charset.defaultCharset()
Die Methode grep sollte eine Textdatei zeilenweise verarbeiten und in jeder Zeile nach
einem bestimmten Teilstring (siehe Parameter txt) suchen. Ist txt enthalten, soll die
Zeile auf den PrintWriter geschrieben werden. Zum Testen können Sie dafür
System.out verwenden (siehe Konstruktoren von PrintWriter). Als Rückgabewert soll
die Anzahl der gefundenen Zeilen ausgegeben werden. Implementieren Sie für das
zeilenweise Suchen einen Filter.
Die Methoden encrypt und decrypt kopieren beliebige Dateien wobei diese ver- bzw.
entschlüsselt werden. Implementieren Sie jeweils einen geeigneten Filter.
Überschreiben Sie alle entsprechenden read/write Methoden. Für das ver- und
entschlüsseln können Sie den XOR Operator verwenden, welcher byteweise mit dem
Schlüssel (key) angewendet werden kann. Der key soll im Konstruktor übergeben
werden, etwa so:
public class CryptoOutputStream extends FilterOutputStream {
private OutputStream targetOut;
private int key;
public CryptoOutputStream(OutputStream targetOut, int key) {
super(targetOut);
Seite 1/2
this.targetOut = targetOut;
this.key = key;
}
@Override
public void write(int b) throws IOException {
targetOut.write(b ^ key);
}
…
Aufgabe 2: Class Spy
8 Punkte
Implementieren Sie ein Programm, dem via Kommandozeilenparameter ein
vollständiger Klassenname übergeben wird. Diese Klasse soll anschließend dynamisch
geladen werden und mit Hilfe von Reflection (java.lang.reflect) möglichst genau
untersucht werden. Geben Sie dazu alle Informationen die Sie zu dieser Klassen finden
können in der Konsole aus (Interfaces, Superklasse, Methoden und Parameter, auch
private…). Testen Sie mit verschiedenen Java Klassen, zum Beispiel
java.lang.Integer…
Abgaberichtlinien (gelten auch für zukünftige Übungen)
Bitte verwenden Sie für die Abgabe pro Übung einen JAR File, der alle Aufgaben
enthält inklusive aller für die Ausführung benötigten Dateien, auch den Quellcode.
Strukturieren Sie auch entsprechend mit passenden Packages. Jeder JAR soll im
Rootverzeichnis ein README.txt enthalten, der Auskunft gibt für welche Aufgabe
welche Klasse(n) Einstiegspunkt für Ihre Implementierung ist. Darin können auch
zsätzliche Hinweise für die korrekte Verwendung vermerkt sein. Bei nicht trivialen
Programmstellen fügen Sie entsprechend Javadoc bei. Verwenden Sie zur Erstellung
des JARs möglichst ein Export Feature Ihrer IDE (Eclipse: File – Export…), so dass
beim Korrigieren nur mehr ein analoges Import notwendig ist. Achten Sie bitte auch
darauf, dass ihre Programme kompilierbar sind.
Beachten Sie bitte die Termine für die Abgabe – siehe Angabe.
Seite 2/2
Herunterladen