Klassenvariablen Referenz auf ein Objekt

aNd12121

Mitglied
Hallo,

wir haben dieses Semester mit JAVA angefangen. Eigentlich läuft es auch ganz gut, nur stehe ich jetzt vor einen Problem, was ich irgendwie nicht zu lösen weiß.

Wir sollen ein Studentenverwaltungssystem programmieren.

Ich erläuter mal kurz die Aufgabenstellung.

3.1 Interface Numbergenerator
Deklaration der Methode
Code:
 public long createNumber();

3.2 Klasse NumberGeneratorLinear
Implementation vom Interface NumberGenerator

Der Konstruktor erhält einen Startwert vom Typ Long

Bei jemden Aufruf der Mtehode create Number wird der aktuelle Wert einer Zählervariable zurückgegeben

Java:
 public class NumberGeneratorLinear implements NumberGenerator{

public static long startNumber;

public NumberGeneratorLineare(long startNumber){
this.startNumber = startNumber;
}

public long createNUmber(){
return startNumber++;
}


3.3 ... irrelevant

3.4 Klasse Student

Klassenvariavle vom Typ NumberGenerator und einer Instantvariable Matrikelnummer(Datentyp long)

Der Klassenvariable kann über setMatrNumberGenerator() eine Referenz auf ein Objekt eines Nummer Generators zugewiesen werden

Die Matrikelnummer wird bei der Erzeugung des Objektes festgelegt. Reeferenziert die Klassenvariable auf einen Nummer Generator, sow ird die Nummer durch Aufruf der entsprechenden ethode des Generators erzeugt.


Java:
public class Student 
          public long matr;
          public static NumberGenerator generator;

public static void setMatrNumberGenerator(NumberGenerator generator){
generator.createNumber;
}




Ja an den letzten beiden Punkten hakt es jetzt gerade. Ich weiß nicht wirklich wie ich da vorzugehen habe. Die Quelltexte sind so wie ich sie zurzeit ca. habe. Vielleicht mag mir jemand helfen.

mit freundlichen Grüßen
 
W

Wishmaster51

Gast
Zum letzten: Methoden ohne Parameter musst du mit leeren runden Klammern aufrufen, also:
Java:
public class Student 
{
          public long matr;
          public static NumberGenerator generator;
 
          public static void setMatrNumberGenerator(final NumberGenerator generator1)
          {
                    Student.generator = generator1;
          }
}
Außerdem fehlte da ein "{"

Der Rest sieht gut aus :)

PS: Ist das große U in
Code:
createNUmber()
ein Tippfehler? Ich hab das mal so übernummen damits konsistent ist :)
 
Zuletzt bearbeitet von einem Moderator:
V

vanny

Gast
Java:
public class Student 
          public long matr;
          public static NumberGenerator generator; // wird nirgendwo von dir verwendet ?!
 
public static void setMatrNumberGenerator(NumberGenerator generator){
matr = generator.createNumber(); // der long-Wert muss auch irgendwo hin ^^
}

Warum du alles statisch machst kann ich dir auch nicht beantworten, war ja aber auch nicht die Frage

Gruß Vanny
 
G

Gast2

Gast
Deine set Methode sollte so ausschauen:
Java:
this.generator = generator;
Damit kannst du dann auf der Variablen generator die Methode createNummer aufrufen.
 

Jodo

Aktives Mitglied
Hi,
ich weiss als Anfänger ist es nicht immer einfach, aber du musst, gerade bei so Aufgabenstellungen an der Uni/FH, die Anweisungen in der Aufgabe 1:1 in Code schreiben.

1.
Code:
setMatrNumberGenerator(NumberGenerator generator)
bekommt ja ein Objekt vom Typ NumberGenerator und das musst du einfach der Variable in deiner Klasse zuweisen. Mehr steht in dem Satz nicht, und mehr musst du auch nicht machen.

2. Du weisst doch bestimmt welche spezielle Methode in Java bei der Objekterzeugung aufgerufen wird oder? In dieser Methode prüfst du dann ob die Variable generator ein Objekt referenziert (wenn nichts referenziert wird, ist der Wert
Code:
null
). Wenn das der Fall ist kannst du dir mit
Code:
generator.createNumber();
eine Matrikelnummer erzeugen lassen und der Variable matr zuweisen. Was du machen sollst wenn die Referenz
Code:
null
ist, müsste in der Aufgabe noch stehen.


Ich hoffe das hilft dir, ohne das ich dir die Lösung vorgebe.
 
Zuletzt bearbeitet:

aNd12121

Mitglied
Vielen Dank schonmal für die ganzen Antworten.


aber leider funktioniert das irgendwie noch nicht so wie ihr das jetzt gesagt habe.

Java:
public static void setMatrNumberGenerator(NumberGenerator generator){
this.generator = generator;
}

Ich programmiere in Eclipse und zeigt mir da nen Fehler an. "Cannot use this in a static context".

Habe ich noch irgendwas vergessen oder stehe ich gerade total aufm schlauch?
 
G

Gast2

Gast
Ähm ja, das funktioniert so natürlich nicht. Du kannst die Variable über
Code:
Student.generator
ansprechen.
 

aNd12121

Mitglied
Wenn ich mir das jetzt ausgeben lassen will müsste es nicht wie folgt klappen?

Java:
 Student student1 = new Student("Vorname", "Nachname");
 student1.matr = student1.generator.createNumber();

Also anders hab ich es schon hinbekommen, aber leider ist es so ja nicht gefragt:

Java:
 NumberGeneratorLinear test = new NumberGeneratorLinear(1);
Student student1 = new Student("Vorname", "Nachname");
student1.matr = test.createNumber();

auch hier wäre ich für nen Hinweis nochmal sehr dankbar
 

Jodo

Aktives Mitglied
Ähm ja, das funktioniert so natürlich nicht. Du kannst die Variable über
Code:
Student.generator
ansprechen.

Innerhalb der Klasse würde auch nur generator gehn oder? Oder ist es besser die statische Variable über Student.generator deutlich zu machen?

Und ja, der Konstruktor. Ich hab schon ein paar Erstis bei mir an der Uni mit Java geholfen, daher will ich den Leuten immer nur Anstösse geben und selbst denken lassen und ihr Wissen wiederholen/festigen ;) Deswegen hab ich s nur mal "spezielle Methode" genannt.

[EDIT]Damit dein erster Code funktioniert, musst du dem Studenten noch einen NumberGenerator geben und statische Variablen einer Klasse immer mit "Klassenname.Variable" aufrufen, nie über ein Objekt der Klasse. In deinem Fall also
Code:
Student.generator.createNumber();
[/EDIT]
 
Zuletzt bearbeitet:
W

Wishmaster51

Gast
Den NumberGenerator im Konstruktor anzugeben ist irgendwie suboptimal - da müsste man ja jedesmal, wenn man einen neuen Studenten anlegt, auch einen neuen NumberGenerator angeben.

Der Konstruktor sollte aber irgendwo eine Zeile
Code:
this.matr = Student.generator.createNumber();
enthalten, und der NumberGenerator sollte in oben erwähnter Setter-Methode initialisiert werden.
 

aNd12121

Mitglied
Tut mir Leid aber wie du das mit dem NumberGenerator geben meinst weiß ich nicht genau.

So hab ich es jetzt:

Student student1 = new Student("Vorname", "Nachname");
student1.matr = Student.generator.createNumber();
 
W

Wishmaster51

Gast
Okay, dann mal als Beispiel:

Java:
public class Student 
{
          public long matr;
          public static NumberGenerator generator;
 
          public static void setMatrNumberGenerator(final NumberGenerator generator1)
          {
                    Student.generator = generator1;
          }
          
          public Student()
          {
                    this.matr = Student.generator.createNumber();
          }
}
Du musst hier den numberGenerator über die
Code:
setMatrNumberGenerator(final NumberGenerator generator1)
Methode setzen, um sicherzustellen, dass dieser im Konstruktor nicht auf null zeigt.
 

Jodo

Aktives Mitglied
Na du hast doch für einen Student extra eine Methode
Code:
setNumberGenerator()
. Dein Code funktioniert nur, wenn du dem Studenten einen NumberGenerator mit dieser Methode übergibst. Denn wie Wishmaster51 schon meint, nicht im Konstruktor
Code:
generator = new NumberGeneratorLinear(x);
machen. Da die Variable generator ja statisch ist, hat wenn du diesen einmal setzt jeder Student den selben Generator.
 

aNd12121

Mitglied
Also ich schreib jetzt einfach nochmal wie ich das jetzt habe. Tut mir wirklich leid stehe gerade ziemlich aufm schlauch.

Java:
 public long matr;
public static NumberGenerator gener;

public static void setMatrNumberGenerator(NumberGenerator generator){ // ist so vorgegeben
          Student gener = generator;
}

public Student(String surName, firstName){
super(firstName, surName);  // Die Klasse war nochmal abgeleitet worden, aber ist ja für meine Fragestellng irrelevant
this.matr = Student.gener.createNumber;
}


Und in meiner Testklasse hab ich es wie folgt:

Java:
Student student1 = newStudent("Vorname", "Nachname");
student1.matr = Student.gener.createNumber();


Würde jetzt ungerne den Thread schließen, ohne das ich meine Frage zu 100% beantwortet bekommen habe, bzw verstanden habe. Wäre der Aufwand für euch ja auch umsonst gewesen.Vielen Dank aber bis hierher schonmal für die Geduld
 

Jodo

Aktives Mitglied
Wir ham alle mal klein angefangen, mir gings damals nicht besser ;).
Java:
public long matr;
public static NumberGenerator gener;
/* [B]public static NumberGenerator gener = new NumberGeneratorLinear(1);[/B] */

public static void setMatrNumberGenerator(NumberGenerator generator){ // ist so vorgegeben
          Student.gener = generator;
}

public Student(String surName, firstName){
    super(firstName, surName);  // Die Klasse war nochmal abgeleitet worden, aber ist ja für meine Fragestellng irrelevant
    if (Student.gener != null) {
            this.matr = Student.gener.createNumber();
    }
}

Die if-Bedingung im Konstruktor ist notwendig, wenn nirgends sichergestellt wird, das der Generator auch existiert. Wenn du meine auskommentierte Zeile benutzt (und auch darfst nach Aufgabenstellung) dann kannst du die If-Prüfung wegmachen und nur den in ihr stehen Code benutzen.

[EDIT]Deine Testklasse muss dann, je nachdem ob du das Auskommentierte benutzt oder nicht so aussehen:
Java:
NumberGenerator generator = new NumberGeneratorLinear(1);
Student.setMatrNumberGenerator(generator);
Student student1 = new Student("Max", "Mustermann");
[/EDIT]
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Unterschiede bei Zugriff auf Objekt und Klassenvariablen über einen Getter? Java Basics - Anfänger-Themen 2
KogoroMori21 Objektvariablen, Klassenvariablen, Instanzvariablen Java Basics - Anfänger-Themen 1
D Richtige Kommentierung Klassenvariablen Java Basics - Anfänger-Themen 19
Z private Klassenvariablen Java Basics - Anfänger-Themen 8
N Klassenvariablen zurücksetzen Java Basics - Anfänger-Themen 4
G Klassenvariablen & Instanzvariablen Java Basics - Anfänger-Themen 4
J Variablen Unterschied zwischen lokalen-, Instanz-, Klassenvariablen Java Basics - Anfänger-Themen 6
N Vererbung Best Practice: Verfeinerte Klassenvariablen in Unterklasse Java Basics - Anfänger-Themen 5
D Klassenvariablen standardmäßig private oder public? Java Basics - Anfänger-Themen 2
S Initialisierung von Klassenvariablen Java Basics - Anfänger-Themen 7
A Klassenvariablen zusammen fassen Java Basics - Anfänger-Themen 5
G Frage zu Fields - Klassenvariablen Java Basics - Anfänger-Themen 9
M Variablen Gültigkeit von Klassenvariablen bei Vererbung? Java Basics - Anfänger-Themen 4
J Klassenvariablen lesen Java Basics - Anfänger-Themen 13
B Datentypen Klassenvariablen Java Basics - Anfänger-Themen 2
G OOP Verständisfrage zu Klassenvariablen Java Basics - Anfänger-Themen 5
C Klassenvariablen und Klassenmethoden Java Basics - Anfänger-Themen 17
J Problem mit inneren Klassen und Klassenvariablen Java Basics - Anfänger-Themen 11
G Sollte man Klassenvariablen als final deklarieren? Java Basics - Anfänger-Themen 3
X Zugriff auf Klassenvariablen NUR mit get/set Methoden? Java Basics - Anfänger-Themen 8
W Klassenvariablen und Werte ausgeben Java Basics - Anfänger-Themen 2
D Globale Klassenvariablen. Java Basics - Anfänger-Themen 12
7 Lokale Variablen, Klassenvariablen, Instanzvariablen Java Basics - Anfänger-Themen 15
H Klassenvariablen,methoden Java Basics - Anfänger-Themen 7
M Zugriff auf Klassenvariablen Java Basics - Anfänger-Themen 8
Hzrfa Objekte, Referenz Java Basics - Anfänger-Themen 5
I Grundsatzfrage: Belegt eine Referenz auf 'null' RAM, und wenn ja - wieviel ;-) ? Java Basics - Anfänger-Themen 5
O Warum bekommen wir nicht die Referenz vom zurückgegebenen Objekt? Java Basics - Anfänger-Themen 4
P Wie rufe ich Methoden mit einer Referenz auf eine Klasse||Objekt auf Java Basics - Anfänger-Themen 4
C Kopie oder Referenz ? Java Basics - Anfänger-Themen 5
A Binärbaum rekursiv durchsuchen und Referenz zurückgeben Java Basics - Anfänger-Themen 4
B Neue Liste erstellen, wenn Objekte bestimmte Referenz hat / Gruppierung von Einträgen Java Basics - Anfänger-Themen 12
Y Pointer / Referenz - Theorie Java Basics - Anfänger-Themen 3
H Referenz Objekt aufrufen Java Basics - Anfänger-Themen 12
D Uebergabe per Referenz Java Basics - Anfänger-Themen 2
O Referenz - toString Java Basics - Anfänger-Themen 9
S This-Referenz Java Basics - Anfänger-Themen 6
F Referenz an ein Objekt in einer anderen Klasse erstellen(Nullpointer exception) Java Basics - Anfänger-Themen 6
I Referenz auf Klasse als Rückgabewert Java Basics - Anfänger-Themen 7
P Datentypen LinkedList: Kopie behält Referenz? Java Basics - Anfänger-Themen 3
J Referenz und Instanzierung Java Basics - Anfänger-Themen 25
I Erste Schritte Referenz zum Knoten davor, in einer Liste Java Basics - Anfänger-Themen 4
M Referenz geht bei Zwischenspeichern verloren (ArrayList) Java Basics - Anfänger-Themen 4
8 Referenz (Pointer, Zeiger) in Java Java Basics - Anfänger-Themen 9
O This-Referenz als Returnwert einer Methode? Java Basics - Anfänger-Themen 13
O This Referenz Java Basics - Anfänger-Themen 3
A top referenz bei queues Java Basics - Anfänger-Themen 1
J Rückgabe als Wert, keine Referenz Java Basics - Anfänger-Themen 3
Q Parameterübergabe - Objekt - Referenz Java Basics - Anfänger-Themen 5
C Dynamische Referenz & abstrakte Klassen Java Basics - Anfänger-Themen 3
V Frage zu Polymorphismus: Objekt der Subklasse in Referenz der Oberklasse Java Basics - Anfänger-Themen 4
T Aufgerufene Methode Inhalt der übergebenen Referenz Java Basics - Anfänger-Themen 5
B Referenz in Java Java Basics - Anfänger-Themen 5
C Referenz auf ein Objekt kopieren! Java Basics - Anfänger-Themen 2
J Methoden Referenz und Speicherplatz für Objekte reservieren Java Basics - Anfänger-Themen 2
M Wie komm ich an die Referenz eines Oberflächenelements Java Basics - Anfänger-Themen 2
M Referenz Frage Java Basics - Anfänger-Themen 12
K OOP Probleme mit Objekt-Referenz in Methode Java Basics - Anfänger-Themen 6
W Die leidige Referenz-Frage Java Basics - Anfänger-Themen 9
B Arraycopy kopiert nur die Referenz?! Java Basics - Anfänger-Themen 3
S Speicheradresse auf die eine Referenz zeigt ausgeben Java Basics - Anfänger-Themen 12
E Compiler-Fehler kann Objekt-Referenz nicht erstellen Java Basics - Anfänger-Themen 3
B Referenz zu anderen Frame Java Basics - Anfänger-Themen 10
Blackskyliner Referenz ähnlicher Zugriff, aber wie? Java Basics - Anfänger-Themen 4
K Klassen this-Referenz und Klassen/Methodenaufruf Syntax Java Basics - Anfänger-Themen 3
C Referenz einer bereits instanziierten Klasse während des Programmablaufs Java Basics - Anfänger-Themen 16
H Objekt holen per Referenz als String. Java Basics - Anfänger-Themen 4
T Referenz einer Variable übergeben Java Basics - Anfänger-Themen 3
S Datentypen Objekt Integer Referenz Java Basics - Anfänger-Themen 5
B Referenz auf Referenz Java Basics - Anfänger-Themen 3
Luk10 Problem mit Singleton bzw statischer Referenz! Java Basics - Anfänger-Themen 16
H ArrayList Zugriffe per Referenz verkürzen? Java Basics - Anfänger-Themen 9
B Static Referenz auf Non-static Feld Java Basics - Anfänger-Themen 6
Luk10 Sinn von Instanzierung ohne Referenz Java Basics - Anfänger-Themen 7
C0FFEE Referenz auf Methode übergeben Java Basics - Anfänger-Themen 2
aze NullpointerException :Null Referenz anzeigen lassen Java Basics - Anfänger-Themen 2
D Fehlen einer Referenz auf Objekt Java Basics - Anfänger-Themen 14
N this.referenz erläuterung Java Basics - Anfänger-Themen 2
K Attribut als Referenz auf Objekt Java Basics - Anfänger-Themen 8
K 3 Threads bearbeiten 1 Referenz: Ich versteh's nicht... Java Basics - Anfänger-Themen 2
P OOP-Theorie-Frage: Referenz auf Objekt Java Basics - Anfänger-Themen 27
D Referenz auf Objekt Java Basics - Anfänger-Themen 5
P Methode BigInteger-Array übergeben als Referenz Java Basics - Anfänger-Themen 6
U null-referenz Java Basics - Anfänger-Themen 26
deetee Problem mit Referenz auf Map Java Basics - Anfänger-Themen 5
G Interface referenz probleme Java Basics - Anfänger-Themen 10
V Return - JA/NEIN - Parameterübergabe Array (Referenz) Java Basics - Anfänger-Themen 7
D enum und Referenz der umgebenden Klasse Java Basics - Anfänger-Themen 2
C Referenz Java Basics - Anfänger-Themen 11
A ClassNotFoundException: Referenz nicht aktualisiert Java Basics - Anfänger-Themen 2
P Textarea aktualisieren, Referenz fehlt Java Basics - Anfänger-Themen 4
T Die this Referenz Java Basics - Anfänger-Themen 21
C Größe einer Referenz ? Java Basics - Anfänger-Themen 16
D Array reverse Problem, da Referenz nicht auf tmpArray zeigt Java Basics - Anfänger-Themen 4
G primitive Datentypen als Referenz an eine Methode übergeben Java Basics - Anfänger-Themen 2
G Wie Referenz auf Objekt übergebn Java Basics - Anfänger-Themen 8
P Objekte als Attribut: Referenz oder Kopie? Java Basics - Anfänger-Themen 3
G Parameterübergabe als Referenz bzw. als Kopie Java Basics - Anfänger-Themen 4
S Prüfen, ob null Referenz? Java Basics - Anfänger-Themen 2
G Referenz-Problem Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben