Freitag, 4. März 2011

 

Java Übungen und Aufgabe (POS1: 2A, 2C)

Klassen, Objekte

Erzeugen Sie eine Klasse SomeMaths, welche eine statische Konstante PI enthält sowie eine statische Methode double getSquare(double x), welche das Quadrat von x liefert.
Erstellen Sie weiters eine Klasse Circle, welche eine Kreis simuliert. Circle hat ein Attribut radius sowie die Methoden getCircumference(), welche den Umfang liefert, und getArea(), welche die Fläche berechnet. Die Methoden sollen sich der Konstante PI und der Methode getSquare() von SomeMaths bedienen.
Eine dritte Klasse CircleExercise soll im main() drei Kreise vom Typ Circle erzeugen und jeweils den Radius, den Umfang und die Fläche ausgeben.
Das UML-Diagramm sieht etwa so aus:


Arrays

Erzeugen Sie eine Klasse DreieckArray, welche ein privates zweidimensionales Array feld für Integers enthält. Dieses Feld soll "dreieckig" sein und mit folgenden Werten initialisiert werden:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
Die Methoden sind public und sollen folgendes tun:
void create(int zeilen, int spalten) soll ein neues Feld mit den gegebenen Zeilen und Spalten erzeugen (rechteckig).
int[][] getArray() soll das Feld zurückliefern.
int[] summen() soll ein eindimensionales Feld mit den Zeilensummen liefern.
boolean set(int zeile, int spalte, int wert) soll den Wert an der gegebenen Stelle im Feld feld setzen und bei erfolg true zurückliefern. Bei ungültigen Indizes soll false zurückgeliefert werden.

Schreiben Sie eine Klasse TestDreieckArray, in der zwei Objekte von DreieckArray in der Methode main() angelegt werden. Machen Sie zum Testen passende Aufrufe der Methoden (z.B. gültige und ungültige set() usw.).

Streams, Strings

Schreiben Sie eine Klasse ReadFile, welche eine eine auf der Kommandozeile angegebene Datei öffnet und in einen String einliest. Verwenden Sie dazu drei Methoden String liesString(InputStream fileInputStream), String  liesStringBuffer(InputStream fileInputStream) und String liesStringBuilder(InputStream fileInputStream) und messen Sie die Zeiten, die mit den einzelnen Methoden benötigt werden um die Datei zu lesen.
Von der Datei soll jeweils mit read() ein Zeichen gelesen werden. Die Methode liesString() hängt das gelesene Zeichen jeweils an einen String an, die Methode liesStringBuffer() verwendet einen StringBuffer und liesStringBuilder() verwendet einen StringBuilder. Das gelesene Zeichen wird dann immer mit append() an den StringBuffer bzw. StringBuilder angehängt.
Testen Sie mit unterschiedlich großen Dateien (kleine, mittlere, große, ganz große). Sie werden unterschiedliche Zeiten messen bei den verschiedenen Methoden. Erklären Sie die Unterschiede!
Verwenden Sie System.currentTimeMillis() (liefert long), um die aktuelle Zeit in ms zu erhalten.

Random, Calendar, Kommandozeile, Streams

Es sollen Testdaten der Form
Datum Von-Zeit Bis-Zeit
Datum Von-Zeit Bis-Zeit
...
erzeugt werden. Wobei ein Datum die Form JJJJ-MM-TT und Von-Zeit und Bis-Zeit die Form HH:MM haben soll. Weiters sollen folgende Bedingungen erfüllt sein:

Beispiel:
2011-03-04 10:24 10:45
2011-03-04 11:33 12:56
2011-03-05 12:33 17:23

Das Programm soll folgendermaßen aufgerufen werden:
java CalenderTest [-h] [startdatum] [startzeit] [datei] anzahl
   -h         ... Ausgabe dieser Hilfe und Ende
   startdatum ... JJJJ-MM-TT (optional)
   startzeit  ... HH:MM (optional)
   datei      ... Name der Ausgabedatei (optional)
   anzahl     ... Anzahl der zu erzeugenden Zeilen
Wird kein startdatum angegeben, so ist der heutige Tag als Startwert zu verwenden.
Wird kein startzeit angegeben, so ist die aktuelle Uhrzeit als Startwert zu verwenden. Diese Startwerte sind in der ersten Ausgabezeile zu sehen.
Wenn kein Dateiname datei angegeben, so ist die Standardausgabe zu verwenden.
Die Anzahl der zu erzeugenden Zeilen muss mindestens 1 sein!

Fehlermeldungen sind auf System.err auszugeben.

Nennen Sie das Projekt calendertest (klasse-name-calendertest).

Labels: , ,


Kommentare:

Kommentar veröffentlichen

Abonnieren Kommentare zum Post [Atom]





<< Startseite

This page is powered by Blogger. Isn't yours?

Abonnieren Posts [Atom]