OO Programmierung |
neuling96 unregistriert
|
|
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?
|
|
31.12.2014 01:59 |
|
|
neuling96 unregistriert
|
|
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)
}
|
|
|
|
31.12.2014 02:27 |
|
|
|
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.
__________________ Syntax Highlighting fürs Board (Link)
|
|
31.12.2014 07:14 |
|
|
neuling96 unregistriert
|
|
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;
}
|
|
31.12.2014 07:49 |
|
|
neuling96 unregistriert
|
|
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
|
|
31.12.2014 08:14 |
|
|
neuling96 unregistriert
|
|
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?
|
|
31.12.2014 08:22 |
|
|
|
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
__________________ Syntax Highlighting fürs Board (Link)
|
|
31.12.2014 08:26 |
|
|
neuling96 unregistriert
|
|
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?
|
|
22.05.2015 21:14 |
|
|
neuling96 unregistriert
|
|
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?
|
|
22.05.2015 22:36 |
|
|
neuling96 unregistriert
|
|
Gibt es eine Möglichkeit die Methoden von Grinch einfach zutesten?
|
|
24.05.2015 01:32 |
|
|
|
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.
__________________ Syntax Highlighting fürs Board (Link)
|
|
24.05.2015 06:30 |
|
|
neuling96 unregistriert
|
|
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)
|
|
24.05.2015 12:31 |
|
|
|