Beruflich Dokumente
Kultur Dokumente
Praktikum 7
Klassen, Objekte, Instanzvariablen und Methoden
Allgemeine Hinweise
Lösungen der Aufgaben dieses Aufgabenblatts müssen über die Lernplattform abgegeben
werden, um Punkte für die Klausurzulassung zu erhalten.
Da die Lösungen automatisch überprüft werden, müssen die Spezifikationen und die
Ausgaben der Lösungen genauso eingehalten werden wie sie auf diesem Aufgabenblatt
definiert sind. Hierfür lassen sich die auf der Lernplattform verfügbaren Programmier-
Templates (Projekte) als Vorlage nutzen. Für die Abgabe laden Sie nur die Dateien hoch, die
die einzelnen Klassen enthalten, bitte nicht das gesamte Programmier-Template hochladen.
Es werden nur die Lösungen der Aufgaben bewertet, zu denen eine Punktzahl angegeben ist.
Für Aufgaben oder Aufgabenteile, die als Zusatzaufgaben gekennzeichnet sind, werden keine
Punkte vergeben. Die Bearbeitung ist dennoch sinnvoll für eine Vertiefung der Inhalt. Falls
Sie diese Aufgaben abgeben möchten, nutzen Sie hierfür separate Klassen und Dateien.
Details zu der Klausurzulassung, dem Ablauf des Praktikums und den Abgaben können dem
Leitfaden entnommen werden, der sich auf der Lernplattform befindet. Dort befinden sich
auch der Stundensonderplan und der Semesterterminplan.
Hinweis: Dies ist die Basis für die Verwaltung von Listen von (komplexen) Objekten und
einfachen Datenbanken.
a) Öffnen Sie mit Visual Studio Code (VSC) mit Java Extensions das Projekt Objekte, das
sich in dem Zip-Archiv „Objekte.zip“ auf der Lernplattform befindet. Öffnen Sie die Java-
Datei Datensaetze.java in dem Java-Paket aufgaben/_01datensaetze.
b) Legen Sie in dem Java-Paket aufgaben/_01datensaetze die neue Datei mit dem
Namen Person.java an. Definieren Sie in dieser Datei die Klasse Person. Definieren
Sie innerhalb dieser Klasse die folgenden privaten Instanzvariablen des angegebenen
Typs:
• name vom Typ String
• id vom Typ int
• wohnort vom Typ String
Prof. Dr. Lehn, Prof. Dr. Igel, Prof. Dr. Menküc, Prof. Dr. Wöhrle
Programmierung I
Um Zugriff auf diese privaten Instanzvariablen zu erhalten, definieren Sie für jede
Instanzvariable eine Getter- und eine Setter-Methode mit dem nach Java-Konventionen
üblichen Namen und der üblichen Funktion.
Hinweis: Die übliche Signatur für den Zugriff auf Instanzvariable wohnort sieht
folgendermaßen aus.
c) Definieren Sie in der main-Methode zwei lokale Variablen person1 und person2
vom Typ Person und initialisieren Sie diese Variablen jeweils mit einem Objekt vom Typ
Person.
Lesen Sie unter Nutzung der Scanner-Klasse in der Reihenfolge name, id,
wohnort die Daten für ein Objekt von der Kommandozeile ein. Speichern Sie diese
Daten in dem Objekt person1. Wiederholen Sie diesen Vorgang für person2.
Geben Sie die Inhalte der beiden Objekte auf der Kommandozeile aus.
Lesen Sie nun die Daten für einen neuen wohnort von der Kommandozeile ein.
Speichern Sie diesen neuen Wohnort in dem Objekt person1 (Änderung des Wohnorts
einer Person).
Geben Sie dann die Inhalte der beiden Objekte auf der Kommandozeile aus.
Insgesamt soll die Ausgabe für Beispieldaten wie folgt aussehen. Erzeugen Sie die
zusätzlichen Informationen für die Ein- und Ausgabe genauso wie in diesem Beispiel
angegeben ist.
Daten ausgeben
Person 1
name = Agathe
id = 42
wohnort = Norddeich
Person 2
Prof. Dr. Lehn, Prof. Dr. Igel, Prof. Dr. Menküc, Prof. Dr. Wöhrle
Programmierung I
name = Henri
id = 86
wohnort = Bochum
Daten ändern
name = Agathe
Neuer wohnort: Dortmund
Daten ausgeben
Person 1
name = Agathe
id = 42
wohnort = Dortmund
Person 2
name = Henri
id = 86
wohnort = Bochum
d) Zusatzaufgabe (0 Punkte): Schreiben Sie unter Nutzung einer Schleife ein interaktives
Programm, das die Auswahl eines der beiden Datensätze erlaubt. Im Anschluss soll
auswählbar sein, welcher Dateneintrag in dem ausgewählten Datensatz geändert werden
soll. Dieser wird eingelesen und in dem entsprechenden Objekt gespeichert. Die
interaktive Auswahl soll die Ausgabe aller Inhalte der beiden Objekte enthalten.
e) Zusatzaufgabe (0 Punkte): Erweitern Sie Ihr Programm so, dass eine vorgegebene
größere Anzahl von Objekten des Typs Person in einem Array gespeichert werden. Die
Daten werden interaktiv eingelesen und können entsprechen geändert, gelöscht oder
angezeigt werden.
a) Öffnen Sie mit Visual Studio Code (VSC) mit Java Extensions das Projekt Objekte, das
sich in dem Zip-Archiv „Objekte.zip“ auf der Lernplattform befindet. Öffnen Sie die Java-
Datei AmpelSteuerung.java in dem Java-Paket
aufgaben/_02ampel_steuerung.
b) Legen Sie in diesem Paket die neue Datei mit dem Namen Ampel.java an. Definieren
Sie in dieser Datei die Klasse Ampel. Definieren Sie innerhalb dieser Klasse die folgenden
öffentlichen konstanten (final) Klassenvariablen (static) des angegebenen Typs wie
folgt:
public static final int ROT = 0;
public static final int ROTGELB = 1;
public static final int GRUEN = 2;
Prof. Dr. Lehn, Prof. Dr. Igel, Prof. Dr. Menküc, Prof. Dr. Wöhrle
Programmierung I
Diese dienen der besseren Zuordnung der Zustände (Farben) der Ampel zu ihrer
Bedeutung.
Definieren Sie innerhalb dieser Klasse die private Instanzvariable aktiveFarbe vom
Typ int und initialisieren Sie diese mit dem (konstanten) Wert ROT.
Um Zugriff auf diese private Instanzvariable zu erhalten, definieren Sie hierfür eine
Getter- und eine Setter-Methode mit dem nach Java-Konventionen üblichen Namen und
der üblichen Funktion (siehe Hinweis in der Aufgabe oben).
c) Definieren Sie in der main-Methode eine lokale Variable ampel vom Typ Ampel und
initialisieren Sie diese Variable mit einem Objekt vom Typ Ampel.
Implementieren Sie eine Schleife, die genau neun (9) Mal durchläuft und bei jedem
Durchlauf den Zustand (die Farbe) der Ampel auf der Kommandozeile ausgibt und im
Anschluss den Zustand (die Farbe) der Ampel weiterschaltet. Die Ausgabe soll
folgendermaßen aussehen.
ROT
ROTGELB
GRUEN
GELB
ROT
ROTGELB
GRUEN
GELB
ROT
d) Zusatzaufgabe (0 Punkte): Erweitern Sie Ihr Programm um eine weitere Ampel. Der
Zustand der Ampeln soll innerhalb einer Schleife jeweils weitergeschaltet werden, so
dass eine Ampel grün ist wenn die andere Ampel rot ist. Die Ausgabe soll
folgendermaßen aussehen.
Prof. Dr. Lehn, Prof. Dr. Igel, Prof. Dr. Menküc, Prof. Dr. Wöhrle
Programmierung I
f) Zusatzaufgabe (0 Punkte): Erweitern Sie Ihr Programm, so dass anstatt einer festen
Anzahl von Schleifendurchläufen der Benutzer bei jedem Zustandswechsel (Farbwechsel
einer Ampel) entscheiden kann, ob weitergeschaltet oder das Programm abgebrochen
wird.
a) Öffnen Sie mit Visual Studio Code (VSC) mit Java Extensions das Projekt Objekte, das
sich in dem Zip-Archiv „Methoden.zip“ auf der Lernplattform befindet. Öffnen Sie die
Java-Datei Weihnachtsbaum.java in dem Java-Paket
aufgaben/_03weihnachtsbaum.
Prof. Dr. Lehn, Prof. Dr. Igel, Prof. Dr. Menküc, Prof. Dr. Wöhrle
Programmierung I
Hierbei definiert der Parameter hohe die Anzahl der Zeilen, aus dem ein
Weihnachtsbaum besteht. Als Ergebnis liefert die Methode ein StringBuilder-
Objekt zurück, das die Zeichenkette des Weihnachtsbaums enthält.
Alternativ kann auch eine Methode mit der folgenden Signatur entwickelt werden, die
ein String-Objekt zurückliefert, das die Zeichenkette des Weihnachtsbaums enthält.
Prof. Dr. Lehn, Prof. Dr. Igel, Prof. Dr. Menküc, Prof. Dr. Wöhrle
Programmierung I
Hinweise:
• Bauen Sie den String (in dem StringBuilder-Objekt) zur Darstellung des
Baumes Zeile für Zeile auf. Nutzen Sie geeignete Schleifenkonstrukte. Da die
Anzahl der Zeilen bekannt ist und sich daraus ableiten lässt, wieviele Zeichen in
jeder Zeile ausgegeben werden müssen, können am einfachsten zwei ineinander
geschachtelte for-Schleifen genutzt werden.
• Informationen über die Klasse StringBuilder finden sich in der Java-
Dokumentation und den einschlägigen Foren.
• Um Ihre Implementierung zu testen, kann das StringBuilder-Objekt (mit
dem Ergebnis) durch die Methode System.out.println auf der
Kommandozeile ausgeben werden.
• Der Weihnachtsbaum soll sich für (fast) beliebige Höhen hoehe generieren
lassen.
• Wie oben angegeben, kann anstelle der Klasse StringBuilder die Klasse
String verwendet werden.
Prof. Dr. Lehn, Prof. Dr. Igel, Prof. Dr. Menküc, Prof. Dr. Wöhrle