Hallo zusammen. Ich habe eine ganz wichtige Aufgabe als Prüfungsvorbereitung um zu lösen. Ich bin aber leider bei einem Moment gestoppt und kann nicht weiter irgenwie gehen Ich wäre sehr dankbar, wenn mir jemand einige Vorschläge schreibt. Vielen Dank!
Die Aufgabe ist zwar groß, ich habe aber 2/3 gelöst. Ich bitte um die Hilfe mit den fettgeschribenen Aufgaben, der Rest habe ich hier auch gepostett, damit die volle Situation war
Es sollen prototypisch ein paar Grundelemente für ein objektorientiertes System (bestehend aus 3 Klassen)
zum Verwalten der Struktur eines Fotobuches erstellt werden. Das Fotobuch (Klasse Book) besteht aus
Seiten (Klasse Page), auf denen jeweils Bilder in einem Rahmen pro Bild (Klasse PictureFrame) frei
platziert werden können.
a) Definieren Sie zunächst die Klasse PictureFrame.
Diese soll als Attribute einen (unveränderlichen) Verweis auf ein Bild, die Position des Bildrahmens auf
einer Seite (ganzzahlige x- und y-Koordinate) sowie eine ganzzahlige Breite und Höhe besitzen. Sie
können davon ausgehen, dass die im Fotobuch zu platzierenden Bilder alle in einem Ordner auf dem
Computer liegen, als Verweis also ein Name in String-Form ausreichend ist.
An Methoden sind vorzusehen:
- Ein Konstruktor, der einen Bildnamen und die Koordinaten übergeben bekommt. Als Höhe und Breite
des Bildes sollen in diesem Fall Standardwerte genommen werden, die als Konstante in der Klasse
abgelegt sind.
- Eine Methode move() mit entsprechenden Parametern, die den Bildrahmen an eine andere Stelle auf
der Seite hinbewegt. (Prüfungen auf Zulässigkeit des Ortes brauchen nicht realisiert zu werden).
- Eine toString()-Methode, die den Namen des Bildes und dessen Ort berücksichtigt und natürlich
die gleichnamige Methode aus der Klasse Object überschreiben soll.
Definieren Sie nun die Klasse Page, die in einem Array (einfachheitshalber mit fester Größe 10) eine
Menge von PictureFrame-Objekten verwaltet.
Zu realisierende Methoden:
- addPicture() : Bekommt einen Bildnamen und die gewünschte Position auf der Seite übergeben
und fügt darauf aufbauend ein neues PictureFrame-Objekt in das Array ein. Wenn das Array schon
voll ist, soll der Aufruf der Methode wirkungslos bleiben.
- toString() : Überschreibt Object.toString() und listet die Bilder auf der Seite auf.
Bleibt noch die Klasse Book, von der unten schon ein kleines Fragment abgedruckt ist. Erweitern Sie
diese hinsichtlich zweier Aspekte:
- Es soll in einem Attribut eine aktuell ausgewählte Seite so verwaltet werden, dass ein Weiter- und
Zurückblättern möglich ist. Realisieren Sie die Methode zum Weiterblättern um eine Seite.
- Schreiben Sie eine Methode addPicture() mit geeigneten Parametern, die auf der aktuell
ausgewählten Seite ein neues Foto einfügt.
Die Aufgabe ist zwar groß, ich habe aber 2/3 gelöst. Ich bitte um die Hilfe mit den fettgeschribenen Aufgaben, der Rest habe ich hier auch gepostett, damit die volle Situation war
Es sollen prototypisch ein paar Grundelemente für ein objektorientiertes System (bestehend aus 3 Klassen)
zum Verwalten der Struktur eines Fotobuches erstellt werden. Das Fotobuch (Klasse Book) besteht aus
Seiten (Klasse Page), auf denen jeweils Bilder in einem Rahmen pro Bild (Klasse PictureFrame) frei
platziert werden können.
a) Definieren Sie zunächst die Klasse PictureFrame.
Diese soll als Attribute einen (unveränderlichen) Verweis auf ein Bild, die Position des Bildrahmens auf
einer Seite (ganzzahlige x- und y-Koordinate) sowie eine ganzzahlige Breite und Höhe besitzen. Sie
können davon ausgehen, dass die im Fotobuch zu platzierenden Bilder alle in einem Ordner auf dem
Computer liegen, als Verweis also ein Name in String-Form ausreichend ist.
An Methoden sind vorzusehen:
- Ein Konstruktor, der einen Bildnamen und die Koordinaten übergeben bekommt. Als Höhe und Breite
des Bildes sollen in diesem Fall Standardwerte genommen werden, die als Konstante in der Klasse
abgelegt sind.
- Eine Methode move() mit entsprechenden Parametern, die den Bildrahmen an eine andere Stelle auf
der Seite hinbewegt. (Prüfungen auf Zulässigkeit des Ortes brauchen nicht realisiert zu werden).
- Eine toString()-Methode, die den Namen des Bildes und dessen Ort berücksichtigt und natürlich
die gleichnamige Methode aus der Klasse Object überschreiben soll.
Java:
public class PictureFrame {
private int positionX;
private int positionY;
private final int BREITE=400;
private final int HOEHE=400;
private String name;
public PictureFrame(String name,int x,int y){
this.name=name;
this.positionX=x;
this.positionY=y;
}
public void move(int x, int y) {
positionX = x;
positionY = y;
}
@Override
public String toString() {
return "PictureFrame{" +
"positionX=" + positionX +
", positionY=" + positionY +
", name='" + name + '\'' +
'}';
}
}
Definieren Sie nun die Klasse Page, die in einem Array (einfachheitshalber mit fester Größe 10) eine
Menge von PictureFrame-Objekten verwaltet.
Zu realisierende Methoden:
- addPicture() : Bekommt einen Bildnamen und die gewünschte Position auf der Seite übergeben
und fügt darauf aufbauend ein neues PictureFrame-Objekt in das Array ein. Wenn das Array schon
voll ist, soll der Aufruf der Methode wirkungslos bleiben.
- toString() : Überschreibt Object.toString() und listet die Bilder auf der Seite auf.
Java:
public class Page {
private PictureFrame[] pictures=new PictureFrame[10];
public PictureFrame[] addPicture(String name, int x, int y){
for(int i=0;i<pictures.length;i++){
pictures=new PictureFrame(name, x, y);
}
return pictures;
}
@Override
public String toString() {
return "Page{" +
"pictures=" + Arrays.toString(pictures) +
'}';
}
}
Bleibt noch die Klasse Book, von der unten schon ein kleines Fragment abgedruckt ist. Erweitern Sie
diese hinsichtlich zweier Aspekte:
- Es soll in einem Attribut eine aktuell ausgewählte Seite so verwaltet werden, dass ein Weiter- und
Zurückblättern möglich ist. Realisieren Sie die Methode zum Weiterblättern um eine Seite.
- Schreiben Sie eine Methode addPicture() mit geeigneten Parametern, die auf der aktuell
ausgewählten Seite ein neues Foto einfügt.
Java:
public class Book {
private Page[] pages;
public Book(int nofPages) {
pages = new Page[nofPages];
for (int i=0; i<nofPages; i++) {
pages = new Page();
}
}
public Page weiterblaettern(){
}
}
public void addPicture(String name, int x, int y, Page seite){
}
Zuletzt bearbeitet: