OO Programmierung

Neue Frage »

Auf diesen Beitrag antworten »
neuling96 OO Programmierung

3 codes vorgegeben :


code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
public class Grinch {
	
	public static Haus[] stadt;
	
	private Geschenk[] geklauteGeschenke = new Geschenk[0];
	
	private int restzeit;

public Grinch
public void aufTourGehen() {
		// hier anfangen, die Häuser auszuräumen 
		
	}

	public static void main(String[] args) {
		// mit dieser Methode können Sie nachher Ihre Implementierung testen:
		test();
	}
	
	public static void test() {
		stadt = new Haus[12];
		for(int i=0;i<stadt.length;i++) {
			stadt[i] = new Haus();
		}
		
		Grinch grinch = new Grinch();
		
		grinch.aufTourGehen();
		grinch.inventur();
	}

}


code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
import java.util.Random;


public class Haus {
	
	public Geschenk[] baum; // Geschenke unter dem Baum
	public Geschenk[] schrank; // Geschenke im Schrank
	public Geschenk[] tisch; // Geschenke auf dem Tisch
	
	/**
	 * Konstruktor für Haus:
	 * Erzeugt ein neues Haus mit zufällig verteilten Geschenken.
	 */
	public Haus() {
		Random r = new Random();
		
		this.baum = new Geschenk[r.nextInt(31)];
		for(int i=0;i<this.baum.length;i++) {
			this.baum[i] = new Geschenk();
		}
		
		this.schrank = new Geschenk[r.nextInt(31)];
		for(int i=0;i<this.schrank.length;i++) {
			this.schrank[i] = new Geschenk();
		}

		this.tisch = new Geschenk[r.nextInt(31)];
		for(int i=0;i<this.tisch.length;i++) {
			this.tisch[i] = new Geschenk();
		}
	}

}


code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
import java.util.Random;


public class Geschenk {
	private int [] baum;
   private int []  baum
	/**
	 * Das Gewicht des Geschenks in Gramm
	 */
	public int gewicht;
	
	/**
	 * Konstruktor für Geschenk:
	 * Erzeugt ein neues Geschenk mit zufällig gewählter Größe
	 */
	public Geschenk() {
		Random r = new Random();
		this.gewicht = r.nextInt(901) + 100; // Zufallszahl zwischen 100 und 1000
	}

}

 
Auf diesen Beitrag antworten »
neuling96

upps im ersten code war die zeile
private int restzeit; nicht vorgegeben


a) Es ist der 23. Dezember und der Grinch m ochte loslegen. Er weiß, dass er nur bis zum 31. Dezember
Zeit hat, denn da ist er zu einer Neujahrsparty auf Gran Canaria eingeladen. Der Grinch arbeitet nur 10 Stunden jede Nacht.
Erweitern Sie die Klasse Grinch um eine Variable
restzeit
, die die verbleibenden Stunden als Ganzzahl halt. Fur jeden erzeugten Grinch soll die Restzeit mit 80 Stunden initialisiert werden. Es wird nicht zwischen einzelnen Nachten unterschieden
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
public class Grinch {
	
	public static Haus[] stadt;
	
	private Geschenk[] geklauteGeschenke = new Geschenk[0];
	
	private int restzeit;
Auf diesen Beitrag antworten »
neuling96

public class Grinch {

public static Haus[] stadt;

private Geschenk[] geklauteGeschenke = new Geschenk[0];

private int restzeit=80;



oder

public class Grinch {

public static Haus[] stadt;

private Geschenk[] geklauteGeschenke = new Geschenk[0];

private int restzeit;

public Grinch(Haus[] stadt,Geschenk[] geklauteGeschenke, int restzeit){
this.restzeit=80;
Auf diesen Beitrag antworten »
neuling96

Erweitern Sie die Klasse
Haus um eine Methode ausraeumen( , die alle Geschenke aus dem Hau entfernt (aus den Arraysbaum
,schrank und tisch ) und gesammelt in einem neuen Array zuruck gibt. Der Zugriff sollte auf folgende Weise moglich sein
Haus h = new Haus();
Geschenk[] geschenke = h.ausraeumen()

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:

public static Geschenk []  ausraeumen(Geschenk[] baum,Geschenk[] schrank,Geschenk[] tisch){
 Geschenk [] löschen= {};
Geschenk[] baum=Geschenk [] löschen;
Geschenk[] schrank=Geschenk[] baum;
Geschenk[] tisch=Geschenk[] schrank;
Geschenk [] klau = new Geschenk[baum.length+schrank.length+ tisch.length]
for (int i=0; i<baum.length;i++){
Geschenk [i] klau=Geschenk[i] baum;
}
for (inty= 0; y<schrank.length;y++){
Geschenk [y+baum.length] klau=Geschenk[y] schrank
}
for (int z= 0; y<tisch.length;z++){
Geschenk [z+tisch.length] klau=Geschenk[z] schrank
}
return klau;
}
 
Auf diesen Beitrag antworten »
neuling96

oh man o man... ich hoffe das passt besser unglücklich

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:

public static Geschenk []  ausraeumen(Geschenk[] baum,Geschenk[] schrank,Geschenk[] tisch){
 Geschenk [] löschen= new Geschenk  [0];
Geschenk [] löschen= {};
baum= löschen;
schrank=baum;
tisch=schrank;
Geschenk [] klau = new Geschenk[baum.length+schrank.length+ tisch.length]
for (int i=0; i<baum.length;i++){
 klau [i]= baum[i];
}
for (inty= 0; y<schrank.length;y++){
klau [y+baum.length] = schrank[y]
}
for (int z= 0; y<tisch.length;z++){
 klau [z+schrank.length+tisch.length]= schrank[z]
}
return klau;
}
Auf diesen Beitrag antworten »
neuling96

(c) Geschenke klauen kostet Zeit. Fur¨ alle angefangenen zehn Geschenke pro Haus veranschlagt der Grinch eine Stunde. Wenn also das ausraeumen() eines Hauses 54 Geschenke ergibt, hat der Grinch 6 Stunden in diesem Haus verbracht. Die Hauser¨ der Stadt hat sich der Grinch alle in seiner Klassenvariable stadt gemerkt.
Erweitern Sie die Methode aufTourGehen() in der Klasse Grinch so, dass der Grinch nach und nach die Hauser¨ der Stadt ablauft¨ und jedes Haus ausraumt.¨ Die erbeuteten Geschenke sichert sich der Grinch in seiner Variable geklauteGeschenke. Eine Methode, zwei Arrays zu kombinieren, haben Sie in der Vorlesung schon kennengelernt.
Achten Sie darauf, dass der Grinch sein Zeitkonto nicht uberschreitet.¨ Mit jedem besuchten Haus soll das Zeitkonto um die passende Anzahl Stunden schrumpfen. Ist die Zeit abgelaufen, bricht der Grinch seinen Diebeszug ab. Die Geschenke des zuletzt besuchten Hauses, wahrend¨ dem die Zeituberschreitung¨ passiert, sollen dabei verworfen werden.

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
public void aufTourGehen() {
int sum=0;
for (int h=0; h< stadt.length; h++)	{
   Haus h = new Haus();
   y= h.ausraeumen();
   sum+=y.length;
}
Geschenk[]geklauteGeschenke= new Geschenk [sum];
int a=80;
sum=0;
for (int h=0; h< stadt.length; h++){
 Haus h = new Haus();
 y= h.ausraeumen();
 a-=y.length/10;

if(a>=0){
for int i=0; i<y.length ; i++){
Geschenk[i+sum] geschenke = y[i]
        sum+=y.length
  }
 }
}
Auf diesen Beitrag antworten »
eulerscheZahl

Ich fang' mal von oben an.
Die Methode test hast du selbst geschrieben, oder? Es macht nämlich keinen Sinn, eine Stadt zu erzeugen, wenn der Grinch sie nicht kennt (sie muss ihm als Funktionsargument übergeben werden).

zu a)
die Initialisiertung der Restzeit ist auf beide Wege möglich. Warum du dem Konstruktor des Grinchs geklauteGeschenke übergibst, erschließt sich mir nicht (die will er ja erst noch klauen, hat sie nicht schon zu Beginn).
zu b)
Sieht dir nochmal den Beispielaufruf an. ausraeumen soll Geschenke liefern, keine entgegennehmen. Und wenn du die Geschenke aus dem Haus löschst, bevor du sie zu den geklauten kopierst, dann sind sie unwiederbringlich weg.
zu c)
wieso wird hir eine neue Stadt angelegt, der Grinch hat doch schon eine, oder nicht?
mit a=80 machst du die Variable restzeit überflüssig. Und was ist y für ein Datentyp? Ein Haus mit 9 Geschenken kann der Grinch ohne Zeitverlust leerräumen.
Auf diesen Beitrag antworten »
neuling96

nein war so vorgegeben

wieso wird hir eine neue Stadt angelegt, der Grinch hat doch schon eine, oder nicht?
ja

ich habe verscuht deine Vorschläge umzusetzen
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
 public static Geschenk []  ausraeumen(){
Geschenk [] klau = new Geschenk[baum.length+schrank.length+ tisch.length];
for (int i=0; i<baum.length;i++){
 klau [i]= baum[i];
}
for (inty= 0; y<schrank.length;y++){
klau [y+baum.length] = schrank[y]
}
for (int z= 0; y<tisch.length;z++){
 klau [z+schrank.length+tisch.length]= schrank[z]
}
 Geschenk [] löschen= new Geschenk  [0];
Geschenk [] löschen= {};
baum= löschen;
schrank=baum;
tisch=schrank;
return klau;
}

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
public void aufTourGehen() {
int sum=0;
for (int h=0; h< stadt.length; h++)	{
   Haus h = new Haus();
   y= h.ausraeumen();
   sum+=y.length;
}
Geschenk[]geklauteGeschenke= new Geschenk [sum];
;
sum=0;
for (int h=0; h< stadt.length; h++){
 Haus h = new Haus();
 Geschenk [] y= new Geschenk [h.ausraeumen().length]
y= h.ausraeumen();
 restzeit-=y.length/10;

if(a>=0){
for int i=0; i<y.length ; i++){
Geschenk[i+sum] geschenke = y[i]
        sum+=y.length
  }
Auf diesen Beitrag antworten »
neuling96

ich hab mir Gedanken gemacht, wie ich das stadt array benutzen kann und das problem mitin Haus mit 9 Geschenken kann der Grinch ohne Zeitverlust leerräumen.
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
public void aufTourGehen() {
int sum=0;
for (int h=0; h< stadt.length; h++)	{
 sum+=stadt[h].length;
}
Geschenk[]geklauteGeschenke= new Geschenk [sum];

sum=0;
(double)restzeit;
for (int h=0; h< stadt.length; h++){
 (double)stadt[h].length;
restzeit-=stadt[h].length/10;
Geschenk [] y= new Geschenk [stadt[h].ausraeumen().length]
y= stadt[h].ausraeumen();
if(a>=0){
for int i=0; i<y.length ; i++){
 geschenke[i+sum] = y[i];
        sum+=y.length;
  }
Auf diesen Beitrag antworten »
eulerscheZahl

Nutze den Compiler!
(double)restzeit; kann so nicht allein stehen, was soll damit sein? Ebenso (double)stadt[h].length;
Am Ende ist restzeit immernoch ein int und stadt[h].length/10 ebenfalls eine Ganzzahl. Außerdem soll die Stunde schon bei der angefangenen 10er Gruppe verrechnet werden.
Das erreichst du am einfachsten mit restzeit-=(stadt[h].length+9)/10;

code:
1:
2:
Geschenk [] y= new Geschenk [stadt[h].ausraeumen().length]
y= stadt[h].ausraeumen();

beim ersten Aufruf von ausraeumen leerst du bereits das Haus und löschst die Geschenke. Folglicht wirst du beim zweiten Ausräumen nichts mehr finden können.
Geschenk [] y= stadt[h].ausraeumen(); ist die offensichtliche Lösung.
Und bei if(a>=0){ gibt es a nicht mehr.
Auf diesen Beitrag antworten »
neuling96

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
public void aufTourGehen() {
int sum=0;
for (int h=0; h< stadt.length; h++)	{
 sum+=stadt[h].length;
}
Geschenk[]geklauteGeschenke= new Geschenk [sum];

sum=0;
(double)restzeit;
for (int h=0; h< stadt.length; h++){
 Geschenk [] y= stadt[h].ausraeumen();
restzeit-=(y.length+9)/10;

if(restzeit>=0){
for int i=0; i<y.length ; i++){
 geschenke[i+sum] = y[i];
        sum+=y.length;
  }


das müsste so hoffentlich passen
b) ist richtig?
Auf diesen Beitrag antworten »
neuling96

natürlich muss das double restzeit weg!
Auf diesen Beitrag antworten »
eulerscheZahl

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
public class Main {
	public static void main(String[]args)
	{
		Haus[] stadt = new Haus[12];
		for(int i = 0; i < stadt.length; i++) {
			stadt[i] = new Haus();
		}
		
		Grinch grinch = new Grinch(stadt, 80);
		
		grinch.aufTourGehen();
	}
}


code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
import java.util.Random;

public class Geschenk {
	/**
	 * Das Gewicht des Geschenks in Gramm
	 */
	public int gewicht;
	
	/**
	 * Konstruktor für Geschenk:
	 * Erzeugt ein neues Geschenk mit zufällig gewählter Größe
	 */
	public Geschenk() {
		Random r = new Random();
		this.gewicht = r.nextInt(901) + 100; // Zufallszahl zwischen 100 und 1000
	}
}


code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
import java.util.Random;

public class Haus {
	
	private Geschenk[] baum; // Geschenke unter dem Baum
	private Geschenk[] schrank; // Geschenke im Schrank
	private Geschenk[] tisch; // Geschenke auf dem Tisch
	
	/**
	 * Konstruktor für Haus:
	 * Erzeugt ein neues Haus mit zufällig verteilten Geschenken.
	 */
	public Haus() {
		Random r = new Random();
		
		this.baum = new Geschenk[r.nextInt(31)];
		for(int i=0;i<this.baum.length;i++) {
			this.baum[i] = new Geschenk();
		}
		
		this.schrank = new Geschenk[r.nextInt(31)];
		for(int i=0;i<this.schrank.length;i++) {
			this.schrank[i] = new Geschenk();
		}

		this.tisch = new Geschenk[r.nextInt(31)];
		for(int i=0;i<this.tisch.length;i++) {
			this.tisch[i] = new Geschenk();
		}
	}
	
	public int anzahlGeschenke() {
		return baum.length + schrank.length + tisch.length;
	}

	public Geschenk[]  ausraeumen() { //nicht static!
		Geschenk[] klau = new Geschenk[baum.length + schrank.length + tisch.length];
		for (int i = 0; i < baum.length; i++) {
			klau[i] = baum[i];
		}
		for (int y = 0; y < schrank.length; y++){
			klau[y + baum.length] = schrank[y];
		}
		for (int z = 0; z < tisch.length; z++){
			klau[z + schrank.length + baum.length] = tisch[z];
		}
		baum = null;
		schrank = null;
		tisch = null;
		return klau;
	}
}


code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
public class Grinch {
	private Haus[] stadt;
	private Geschenk[] geklauteGeschenke = new Geschenk[0];
	private int restzeit;

	public Grinch(Haus[] stadt, int restzeit) {
		this.restzeit = restzeit; 
		this.stadt = stadt;
	}
	
	public void aufTourGehen() {
		int sum = 0;
		for (int h = 0; h < stadt.length; h++)	{
			sum += stadt[h].anzahlGeschenke();
		}
		Geschenk[] geklauteGeschenke = new Geschenk[sum];

		sum = 0;
		for (int h = 0; h < stadt.length; h++) {
			Geschenk [] y = stadt[h].ausraeumen();
			restzeit -= (y.length+9)/10;

			if(restzeit >= 0) {
				for (int i = 0; i < y.length; i++) {
					geklauteGeschenke[i+sum] = y[i];
				}
			sum += y.length;
			}
		}
	}
}
Auf diesen Beitrag antworten »
neuling96

vielen dank

d.h

for (int h=0; h< stadt.length; h++) {
sum+=stadt[h].length;
ist falsch?


for (int h=0; h< stadt.length; h++){
Geschenk [] y= stadt[h].ausraeumen();

ist auch falsch?
Auf diesen Beitrag antworten »
eulerscheZahl

stadt[h].length existiert nicht, da du length nirgendwo definiert hast. Du musst dir selbst eine Methode schreiben, die die Länge liefert.

Geschenk [] y= stadt[h].ausraeumen(); ist nicht falsch (siehe meine Lösung, Zeile 20 beim Grinch). Du darfst es nur nicht doppelt aufrufen: Die Geschenke werden in y gespeichert und dann aus dem Haus gelöscht. Wenn das Haus keine Geschenke mehr hat und die erneut die Geschenke klauen willst, dann ist da nichts mehr zum Klauen übrig. Du überfällst doch auch nicht 2 mal in 10 Minuten die selbe Sparkassenfiliale.
Auf diesen Beitrag antworten »
neuling96

public class Grinch {
private Haus[] stadt;
private Geschenk[] geklauteGeschenke = new Geschenk[0];
private int restzeit;

public Grinch(Haus[] stadt, int restzeit) {
this.restzeit = restzeit;// müssste hier nicht 80 stehen?


mit

stadt[h].baum habe ich zugriff auf den baum array von stadt[h], aber geht auch der
befehl stadt[h].baum.length?

2tes

stadt[h].ausraeumen.length // geht diese Befehl durch?
Auf diesen Beitrag antworten »
neuling96

Zuruck in seinem Versteck, will der Grinch seine geklauten Geschenke zahlen.
Implementieren Sie in der KlasseGrinch eine neue Methode
inventur()
, die die Anzahl und das
Gesamtgewicht der erbeuteten Geschenke auf der Standardausgabe ausdruckt

was meint man mit Standardausgabe?

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
public int inventur(){
int sum =0;
for (int i=0; i<geklauteGeschenke.length; i++)
if (!(geklauteGeschenke[i]==0){
 sum++;
	}
}
System.out.println(sum)// ist mit println ausdrucken gemeint? 
System.out.println (geklauteGeschenke.gewicht)


}
Auf diesen Beitrag antworten »
eulerscheZahl

Ja, System.out ist die Standardausgabe, wird auch gerne Console genannt.
Und was ist geklauteGeschenke.gewicht? Das musst du auch aufsummieren, genau wie die Anzahl.

if (!(geklauteGeschenke[i]==0) geht vielleicht in C++, aber nicht in Java. if (geklauteGeschenke[i] !0 null) prüft, ob dsa Geschenk vorhanden ist.
Auf diesen Beitrag antworten »
neuling96

import java.util.Random;


public class Geschenk {
private int [] baum;
private int [] baum
/**
* Das Gewicht des Geschenks in Gramm
*/
public int gewicht;

/**
* Konstruktor für Geschenk:
* Erzeugt ein neues Geschenk mit zufällig gewählter Größe
*/
public Geschenk() {
Random r = new Random();
this.gewicht = r.nextInt(901) + 100; // Zufallszahl zwischen 100 und 1000
}

da geklautesGeschenk ein objeckt von Geschenk ist, dachte ich man mit
geklautesGeschenk.gewicht darauf zurückgreifen

for (int h = 0; h < stadt.length; h++) {
Geschenk [] y = stadt[h].ausraeumen();
restzeit -= (y.length+9)/10;

if(restzeit >= 0) {
for (int i = 0; i < y.length; i++) {

sum += y.length;
}
Auf diesen Beitrag antworten »
eulerscheZahl

Du kannst auch auf das Gewicht zugreifen, aber du musst jedes Gewicht einzeln wieder, nicht den ganzen Sack auf einmal.

In C# geht das mit int sum = geschenke.Select (x => x.gewicht).Sum ();, aber in Java ist mir da nichts bekannt.

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
public int inventur() {
    int anzahl = 0;
    int gesamtgewicht = 0;
    for (int i = 0; i < geklauteGeschenke.length; i++) {
        if (geklauteGeschenke[i] != null) {
            anzahl++;
            gesamtgewicht += geklauteGeschenke[i].gewicht;
        }
    }
    System.out.println("Anzahl: " + anzahl);
    System.out.println ("Gesamtgewicht: " + gesamtgewicht);
}
Auf diesen Beitrag antworten »
neuling96

if (geklauteGeschenke[i] != null)

was ist der unterschied zwischen

if (!(geklauteGeschenke[i]==0))

und

if (!(geklauteGeschenke[i]==null))



ich dachte dabei !(a==b) bedeutete das gleiche wie a!=b
Auf diesen Beitrag antworten »
eulerscheZahl

Das ist richtig. Aber 0 ist nicht null. 0 ist eine Zahl, null sagt, dass das Objekt nicht exisitert.
Auf diesen Beitrag antworten »
neuling96

sry, dass ich öfter Sachen nochmal fragen muss, aber

public class Main {
public static void main(String[]args)

wie erstellt man eine main??

2tes
stadt[h].baum habe ich zugriff auf den baum array von stadt[h], aber geht auch der
befehl stadt[h].baum.length?

stadt[h].ausraeumen.length // geht diese Befehl durch?
Auf diesen Beitrag antworten »
eulerscheZahl

Ohne main hast zu zwar Funktionen, aber keinen der sie aufruft. Das Programm startet dann einfach nicht.

Wenn du auf ein Array zugreifen kannst, kannst du auch die Länge abfragen.

Gilt auch für das Haus, muss aber heißen stadt[h].ausraeumen().length
Auf diesen Beitrag antworten »
neuling96

Ich möchte einen Junit Test durchführen (noch nie zuvor gemacht) für die Klasse Haus und deren Methoden.

Die Schwierigkeit besteht daran, dass Haus zufällig erstellt wird und somit das überprüfen der einzelnen Methode erschwert, also versuch ich mit der Mock Implementierung.


Hier der erste versuch

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:

import static org.junit.Assert.*;

import org.junit.Test;


public class HausTest {
  public static class MockGeschenkTest extends Geschenk {
	  public int groeße;
	
	 public MockGeschenkTest ( int x) {
		 super();
		 this.groeße=x;
	 }
  }
	 public static class MockHausTest extends Haus {
	
	private MockGeschenkTest[] baum={new MockGeschenkTest(1),new MockGeschenkTest(2)} ; // Geschenke unter dem Baum
	private MockGeschenkTest[] schrank={new MockGeschenkTest(2),new MockGeschenkTest(3)}; // Geschenke im Schrank
	private MockGeschenkTest[] tisch={new MockGeschenkTest(2),new MockGeschenkTest(3)};
	 // Geschenke auf dem Tisch
	
	public MockHausTest (){
		super();
	}
	public int anzahlGeschenke() {
		return baum.length + schrank.length + tisch.length;
	}
	
	@Test
	public void testAnzahlGeschenke() {
		MockHausTest h = new MockHausTest();
		assertEquals(6,h.anzahlGeschenke());
	}
	
	public MockGeschenkTest[]  ausraeumen() { 
		MockGeschenkTest[] klau = new MockGeschenkTest[baum.length + schrank.length + tisch.length];
		for (int i = 0; i < baum.length; i++) {
			klau[i] = baum[i];
		}
		for (int y = 0; y < schrank.length; y++){
			klau[y + baum.length] = schrank[y];
		}
		for (int z = 0; z < tisch.length; z++){
			klau[z + schrank.length + baum.length] = tisch[z];
		}
		baum = null;
		schrank = null;
		tisch = null;
		return klau;
	}
}
	
	@Test
	public void testAusraeumen() {
		MockHausTest h = new MockHausTest();
		MockGeschenkTest[] y=  h.ausraeumen();
		MockGeschenkTest [] z = {new MockGeschenkTest(1),new MockGeschenkTest(2),new MockGeschenkTest(2),new MockGeschenkTest(3),new MockGeschenkTest(2),new MockGeschenkTest(3)};
		
		assertArrayEquals(y, z);
	}
	


public void testAusraeumen() {
schlägt fehl ?


y müsste doch gleich z sein?
Auf diesen Beitrag antworten »
neuling96

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
 public static class MockHausTest  {
	
	private MockGeschenkTest[] baum; // Geschenke unter dem Baum
	private MockGeschenkTest[] schrank; // Geschenke im Schrank
	private MockGeschenkTest[] tisch;
	 // Geschenke auf dem Tisch
	
	public MockHausTest (MockGeschenkTest[] x, MockGeschenkTest [] y){
		
	this.baum= x;
	this.schrank=y;
	}




code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:

 @Test
		public void testAusraeumen() {
		MockGeschenkTest w = new MockGeschenkTest(1);
		MockGeschenkTest p = new MockGeschenkTest(2);
		
		MockGeschenkTest []z = {w,p};
		MockHausTest h = new MockHausTest(z,z);
			MockGeschenkTest[] y=  h.ausraeumen();
		 
			MockGeschenkTest [] za = {w,p,w,p};
			
			assertArrayEquals(y, za);
		}

}




ok damit scheint es zu funktionieren .

Meine Frage, wäre geht es einfacher?
Auf diesen Beitrag antworten »
neuling96

Gibt es eine Möglichkeit die Methoden von Grinch einfach zutesten?
Auf diesen Beitrag antworten »
eulerscheZahl

Könntest du den kompletten Code bereitstellen (bevorzugt als .zip)?
Ich habe keine Lust, die alten Beiträge nach dem jeweils neuesten Code einer Klasse durchzugehen, zumal der Code ohnehin nicht vollständig ist (MockHausTest(z,z) wird nicht gehen, weil es keinen Konstruktor mit diesen Argumenten gibt).

Und ein super(); kannst du dir sparen, wenn du keine Parameter übergibst.
Auf diesen Beitrag antworten »
neuling96

Ich habe doch

public MockHausTest (MockGeschenkTest[] x, MockGeschenkTest [] y){

und übergebe
MockGeschenkTest []z = {w,p};
MockHausTest h = new MockHausTest(z,z);

dürfte das nicht gehen?


Im Anhang eine die Datei (in eclipse)
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »