Sie sind auf Seite 1von 3

UE Einführung in die strukturierte und objektorientierte Programmierung WS 2016/17

AAU Klagenfurt, Institute für Informatik

Übungsblatt 4

Schreiben Sie jeweils ein Programm mit folgender Aufgabenstellung.

2-dimensionale Arrays

Deklarieren Sie die folgenden 2-dimensionalen Arrays, erstellen Sie diese in der vorgegebenen Größe und
füllen Sie sie mit von ihnen gewählten Werten.
 int-Array a: 3x3 (Zeilen x Spalten)
 boolen-Array b: 7x2
 char-Array c: 3x8
 int-Array d mit unterschiedlichen Längen: 1. Zeile 4 Elemente, 2. Zeile 3 Elemente, 3. Zeile 2
Elemente, 4. Zeile 1 Element

Schreiben Sie eine Methode print2DArrayToScreen, die ein übergebenes 2D-Array auf dem
Bildschirm ausgibt und rufen Sie diese für die Beispiele in Aufgabe 1 auf.
Hinweis: Zur Ausgabe der nächsten Beispiele am Bildschirm können Sie dann einfach diese Methode
print2DArrayToScreen aufrufen.

Schreiben Sie eine Methode transpose, die eine Matrix (2D-Array) übergeben bekommt und diese
transponiert als neue Matrix zurückgibt.
Beispiel:
1 2 3 wird zu 1 4 7
4 5 6 2 5 8
7 8 9 3 6 9

Schreiben Sie eine Methode int[][] create2DArray(), die für ein übergebenes m und n (m Zeilen,
n Spalten) ein 2-dimensionales int-Array erstellt, mit Zufallswerten von 1 … z befüllt und dann zurückgibt.
Schreiben Sie für die Berechnung des Zufallswerts eine eigene Methode int randomValue(int z),
die Sie dann auch in den nachfolgenden Beispielen nutzen können.
Testen Sie ihr Programm mit m =12, n=2, z=100 sowie m =2, n=12, z=900
Hinweis: Ein Zufallswert kann durch folgenden Ausdruck erzeugt werden:
(int)(Math.random() * z + 1)

Erzeugen Sie ein Schachbrett (maximale Dimension 26) und schreiben Sie die Feldbezeichnungen in ein
2-dimensionales Array vom Typ String.

Beispiel: Schachbrett der Dimension 8


UE Einführung in die strukturierte und objektorientierte Programmierung WS 2016/17
AAU Klagenfurt, Institute für Informatik
A8 B8 C8 D8 E8 F8 G8 H8
A7 B7 C7 D7 E7 F7 G7 H7

A1 B1 C1 D1 E1 F1 G1 H1

Schreiben Sie eine Methode createHourglass die für ein übergebenes n ein 2-dimensionales Array
erstellt, welches eine Sanduhr enthält. Das 2D-Array soll vom Typ char sein. Die Variable n gibt die Größe
der Sanduhr an.
n=3 n=5
* * * * * * * *
* * * *
* * * *
* * *
* * * * *

Überschreiben Sie in einem 7x7 int-Array mit Zufallszahlen die Werte einer beliebigen Zeile sowie eine
beliebigen Spalte mit 0.
Hinweis: Ein Zufallswert kann durch folgenden Ausdruck erzeugt werden:
(int)(Math.random() * z + 1)

Ermitteln Sie 1000 mal 6 unterschiedliche Zufallszahlen von 1-49 und schreiben Sie diese in ein
zweidimensionales int-Array lotto[1000][6].

Erzeugen Sie ein Array mit einer Rechentabelle der nachfolgenden Form:
1 2 3 4 5 6 7 8 9 10
2 4 6 8 10 12 14 16 18 20
3 6 9 12 15 18 21 24 27 30
4 8 12 16 20 24 28 32 36 40
5 10 15 20 25 30 35 40 45 50
6 12 18 24 30 36 42 48 54 60
7 14 21 28 35 42 49 56 63 70
8 16 24 32 40 48 56 64 72 80
9 18 27 36 45 54 63 72 81 90
10 20 30 40 50 60 70 80 90 100
UE Einführung in die strukturierte und objektorientierte Programmierung WS 2016/17
AAU Klagenfurt, Institute für Informatik

Einfache Klassen
Aufgabe 10:
Schreiben Sie eine Klasse Person. Diese Klasse soll den Namen (String) und das Alter (int) einer
Person speichern. Sorgen Sie dafür, dass die beiden Attribute von außerhalb schreib- und lesbar sind.
Erzeugen Sie in einer separaten Java Klasse/Applikation (z.B., PersonTest) eine Instanz Ihrer Person-
Klassen. Setzen Sie mithilfe der “.“-Notation Attributwerte für das erzeugte Objekt und geben Sie diese
anschließend auf der Konsole aus.
Aufgabe 11:
Erzeugen Sie eine Kopie Ihrer Person Klasse aus Aufgabe 10. Verändern Sie die Klasse wie folgt, sodass
ein direktes Zugreifen (“von außerhalb“) auf die Attribute nicht mehr möglich ist. Des Weiteren ergänzen
Sie die Klasse um einen Konstruktor, welcher den Namen und das Alter übergeben bekommt. Ergänzen
Sie die Klasse, sodass eine Nachträgliche Änderung der Attribute über Getter und Setter Methoden
möglich ist. Sorgen Sie dafür, dass nur sinnvolle Werte übergeben werden können (z.B. Alter >= 0). Testen
Sie ihre Klasse.
Aufgabe 12:
Erzeugen Sie eine Kopie Ihrer Person Klasse aus Aufgabe 11. Ergänzen Sie die Klasse um einen
Konstruktor der anstatt des Alters das Geburtsdatum (java.time.LocalDate) übergeben bekommt
und das Alter der Person berechnet und anschließend speichert. Testen Sie ihre Klasse.
Hinweis: Um ein Objekt LocalDate zu erzeugen, dass z.B. den 01.08.2014 repräsentiert nutzen Sie
folgenden Code: LocalDate firstAug2014 = LocalDate.of(2014,8,1);. Für mehr
Information siehe: https://docs.oracle.com/javase/8/docs/api/java/time/LocalDateTime.html.
Aufgabe 13:
Erzeugen Sie eine Kopie Ihrer Person Klasse aus Aufgabe 12. Versuchen Sie ein Person Objekt mit
Hilfe folgendes Statements auf der Konsole auszugeben: System.out.println(person);.
Erklären Sie die Ausgabe und lösen Sie das “Problem“.
Aufgabe 14:
Erzeugen Sie eine Kopie Ihrer Person Klasse aus Aufgabe 13. Finden Sie eine Lösung für folgendes
Problem: Ihre Anwendung erzeugt eine Vielzahl von Person Objekten. Sie möchten zu jeder Zeit wissen
wie viele Person Objekte bereits erzeugt wurden. Sorgen Sie dafür, dass diese Information von der
Person Klasse verwaltet wird. Testen Sie Ihre Lösung.

Aufgabe 15:
Erzeugen Sie eine Kopie Ihrer Person Klasse aus Aufgabe 14. Eine Person kann eine Vielzahl von
Freunden haben. Fügen Sie deshalb eine “AddFriend” Methode zu der Klasse Person hinzu. Sollte eine
Person Freunde haben sollte die Ausgabe des Statements System.out.println(person) wie
folgt formatiert sein:
Peter (32) has 3 friends: Klaus(21), Gert(45), and Alfred(36).
Hinweis: Um nicht weitere komplexe Datenstrukturen von Java kennen zu lernen, gehen Sie davon aus,
dass eine Person maximal 10 Freunde haben kann und verwenden Sie für diese Speicherung der Freunde
ein Array vom Typ Person.