Komposition

bizkit

Mitglied
Hallo,

mein Problem ist:
k520fd234png.png


ich kriege nicht hin, die beiden Klassen ,,Führerschein" und ,,Kunde" zusammen zu implementieren.
Bei der Erstellung von einem Kunden, muss ich auch die Klasse Führerschein benutzen, um in der Klasse ,,Führerschein" den jeweiligen Füherschein wert (oder mehrere) auf ,,true" oder ,,false" zu setzen.

Ich brauche unbedingt Hilfe, da ich die Aufgabe morgen abgeben muss.
Wäre für jeden Vorschlag sehr dankbar


hier sind die JAva-Codes von den jeweiligen Klassen

Kunde
Java:
public class Kunde {

	String vorname;
	String nachname;
	Date geburtsDatum;
	Fuehererschein fueherschein;
	
	Kunde(String vorname, String nachname, Date geburtsDatum)
	{
		this.vorname = vorname;
		this.nachname = nachname;
		this.geburtsDatum = geburtsDatum;
	}
	
	
}


Führershcein:
Java:
class Fuehererschein{
	
	boolean A_gedrosselt ;
	boolean A_ungedrosselt;
	boolean B;
	boolean D;
	boolean D1;
	
	
	Fuehererschein(boolean A_gedrosselt, boolean A_ungedrosselt, boolean B, boolean D, boolean D1 )
	{
		this.A_gedrosselt = A_gedrosselt;
		this.A_ungedrosselt = A_ungedrosselt;
		this.B = B;
		this.D = D;
		this.D1 =D1;
	}


	boolean getA_gedrosselt()
	{
	 return A_gedrosselt;
    }
			
	boolean getA_ungedrosselt()
	{
	 return A_ungedrosselt;
    }	

	boolean getB()
	{
	 return B;
    }
	
	boolean getD()
	{
	 return D;
    }
	boolean D1()
	{
	 return D1;
    }
	
}
 

Fant

Bekanntes Mitglied
Gibt es einen Grund, dass du in der einen Klassen getter-Methoden verwendest, aber keine Setter?
Ob es so sinnvoll ist überhaupt getter-Methoden zu schreiben, wenn diese die gleiche Sichtbarkeit haben, wie die Variablen, auf die Zugegriffen wird, vermag ich gerade nicht zu sagen.


Dein eigentliches Problem ist mir aber nicht klar. Erstelle einfach ein neues Führerscheinobjekt und füge es der Klasse Kunde hinzu. Entweder direkt über einen Konstruktor, oder nachträglich über eine Setter-Methode oder direkten Zugriff auf die Variable. Wo gibt es Schwierigkeiten?
 

langhaar!

Bekanntes Mitglied
ich kriege nicht hin, die beiden Klassen ,,Führerschein" und ,,Kunde" zusammen zu implementieren.
Ich vermute hinter dieser Aussage ein Missverständnis. Genau lässt sich das aber nichts sagen, dazu lässt dein Satz zu viel Interpretationsraum.
Bei der Erstellung von einem Kunden, muss ich auch die Klasse Führerschein benutzen, um in der Klasse ,,Führerschein" den jeweiligen Füherschein wert (oder mehrere) auf ,,true" oder ,,false" zu setzen.

Die Verbindung zum Führerschein hast du bereits. Stammt der Code evtl. nicht von dir?
Schreib Methoden, die die gewünschten Attribute setzen und rufe diese Methoden vom Kunden her auf.
 

bizkit

Mitglied
daran habe ich schon gedacht,
aber wie kann ich dem Führerschein die Parameter übergeben?

Wenn ich Kunde erstelle, dann kann ich nur die Parameter von für den Kunden festlegen,
aber es muss irgendwie möglich sein, beides gleichzeitig zu machen.

Java:
public class Kunde {

	String vorname;
	String nachname;
	Date geburtsDatum;
	Fuehererschein fueherschein;
	
	Kunde(String vorname, String nachname, Date geburtsDatum)
	{
		this.vorname = vorname;
		this.nachname = nachname;
		this.geburtsDatum = geburtsDatum;
		
		Fuehererschein fueherschein = new Fuehererschein(true, false, true, false, true);
	}
	
	
}
 

langhaar!

Bekanntes Mitglied
Wenn die Attribute des Führerscheins bei Anlage eines Kunden nicht bekannt sind, dann musst du entweder den Führerschein später anlegen oder die Attribute später setzen.

Es bleibt die Frage - die übrigens schon mal gestellt wurde! - woher du die Attribute für den Führerschein bekommst.
 

bizkit

Mitglied
Wenn die Attribute des Führerscheins bei Anlage eines Kunden nicht bekannt sind, dann musst du entweder den Führerschein später anlegen oder die Attribute später setzen.
es muss beim erstellen gehen.

Es bleibt die Frage - die übrigens schon mal gestellt wurde! - woher du die Attribute für den Führerschein bekommst.

Wenn ich einen Kunden erstelle, soll der auch automatisch auch die Attribute der verschiedenen Führerscheinklassen miterstellen.


Ich weiss es leider nicht wie ich das machen soll.
 

langhaar!

Bekanntes Mitglied
Wenn ich einen Kunden erstelle, soll der auch automatisch auch die Attribute der verschiedenen Führerscheinklassen miterstellen.


Ich weiss es leider nicht wie ich das machen soll.

Wurde eigentlich schon mehrfach gesagt.
Entweder schreibst du einen Konstruktor für den Führerschein, dem du alle benötigten Attribute mitgibst oder du schreibst Methoden, die diese Attribute setzen.

Deine Aussagen sind allerdings widersprüchlich:
Wenn ich Kunde erstelle, dann kann ich nur die Parameter von für den Kunden festlegen,

Warum?
Wenn du die Werte für den Führerschein nicht kennst, kannst du sie nicht setzen. Wenn du sie kennst, machst du es, wie beschrieben.
Dein Problem ist mir noch nicht klar.
 

bizkit

Mitglied
Wurde eigentlich schon mehrfach gesagt.
Entweder schreibst du einen Konstruktor für den Führerschein, dem du alle benötigten Attribute mitgibst oder du schreibst Methoden, die diese Attribute setzen.

Deine Aussagen sind allerdings widersprüchlich.



Warum? Wenn du die Werte für den Führerschein nicht kennst, kannst du sie nicht setzen. Wenn du sie kennst, machst du es, wie beschrieben.
Dein Problem ist mir noch nicht klar.

Ach so, ja ich kenne Sie nicht, aber beim erstellen von einem Kunden denke ich Sie mir aus.

Wie erstelle ich einen Führerschein im Konstruktor?
Führerschein führerschien new Führerschien(Wie Kriege ich hier Attribute rein????);
 
Zuletzt bearbeitet:

langhaar!

Bekanntes Mitglied
Dann ist doch alles klar.

Du hast doch in Beitrag 6 selbst eine Lösung beschrieben.

Dein eigener Code:
Java:
Fuehererschein fueherschein = new Fuehererschein(true, false, true, false, true);

wobei du die Variable nicht überdecken solltest, sonst existiert sie nur im Konstruktor.
Also:
Java:
fueherschein = new Fuehererschein(true, false, true, false, true);
 

bizkit

Mitglied
ja aber da kann ich doch nicht die Attribute von beim erstellen von Kunde ändern.

es muss so irgendwie funktionieren:

in der Klasse

Starte
public static void main (...)
{
Kunde kunde1 = new Kund(Kunden-Parameter, und hier sollten auch die Parameter für den Führerschein stehen)

weiter gehts mit ....
z.B.

double Preis;

Preis = kunde1.preisVermietung();
.
..
.
.
}
 

Sesostris

Aktives Mitglied
Java:
Kunde(String vorname, String nachname, Date geburtsDatum, Fuehererschein fuehererschein)
    {
        this.vorname = vorname;
        this.nachname = nachname;
        this.geburtsDatum = geburtsDatum;
        this.fuehererschein = fueherschein;
    }

Und beim Instanziieren eines Kunden:
Java:
Kunde foo = new Kunde("Lukas", "Müller", new Date(87, 9, 10), new Fuehererschein(true, false, true, false, true));

EDIT: Deine Schreibweise von "Führerschein" habe ich leichtsinnigerweise per copy&paste übernommen.
 
Zuletzt bearbeitet:

bizkit

Mitglied
es läuft danke.

ich habe noch ein anders Problem.
Ich habe Klasse Fahrzeug , eine Klasse PKW (Unterklasses von Fahrzeug), und Klasse Bestellung.
In der Klasse Bestellung ist eine Methode ,,berechnePreis()" diese soll auf den aus den gefahrenen Km gebildet werden und mit dem PreisProKilometer multipliziert werden.
Den Wer für den Preis überegebe ich als Parameter, wenn ich die Klasse PKW erstelle.

Jetzt kommt das Problem.
ich kriege eine Fehlermeldung: fahrzeug cannot be resolved
public double berechnePreis()
{
return Preis=(startKilometerstand - endKilometerstand)*fahrzeug.getPreisProKilometer();
}

Fahrzeug:
Java:
public abstract  class Fahrzeug {

	protected    double PreisProTag;
	protected   double PreisProKilometer;
	protected String Kennzeichen ="";
	
	//abstract String getFueherscheinKlasse();
	
	Fahrzeug()
	{
	PreisProTag =0 ;
	PreisProKilometer = 0 ;
	Kennzeichen = "dummy";
	}
	
	
	Fahrzeug(double PreisProTag, double PreisProKm, String Kennzeichen)
	{
		this.PreisProTag = PreisProTag;
		this.PreisProKilometer = PreisProKm;
		this.Kennzeichen = Kennzeichen;
	}
	
	
	 String ausgeben()
	{
		return "";
	}

PKW:
Java:
	String Typ;
	String Marke;
	int PS;
	
	
	PKW(String Typ, String Marke, /* String FuehrerscheinKlasse,*/ int PS, double PreisProTag, double PreisProKilometer, String Kennzeichen)
	{
		super(PreisProTag, PreisProKilometer, Kennzeichen);
		this.Typ = Typ;
		this.Marke = Marke;
		this.PS = PS;
		this.FuehrerscheinKlasse = "B";
	}
			 
	
	 public String getFuehrerscheinKlasse()
	  {
	        
	    return FuehrerscheinKlasse;
	  }    
	 String ausgeben()
	 {
		 return "Fahrzeugtyp: "+Typ+ ", Hersteller: "+Marke+ ", Anzal der PS: "+PS+", Preis: "+PreisProKilometer + ", PreisPro Tg: "+PreisProTag+ ", Kennzeichen: "+Kennzeichen;
	 }
	 
	  double getPreisProTag()
	 {
		 return PreisProTag ;
	 } 

	 double getPreisProKilometer()
	 {
	return PreisProKilometer;
	 }
	
	void SetPreisProTag(double PreisProTag)
	{
		this.PreisProTag = PreisProTag;
	}
	void SetPreisProKilometer(double PreisProKilometer)
	{
		this.PreisProKilometer = PreisProKilometer;
	}
	//____________________________AUFABGE 3

Bestellung:
Java:
public class Bestellung {

	Date StartDatum;
	Date EndDatum;
	int startKilometerstand=0;
	int endKilometerstand = 0;
	
	double Preis;
	
	Bestellung (/*Date StartDatum, Date EndDatum,*/ int StartKilometerstand, int endKilometerstand, Fahrzeug fahrzeug)
	{
		this.StartDatum = StartDatum;
		this.EndDatum = EndDatum;
		this.startKilometerstand = StartKilometerstand;
		this.endKilometerstand = endKilometerstand;
	}
	 
	public double berechnePreis()
	{
		return Preis=(startKilometerstand - endKilometerstand)*fahrzeug.getPreisProKilometer();
	}

}
 

Sesostris

Aktives Mitglied
Java:
Bestellung (Date StartDatum, Date EndDatum, int StartKilometerstand, int endKilometerstand, Fahrzeug fahrzeug)
    {
        this.StartDatum = StartDatum;
        this.EndDatum = EndDatum;
        this.startKilometerstand = StartKilometerstand;
        this.endKilometerstand = endKilometerstand;
    }
Deine Methode hat fünf Parameter - im Rumpf verarbeitest du aber nur vier davon. Fällt dir auf, was fehlt?
 

bizkit

Mitglied
nächtes Probleme.

Die Aufgabenstellung ist:
Implementieren Sie die Methode pruefeFuehrerschein in allen Unterklassen von Fahrzeug.
Diese Methode bekommt als Parameter ein Führerschein-Objekt übergeben. Nun wird geprüft,
ob mit den im Füherschein-Objekt aktivierten (auf true gesetzten) Führerscheinklassen eine
Benutzung des Fahrzeugs zulässig wäre. Geben Sie das Ergebnis der Prüfung (true für “darf
dieses Fahrzeug fahren”, false entsprechend) zurück. Hierbei ist zu beachten, dass bei
Motorrädern nach der PS Zahl und bei Bussen nach der Anzahl der Sitzplätze geprüft wird.


Ehrlich gesagt, weisse ich garnicht wie ich das Problem lösen sollte.
Die Klasse ,,Führerschein hat die werte ,,true oder false'' und die Klasse PKw z.B. ein String als Führerscheinklasse (Bsp. ,,B´´).
Wie kann ich dann einen String mit einem boolean-wert vergleichen, das geht doch nicht oder?

Hat jemand irgendwelche Vorschläge??

Fahrzeug;
Java:
public abstract  class Fahrzeug {

	protected    double PreisProTag;
	protected   double PreisProKilometer;
	protected String Kennzeichen ="";
	
//	abstract String getFueherscheinKlasse();
	
	Fahrzeug()
	{
	PreisProTag =0 ;
	PreisProKilometer = 0 ;
	Kennzeichen = "dummy";
	}
	
	
	Fahrzeug(double PreisProTag, double PreisProKm, String Kennzeichen)
	{
		this.PreisProTag = PreisProTag;
		this.PreisProKilometer = PreisProKm;
		this.Kennzeichen = Kennzeichen;
	}
	
	
	 String ausgeben()
	{
		return "";
	}

	 
	 double getPreisProTag()
	 {
		 return PreisProTag ;
	 } 

	 double getPreisProKilometer()
	 {
	return PreisProKilometer;
	
	}

PKW
Java:
public class PKW extends Fahrzeug {

	String Typ;
	String Marke;
	int PS;
	//Fuehrerrscehinklassen
	String FuehrerscheinKlasse;
	
	PKW(String Typ, String Marke, /* String FuehrerscheinKlasse,*/ int PS, double PreisProTag, double PreisProKilometer, String Kennzeichen)
	{
		super(PreisProTag, PreisProKilometer, Kennzeichen);
		this.Typ = Typ;
		this.Marke = Marke;
		this.PS = PS;
		this.FuehrerscheinKlasse = "B";
	}
			 
	
	 public String getFuehrerscheinKlasse()
	  {
	        
	    return FuehrerscheinKlasse;
	  }    
	
	 
	 String ausgeben()
	 {
		 return "Fahrzeugtyp: "+Typ+ ", Hersteller: "+Marke+ ", Anzal der PS: "+PS+", Preis: "+PreisProKilometer + ", PreisPro Tg: "+PreisProTag+ ", Kennzeichen: "+Kennzeichen;
	 }
	 
	 
	 double getPreisProTag()
	 {
		 return PreisProTag ;
	 } 

	 
	 double getPreisProKilometer()
	 {
	 return PreisProKilometer;
	 }
	
	 
	 void SetPreisProTag(double PreisProTag)
	{
		this.PreisProTag = PreisProTag;
	}
	
	 void SetPreisProKilometer(double PreisProKilometer)
	{
		this.PreisProKilometer = PreisProKilometer;
	}
	//____________________________AUFABGE 3
	
	
void pruefeFuehrerschein(Fuehererschein fuehrerschein)
 {
	 
	 Fuehererschein f1 = new Fuehererschein(true, true, false, false, false);
	 
	[B] ??????????????????????????????????????????[/B]
 }

Führerschein
Java:
class Fuehererschein{
	
private	boolean A_gedrosselt ;
private	boolean A_ungedrosselt;
private	boolean B;
private	boolean D;
private	boolean D1;
	
	
	Fuehererschein(boolean A_gedrosselt, boolean A_ungedrosselt, boolean B, boolean D, boolean D1 )
	{
		this.A_gedrosselt = A_gedrosselt;
		this.A_ungedrosselt = A_ungedrosselt;
		this.B = B;
		this.D = D;
		this.D1 =D1;
	}


	boolean getA_gedrosselt()
	{
	 return A_gedrosselt;
    }
			
	boolean getA_ungedrosselt()
	{
	 return A_ungedrosselt;
    }	

	boolean getB()
	{
	 return B;
    }
	
	boolean getD()
	{
	 return D;
    }
	boolean D1()
	{
	 return D1;
    }
	
}
 
Zuletzt bearbeitet:

langhaar!

Bekanntes Mitglied
In so einem Fall wirst du anhand der Führerscheinklasse die jeweiligen Attribute lesen müssen.
Also z.B. wenn Führerscheinklasse gleich B, dann prüfe, ob Attribut B gesetzt ist.
 

Ähnliche Java Themen

Neue Themen


Oben