Zähler nicht sichtbar (Thema: Konstruktoren)

Dopa

Mitglied
Aufgabenstellung siehe etwas weiter unten.

Das Programm zum Testen und aufrufen der Konstruktorklasse:

Java:
public class Seriennummerntest {
    public static void main(String[] args) {
	Bruch_mit_Seriennummer a = new Bruch_mit_Seriennummer(1, 2);
	Bruch_mit_Seriennummer b = new Bruch_mit_Seriennummer(1, 3);
	Bruch_mit_Seriennummer c = new Bruch_mit_Seriennummer(1, 4);
	Bruch_mit_Seriennummer d = new Bruch_mit_Seriennummer(1, 6);
	Bruch_mit_Seriennummer e = new Bruch_mit_Seriennummer(1, 8);
	System.out.println(a.bruchtoString() + " Seriennummer: "
		+ a.getSeriennummer());
	System.out.println(b.bruchtoString() + " Seriennummer: "
		+ b.getSeriennummer());
	System.out.println(c.bruchtoString() + " Seriennummer: "
		+ c.getSeriennummer());
	System.out.println(d.bruchtoString() + " Seriennummer: "
		+ d.getSeriennummer());
	System.out.println(e.bruchtoString() + " Seriennummer: "
		+ e.getSeriennummer());
    }

}

Die Konstruktorklasse:

Aufgabe: Ergänzen Sie die Klasse um ein ganzzahliges Attribut mit dem Namen seriennummer. In dem Attribut soll jeder Bruch seine Seriennummer speichern. Der zuerst erzeugte Bruch soll die Seriennummer 1, der zweite die Seriennummer 2 etc erhalten.

Verwenden Sie zusätzlich ein statisches Attribut, um die jeweils korrekte Seriennummer zu ermitteln. Die Seriennummer eines Objekts soll als unveränderliches (final) Attribut definiert werden. Für die Abfrage der Seriennummer soll die Klasse eine Get-Methode zur Verfügung stellen.

Java:
public class Bruch_mit_Seriennummer extends Bruch {
    static int anzahl = 0;    
    private final int seriennummer;

    Bruch_mit_Seriennummer(int x, int y) {
	super(x, y);  // Zugriff auf Superklasse (verzichte im Moment darauf diese zu posten)
	anzahl++;
	seriennummer = anzahl;
    
    int getSeriennummer() {
	return seriennummer;
    }
    }}

1.) Der Wert von anzahl müsste sich von 1 auf 5 ändern, aber das ist in Eclipse nicht als Breakpoint/Variable ersichtlich, weshalb nur?? Kann ich das sichtbar machen?

2.) Wo genau werden die Serienummer-Werte abgespeichert? Die seh ich nämlich auch nirgends...

Danke für die Hilfe.
 
Moin,

Der Wert von anzahl müsste sich von 1 auf 5 ändern, aber das ist in Eclipse nicht als Breakpoint/Variable ersichtlich, weshalb nur?? Kann ich das sichtbar machen?
Nein, warum sollte er?
Bei jedem neuen Aufruf der Funktuon wird "anzahl" mit '0' initialisiert und danach inkrementiert ... ergo: immer '1' 🙂

Wo genau werden die Serienummer-Werte abgespeichert? Die seh ich nämlich auch nirgends...
äh, keine Ahnung 😱
Ist aus dem Codeschnipsel nicht ersichtbar, ob Du hinterher noch was speicherst ...

Davon abgesehen:
Java:
    int getSeriennummer() 
    {
    return seriennummer;
    }
diese Deklaration innerhalb einer Funktion ist Blödsinn und kann nicht funktionieren !!
Java:
    return seriennummer;
Reicht zur Rückgabe des Wertes völlig!
Hat allerdings nichts mit Speicherung zu tun !!

Gruß
Klaus
 
Hallo

Moin,

Nein, warum sollte er?
Bei jedem neuen Aufruf der Funktuon wird "anzahl" mit '0' initialisiert und danach inkrementiert ... ergo: immer '1' 🙂

Das Resultat ist die Ausgabe 1, 2, 3, 4, 5 (vereinfacht ausgedrückt, über die getSeriennummer-Methode in der Klasse Seriennummertest). Es soll auch so sein und es funktioniert nur mit dem static und final, ansonsten ist die Ausgabe tatsächlich 1, 1, 1, 1, 1.

Davon abgesehen:
Java:
    int getSeriennummer() 
    {
    return seriennummer;
    }
diese Deklaration innerhalb einer Funktion ist Blödsinn und kann nicht funktionieren !!
Java:
    return seriennummer;
Reicht zur Rückgabe des Wertes völlig!
Hat allerdings nichts mit Speicherung zu tun !!

Gruß
Klaus

Das stimmt glaub schon, da seriennummer als private (aussserhalb der Klasse unsichtbar) deklariert wurde, ist seriennummer nur über eine get-Methode sichtbar resp. abrufbar. (Oder?)

Gruss Dopa
 

Neue Themen


Zurück
Oben