vererbung autobus

nata

Bekanntes Mitglied
Hallo Leute,

Ein Autobus hat eine fixe Geschwindigkeit und zusätzlich noch Anzahl von Fahrgästen (>= 0, maximal 60), die man über die Methoden einsteigen(int anzahl) und aussteigen(int anzahl) ändern kann. Die Geschwindigkeit des Autobusses berechnet sich aus seiner Geschwindigkeit, wobei für jeden Fahrgast im Bus 1 % von der Geschwindigkeit abgezogen wird.

das ist teil der angabe.meine frage ich folgende ob ich konstruktor anderes formulieren soll wegen den fahrgaeste und ich brauche für geschwindigkeit anzahl der fahrgaeste und habe ich so muss ich eine der methoden von einsteigen/aussteigen nehmen?

Java:
public class Autobus extends Fahrzeug {
	
	private final int geschwindigkeit;
	private final int fahrgaeste;
	 
	public Autobus( String kennzeichen, int geschwindigkeit, int fahrgaeste){
		super(kennzeichen);
		if(fahrgaeste <0 ){
			throw new IllegalArgumentException(
					"fahrgaeste darf nicht negativ sein ");
		}
		if(fahrgaeste >60){
			throw new IllegalArgumentException(
					"Es sid zu viele Fahrgaeste");
		}
		
		this.fahrgaeste = fahrgaeste;
		this.geschwindigkeit = geschwindigkeit;
	}
	
	
	public double berechneGeschwidigkeit(){
		return 0;
	}
	
	public int einsteigen(int anzahl){
		return fahrgaeste + anzahl;
		
	}
	
	public int aussteigen(int anzahl){
		return fahrgaeste - anzahl;
		
	}

	
	public double berechneBenoetigteDauer(double streckenlaenge) {
		
		return 0;
	}
	
}

lg nata
 

function

Bekanntes Mitglied
also vom logischen her:
Wenn du einen Bus erstellst und direkt die Geschwindigkeit und die Fahrgäste eingibst, musst du eine Festegeschwindigkeit haben. Entweder du gibst direkt die Geschwindigkeit mit x Fahrgästen an, dann brauchst du die Geschwindigkeit nicht berechnen, oder hast eine "Referenz"/Standard-Geschwindigkeit aus der du dann abhängig von der Fahrgastanzahl die aktuelle Geschwindigkeit berechnen kannst.
 

nata

Bekanntes Mitglied
also ich mache vererbung und ich muss geschwindigkeit ausrechnen separat.
jetzt habe ich mir überlegt ob ich einsteigen/aussteigen wie setEinsteigen/setAussteigen machen kann noch im konstruktor benutze?
 

function

Bekanntes Mitglied
ist nicht ganz so trivial, aber so sollte es hinhauen:
Java:
public Autobus( String kennzeichen, int geschwindigkeit, int fahrgaeste){
  super(kennzeichen);
  if(fahrgaeste <0 )
    throw new IllegalArgumentException( "fahrgaeste darf nicht negativ sein ");
        
  if(fahrgaeste >60)
    throw new IllegalArgumentException("Es sid zu viele Fahrgaeste");
        
    this.geschwindigkeit = geschwindigkeit;
    einsteigen(fahrgaeste);
}

public void einsteigen(int gaeste) {
  fahrgaeste += gaeste;
  berechneGeschwindigkeit(gaeste);
}

public void aussteigen(int gaeste) {
  fahrgaste -= gaeste;
  berechneGeschwindigkeit(gaeste*-1);

public void berechneGeschwindigkeit(int gaeste) {
  if(gaeste>0){
    for(int i=0; i<gaeste; i++)     
      geschwindigkeit -= geschwindigkeit/100;
  }else{
    for(int i=0; i>gaeste; i--)     
      geschwindigkeit += geschwindigkeit/100;
  }
}
 

nata

Bekanntes Mitglied
hallo nochmal,
ich bin erst seit sehr kurzem mit dem java beshaeftigt und was ich jetzt poste ist vieleicht blödsinn und kannst du mir sage wo ich fehler mache?
Ein Fahrrad hat keine zusätzlichen Parameter für den Konstruktor. Über die Methoden aufsteigen(Person p) und absteigen() kann aber eine Person auf das Rad steigen (schreibe eine simple Klasse Person dafür). Sitzt eine Person auf dem Fahrrad, dann hat es eine fixe Geschwindigkeit von 15 km/h, hat das Fahrrad derzeit keinen Fahrer, dann ist die Geschwindigkeit 0 km/h.

Java:
package vererbung_fahrzeug;

public class Fahrrad extends Fahrzeug{
	
	private int geschwindigkeit;
	
	public Fahrrad(String kennzeichen, int geschwindigkeit){
		super(kennzeichen);
		this.geschwindigkeit = geschwindigkeit;
	}
	
	public double berechneGeschwidigkeit(){
		if(aufsteigen(p)== true){
			return geschwindigkeit;
		}
		else return 0;
		
	}
	
	public boolean aufsteigen(Person p){
		return true;
	}

	@Override
	public double berechneBenoetigteDauer(double streckenlaenge) {
		// TODO Auto-generated method stub
		return 0;
	}

}

Java:
package vererbung_fahrzeug;

public class Person  {
	
	public Person(){

	}

}
 

function

Bekanntes Mitglied
also blödsinn ist es erstmal nicht was du postet nur manchmal nicht ganz so gut umgesetzt ;)
nata hat gesagt.:
Ein Fahrrad hat keine zusätzlichen Parameter für den Konstruktor.
Soll heißen, dass der Konstruktor von Fahrrad der Gleiche ist wie bei Fahrzeug, also nur Kennzeichen als Parameter, du hast allerdings auch die Geschwindigkeit als parameter.

ich würde die empfehlen die eine standard geschwindigkeit zusetzen:
private int geschwindigkeit = 0;

und noch eine variable einfügen, die sich merkt ob das fahrrad einen fahrer hat oder nicht:
private boolean hasFahrer = false;

jetzt kannst du beim auf/absteigen prüfen ob schon ein fahrer existiert. 2fahrer gehen ja nicht...

in den methoden auf und absteigen kannst jeweil die geschwindigkeit setzen, absteigen = 0; aufsteigen = 15;...

ich weiß nicht ob die Person auch zwangsläufig gespeichert werden muss, die auf dem fahrrad sitzt oder nicht. Wennj ja, dann solltest du noch die variable
private Person fahrer; initialisieren und beim auf/absteigen ggf. fahrer = p setzen...
 

nata

Bekanntes Mitglied
danke , danke, danke vielmals

also wie ich von dir verstanden habe kann ich so implementieren
Java:
public boolean aufsteigen(Person p){
		if(hasFahrer = true){
			throw new IllegalArgumentException(
					"Es gibt scon ein Fahrer vorhanden");
		}
		return true;
	}


soll ich sort oben classe Person so lassen? st das korrekt?
vielen dank nochmal
 

function

Bekanntes Mitglied
also ich würde aufsteigen nicht unbedingt mit rückgabe wert machen und du musst ja auch was machen, wenn niemand draufsitzt ;)
Java:
public void aufsteigen(Person p) {
  if(hasFahrer == true)
    throw new IllegalArgumentException("Es gibt scon ein Fahrer vorhanden");

  hasFahrer = true;
  geschwindigkeit = 15;
}
wenn schon ein fahrer existiert wird die Exception ausgelöst, sonst wird ein fahrer "gesetzt".

Die Klasse Person ist gut soweit, es soll ja quasi nur eine pseudo Person erstellt werden, ohne eigenschafte, ohne methoden...
 

nata

Bekanntes Mitglied
danke für deine hilfe, hast du mir wirklich sehr gut geholfen. deine lösung kann ich desswegen nicht nehmen weil ich vererbung mache und es gibt eine klasse fahrzeug und dort ist diese methode public double berechneGeschwidigkeit()

Java:
public class Autobus extends Fahrzeug {
	
	private final int geschwindigkeit;
	private int fahrgaeste;
	 
	public Autobus( String kennzeichen, int geschwindigkeit, int fahrgaeste){
		super(kennzeichen);
		if(fahrgaeste <0 ){
			throw new IllegalArgumentException(
					"fahrgaeste darf nicht negativ sein ");
		}
		if(fahrgaeste >60){
			throw new IllegalArgumentException(
					"Es sid zu viele Fahrgaeste");
		}
		
		this.fahrgaeste = fahrgaeste;
		this.geschwindigkeit = geschwindigkeit;
	}
	
	
	public double berechneGeschwidigkeit(){
		return geschwindigkeit - geschwindigkeit * fahrgaeste / 100 ;
	}
	
	public void einsteigen(int gaeste){
		 fahrgaeste +=  gaeste;
		
	}
	
	public void aussteigen(int gaeste){
		 fahrgaeste -= gaeste;
		
	}

	
	public double berechneBenoetigteDauer(double streckenlaenge) {
		
		return 0;
	}
	
}

ich habe mir überlegt wenn ich bei fahrrad aufsteigen habe absteigen soll ich nicht brauchen

Java:
public class Fahrrad extends Fahrzeug{
	
	private Person p;
	private int geschwindigkeit;
	private boolean hasFahrer = false;
	
	public Fahrrad(String kennzeichen, int geschwindigkeit){
		super(kennzeichen);
		this.geschwindigkeit = geschwindigkeit;
	}
	
	public double berechneGeschwidigkeit(){
		if(aufsteigen(p)){
			return geschwindigkeit;
		}
		else return 0;
		
	}
	
	public boolean aufsteigen(Person p){
		if(hasFahrer = true){
			throw new IllegalArgumentException(
					"Es gibt schon ein Fahrer vorhanden");
		}
		return hasFahrer = true;
	}

	@Override
	public double berechneBenoetigteDauer(double streckenlaenge) {
		// TODO Auto-generated method stub
		return 0;
	}

}

danke nata
 

Suinos

Bekanntes Mitglied
nata hat gesagt.:
[...] es gibt eine klasse fahrzeug und dort ist diese methode public double berechneGeschwidigkeit()
Bedenke: Nur die Methodensignatur ist dir vorgegeben, nicht aber, was du intern in der Methode wirklich machst.
(Ich selber würde eine Neuberechnung der Geschwindigkeit sowieso nur intern ermöglichen, und dann geeignete Schnittstellen zur Verfügung stellen, aber das kann dir egal sein.)

nata hat gesagt.:
ich habe mir überlegt wenn ich bei fahrrad aufsteigen habe absteigen soll ich nicht brauchen

Da du aufsteigen kannst, musst du nicht absteigen?
Versuch das einmal auf einem Fahrrad / Stuhl / etc.

nata hat gesagt.:
[JAVA=21]if(hasFahrer = true)[/code]
Verstehst du den Unterschied zwischen "=" und "=="?
Zuweisungsoperator
 

nata

Bekanntes Mitglied
danke für die verbesserung in überprüfung


ich hätte eine frage, wenn ich in toString methode in der fahrzeug die methode public abstract double berechneBenoetigteDauer( double streckenlaenge); ausgeben möchte, wie soll ich dort schreiben?


Java:
public class Fahrrad extends Fahrzeug{
	
	private Person p;
	private boolean hasFahrer = false;
	
	public Fahrrad(String kennzeichen, int geschwindigkeit){
		super(kennzeichen);
	}
	
	public double berechneGeschwidigkeit(){
		if(aufsteigen(p)){
			return 15;
		}
		else return 0;
	}
	
	public boolean aufsteigen(Person p){
		if(hasFahrer == true){
			throw new IllegalArgumentException(
					"Es gibt schon ein Fahrer vorhanden");
		}
			return hasFahrer = true;
		
	}


	@Override
	public double berechneBenoetigteDauer(double streckenlaenge) {
		// TODO Auto-generated method stub
		return 0;
	}

}

Java:
public class Main {
	public static void main(String args[]){
		Autobus a1 = new Autobus("A0234", 23, 2);
		System.out.println(a1);
		System.out.println("1----------");
		a1.einsteigen(2);
		System.out.println("2----------");
		System.out.println(a1);
		System.out.println("3----------");
		a1.aussteigen(1);
		System.out.println(a1);
		System.out.println("4----------");
		System.out.println(a1);
		
		Fahrzeug f1 = a1;
		System.out.println("6----------");
		System.out.println(a1);
		System.out.println("7----------");
		Fahrrad f2 = new Fahrrad("s234", 0);
		System.out.println(f2);
		System.out.println("8----------");
		Person p = new Person();
		f2.aufsteigen(p);
		System.out.println("9----------");
		
		System.out.println(f2);
		System.out.println("10----------");
		f2.berechneGeschwidigkeit();
	}
}

meine frage ist folgende, dass ich in der main methode ausführe nach der System.out.printkn("8--------");bekomme ich fehlerrmeldung

Exception in thread "main" java.lang.IllegalArgumentException: Es gibt schon ein Fahrer vorhanden
at vererbung_fahrzeug.Fahrrad.aufsteigen(Fahrrad.java:21)
at vererbung_fahrzeug.Main.main(Main.java:25)

vielen herzlichen dank
lg nata
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
imocode Vererbung Problem mit Vererbung Java Basics - Anfänger-Themen 2
M Vererbung - Polymorphie Java Basics - Anfänger-Themen 37
L Java- Vererbung Java Basics - Anfänger-Themen 4
ineedhelpinjava Vererbung Java Basics - Anfänger-Themen 12
ineedhelpinjava Vererbung Java Basics - Anfänger-Themen 1
I JSON / XML Struktur mit Vererbung / Interfaces Java Basics - Anfänger-Themen 0
M Interface oder Vererbung? Java Basics - Anfänger-Themen 12
M Vererbung Java Basics - Anfänger-Themen 6
M Designentscheidung von Attributen/Methoden im Falle von Vererbung Java Basics - Anfänger-Themen 8
M Generics Vererbung Listen Java Basics - Anfänger-Themen 2
A Methoden Vererbung und Interface Java Basics - Anfänger-Themen 14
D Klassen und Vererbung Java Basics - Anfänger-Themen 2
U Vererbung Java Basics - Anfänger-Themen 7
D Vererbung Java Basics - Anfänger-Themen 3
K Schleife berechnet kein Ergebnis (Vererbung) Java Basics - Anfänger-Themen 6
00111010101 Objektorientiertes Programmieren mit Vererbung (Zahlen in Array verschwinden) Java Basics - Anfänger-Themen 3
W Zur Vererbung: Wann und wie? Java Basics - Anfänger-Themen 35
H Datenkapselung, Vererbung und UML Java Basics - Anfänger-Themen 16
districon Super-Stichwort/ Vererbung Java Basics - Anfänger-Themen 3
YaU Vererbung erstellt NullPointerException? Java Basics - Anfänger-Themen 4
G Vererbung Klassenattribute Java Basics - Anfänger-Themen 9
TimoN11 Frage zu Java-Vererbung (Cast) Java Basics - Anfänger-Themen 5
N Thema Vererbung Java Basics - Anfänger-Themen 31
A Vererbung Vererbung Übung Java Basics - Anfänger-Themen 5
B Vererbung - Sichtbarkeitsmodifikation - protected Java Basics - Anfänger-Themen 10
B Best Practice Unschlüssig ob Vererbung oder Interface Java Basics - Anfänger-Themen 2
G Java Vererbung Java Basics - Anfänger-Themen 8
Y Vererbung Konto - Anfangsprobleme Java Basics - Anfänger-Themen 7
A Vererbung Klassen im Bezug auf Auto´s Java Basics - Anfänger-Themen 18
A Klassen Vererbung und zusätzliche Unterklassen Java Basics - Anfänger-Themen 23
M Vererbung mit Enums Java Basics - Anfänger-Themen 8
Kirby.exe Vererbung im Detail erklärt? Java Basics - Anfänger-Themen 9
N Modellierung, vererbung, Java Basics - Anfänger-Themen 163
M Fehlendes Verständnis für dynamische Bindung und Vererbung Java Basics - Anfänger-Themen 13
W OOP Vererbung im Computerspiel Java Basics - Anfänger-Themen 7
J Probleme mit Vererbung Java Basics - Anfänger-Themen 4
I Vererbung Java Basics - Anfänger-Themen 13
W OOP Vererbung und Problem bei Zählschleife in einer Methode Java Basics - Anfänger-Themen 10
W Methoden Verständnisfrage Vererbung von Methoden Java Basics - Anfänger-Themen 14
V Vererbung Java Basics - Anfänger-Themen 2
J Frage zur Vererbung Java Basics - Anfänger-Themen 1
J Vererbung Java Basics - Anfänger-Themen 3
U Was löst meine NullPointerException aus? (Vererbung) Java Basics - Anfänger-Themen 12
O Vererbung Ueben mit kleiner Datenstruktur von Räumen Java Basics - Anfänger-Themen 10
O Umgang mit Vererbung verstehen Java Basics - Anfänger-Themen 4
A Vererbung/Interfaces/Generics Java Basics - Anfänger-Themen 12
O Vererbung änderung des Konstruktors Java Basics - Anfänger-Themen 8
L Vererbung Java Basics - Anfänger-Themen 5
E HashMap+Vererbung Java Basics - Anfänger-Themen 11
E Vererbung super-Methoden Aufruf Java Basics - Anfänger-Themen 3
B Java Vererbung Fragen (zu Code Beispiel) Java Basics - Anfänger-Themen 3
A Objekterstellung bei der Vererbung Java Basics - Anfänger-Themen 7
P Vererbung Warum funktioniert die Vererbung hier nicht Java Basics - Anfänger-Themen 14
S Vererbung Java mehrfach Java Basics - Anfänger-Themen 10
B Objekte zählen/ Vererbung/ Kopplung/ Interface/ Abstract Class Java Basics - Anfänger-Themen 5
A Klassen Vererbung privater Methoden und Member Java Basics - Anfänger-Themen 12
A Konstruktoren Vererbung Java Basics - Anfänger-Themen 3
ReinerCoder Vererbung von JFrame in einer Klasse entfernen Java Basics - Anfänger-Themen 5
W Vererbung, abstract und Konstruktoren Java Basics - Anfänger-Themen 30
J Vererbung und Methodenaufruf Java Basics - Anfänger-Themen 11
G Polymorphie, Vererbung, statischer Typ, Laufzeittyp Java Basics - Anfänger-Themen 2
H Vererbung mit private instanzvariablen Java Basics - Anfänger-Themen 9
S Vererbung Funktionsweise Code zur Vererbung Java Basics - Anfänger-Themen 1
C Methoden Vererbung private Attribute/public Methoden Java Basics - Anfänger-Themen 4
S Verständnis Vererbung Java Basics - Anfänger-Themen 3
D JavaFX Vererbung Java Basics - Anfänger-Themen 2
U Vererbung Generizität und Vererbung Java Basics - Anfänger-Themen 4
A Vererbung bei Klassen mit Objekt der Klasse im Konstruktor Java Basics - Anfänger-Themen 4
K Vererbung Octagon von Circle Java Basics - Anfänger-Themen 0
B Hilfe bei Vererbung Java Basics - Anfänger-Themen 2
D Vererbung Frage zum Klassenaufbau mit Vererbung Java Basics - Anfänger-Themen 1
T Vererbung und interface. Java Basics - Anfänger-Themen 1
S Gehaltsberechnung (Vererbung, abstrakte Methoden) Java Basics - Anfänger-Themen 6
S Vererbung Java Basics - Anfänger-Themen 1
F Vererbung in zwei Richtungen? Java Basics - Anfänger-Themen 14
D Vererbung / Polymorphie Java Basics - Anfänger-Themen 5
O Vererbung Java Basics - Anfänger-Themen 5
MiMa Vererbung Theorie OK, Praxis ?? Java Basics - Anfänger-Themen 4
Arif Vererbung Vererbung Variablen überschreiben Java Basics - Anfänger-Themen 1
C Vererbung - Ausgaben bestimmen Java Basics - Anfänger-Themen 6
S Vererbung Java Basics - Anfänger-Themen 10
L Setter und Getter/Vererbung Java Basics - Anfänger-Themen 6
C Konstruktoren und Vererbung Java Basics - Anfänger-Themen 2
J Kleinere Frage zur Vererbung/Objekterzeugung Java Basics - Anfänger-Themen 2
G Vererbung Java Basics - Anfänger-Themen 12
J Vererbung privater Variablen Java Basics - Anfänger-Themen 7
J Vererbung Vererbung von Methoden Java Basics - Anfänger-Themen 6
B Vererbung Java Basics - Anfänger-Themen 12
K Vererbung (super) Java Basics - Anfänger-Themen 2
A ArrayQueue mit Exceptions und Vererbung Java Basics - Anfänger-Themen 3
J Java: static bei Vererbung Java Basics - Anfänger-Themen 5
C Vererbung Java Basics - Anfänger-Themen 4
L Vererbung Java Basics - Anfänger-Themen 3
J Klassenorganisation | Vererbung Java Basics - Anfänger-Themen 1
B Vererbung Vererbung Java Basics - Anfänger-Themen 2
N Generics Vererbung Wildcard Interface Java Basics - Anfänger-Themen 8
A Benötige Hilfe bei Vererbung Java Basics - Anfänger-Themen 1
M Anfängerprobleme mit Vererbung Java Basics - Anfänger-Themen 27
J Vererbung Java Basics - Anfänger-Themen 9
F Vererbung von Attributen zwischen zwei Klassen Java Basics - Anfänger-Themen 6

Ähnliche Java Themen


Oben