Hilfe bei Konstruktor bzw. Vererbung

Status
Nicht offen für weitere Antworten.

fisi2008

Mitglied
Hallo war lange krank und muss nun in der Schule eine Arbeit Nachschreiben. Habe ein Arbeitsblatt mit einer Aufgabe, ähnlich der kommenden Arbeit bekommen. Leider fehlt mir jetzt einiges an wissen um diese zu lösen. Sitze jetzt schon eine weil vorm Rechner und probiere anhand alter skripte herum. bekomme es aber nicht hin. auch google konnte mir bisher nicht helfen

Kann mir die Aufgabe 1 a + b (im verlinkten PDF) jemand codieren so das ich nachvollziehen kann wie das gemacht wird? Wäre echt super!! Hier geht es wirklich nicht darum das ich nur zu faul bin hausaufgaben zu machen.

Aufgabe


Ich weiss das ich zwei Klassen brauch

1. Maschine von der geerbt wird.

Da habe ich bisher das hier drin:


Code:
public class Maschine {
    	
    	//Attribute
		private double tarifTag;
    	private int dauer;
    	private double Mietpreis;
    	
    	//Konstruktor
    	public Maschine(double tarifTagIn, int dauerIn) {
   			
    	}
    	
    	
    	public double getMietpreis()
		{
			return Mietpreis;
		}
   
    public static void main (String args []){
    	System.out.println(getMietpreis());
    }
}


Und die 2. Klasse Kfz:


Code:
public class Kfz {
    	
    	//Attribute
		private double tarifKm;
    	private int km;
    	    	
    	//Konstruktor
    	public Kfz(double tarifkmIn, int kmIn) {
   			
    	}

[Edit by Beni: Codetags]
 
Toll, du hast das UML abgeschrieben.

Ich geb mal einen kleinen Tipp zur Klasse "Machine".
Code:
public double getMietpreis(){
  return x;
}

Wir wissen dass "mietpreis = TarifTag * Dauer + irgendwas" ist. Da wir in Maschine nur TarifTag und Dauer haben, was könnte wohl x sein?

[] x ist 0
[] x ist tarifTag * dauer
[] x ist Math.random() * 4
[] x ist tarifTag * dauer + TarifKm * gefahrene Kilometer
 
was ist denn jetzt überhaupt deine frage???

also mal zu deinen beiden klassen:

1. class Maschine:
wenn man bei dir den Konstruktor aufruft, passiert gar nix! warum sollte man denn die beiden werte übergeben?
warum hast du da eine variable namens mietPreis? ist doch nach der aufgabe gar nicht gefordert

2. class KFZ:
diese klasse soll doch von machine erben, wie macht man so was denn?
 
irgendwo muss doch das ergebnis später mal gespeichert werden oder nicht? daher dachte ich eine variable mietpreis.

was meinst du im konstruktor passiert nichts?

Ok das erben geht über extends das habe ich nun schon gefunden


Code:
public class Maschine {
    	
    	//Attribute
	private double tarifTag;
    	private int dauer;
    	    	    	
    	//Konstruktor
    	public Maschine(double tarifTagIn, int dauerIn){
    		
    		
       	}
    	
    	
    	public double getMietpreis()
		{
			return tarifTag * dauer;
		}
   
    public static void main (String args []){
    	System.out.println(getMietpreis());
    }
}

jetzt bekomme ich die fehlermeldung "cannot find variable getMietpreis" da ich die gelöscht habe (weil nicht im UML)

meine frage warum und wo gebe ich den die werte für die berechnung an? gleich bei den variablen oben?
 
komme ich dem ziel näher?


class maschine

Code:
package ueb;

public class Maschine {
	
	//Attribute
	private double tarifTag;
	private int dauer;
	    	    	
	//Konstruktor
	public Maschine(double tarifTagIn, int dauerIn){
		this.tarifTag = tarifTagIn;
		this.dauer = dauerIn;
		
   	}
	
	
	public double getMietpreis()
	{
		return this.tarifTag * this.dauer;
	}

public static void main (String[] args){
	
	//System.out.println(+tarifTag);
}
}



class Kfz
Code:
package ueb;

public class Kfz extends Maschine{
	
	//Attribute
	private double tarifKm;
	private int km;
	    	
	//Konstruktor
	Kfz(double tarifTagIn, int dauerIn, double tarifKmIn, int kmIn){
		super(tarifTagIn, dauerIn);
		tarifKm = tarifKmIn;
		km = kmIn;
	}
	
}
 
Code:
    public static void main (String args []){
       System.out.println(getMietpreis());
    }
Was soll den hier das Ergebnis sein? 47? Da existiert keine Machine, also macht "getMietpreis" auch keinen Sinn.

Du musst also eine Machine instaziieren:
Code:
    public static void main (String args []){
       Machine machine = new Machine( 12.3, 4 );
       System.out.println(machine.getMietpreis());
    }
 
Code:
Machine machine = new Machine( 12.3, 4 );

warum wird hier jetzt berechnung in der klammer gemacht und z. b. nicht die variabeln hergenommen denen ich werte gegeben habe

double tarifTag 28
int dauer 3
 
12.3 und 4 sind Argumente die dem Konstruktor übergeben werden. Berechnet wird da garnichts. Wenn du taritTag = 28, dauer = 3 haben möchtest, musst du halt 28 und 3 als Argument übergeben.
 
Wenn du eine Maschine erstellen willst, die 3 Tage ausgeliehen wurde und das pro Tag 28 GE kostet, dann musst du dir, wie Beni schon richtig dargestellt hat, einen Kontruktor mit den entsprechenden Werten aufrufen. Dann hast du eine Maschine, dessen Mietpreis du dir ausgeben lassen kannst.

Code:
public static void main (String[] args){
   Maschine masch = new Maschine(28, 3);
   System.out.println(masch.getMietpreis());
}

Dann fehlt noch in Kfz die Methode getMietpreis()...
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben