public class Familie {
private String name;
private Haus meldung;
private Person[] familienmitglieder;
public Familie(String name, Haus meldung, Person[] familienmitglieder) {
this.name = name;
this.meldung = meldung;
this.familienmitglieder = familienmitglieder;
}
public boolean ummelden(Haus meldung) {
if (meldung.anmelden(this)) {
if(this.meldung.abmelden(this)){
return true;
}
meldung.abmelden(this);
}
return false;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Haus getMeldung() {
return meldung;
}
public void setMeldung(Haus meldung) {
this.meldung = meldung;
}
public Person[] getFamilienmitglieder() {
return familienmitglieder;
}
public void setFamilienmitglieder(Person[] familienmitglieder) {
this.familienmitglieder = familienmitglieder;
}
}
1) testFamilie(PublicTests)
java.lang.AssertionError
at org.junit.Assert.fail(Assert.java:86)
at org.junit.Assert.assertTrue(Assert.java:41)
at org.junit.Assert.assertTrue(Assert.java:52)
at PublicTests.testFamilie(PublicTests.java:104)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:52)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runners.Suite.runChild(Suite.java:128)
at org.junit.runners.Suite.runChild(Suite.java:27)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
at org.junit.runner.JUnitCore.runMain(JUnitCore.java:77)
at org.junit.runner.JUnitCore.main(JUnitCore.java:36)
2) testAnAbmelden(PublicTests)
java.lang.AssertionError
at org.junit.Assert.fail(Assert.java:86)
at org.junit.Assert.assertTrue(Assert.java:41)
at org.junit.Assert.assertTrue(Assert.java:52)
at PublicTests.testAnAbmelden(PublicTests.java:58)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:52)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runners.Suite.runChild(Suite.java:128)
at org.junit.runners.Suite.runChild(Suite.java:27)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
at org.junit.runner.JUnitCore.runMain(JUnitCore.java:77)
at org.junit.runner.JUnitCore.main(JUnitCore.java:36)
Familie.java
Haus.java
Person.java
Gegeben sind die Klassen "Person", "Familie" und "Haus".
Innerhalb der Klassen befindet sich jeweils ein Blockkommentar mit einer Beschreibung.
Implementieren Sie gemäß der Beschreibungen die Klassen aus.
Die Namen innerhalb der Anführungsstriche müssen auch im Code übernommen werden,
ansonsten wird es als Compiler-Fehler gewertet.
Please adhere to the following schema when naming your solution files: Person.java, Familie.java, Haus.java.
Test your solution with this unit test:
PublicTests.java
Upload Solution
Your solution
Familie.java
Haus.java
Person.java
PublicTests.java
import static org.junit.Assert.*;
import org.junit.Test;
public class PublicTests {
public void testPerson() {
Person p = new Person("Hans");
assertEquals("Hans", p.getName());
p.setName("Peter");
assertEquals("Peter", p.getName());
}
[USER=5814]@test[/USER]
public void testHaus() {
Person p1 = new Person("Hans");
Haus h = new Haus("Das ist die Adresse", p1, 2);
Familie[] f = new Familie[2];
assertEquals("Das ist die Adresse", h.getAdresse());
assertEquals(2, h.getAnzahlWohneinheiten());
assertEquals(p1, h.getBesitzer());
assertArrayEquals(f, h.getBewohner());
Person p2 = new Person("Ute");
h.setBesitzer(p2);
h.setAdresse("neue Adresse");
Familie[] f2 = new Familie[1];
h.setBewohner(f2);
h.setAnzahlWohneinheiten(3);
assertEquals("neue Adresse", h.getAdresse());
assertEquals(3, h.getAnzahlWohneinheiten());
assertEquals(p2, h.getBesitzer());
assertArrayEquals(f2, h.getBewohner());
}
[USER=5814]@test[/USER]
public void testAnAbmelden() {
Person besitzer = new Person("Hans");
Haus h1 = new Haus("Adresse", besitzer, 3);
Familie f = new Familie("Heinzen", h1, new Person[]{besitzer});
Familie[] familien = h1.getBewohner();
for (int i = 0; i < familien.length; i++) {
assertNull(familien[i]);
}
//Anmelden
h1.anmelden(f);
boolean contains = false;
familien = h1.getBewohner();
for (int i = 0; i < familien.length; i++) {
if(familien[i] == f) contains = true;
}
assertTrue(contains);
//Abmelden
h1.abmelden(f);
contains = false;
familien = h1.getBewohner();
for (int i = 0; i < familien.length; i++) {
if(familien[i] == f) contains = true;
}
assertFalse(contains);
}
[USER=5814]@test[/USER]
public void testFamilie() {
Person p1 = new Person("N1");
Person p2 = new Person("N2");
Person p3 = new Person("N3");
Person p4 = new Person("N4");
Person p5 = new Person("N5");
Person besitzer = new Person("Peter");
Haus h1 = new Haus("Endlosstr. 5, Im Nimmerland", besitzer, 3);
Person[] familienmitglieder = {p1,p2,p3};
Familie f1 = new Familie("Heinzen", h1, familienmitglieder);
h1.anmelden(f1);
//Getter
assertEquals("Heinzen", f1.getName());
assertEquals(h1, f1.getMeldung());
assertArrayEquals(familienmitglieder, f1.getFamilienmitglieder());
//Setter
f1.setName("Schmitt");
Person[] familienmitglieder2 = new Person[] {p4,p5};
f1.setFamilienmitglieder(familienmitglieder2);
//ummelden
Haus h2 = new Haus("Endlosstr. 2, Im Nimmerland", besitzer, 3);
boolean contains = false;
Familie[] familien = h1.getBewohner();
for (int i = 0; i < familien.length; i++) {
if(familien[i] == f1) contains = true;
}
assertTrue(contains);
contains = false;
familien = h2.getBewohner();
for (int i = 0; i < familien.length; i++) {
if(familien[i] == f1) contains = true;
}
assertFalse(contains);
f1.ummelden(h2);
contains = false;
familien = h1.getBewohner();
for (int i = 0; i < familien.length; i++) {
if(familien[i] == f1) contains = true;
}
assertFalse(contains);
contains = false;
familien = h2.getBewohner();
for (int i = 0; i < familien.length; i++) {
if(familien[i] == f1) contains = true;
}
assertTrue(contains);
f1.setMeldung(h2); //Wurde im Idealfall bereits beim Ummelden gesetzt!
assertEquals(h2,f1.getMeldung());
}
}
public class Haus {
private String adresse;
private int anzahlWohneinheiten;
private Person besitzer;
private Familie[] bewohner;
public Haus(String adresse, Person besitzer,int anzahlWohneinheiten) {
this.adresse = adresse;
this.besitzer = besitzer;
if (anzahlWohneinheiten < 1) {
Math.ceil(anzahlWohneinheiten);
}
bewohner = null;
this.bewohner = new Familie[anzahlWohneinheiten];
this.anzahlWohneinheiten = anzahlWohneinheiten;
}
public boolean anmelden(Familie someFam) {
for (int i = 0; i < bewohner.length-1; ++i) {
for (int j = i+1; j < bewohner.length; ++j) {
if (bewohner[i] == bewohner[j]) {
return false;
}
}
}
for(int i = 0; i < bewohner.length; i++) {
if(bewohner[i] == null) {
bewohner[i] = someFam;
}
}
return true;
}
public boolean abmelden(Familie someFam) {
for(int i = 0; i < bewohner.length; i++) {
if(bewohner[i].equals(someFam)) {
bewohner[i] = null;
return true;
}
}
return false;
}
public String getAdresse() {
return adresse;
}
public void setAdresse(String adresse) {
this.adresse = adresse;
}
public int getAnzahlWohneinheiten() {
return anzahlWohneinheiten;
}
public void setAnzahlWohneinheiten(int anzahlWohneinheiten) {
this.anzahlWohneinheiten = anzahlWohneinheiten;
}
public Person getBesitzer() {
return besitzer;
}
public void setBesitzer(Person besitzer) {
this.besitzer = besitzer;
}
public Familie[] getBewohner() {
return bewohner;
}
public void setBewohner(Familie[] bewohner) {
this.bewohner = bewohner;
}
}
public boolean anmelden(Familie someFam) {
for (int i = 0; i < bewohner.length-1; ++i) { // START
for (int j = i+1; j < bewohner.length; ++j) {
if (bewohner[i] == bewohner[j]) {
return false;
}
}
} //ENDE - Was willst du mit diesem Schleifenkonstrukt erreichen?
for(int i = 0; i < bewohner.length; i++) { // Diese Schleife soll die Familie einfach an einen freien Platz setzen, klingt schlüssig.
if(bewohner[i] == null) {
bewohner[i] = someFam;
}
}
return true;
}
* Die public-Methode "anmelden" erhält eine Familie und gibt ein boolean zurück.
1. Die Familie wird an eine freie Stelle im Array hinzugefügt.
2. Eine Wohneinheit ist frei, wenn das Element im Array der Bewohner "null" ist.
3. Ein Familien-Objekt darf nicht mehrfach im Bewohner-Array auftauchen.
4. Sobald die Familie erfolgreich hinzugefügt wurde, gibt die Methode true zurück,
5. ansonsten false;
bewohner[i] == someFam
)false
for(int i = 0; i < bewohner.length; i++) { // Diese Schleife soll die Familie einfach an einen freien Platz setzen, klingt schlüssig.
if(bewohner[i] == null) {
bewohner[i] = someFam;
return true; // Sobald die Familie erfolgreich hinzugefügt wurde, gibt die Methode true zurück,
}
}
return false; //Falls keine Wohnung frei war, geben wir false zurück.
1) testFamilie(PublicTests)
java.lang.AssertionError
at org.junit.Assert.fail(Assert.java:86)
at org.junit.Assert.assertTrue(Assert.java:41)
at org.junit.Assert.assertTrue(Assert.java:52)
at PublicTests.testFamilie(PublicTests.java:104)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:52)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runners.Suite.runChild(Suite.java:128)
at org.junit.runners.Suite.runChild(Suite.java:27)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
at org.junit.runner.JUnitCore.runMain(JUnitCore.java:77)
at org.junit.runner.JUnitCore.main(JUnitCore.java:36)
2) testHaus(PublicTests)
java.lang.AssertionError: expected:<2> but was:<0>
at org.junit.Assert.fail(Assert.java:88)
at org.junit.Assert.failNotEquals(Assert.java:834)
at org.junit.Assert.assertEquals(Assert.java:645)
at org.junit.Assert.assertEquals(Assert.java:631)
at PublicTests.testHaus(PublicTests.java:22)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:52)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runners.Suite.runChild(Suite.java:128)
at org.junit.runners.Suite.runChild(Suite.java:27)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
at org.junit.runner.JUnitCore.runMain(JUnitCore.java:77)
at org.junit.runner.JUnitCore.main(JUnitCore.java:36)
3) testAnAbmelden(PublicTests)
java.lang.AssertionError
at org.junit.Assert.fail(Assert.java:86)
at org.junit.Assert.assertTrue(Assert.java:41)
at org.junit.Assert.assertTrue(Assert.java:52)
at PublicTests.testAnAbmelden(PublicTests.java:58)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:52)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runners.Suite.runChild(Suite.java:128)
at org.junit.runners.Suite.runChild(Suite.java:27)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
at org.junit.runner.JUnitCore.runMain(JUnitCore.java:77)
at org.junit.runner.JUnitCore.main(JUnitCore.java:36)
public boolean anmelden(Familie someFam) {
for (int i = 0; i < bewohner.length-1; ++i) {
for (int j = i+1; j < bewohner.length; ++j) {
if (bewohner[i] == bewohner[j]) {
return false;
}
}
}
for(int i = 0; i < bewohner.length; i++) {
if(bewohner[i] == null) {
bewohner[i] = someFam;
return true;
}
}
return false;
}
Familie[] f = new Familie[2];
assertEquals("Das ist die Adresse", h.getAdresse());
assertEquals(2, h.getAnzahlWohneinheiten());
assertEquals(p1, h.getBesitzer());
assertArrayEquals(f, h.getBewohner());
1) testHaus(PublicTests)
java.lang.AssertionError: expected:<2> but was:<0>
at org.junit.Assert.fail(Assert.java:88)
at org.junit.Assert.failNotEquals(Assert.java:834)
at org.junit.Assert.assertEquals(Assert.java:645)
at org.junit.Assert.assertEquals(Assert.java:631)
at PublicTests.testHaus(PublicTests.java:22)
Java:public boolean anmelden(Familie someFam) { for (int i = 0; i < bewohner.length-1; ++i) { for (int j = i+1; j < bewohner.length; ++j) { if (bewohner[i] == bewohner[j]) { return false; } } } for(int i = 0; i < bewohner.length; i++) { if(bewohner[i] == null) { bewohner[i] = someFam; return true; } } return false; }
Meine Anmeldenmethode
Nein, denn die Wohneinheiten sind doch die Größe des Arrays und null ist die Kennzeichnung freier Plätze. Daher ist da nichts anzupassen....Vielleicht solltest Du beim an- und abmelden die Anzahl der Wohneinheiten anpassen?
* Die public-Methode "anmelden" erhält eine Familie und gibt ein boolean zurück.
* Die Familie wird an eine freie Stelle im Array hinzugefügt.
* Eine Wohneinheit ist frei, wenn das Element im Array der Bewohner "null" ist.
* Ein Familien-Objekt darf nicht mehrfach im Bewohner-Array auftauchen.
* Sobald die Familie erfolgreich hinzugefügt wurde, gibt die Methode true zurück,
* ansonsten false;
Java:for(int i=0;i<bewohner.length;i++) { if(bewohner[i]==someFam) { return false; // Hier müsste nach Aufgabe ein false hin. } } for (int i = 0; i < bewohner.length; i++) { if (bewohner[i] == null) { bewohner[i] = someFam; return true; } } return false; }
1) testHaus(PublicTests)
java.lang.AssertionError: expected:<2> but was:<0>
at org.junit.Assert.fail(Assert.java:88)
at org.junit.Assert.failNotEquals(Assert.java:834)
at org.junit.Assert.assertEquals(Assert.java:645)
at org.junit.Assert.assertEquals(Assert.java:631)
at PublicTests.testHaus(PublicTests.java:22)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:52)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runners.Suite.runChild(Suite.java:128)
at org.junit.runners.Suite.runChild(Suite.java:27)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
at org.junit.runner.JUnitCore.runMain(JUnitCore.java:77)
at org.junit.runner.JUnitCore.main(JUnitCore.java:36)
Aufgabe 1 (3 points counting towards “Practice”)
Es soll ein Teil einer Software für ein Meldeamt erstellt werden.
Familie.java
Haus.java
Person.java
Gegeben sind die Klassen "Person", "Familie" und "Haus".
Innerhalb der Klassen befindet sich jeweils ein Blockkommentar mit einer Beschreibung.
Implementieren Sie gemäß der Beschreibungen die Klassen aus.
Die Namen innerhalb der Anführungsstriche müssen auch im Code übernommen werden,
ansonsten wird es als Compiler-Fehler gewertet.
Please adhere to the following schema when naming your solution files: Person.java, Familie.java, Haus.java.
Test your solution with this unit test:
PublicTests.java
Upload Solution
Your solution
Familie.java
Haus.java
Person.java
PublicTests.java: Test failed ✘
JUnit version 4.12
..E..
Time: 0.005
There was 1 failure:
1) testHaus(PublicTests)
java.lang.AssertionError: expected:<2> but was:<0>
at org.junit.Assert.fail(Assert.java:88)
at org.junit.Assert.failNotEquals(Assert.java:834)
at org.junit.Assert.assertEquals(Assert.java:645)
at org.junit.Assert.assertEquals(Assert.java:631)
at PublicTests.testHaus(PublicTests.java:22)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:52)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runners.Suite.runChild(Suite.java:128)
at org.junit.runners.Suite.runChild(Suite.java:27)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
at org.junit.runner.JUnitCore.runMain(JUnitCore.java:77)
at org.junit.runner.JUnitCore.main(JUnitCore.java:36)
FAILURES!!!
Tests run: 4, Failures: 1
Correction
Correction pending…
Assignment 5
(Deadline: 12/04/2019, 8:00:00 AM)
Aufgabe 1 (3 points counting towards “Practice”)
Assignment 4
(Deadline: 11/27/2019, 8:00:00 AM)
Aufgabe 1 (3 points counting towards “Practice”)
Assignment 3
(Deadline: 11/20/2019, 8:00:00 AM)
Aufgabe 1 (3 points counting towards “Practice”)
Assignment 2
(Deadline: 11/13/2019, 8:00:00 AM)
Aufgabe 1 (3 points counting towards “Practice”)
Assignment 1
(Deadline: 11/06/2019, 8:00:00 AM)
Aufgabe 1 (3 points counting towards “Practice”)
About the Autocorrector
Feedback
×
PublicTests.java
import static org.junit.Assert.*;
import org.junit.Test;
public class PublicTests {
@Test
public void testPerson() {
Person p = new Person("Hans");
assertEquals("Hans", p.getName());
p.setName("Peter");
assertEquals("Peter", p.getName());
}
@Test
public void testHaus() {
Person p1 = new Person("Hans");
Haus h = new Haus("Das ist die Adresse", p1, 2);
Familie[] f = new Familie[2];
assertEquals("Das ist die Adresse", h.getAdresse());
assertEquals(2, h.getAnzahlWohneinheiten());
assertEquals(p1, h.getBesitzer());
assertArrayEquals(f, h.getBewohner());
Person p2 = new Person("Ute");
h.setBesitzer(p2);
h.setAdresse("neue Adresse");
Familie[] f2 = new Familie[1];
h.setBewohner(f2);
h.setAnzahlWohneinheiten(3);
assertEquals("neue Adresse", h.getAdresse());
assertEquals(3, h.getAnzahlWohneinheiten());
assertEquals(p2, h.getBesitzer());
assertArrayEquals(f2, h.getBewohner());
}
@Test
public void testAnAbmelden() {
Person besitzer = new Person("Hans");
Haus h1 = new Haus("Adresse", besitzer, 3);
Familie f = new Familie("Heinzen", h1, new Person[]{besitzer});
Familie[] familien = h1.getBewohner();
for (int i = 0; i < familien.length; i++) {
assertNull(familien[i]);
}
//Anmelden
h1.anmelden(f);
boolean contains = false;
familien = h1.getBewohner();
for (int i = 0; i < familien.length; i++) {
if(familien[i] == f) contains = true;
}
assertTrue(contains);
//Abmelden
h1.abmelden(f);
contains = false;
familien = h1.getBewohner();
for (int i = 0; i < familien.length; i++) {
if(familien[i] == f) contains = true;
}
assertFalse(contains);
}
@Test
public void testFamilie() {
Person p1 = new Person("N1");
Person p2 = new Person("N2");
Person p3 = new Person("N3");
Person p4 = new Person("N4");
Person p5 = new Person("N5");
Person besitzer = new Person("Peter");
Haus h1 = new Haus("Endlosstr. 5, Im Nimmerland", besitzer, 3);
Person[] familienmitglieder = {p1,p2,p3};
Familie f1 = new Familie("Heinzen", h1, familienmitglieder);
h1.anmelden(f1);
//Getter
assertEquals("Heinzen", f1.getName());
assertEquals(h1, f1.getMeldung());
assertArrayEquals(familienmitglieder, f1.getFamilienmitglieder());
//Setter
f1.setName("Schmitt");
Person[] familienmitglieder2 = new Person[] {p4,p5};
f1.setFamilienmitglieder(familienmitglieder2);
//ummelden
Haus h2 = new Haus("Endlosstr. 2, Im Nimmerland", besitzer, 3);
boolean contains = false;
Familie[] familien = h1.getBewohner();
for (int i = 0; i < familien.length; i++) {
if(familien[i] == f1) contains = true;
}
assertTrue(contains);
contains = false;
familien = h2.getBewohner();
for (int i = 0; i < familien.length; i++) {
if(familien[i] == f1) contains = true;
}
assertFalse(contains);
f1.ummelden(h2);
contains = false;
familien = h1.getBewohner();
for (int i = 0; i < familien.length; i++) {
if(familien[i] == f1) contains = true;
}
assertFalse(contains);
contains = false;
familien = h2.getBewohner();
for (int i = 0; i < familien.length; i++) {
if(familien[i] == f1) contains = true;
}
assertTrue(contains);
f1.setMeldung(h2); //Wurde im Idealfall bereits beim Ummelden gesetzt!
assertEquals(h2,f1.getMeldung());
}
}