Methoden zu einigen Berechnungen eines Rechtecks

Hallo Community,

die ist mein erster Eintrag auf www also bitte ich euch um ein bisschen Nachsicht mit mir :wink:.

und zwar beschäftige ich mich seit Anfang dieser Woche mit der programmiersprache Java und hab nun ein kleines Problem. Und zwar soll eine Klasse erstellt werden, die ein Rechteck beschreibt und zusätzlich eine Klasse RechteckAnwendung die dann auf die Attribute und Methoden aus der Klasse Rechteck zugreift, sieht bei mir im Moment folgendermaßen aus:

public class Rechteck{

public int laenge;
public int breite;

public int berechneFlaeche(){
return laenge*breite;
}

public int berechneUmfang(){
return 2*laenge+2*breite;
}
}

Dies funktioniert soweit und ich kann in meiner Anwedungs Klasse die Methoden dann auch aufrufen und auslesen.

Jetzt soll ich aber zusätzlich eine Methode erstellen, die mir sagt ob das von mir erstellte Objekt (bspw. rechteck.Rechteck) ein Quadrat ist. Kann mir jemand sagen wie ich eine solche Methode relativ einfach in meine Klasse Rechteck einfügen und dann in meiner Anwendungsklasse prüfen und auslesen kann?

Hoffe die Frage war einigermaßen verständlich und bedanke mich im voraus.
Sebastian

Moin,

wenn ich das richtig verstanden habe, suchst du ungefähr das hier:

public boolean istQuadrat()
{
if(laenge==breite)
{return true;}
else
return false;
}

Gruß,
SPN

Hallo,
wie wäre es mit der Methode

public boolean isQuadrat() {
return laenge == breite;
}

Was unterscheidet ein allgemeines Rechteck von einem Quadrat? Ein Quadrat ist ein Rechteck, bei dem nicht nur jeweils 2 Seiten gleich sind sondern alle vier.

public boolean istQuadrat() {
return (this.laenge == this.breite);
}

Hallo,

so funktioniert das:
Zuerst überlegt man sich, wann ein Rechteck ein Quadrat ist. Dies ist genau dann der Fall, wenn lange==breite.

Also schreibst du einfach eine Methode

public boolean isQuadrat() {
return lange == breite;
}.

Das war’s schon.

Ich hoffe, ich konnte dir helfen.

Viele Grüße

tincian

Danke für die schnelle Antwort. So wie ich das jetzt verstanden habe, könnte ich die if-Abfrage auch verkürzen indem ich sie durch die Methode

public boolean isQuadrat() {
return laenge == breite;
}

ersetze, oder anders gefragt: es liefern doch beide Methoden den gleichen bzw. die gleichen Werte (true,false), richtig?

Danke für die Antwort! Funktioniert!

Danke für deine Antwort! Könntest du mir eben noch sagen, was der Unterschied zwischen der Methode

public boolean isQuadrat() {
return laenge == breite;
}

und deiner ist? also sprich ohne das this.?

Danke dir! Der mathematische Hintergedanke war mir schon klar, ich hab nurnoch so meine Probleme die richtigen Datentypen zu verwenden oder in meiner Anwendungsklasse passende Ausgaben zu erzeugen. Aber probieren geht über studieren. :wink:

Hi, die Methode braucht nur Informationen des Objekts, also keine Parameter. Rückgabewert ist true oder false, also vom Typ boolean.
Ein Quadrat hat die gleiche Länge wie breite.
Also folgende Methode:

boolean istQuadrat()
{
if(länge==breite)
{return true;}
return false;
}

Grüße, Weiti

versuchs doch einfach mal mit der Methode:

public boolean quadrat() {
boolean q = false;
if (laenge==breite) {
q =true;
}
return q;
}

sag bescheid, wenn du noch zusätzliche Tipps brauchst.

Gruß Volkert

Hallo,

dies ist relativ einfach.
Aber zuvor kurz zu deiner Klasse.
Dies ist dein Original:

public class Rechteck{

 public int laenge;
 public int breite;


 public int berechneFlaeche(){
 return laenge\*breite;
 }

 public int berechneUmfang(){
 return 2\*laenge+2\*breite;
 }
}

Das ist schon so ok und funktioniert, aber ein paar kleine Änderungen.
Warum keinen Konstruktor, welcher schon Breite und Länge verlangt? Ja, ist nicht notwendig…
Länge und Breite sollten nicht public sein. Ändern, auslesen und Berechnen sollte man nur über Setter/Getter machen.

Mit den Änderungen;

public class Rechteck{

 private int laenge;
 private int breite;

 public int getLaenge(){
 return laenge;
 }

 public int getBreite() {
 return breite;
 }

 public void setLaenge(int inputLaenge) {
 if (inputLaenge \> 0) {
 laenge = inputLaenge;
 }
 }

 public void setBreite(int inputBreite) {
 if (inputBreite \> 0) {
 breite = inputBreite;
 }
 }

 public int getFlaeche(){
 return laenge\*breite;
 }

 public int getUmfang(){
 return 2\*laenge+2\*breite;
 }
}

Nun, wie ist das nun mit dem Quadrat? Ein Rechteck ist ein Quadrat, wenn Länge und Breite gleich gross sind.
Also folgende Methode (welche dann eingefügt werden muss) gibt true zurück, wenn das Rechteck ein Quadrat ist.

public boolean isQuadrat() {
 if (laenge == breite) {
 return true;
 } else {
 return false;
 }
 }

Der Aufruf erfolgt dann zum Beispiel mit rechteck.isQuadrat() und gibt true oder false zurück

Torsten

Hallo Sebastian,
die Methode, die du implementieren willst soll ja quasi die Antwort auf eine Entscheidungsfrage geben: Quadrat? Ja oder Nein?
Für solche Sachen nimmst du den Typ „boolean“. Methoden dieses Typs geben (anders als die beiden anderen Methoden mit ganzzahligem Rückgabewert) nur wahr oder falsch zurück.
Darin fragst du dann einfach ab ob dein Rechteck ein Quadrat ist, sprich, ob Länge und Breite gleich lang sind:

public boolean istQuadrat(){
if (laenge == breite)
return true;
else
return false;
}

Oder kürzer:

public boolean istQuadrat(){
return (laenge == breite);
}

Ich hoffe ich konnte dir weiterhelfen. :wink:

Viele Grüße,
pumpkin227

Hallo Sebastian,

wie ist denn die Eigenschaft Quadrat definiert?

Ein Quadrat ist ein Rechteck bei dem lange == breite.

Also würde die isQuadrat()-Methdode
so aussehen:

public boolean isQuadrat() {
return laenge==breite;
}

Grüße,
Heinz

public class Rechteck
{

public boolean istQuadrat() {
return laenge == breite;
}
}

Viel Spass damit!
Ein Tip noch: die Variablen in einer Klasse, die Instanzvariablen sollten private sein und dann sollte es je einen Setter (setLaenge(…), setBreite(…)) und je einen Getter (getLaenge(), getBreite()) geben.

Ja, sollte auch gehen… probiers einfach aus.

Das hört sich strak nach Hausaufgabe an. Naja, hier ein Hinweis:

Füge Deiner Klassse ‚Rechteck‘
die Methode:

public boolean isQuadrat(){

// hier prüfen, ob es ein Quadrat ist, wenn ja:
// return true;

// wenn nein:
// return false;

}

Es tut absolut das gleiche,

this ist ein Zeiger auf das eigene Objekt. laenge und breite sind ja bei dir attribute des Objekts und über den this zeiger spricht man diese explizit an.

Deine Methode könnte ja (zumindest theoretisch) so aussehen:

publicc boolean isQuadrat() {
int laenge,breite;
laenge = 1;
breite = 2;
system.out.println(laenge+" "+breite);

return this.laenge == this.breite;
}

jetzt würde die methode das gleiche machen und zusätzlich noch „1 2“ ausgeben.

hier macht es nicht unbedingt sinn this zu verwenden, aber irgendwie hab ich mir angewöhnt, bei attributen des objektes den this zeiger zu verwenden.

Man nennt es auch verdecken von attributen, für den Compiler sind es jetzt 2 vollkommen verschiedene variablen. Anfänger verwirrt man wahrscheinlich nur damit und ich hätte es nicht schreiben sollen… Aber macht der Gewohnheit :smiley:

LG

Hmm, du warst also in der Lage ein Klasse mit zwei Funktionen zu erstellen und bist nicht in der Lage eine dritte Funktion hinzuzufügen?

wie wär’s mit:

public boolean istQuadrat()
{
return laenge == breite;
}

Aufrufen kannst du sie wie die anderen Funktionen auch. Es wird nun allerdings ein ‚boolean‘-Wert zurückgegeben.

Hallo, lange nichts mehr mit Java gemacht :frowning:

Ich würde empfehlen eine Methode mit dem Rückgabetyp „bool(ean)“ zu entwerfen, mit einer einzigen „if-else“-Abfrage: Wenn laenge==breite dann true, sonst false.