Aufgabe Konstruktor Werteübergabe

Neue Frage »

Auf diesen Beitrag antworten »
SarahK. Aufgabe Konstruktor Werteübergabe

Meine Frage:
Hey Leute,

gut, dass es Euch gibt :- Ich habe die folgende Aufgabenstellung:

Programmieren Sie eine Klasse Rechteck, die ein einfaches Rechteck mit einer ganzzahligen
Länge und einer ganzzahligen Breite beschreibt. Die Klasse bietet nach außen folgende Schnittstellen
an:
- einen Konstruktor, der Länge und Breite übergeben bekommt
- flaeche() gibt die Grundfläche des Rechtecks an
- istQuadrat() überprüft, ob das Rechteck ein Quadrat ist.

Meine Ideen:
Mein Code dazu:

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:

class Rechteck
{
	int laenge;
	int breite;
	
	public Rechteck (int laenge, int breite)
	{
		this.laenge = laenge;
		this.breite = breite;
	}

	//Methoden
	public void flaeche (int laenge, int breite)
	{
		int flaeche = laenge*breite;
		System.out.println("Die Flaeche betraegt " + flaeche + " cm²");
	}
	public void istQuadrat (int laenge, int breite)
	{
		if (laenge == breite)
		{
			System.out.println("Es handelt sich um ein Quadrat");
		}
		else
		{
			System.out.println("Es liegt kein Quadrat vor");
		}
	}
}


public class RechteckListe
{
	public static void main (String[]args)
	{
		Rechteck h = new Rechteck (23,5); //Übergabe?
		h.flaeche(45,32);
		h.istQuadrat(45,45);
	}
}



Mein Problem liegt darin, dass ja die Werte vom Konstruktor übergeben werden sollen. Also darf ich doch bei h.flaeche() und h.istQuadrat() doch keine Werte eingeben?


Vielen Dank für die Antworten ;-)
 
Auf diesen Beitrag antworten »
Karlito

Genau. Die Methoden sollten die Klassenvariablen verwenden um die Fläche zu berechnen bzw. zu ermitteln, ob das Rechteck ein Quadrat ist. Lass doch einfach die Parameter weg und nimm nur die Klassenvariablen.

Versuche es mal ohne dass ich Dir ein Beispiel gebe. In ca 1-2 Stunden bin ich dann wieder erreichbar, wenn euler nicht schon da war Augenzwinkern
Auf diesen Beitrag antworten »
SarahK.

Ich habe es jetzt mehrmals versucht, bekomme aber dann die Fehlermeldung, dass laenge und breite nicht zugeordnet werden können?
Auf diesen Beitrag antworten »
Karlito

Dann poste doch mal bitte deinen aktuellen Quelltext.
 
Auf diesen Beitrag antworten »
SarahK.

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
public class RechteckListe
{
	public static void main (String[]args)
	{
		Rechteck h = new Rechteck (23,5); //Übergabe?
		flaeche(laenge, breite);
		h.istQuadrat(laenge,breite);
	}
}



An der Klasse selber habe ich nichts verändert, nur in der main-Funktion.
Auf diesen Beitrag antworten »
Karlito

Du muss die Parameter in den Methoden in der Klasse weg lassen.

Hier das Beispiel entsprechend bearbeitet:
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:
class Rechteck
{
	int laenge;
	int breite;
	
	public Rechteck (int laenge, int breite)
	{
		this.laenge = laenge;
		this.breite = breite;
	}

	//Methoden
	public void flaeche ()
	{
		int flaeche = laenge*breite; //die beiden Werte stammen nun aus den Klassenvariablen
		System.out.println("Die Flaeche betraegt " + flaeche + " cm²");
	}
	public void istQuadrat ()
	{
		if (laenge == breite)
		{
			System.out.println("Es handelt sich um ein Quadrat");
		}
		else
		{
			System.out.println("Es liegt kein Quadrat vor");
		}
	}
}


public class RechteckListe
{
	public static void main (String[]args)
	{
		Rechteck r = new Rechteck (23,5); //hier wird eine neues Objekt der Klasse Rechteck erstellt
		r.flaeche();
		r.istQuadrat();
		r = new Rechteck (20,20); //hier wird ein weiteres Objekt der Klasse Rechteck erstellt
		r.flaeche();
		r.istQuadrat();
	}
}


Gruß,

Karlito
Auf diesen Beitrag antworten »
SarahK.

Dankeschön :-) Darf ich fragen, wie lange du dich schon mit der Informatik befasst? Ich muss sagen, dass das Fach sehr interessant ist (aber bis die nötigsten Grundlagen einmal sitzen auch sehr komplex).
Auf diesen Beitrag antworten »
Karlito

Ich befasse mich seit meinem 10. Lebensjahr mit Informatik und das sind nun 21 Jahre... Dazu habe ich eine abgeschlossene Berufsausbildung als Fachinformatiker für Anwendungsentwicklung, habe zwei Jahre im Beruf gearbeitet und Studiere nun im 11. Semester Informatik (Bachelor/Master)... Und es ist immernoch interessant smile
Auf diesen Beitrag antworten »
SarahK.

Klingt super. Dann wünsche ich Dir weiterhin viel Erfolg im Studium :-)
Auf diesen Beitrag antworten »
Karlito

Danke ebenso Daumen hoch Wink
Auf diesen Beitrag antworten »
Mike90

Guten Morgen,

ich schließe einmal an diese Aufgabe an, da meine Aufgabenstellung recht ähnlich ist.

Schreiben Sie ein Programm RechteckListe, dass 1000 Rechteck-Objekte mit zufälligen Kantenlängen im Bereich 1-10 erzeugt und diese in einem Array speichert. Aus diesen Rechtecken errechnen Sie die durchschnittliche Fläche eines Rechtecks und bestimmen, wie viele von den Rechtecken Quadrate sind.

Ich habe das Programm soweit fertig, mir stellt sich nur ein "Problem":

In der Klasse RechteckListe muss ich 1000 Rechteck-Objekte anlegen, nur mit einer for-Schleife (ohne Methode) funktioniert dies nicht? Und die Methode müsste ich dann eigentlich public machen? Habe sie jetzt als Zwischenlösung auf protected gesetzt unglücklich


Hier mein Code:

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:
65:
66:
public class Übungsblatt8Aufgabe3_1 
{
    public static void main(String[] args) 
    {
        RechteckListe rt = new RechteckListe ();
        rt.initalzing();
        rt.durchschnittsFlaeche();
        
    }
}

class Rechteck
{
    private int laenge; 
    private int breite;
    private int counter = 0; 
    
    public Rechteck (int laenge, int breite)
    {
        this.laenge = laenge;
        this.breite = breite; 
    }
    
    public double flaeche ()
    {
        return laenge*breite; 
    }
    
    public int istQuadrat()
    {
        if (laenge==breite)
        {
            ++counter; 
        }
    return counter;
    }
}

class RechteckListe
{
    Rechteck []  rt = new Rechteck [1000];
    
    protected void initalzing ()
    {
        for (int i=0; i<rt.length;i++)
        {
            rt[i] = new Rechteck ((int)(Math.random()*10+1), (int)(Math.random()*10+1));
        }
    }
    
    public void durchschnittsFlaeche ()
    {
        int sindQuadrate=0;
        for (int j=0; j<rt.length;j++)
        {
            double durchschnitt = rt[j].flaeche()/2;
            sindQuadrate = rt[j].istQuadrat();
            System.out.println(durchschnitt);
        }
        System.out.println("Anzahl Quadrate: " + sindQuadrate);
    }
    
}

Auf diesen Beitrag antworten »
eulerscheZahl

Was spricht dagegen, die Methode public zu machen oder in den Konstruktor zu schreiben?
Bei istQuadrat gefällt mir der counter nicht. Wenn du die Methode nochmal aufrufst, hast du da plötzlich 2 Quadrate. Setze den Rückgabewert doch auf boolean.

double durchschnitt = rt[j].flaeche()/2;
Was wird das denn? Du sollst die Flächen aller Rechtecke zusammenaddieren und dann durch die Anzahl teilen.
Auf diesen Beitrag antworten »
Mike90

Danke für die Antwort.

Zitat:
double durchschnitt = rt[j].flaeche()/2; Was wird das denn? Du sollst die Flächen aller Rechtecke zusammenaddieren und dann durch die Anzahl teilen.


Sorry, da habe ich die Aufgabe falsch gelesen.
 
Neue Frage »
Antworten »


Verwandte Themen

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