Kleine Frage zu OOP

Du hast ein Familien-Objekt. Dieses hat ein Attribut, das nennt sich meldung. In diesem Attribut ist das Haus gespeichert, bei dem die Familie aktuell gemeldet ist. Wie kannst Du auf dieses Attribut in jedem Fall (innerhalb einer Methode der Klasse Familie) zugreifen?
 
Java:
Ja, so oder
public boolean ummelden(Haus meldung) {
		if(meldung.anmelden(this)&&this.meldung.abmelden(this)) {
			return true;
 
Java:
public boolean ummelden(Haus meldung) {
		meldung.anmelden(this)&&this.meldung.abmelden(this) return true;
 
Ach komm, das kann doch nicht so schwer sein:
Java:
    meldung.anmelden(this);
    this.meldung.abmelden(this);

Nächste Baustelle: die Abmeldung soll nur dann ausgeführt werden, wenn die Anmeldung geklappt hat. Bitte umschreiben.
 
Sorry du sagtest soll genau aus dem einen Zweizeiler machen 😀 (Missverständnis)
Java:
if(meldung.anmelden(this==true){
this.meldung.abmelden(this) return true;
}
 
Formatier den Code vernünftig. Vergleiche mit true kannst Du Dir sparen.
Java:
if(meldung.anmelden(this)){
    this.meldung.abmelden(this);
    return true;
}
Und was musst Du zurückgeben, wenn die Anmeldung nicht geklappt hat?
 
Sag mal, jetzt setze ich das ANmeldung extra fett und Du faselst was von Abmeldung. Was muss die Methode zurückgeben, wenn die ANNNNmeldung nicht geklappt hat?
 
Java:
if(meldung.anmelden(this)==true && this.meldung.abmelden(this)==false) {
	this.meldung.abmelden(this);
}
return false;

Das müsste unter das hier:
Java:
if(meldung.anmelden(this)){
    this.meldung.abmelden(this);
    return true;
}
oder?
 
Jetzt lass endlich diese UND-Verknüpfüngen weg. Das return false hat halt gefehlt:
Java:
if(meldung.anmelden(this)){
    this.meldung.abmelden(this);
    return true;
}
return false;

D. h. wenn die Anmeldung nicht funktioniert, wird false zurückgegeben.

Wenn die Anmeldung funktionierte, wird eine Abmeldung beim alten Haus versucht. Nächste Aufgabe: prüfe, ob die Abmeldung funktioniert.
 
Java:
if(this.meldung.abmelden(this)==true){
meldung.anmelden(this)==true);
return true;
}
return false;
 
Dein Code (mit Einrückungen):
Java:
if(this.meldung.abmelden(this)==true){
    meldung.anmelden(this)==true);
    return true;
}
return false;
Die zweite Zeile ist kein gültiger Code. Da fehlt ein if.
 
Java:
if(this.meldung.abmelden(this)==true){
   if( meldung.anmelden(this)==true);
    return true;
}
return false;
 
Java:
	public boolean ummelden(Haus meldung) {
		if (meldung.anmelden(this)) {
			this.meldung.abmelden(this);
			return true;
		}
		return false;
		
		if(this.meldung.abmelden(this)==true){  // -> rot angestrichen
		  if (meldung.anmelden(this)==true);
		    return true;
		}
		return false;
	
	}
 
Und wenn ich die unterste Klammer entferne dann wird nur noch angezeigt complete Statement mit } aber sobald die klammer da ist wieder unrechable code
 
Nunja, du solltest nun folgenden Code haben:
Java:
public boolean ummelden(Haus meldung) {
    if(meldung.anmelden(this)){
        this.meldung.abmelden(this);
        return true;
    }
    return false;
}

Dieser, wie du hoffentlich verstanden hast, führt die Meldung an dem Haus an, welches als Parameter übergeben worden ist. Falls das Erfolgreich war, werden die Zeilen innerhalb der If-Abfrage ausgeführt. Falls die anmeldung nicht erfolgreich war, gibt deine Methode "false" zurück.

Innerhalb der If-abfrage, versucht du, eine abmeldung am aktuellen Haus auszuführen. Allerdings prüfst du nicht ob diese Erfolgreich war, sondern gibst immer true zurück.

Somit solltest du nun, wenn die anmeldung erfolgreich war, den Rückgabewert von .abmelden() prüfen.

Java:
public boolean ummelden(Haus meldung) {
    if(meldung.anmelden(this)){
        this.meldung.abmelden(this); //Hier den Rückgabewert prüfen
        return true;
    }
    return false;
}


(Sorry ich kanns mir nicht verkneifen ... 🙂 )
 
Java:
public boolean ummelden(Haus meldung) {
		if (meldung.anmelden(this)) {
			this.meldung.abmelden(this);
			if(this.meldung.abmelden(this)==true){
			    meldung.anmelden(this);
			    return true;
			}
			return false;
			
		}
		return false;
		
		
	}
 
Ist echt nicht normal,
Das stimmt.

Du sollst einfach nur den Rückgabewert prüfen, ein einfaches if einfügen, mehr nicht:
Java:
    public boolean ummelden(Haus meldung) {
        if (meldung.anmelden(this)) {
            if(this.meldung.abmelden(this)){
                return true;
            }
            /* hier */
        }
        return false;
    }

Nach dem inneren if (EDIT: im Code mit /* hier */ markiert) machst Du jetzt noch die Anmeldung rückgängig, dann bist Du fertig.
 
Nun, aktuell hast du folgende Logik implementiert

Code:
Wenn (Am neuen Haus Anmelden) erfolgreich war
    Melde mich am aktuellen Haus ab
    Wenn (Melde mich am aktuellen Haus ab) erfolgreich war
        Melde mich am neuen Haus an
        Gebe "true" zurück
    Gebe "false" zurück
Gebe "false" zurück


Java:
Wenn (Am neuen Haus Anmelden) erfolgreich war
    Melde mich am aktuellen Haus ab
    Wenn (Melde mich am aktuellen Haus ab) erfolgreich war //Du meldest dich ein zweites mal ab. Braucht's das? Der alte Vermieter wird froh sein.
        Melde mich am neuen Haus an //Wieso meldest du dich nochmal an? Das machst du bereits in Zeile 1. Der Vermieter schüttelt nur mit dem kopf.
        Gebe "true" zurück
    Gebe "false" zurück //Das kannst du einfach weglassen, nachdem in der nächsten Zeile bereits false zurückgegben wird
Gebe "false" zurück


//Zuviele Köche machen die Suppe fett - ich halte mich raus 🙂
 
Bin nicht mehr in der Lage was zu checken verzeih es mir würde gerne schlafen gehen aber muss die Aufgabe noch korrekt hinbekommen
 
An der Rückgabe (return) musst Du nichts ändern. Eine Anmeldung machst Du durch eine Abmeldung rückgängig. Unglaublich.
 

Neue Themen


Zurück
Oben