dic Geschrieben 2. April 2009 Geschrieben 2. April 2009 Hallo zusammen. Im Anhang befindet sich eine Aufgabe, bei der es ersteinmal um die Datei Transaktionsarray.java geht. Diese soll zu einer funktionsfähigen Klasse vervollständigt werden, die ein sich automatische vergrößerndes Array darstellt. Getestet werden kann sie durch die Datei TransaktionsarrayTest. In dieser wiederum habe ich meine Gedanken in Kommentaren beschrieben. Mir geht es nun darum, ob das was ich kommentiert habe so richtig ist und... naja um weitere Tipps, dass ich die Klasse erstellen kann. Freue mich auf hilfreiche Antworten. Viele Grüße, dicrav2.zip Zitieren
flashpixx Geschrieben 2. April 2009 Geschrieben 2. April 2009 Ich verstehe den Sinn Deiner Klasse nicht. ArrayList, LinkedList, ggf Vector gibt es als fertige Implementierung für solche Zugriffe Phil Zitieren
dic Geschrieben 2. April 2009 Autor Geschrieben 2. April 2009 Das ist alles was wir bekommen haben und es wurde auch nicht viel mehr dazu gesagt, als "Machen Sie sich damit vertraut, indem Sie den Javadoc sich anschauen." Das Problem was ich halt habe, ist dass ich ja mit junit die Klasse testen muss. Dazu wäre es ja nicht schlecht zu wissen was da genau los ist. Meine Gedanken dazu eben im eingefügten Kommentar. dicra Zitieren
flashpixx Geschrieben 3. April 2009 Geschrieben 3. April 2009 Welches Problem hast Du? Du hast Code und Du sollst diese via JUnit testen !? => Dann tu das doch Zu Deinem ersten Posting: Diese soll zu einer funktionsfähigen Klasse vervollständigt werden, die ein sich automatische vergrößerndes Array darstellt. habe ich Dir geschrieben, nimm' eine ArrayList, LinkedList, Vector (o.ä.) und führe das, was gefordert ist in Deiner Klasse durch. Du sollst diese Klasse: package bank; /* TODO: Javadoc-Kommentare */ public class Transaktionsarray { public int anzahl() { /* TODO: Ergaenzen */ return 0; } public Transaktion element(int i) { /* TODO: Ergaenzen */ return null; } public void speichere(Transaktion transaktion) { /* TODO: Ergaenzen */ } public Transaktion umgekehrt(int i) { /* TODO: Ergaenzen */ return null; } } passend erweitern. Ob Dein JUnit Test erfolgreich ist oder nicht, sinnvoll ist oder nicht, kann man doch nicht sagen, denn Deine Klasse, die getestet werden soll, ist leer. Ich möchte mich jetzt nicht hinsetzen und für Dich mir Gedanken machen, ob Deine Testklasse gut für Deine zu entwickelnde Klasse ist. Darüber musst Du Dir schon selbst Gedanken machen. Es ist Deine Aufgabe eine Klasse zu implementieren und Dir dazu dann Tests zu überlegen, andersherum macht das nicht so viel Sinn Phil Zitieren
dic Geschrieben 3. April 2009 Autor Geschrieben 3. April 2009 Okay, versuch ich mal was mit dem ArrayList hinzubekommen. dicra Zitieren
dic Geschrieben 11. April 2009 Autor Geschrieben 11. April 2009 (bearbeitet) Hmm... also irgendwie komme ich nicht klar damit. Den BankTest habe ich relativ schnell hinbekommen, aber das mit dem Transakktionsarray will irgendwie nicht klappen. Wahrscheinlich fehlt mir da das Verständnis an sich was da passiert, bin halt ein anfänger. Daher wäre es nett, wenn sich wer die Muse nehmen könnte und sich ein wenig damit vertraut macht. Ich schreibe einfach mal drauflos und fange ganz vorne bei der Main.java an. * Ein neues Bank-Objekt wird erstellt. * Die Bank erhält neue Konten. -> Ein Konto-Objekt beinhaltet den Namen der Bank und die Kontonummer. * Für b wird barEinzahlen(int nr, double betrag) aufgerufen, die ist in Bank.java und besorgt sich die Kontonummer. In Konto.java gehts mit barEinzahlen(double betrag) weiter. Und nun eine Frage. Dort steht: void barEinzahlen(double betrag) { pruefeObBetragPositiv(betrag); kontostand += betrag; transaktionen.speichere(Transaktion.barEingezahlt(betrag)); } (Transaktion.barEingezahlt(betrag)) bedeutet, dass ein Transaktionsobjekt erstellt wird und der Methode speichere übergeben wird. Wofür steht denn jetzt vor "speichere" das "transaktionen"? Ist das eine Klassenvariable? Es stammt ja aus der Klasse Konto.java und ist deklariert als: /** * Array aller Kontobewegungen. */ private Transaktionsarray transaktionen = new Transaktionsarray(); Nun wird hier auch ein Objekt erstellt. Dieser Aufruf sucht doch dann in der Klasse Transaktionsarray nach eine Konstruktor, richtig? Der fehlt und dort müsste dann ein Array erstellt werden, in dem die Transaktionen gespeichert werden. Das sieht bei mir so aus: private int anz; private Transaktionsarray[] transakt; /** * Konstruktor, der fuer jedes Konto ein Array anlegt. */ public Transaktionsarray(){ /* Für jedes Konto-Objekt wird ein Transaktionsarray angelegt. * ein Objekt vom Typ Transaktionsarray */ transakt = new Transaktionsarray[anzahl()]; anz=0; } Nach meinem Verständnis gibt es nun ein Array. Dort sollen nun die Transaktionen gespeichert werden. Also: public void speichere(Transaktion transaktion) { /* TODO: Ergaenzen */ transakt[anzahl()]=transaktion; } anzahl() -ebenfalls aus der Klasse- besorgt sich beim Konstruktoraufruf die Anzahl der Elemente. /** * Zaehlt die Anzahl an Transaktionen. * * @return anzahl */ public int anzahl() { /* TODO: Ergaenzen */ return anz++; } Nochmal zum "speichere". Dort steht transakt[anzahl()]=transaktion; Hierbei sagt Eclipse, dass "cannot convert from Transaktion to Transaktionsarray". Ein Cast erlaubt es aber auch nicht, der bei mir so aussah. transakt[anzahl()]=(Transaktionsarray)transaktion; Hoffe mir kann geholfen werden und bedanke mich schon einmal für die Mühe. Viele Grüße, dicra Anhang: Mein aktueller Stand...src.zip Bearbeitet 11. April 2009 von dic Zitieren
Empfohlene Beiträge
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.