Java Übung & Lösung: Entwickle ein Mahnwesen mit Objektübergabe
In dieser Java Übung geht es um Mahnungen.
Ja, Mahnungen zu Rechnungen.
Und zwar möchte ich, dass du ein kleines Programm anlegst.
Was genau soll passieren?
Du legst zwei Konstruktoren an.
Der erste Konstruktor soll zwei Parameter entgegen nehmen.
Die Mahnstufe und die Mahngebühr.
Dies sind gleichzeitig die Instanzvariablen der Klasse.
Der zweite Konstruktor nimmt ein Objekt entgegen.
Im Rumpf erhöht sich die Mahnstufe um eins und die Mahngebühr um 5.
Außerdem soll eine Methode die entsprechende Konsolenausgabe zur Mahnstufe und Mahngebühr erzeugen.
Und zwar soll diese Methode bei jedem neu erstellten Objekt ausgeführt werden.
In der main Methode erstellst du ein Objekt und übergibst diesen die Mahnstufe eins und die Mahngebühr 5.
Das zweite und dritte Objekt wird mit dem zweiten Konstruktor (Objekt-Konstruktor) erzeugt.
Lass dir alle drei Konsolenausgaben anzeigen.
Ich wünsche dir viel Spaß beim Lösen dieser Java Übung.
Inhalt
Los geht’s
Als erstes die Klasse, die Instanzvariablen und der erste Konstruktor.
public class Mahnung {
double mahnGebuehr;
int mahnStufe;
public Mahnung (){
this.mahnStufe=1; //Zuweisung der Mahnstufe
this.mahnGebuehr=5;//Zuweisung der Mahngebühr
}
}
Dann legst du die Instanzmethode, zu den Infos, an.
public class Mahnung {
double mahnGebuehr;
int mahnStufe;
public Mahnung (){
this.mahnStufe=1; //Zuweisung der Mahnstufe
this.mahnGebuehr=5;//Zuweisung der Mahngebühr
}
void gibInfo(){
System.out.println("Mahnstufe: "+mahnStufe+" , Mahngebühr: "+mahnGebuehr+" Euro");
}
}
Da diese Methode bei jeder Objekterschaffung angeschmissen werden soll…
Macht es Sinn diese in den Konstruktor einzupflegen.
public class Mahnung {
double mahnGebuehr;
int mahnStufe;
public Mahnung (){
this.mahnStufe=1;
this.mahnGebuehr=5;
gibInfo(); //Methodenaufruf
}
void gibInfo(){
System.out.println("Mahnstufe: "+mahnStufe+" , Mahngebühr: "+mahnGebuehr+" Euro");
}
}
Es wird so langsam Zeit für das erste Objekt
Lass uns den Programmstart testen.
public class Mahnung {
double mahnGebuehr;
int mahnStufe;
void gibInfo(){
System.out.println("Mahnstufe: "+mahnStufe+" , Mahngebühr: "+mahnGebuehr+" Euro");
}
public Mahnung (){
this.mahnStufe=1; //Zuweisung der Mahnstufe
this.mahnGebuehr=5;//Zuweisung der Mahngebühr
gibInfo();
}
public static void main(String[] args) {
Mahnung ersteMahnung = new Mahnung(); //erstes Objekt
}
}
In der main Methode erschaffst du das erste Objekt und übergibst diesem die angebenden Werte eins und fünf.
Oder du machst es wie ich.
Du weist im default-Konstruktor Standardwerte zu.
Klicke auf Run und los geht’s.
Alles gut? 🙂
Dann lass uns den zweiten Konstruktor anlegen
Laut Aufgabenstellung soll dieser ein Objekt bekommen.
Und dann soll er die Instanzvariablen entsprechend erhöhen.
public class Mahnung {
double mahnGebuehr;
int mahnStufe;
void gibInfo(){
System.out.println("Mahnstufe: "+mahnStufe+" , Mahngebühr: "+mahnGebuehr+" Euro");
}
public Mahnung (){
this.mahnStufe=1; //Zuweisung der Mahnstufe
this.mahnGebuehr=5;//Zuweisung der Mahngebühr
gibInfo();
}
public Mahnung (Mahnung erste){
this.mahnGebuehr=erste.mahnGebuehr+5;//Bei jedem Aufruf erhöhung um 5
this.mahnStufe=erste.mahnStufe+1; //Bei jedem Aufruf Erhöhung um 1
gibInfo();
}
public static void main(String[] args) {
Mahnung ersteMahnung = new Mahnung(); //erstes Objekt wird erstellt
}
}
Na dann zum zweiten und dritten Objekt.
Jetzt übergibst du als Argument das erste Objekt.
Und dann das zweite, das dritte usw.
public class Mahnung {
double mahnGebuehr;
int mahnStufe;
void gibInfo(){
System.out.println("Mahnstufe: "+mahnStufe+" , Mahngebühr: "+mahnGebuehr+" Euro");
}
public Mahnung (){
this.mahnStufe=1;
this.mahnGebuehr=5;
gibInfo();
}
public Mahnung (Mahnung erste){
this.mahnGebuehr=erste.mahnGebuehr+5;
this.mahnStufe=erste.mahnStufe+1;
gibInfo();
}
public static void main(String[] args) {
Mahnung ersteMahnung = new Mahnung();
Mahnung zweiteMahnung = new Mahnung(ersteMahnung);//Objekt ersteMahnung wird übergeben
Mahnung dritteMahnung = new Mahnung(zweiteMahnung);//Objekt zweiteMahnung wird übergeben
}
}
Und läuft?
PS:
Von einem aufmerksamen Leser wurde ich darauf hingewiesen, dass der erste Konstruktor schon zwei Werte bekommen sollte. (Laut meiner Aufgabenstellung)
In meiner Lösung kommt aber dieser Teil gar nicht vor.
Ich habe lediglich einen default-Konstruktor und den, welcher Objekte entgegennimmt.
Danke an Christian für den Hinweis.
So würde die richtige Lösung aussehen:
public class Mahnung {
double mahnGebuehr;
int mahnStufe;
void gibInfo(){
System.out.println("Mahnstufe: "+mahnStufe+" , Mahngebühr: "+mahnGebuehr+" Euro");
}
public Mahnung (){
this.mahnStufe=1;
this.mahnGebuehr=5;
gibInfo();
}
public Mahnung(int mahnStufe, int mahnGebuehr){ //neuer Konstruktor
this.mahnStufe=mahnStufe;
this.mahnGebuehr=mahnGebuehr;
gibInfo();
}
public Mahnung (Mahnung erste){
this.mahnGebuehr=erste.mahnGebuehr+5;
this.mahnStufe=erste.mahnStufe+1;
gibInfo();
}
public static void main(String[] args) {
Mahnung ersteMahnung = new Mahnung(1,5);//Konstruktor bekommt die Werte übergeben
Mahnung zweiteMahnung = new Mahnung(ersteMahnung);//Objekt ersteMahnung wird übergeben
Mahnung dritteMahnung = new Mahnung(zweiteMahnung);//Objekt zweiteMahnung wird übergeben
}
}