Zum Inhalt springen

Seltsames Problem: Wer Zeit, Lust und/oder Langeweile hat


LordK

Empfohlene Beiträge

Hi Leute,

ich bin grad dabei an einem Java Programm für den Informatik Unterricht zu programmieren.

Es geht um eine Kundenverwaltungssoftware. Oder sagen wir lieber etwas ähnliches. Ist ziemlich unprofessionel.

Und ich hab im moment ein Problem beim ändern der Kundendaten.

Ich hab die Source codes mal hier hoch geladen.

Source codes

Bzw. das soweit lauffähige Programm online gestellt.

Das Applet

So nun zu meinem Problem.

Also ich hab für das Editieren von Kunden einen seperaten Frame gemacht, der Anhand der Eingabe der Kundennummer die Kundendaten anzeigt wenn man auf laden drückt. Darüber ließt er aus dem Array in dem die Kunden drin stehen die Daten aus. Das Problem ist, wen ich jetzt im eigentlichem Kundenfenster x Kunden hinzufüge und somit das Array um x Plätze vergrößere, kann ich die Kunden nicht editieren. Es sind lediglich die 5 voreingetragenen Kunden zu editieren aber nicht die hinzugefügten. Ich hab zur kontrolle mal folgendes probiert.

Ich hab im eigentlichen Kundenfenster den Button reload mit einer Methode belegt, die die größe des Arrays in das Feld e-mail schreibt. Die Methode findet man in der Firma.java Zeile 37.

Dann habe ich genau die selbe Methode auf den Speichern Knopf im Editier Frame gelegt. Das seltsame ist jetzt. Wenn ich Kunden hinzufüge und dann auf den Reload Knopf im Kundenfenster drücke, bekomm ich die aktuelle Kundenzahl exakt angezeigt. Wenn ich die Methode jedoch über den Speichern Knopf im Editierframe aufrufe, zeigt er mir an, dass es nur 5 Kunden gibt. Ich verstehs net, weil beide Knöpfe ja die selbe Methode aufrufen. Hat einer da ne Idee?

Bin dankbar für jeden vorschlag.

Danke & c ya

LordK

P.S. Nicht über die seltsamen Namen der Methoden und Variablen wundern, die wurden vom Lehrer so vorgegben. Und nicht über die schlecht Programmierung wundern, bin Anfänger.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Oh man du produzierst praktisch unlesbaren Code.

Von der Formatierung und vom Konzept her.

Wenn dein Lehrer wirklich edit als Klassennamen vorgegeben hat, weiss er nicht wovon er redet. Ansonsten soll er mit euch erst einmal die Grundlagen der Objektorientierung durchgehen.

Am besten du schnappst dir mal ein Buch, z.B. www.javabuch.de und lernst ein bisschen Java. Ich schätze mal du kommst von C, ansonsten kann ich mir z.B. das hier nicht erklären.


public void neuerKunde (Kunde k) 

{ 

  Kunde[] kcach = new Kunde[kundenliste.length+1]; 

  System.arraycopy(kundenliste,0,kcach,0,kundenliste.length); 

  kundenliste = kcach; 

  kundenliste[kundenliste.length-1] = k; 

} 

Dafür gibt es in Java die Klasse java.util.Vector

Damit du nicht denkst, ich mache dich nur fertig, habe ich mir das ganze trotzdem angeschaut. Auch wenn es weh tat. :D

Du hast ein Objekt FirmaGUI, das von Firma erbt. In diesem steckt das erste Kundenarray, das du auch über den Reload Button ausgeben kannst.

Nun erstellst du ein Objekt von edit. (Java Klassennamen bitte immer mit einem großen Buchstaben anfangen)

Dieses erbt von FirmaGUI und damit auch von Firma.

Wenn du ein edit Objekt erzeugst, hat dieses also ein eigenes kundenarray, auf das du beim speichern zugreift.

Es existieren also 2 kundenarrays.

Ich kann dir jetzt keine Lösung anbieten, da ich dann die ganze Anwendung umschreiben würde.

Gruß Jaraz

Link zu diesem Kommentar
Auf anderen Seiten teilen

Naja,

also ich muss erst ma sagen, von C komm ich net, ich hab noch überhaupt keine Programmier erfahrung. Die ausgekoppelte Methode von dir hat mein Lehrer gemacht und der hat eigentlich nur Pascal erfahrungen.

Der Klassenname edit kommt von mir. Sowie die ganze Klasse.

War der erst beste Name, der eingefallen ist, es war spät am Abend.

Ich weiß es ist schrecklich, aber wie gesagt ich bin Anfänger. :)

Das wird noch besser. Hoffe ich :D

Mal sehen, vielleicht kann ja noch jemand durch mein Quelltext durchblicken.

als denn

bye

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Lord,

ich glaube, Du hast den Sinn des Forums nicht verstanden.

Die Leute hier geben Dir Hinweise, was Du besser machen kannst, oder wo Dein Fehler liegt, sie lösen aber nicht Deine Hausaufgaben.

Jaraz hat Dir einige Sachen erklärt, jetzt liegt es an Dir, die Lösung zu schreiben. Und wenn Du die Sache komplett umschreiben musst, dann ist das halt so, nur so lernt man.

Peter

Link zu diesem Kommentar
Auf anderen Seiten teilen

Originally posted by kingofbrain

ich glaube, Du hast den Sinn des Forums nicht verstanden.

Die Leute hier geben Dir Hinweise, was Du besser machen kannst, oder wo Dein Fehler liegt, sie lösen aber nicht Deine Hausaufgaben.

Jaraz hat Dir einige Sachen erklärt, jetzt liegt es an Dir, die Lösung zu schreiben. Und wenn Du die Sache komplett umschreiben musst, dann ist das halt so, nur so lernt man.

Danke! kingofbrain

Ich versuche es mal klarer auszudrücken.

Wenn du edit von FrameGUI und Frame erben lässt, hast du alle Objekte die in Frame und FrameGUI sind doppelt in deiner Anwendung.

Du musst also edit so umschreiben, das es z.B. eine eigenständige Klasse ist. Beim Konstruktor übergibst du dann das Objekt FrameGUI an edit.


public edit(FrameGUI f)

mit f.deineFrameGUIFunktion oder f.deineFrameGUIVariable kannst du dann auf Funktionen oder Variablen von FrameGUI zugreifen.

Das sind aber die einfachsten Beispiele für Zugriff auf Objekte, weswegen ich schon einmal auf ein Buch hingewiesen habe.

Ich finde Lehrer, die einfach mit Java anfangen ohne direkt auf die Objektorientierung einzugehen sehr bescheiden. Aber vielleicht hat der Lehrer das auch erklärt und die Schüler haben es einfach nicht verstanden. ;)

Aber meistens werden irgendwelche obskuren Aufgaben gestellt, wie ggT oder Primzahlenberechnung und irgendwann später heißt es dann, nun erkläre ich euch den Zugriff auf Objekte und deren Vererbung usw.

Gruß Jaraz

Link zu diesem Kommentar
Auf anderen Seiten teilen

Originally posted by Jaraz



public void neuerKunde (Kunde k) 

{ 

  Kunde[] kcach = new Kunde[kundenliste.length+1]; 

  System.arraycopy(kundenliste,0,kcach,0,kundenliste.length); 

  kundenliste = kcach; 

  kundenliste[kundenliste.length-1] = k; 

} 

Dafür gibt es in Java die Klasse java.util.Vector

Nachtrag:

Vector ist in diesem Fall natürlich unpassend. Wenn man nicht gerade mit dem 1.1.8 JDK arbeitet, sollte man natürlich ArrayList nehmen.

Diese ist nicht synchronisiert und damit deutlich schneller als der Vector.

Falls man synchronisation braucht, kann man das so implementieren:

List list = Collections.synchronizedList(new ArrayList(...));

Gruß Jaraz

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ok Danke für den Tip, ich werde mal probieren es umzusetzen.

Das Doofe ist halt, unsere Lehrer haben selbst keien Ahnung von Java, die haben alle Jahrelang Pascal unterrichtet und können das wohl auch sehr gut. Und letztes Jahr hat sich unsere Schule entschieden, Pascal wäre zu veraltet und ist auf Java umgestiege, und jetzt müssen alle Info Lehrer selbst erst ma Java lernen.

Und wenn ich mich dann halt mit irgendwelchen Fragen an die Wende wissen die's selbst net.

Also nochmal dank, ich glaube ich komm jetzt doch wieder ein großes Stück weiter :D

c ya

LordK

Link zu diesem Kommentar
Auf anderen Seiten teilen

hab jetzt mal ausprobiert, direkt in der start methode ein neues objekt der klasse Firma zu instanzieren und geb die als parameter an den konstruktor von FirmaGUI weiter. hier wird sie als member-variable gespeichert und beim aufruf von edit (abgeleitet von FirmaGUI) an dessen konstruktur weitergegeben.

frage: wie kann ich einen funktionsparameter einer statischen klassenmethode referenzieren???

danke für eure hilfe,

lg aus ffm

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...