Kreditrechner objektorientiert

pry

Mitglied
Hallo, ich bräuchte bitte eure Hilfe!
Ich soll einen objektorientierten Kreditrechner programmieren. Der unten stehende Code ist die "nicht-objektorientierte Variante". Ihr findet hier auch die "objektorientierte" Variante die in einer noch leeren Klasse einkommentiert werden soll, die das gleiche Ergebnis herausgeben soll.
Java ist relativ neu für mich, daher wollte ich euch fragen, ob ihr mir vllt helfen könntet.



Java:
public class KreditvertragDemo {

 
  static final int KREDITSUMME = 20000000;
  static final int LAUFZEIT = 120;
  static final double JAHRESZINS = 0.0137;
  static final int RATE = 72833;


  public static void main(String[] args) {

    /* Nicht-objektorientierte Variante */
    int restSchuldKlassisch = berechneRestschuld(KREDITSUMME, LAUFZEIT, JAHRESZINS, RATE);
    System.out.printf("Restschuld: %.2f€.", restSchuldKlassisch * 0.01);

    /* Objektorientierte Variante */
    // Kreditvertrag vertrag = new Kreditvertrag(KREDITSUMME, LAUFZEIT, JAHRESZINS, RATE);
    // int restSchuldObjektorientiert = vertrag.berechneRestschuld();
    // System.out.printf("Restschuld: %.2f€.", restSchuldObjektorientiert * 0.01);
  }

 
  static int berechneRestschuld(int kreditsummeInCent, int laufzeitInMonaten,
                                double jahreszins, int rateInCent) {
    int restschuldInCent = kreditsummeInCent;

    for (int i = 1; i <= laufzeitInMonaten; i++) {
      int zinsenInCent = (int) Math.round(restschuldInCent * jahreszins / 12);
      int tilgungInCent = rateInCent - zinsenInCent;
      restschuldInCent -= tilgungInCent;
    }
    return restschuldInCent;
  }
}
 
K

kneitzel

Gast
Der Aufgabe kannst Du diverse Dinge entnehmen:
a) Du sollst eine bestimmte Klasse schreiben - da der Konstruktor-Aufruf bekannt ist, ist der Name vorgeben.
b) Der Aufruf hat gewisse Parameter - das sind also Dinge, die zu dem Kreditvertrag gehören. Diese Werte sollte man einfach mal speichern....
c) Dann soll eine Methode berechneRestschuld existieren - Du hast da ja schon eine solche Methode, die aber 4 Parameter hat. Aber glücklicher Weise wurde das in b) bereits übergeben, so dass Du die Werte ja in dem vertrag gespeichert hast ...

Was Du ggf. anschauen solltest:
a) Wie schreibt man eine Klasse?
b) Konstruktor einer Klasse, Instanzvariablen
c) Methoden einer Instanz, Zugriff auf Instanzvariablen

Damit sollte die Aufgabe direkt bearbeitbar sein.
 

pry

Mitglied
Der Aufgabe kannst Du diverse Dinge entnehmen:
a) Du sollst eine bestimmte Klasse schreiben - da der Konstruktor-Aufruf bekannt ist, ist der Name vorgeben.
b) Der Aufruf hat gewisse Parameter - das sind also Dinge, die zu dem Kreditvertrag gehören. Diese Werte sollte man einfach mal speichern....
c) Dann soll eine Methode berechneRestschuld existieren - Du hast da ja schon eine solche Methode, die aber 4 Parameter hat. Aber glücklicher Weise wurde das in b) bereits übergeben, so dass Du die Werte ja in dem vertrag gespeichert hast ...

Was Du ggf. anschauen solltest:
a) Wie schreibt man eine Klasse?
b) Konstruktor einer Klasse, Instanzvariablen
c) Methoden einer Instanz, Zugriff auf Instanzvariablen

Damit sollte die Aufgabe direkt bearbeitbar sein.
Deine Aufzählung verstehe ich, vielen Dank schon mal. Ich habe soweit wie es ging versucht die Klasse anzufertigen, leider hoffnungslos..
Wie würde der Code denn schlussendlich ausschauen? Vielleicht kann ich es dann besser verstehen.
 

pry

Mitglied
Wie sieht denn deine Klasse derzeit aus? Und was für Probleme hast Du mit der Klasse?

So, aber das ist komplett falsch..

Java:
public class Kreditvertrag {

  static final int KREDITSUMME = 20000000;
  static final int LAUFZEIT = 120;
  static final double JAHRESZINS = 0.0137;
  static final int RATE = 72833;

  Kreditvertrag() {

  }

Kreditvertrag(int KREDITSUMME, int LAUFZEIT, double JAHRESZINS, int RATE){
    this.KREDITSUMME = KREDITSUMME;
    this.LAUFZEIT =

}

  Kreditvertrag vertrag = new Kreditvertrag(KREDITSUMME, LAUFZEIT, JAHRESZINS, RATE);
  int restSchuldObjektorientiert = vertrag.berechneRestschuld();
  System.out.printf("Restschuld: %.2f€.", restSchuldObjektorientiert * 0.01);

}
 
K

kneitzel

Gast
Nein, das ist schon ein super Anfang!

Mit static final hast Du nur eben Konstanten geschaffen auf Klassenebene. Da hast Du Dich von der Aufgabe etwas auf das Glatteis führen lassen.

Diese Konstanten wurden im Hauptprogramm gesetzt, um damit sogenannte "Magic Numbers" zu vermeiden. Sonst hast Du nur irgendwelche Zahlen im Code und weißt nach wenigen Tagen nicht mehr, wofür welche Zahl denn steht ... Diese Konstanten bleiben aber so in der Form beim Hauptprogramm.

Statt dessen brauchst Du Variablen. Und diese sollten in der Instanz sein und nicht zu der Klasse gehören. Des Weiteren sind die Standardwerte wohl eher keine Standardwerte, d.h. wenn der Kreditvertrag ohne Parameter erstellt wird, dann sollen diese Werte eher nicht enthalten sein.

Daher:
- Kopier die 4 Zeilen erst einmal wieder zu dem Hauptprogramm (falls Du die da gelöscht haben solltest)
- Schau, was Du in der Klasse weg löschen musst, damit der Block oben erfüllt ist.
 

pry

Mitglied
Nein, das ist schon ein super Anfang!

Mit static final hast Du nur eben Konstanten geschaffen auf Klassenebene. Da hast Du Dich von der Aufgabe etwas auf das Glatteis führen lassen.

Diese Konstanten wurden im Hauptprogramm gesetzt, um damit sogenannte "Magic Numbers" zu vermeiden. Sonst hast Du nur irgendwelche Zahlen im Code und weißt nach wenigen Tagen nicht mehr, wofür welche Zahl denn steht ... Diese Konstanten bleiben aber so in der Form beim Hauptprogramm.

Statt dessen brauchst Du Variablen. Und diese sollten in der Instanz sein und nicht zu der Klasse gehören. Des Weiteren sind die Standardwerte wohl eher keine Standardwerte, d.h. wenn der Kreditvertrag ohne Parameter erstellt wird, dann sollen diese Werte eher nicht enthalten sein.

Daher:
- Kopier die 4 Zeilen erst einmal wieder zu dem Hauptprogramm (falls Du die da gelöscht haben solltest)
- Schau, was Du in der Klasse weg löschen musst, damit der Block oben erfüllt ist.
wie würde das dann ausschauen?
 

Ähnliche Java Themen

Neue Themen


Oben