gute Nacht liebe Leut,
Ich hab mal wieder ein exquisites Problemchen.
Ich habe eine Aufgabe in einer Altklausur gefunden bei der es um Apapter Design Muster geht.
man bekommt eine klasse vorgegeben die ein private Attribut hat:
und den Konstrucktor
um ein Adapter zu verwenden schreibt man dann eine Klasse deren Konstruktor ein Objekt vom Typ der vorgegebenen Klasse braucht.
Jetzt ist jedoch für jeden ersichtlich,dass der Konstrucktor so wie er ist eine NullPointerExeption verursacht,
für den Rest der Aufgabe muss ich jedoch ein mit werten befülltes int[] z haben, da ich ja die methoden die
int[]z verwenden mit meinem adapter benutzten muss um andere Funktionen zu erfüllen.
die Frage also wie kann ich Im Adapter dafür sorgen, dass ich keine NullPointerExeption bekomme und int[] z
für den Rest der Implementierung benutzbar ist.
Wenn ihr zu dem Schluss kommt ohne z private zu machen oder sonst etwas an Struc zu ändern gehts nich wäre ich auch glücklich denn das würde heißen so komische Aufgaben wo es eigentlich um Adapter geht und dann ist das eigentlich Schwere sowas komisches sind doch nicht Absicht vom Prof ^^.
hier ist die Aufgabe nochmal im ganzen und mein Adapter sowie die die Testklasse
Ich sag einfach schonmal danke im Voraus^^
Der Adapter
Test Klasse:
Ich hab mal wieder ein exquisites Problemchen.
Ich habe eine Aufgabe in einer Altklausur gefunden bei der es um Apapter Design Muster geht.
man bekommt eine klasse vorgegeben die ein private Attribut hat:
Java:
private int[] z;
Java:
public Struc(int[] a) {
for (int i=0; i<a.length; i++) z[i]=a[i];
}
um ein Adapter zu verwenden schreibt man dann eine Klasse deren Konstruktor ein Objekt vom Typ der vorgegebenen Klasse braucht.
Jetzt ist jedoch für jeden ersichtlich,dass der Konstrucktor so wie er ist eine NullPointerExeption verursacht,
für den Rest der Aufgabe muss ich jedoch ein mit werten befülltes int[] z haben, da ich ja die methoden die
int[]z verwenden mit meinem adapter benutzten muss um andere Funktionen zu erfüllen.
die Frage also wie kann ich Im Adapter dafür sorgen, dass ich keine NullPointerExeption bekomme und int[] z
für den Rest der Implementierung benutzbar ist.
Wenn ihr zu dem Schluss kommt ohne z private zu machen oder sonst etwas an Struc zu ändern gehts nich wäre ich auch glücklich denn das würde heißen so komische Aufgaben wo es eigentlich um Adapter geht und dann ist das eigentlich Schwere sowas komisches sind doch nicht Absicht vom Prof ^^.
hier ist die Aufgabe nochmal im ganzen und mein Adapter sowie die die Testklasse
Ich sag einfach schonmal danke im Voraus^^
Code:
Aufgabe 10
[12 Punkte] Implementieren Sie einen Klassenadapter, der das vorgegebene Interface Seq auf
der Basis der vorgegebenen Klasse Struc realisiert.
Der Adapter soll das einmalige Durchlaufen einer Folge von int-Werten ermöglicht:
• Die Methode hasNext() liefert true, falls die Folge einen noch nicht gelesenen
int-Wert enthält, sonst false.
• Die Methode getNext() liefert den nächsten, noch nicht gelesenen int-Wert der
Folge. Steht ein solcher Wert nicht zur Verfügung, ist das Ergebnis 0.
Java:
public interface Seq {
boolean hasNext();
int getNext();
}
public class Struc {
private int[] z;
public Struc(int[] a) {
for (int i=0; i<a.length; i++) z[i]=a[i];
}
public int size() {
return z.length;
}
public int get(int i) throws EmptyException {
if (i>=0|i<size()) {
return z[i] ;
} else throw new EmptyException() ;
}
}
Der Adapter
Java:
public class Klassenadapter implements Seq
{
static int i= -1; Struc Str;
public Klassenadapter(Struc Str){
this.Str= Str;
Str.z= new int[1];
}
public int getNext(){
try{ i++; return Str.get(i);
}
catch(EmptyException e){
return 0;
}
catch(ArrayIndexOutOfBoundsException e){
return 0;
}
finally{}
}
public boolean hasNext(){
try{ Str.get(i+1); return true;
}
catch(EmptyException e){
return true;
}
catch(ArrayIndexOutOfBoundsException e){
return false;
}
}
}
Java:
public class Test
{
public static void Test(){
int[] a={1,5,6,8,7,89,5};
Struc Stru =new Struc(a);
Klassenadapter ad= new Klassenadapter(Stru);
System.out.println(ad.hasNext()+" next "+ad.getNext());
System.out.println(ad.hasNext()+" next "+ad.getNext());
System.out.println(ad.hasNext()+" next "+ad.getNext());
System.out.println(ad.hasNext()+" next "+ad.getNext());
System.out.println(ad.hasNext()+" next "+ad.getNext());
System.out.println(ad.hasNext()+" next "+ad.getNext());
System.out.println(ad.hasNext()+" next "+ad.getNext());
System.out.println(ad.hasNext()+" next "+ad.getNext());
System.out.println(ad.hasNext()+" next "+ad.getNext());
System.out.println(ad.hasNext()+" next "+ad.getNext());
System.out.println(ad.hasNext()+" next "+ad.getNext());
}
}