Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Aufgabe Konstruktor Werteübergabe » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Aufgabe Konstruktor Werteübergabe
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
SarahK.
unregistriert
Aufgabe Konstruktor Werteübergabe Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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 ;-)
11.01.2015 11:57
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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
11.01.2015 12:06 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
SarahK.
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ich habe es jetzt mehrmals versucht, bekomme aber dann die Fehlermeldung, dass laenge und breite nicht zugeordnet werden können?
11.01.2015 15:08
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Dann poste doch mal bitte deinen aktuellen Quelltext.
11.01.2015 15:25 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
SarahK.
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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.
11.01.2015 15:29
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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
11.01.2015 15:37 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
SarahK.
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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).
11.01.2015 15:42
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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
11.01.2015 15:54 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
SarahK.
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Klingt super. Dann wünsche ich Dir weiterhin viel Erfolg im Studium :-)
11.01.2015 15:59
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Danke ebenso Daumen hoch Wink
11.01.2015 15:59 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
Mike90
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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);
    }
    
}

24.01.2016 10:01
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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.

__________________
Syntax Highlighting fürs Board (Link)

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von eulerscheZahl: 24.01.2016 10:15.

24.01.2016 10:12 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Mike90
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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.
24.01.2016 10:48
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » Aufgabe Konstruktor Werteübergabe