Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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,

dicra

v2.zip

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

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

Okay, versuch ich mal was mit dem ArrayList hinzubekommen.

dicra

  • 2 Wochen später...

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 von dic

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.