OOP Mehrere Klassen 'verbinden'?

H

HansiWinter

Gast
Hallo, ich mal wieder. :)

Ich lerne weiter JAVA und bin gerade bei einer Aufgabe, wo ich nicht so recht weiß... also ich soll ein Auto Objekt erzeugen, dass verschiedene Sachen kann. Also ich habe hier folgende Klassen angelegt:

1)
Java:
 Das ist meine Autoklasse. Ich arbeite gerade an den Methoden 'ladezu' und 'entlade':
public class Auto{
	
	private String automarke;
	private String autotyp;
	private int pszahl;
	private double verbrauch;
	private double tankgroeße;
	private double tankinhalt;
	private double resttank;
	private double gesamtverbrauch;
	private double restdistanz;
	private double entfernung;
	
	private Ladung ladung;
	private int ladegewicht;
	
	String getautomarke(){
		return automarke;
	}
	
	public void setautomarke(String marke){
		automarke=marke;
	}
	
	String getautotyp(){
		return autotyp;
	}
	
	public void setautotyp(String typ){
		autotyp=typ;
	}
	
	int getpszahl(){
		return pszahl;
	}
	
	public void setpszahl(int ps){
		if (ps >= 0)
		pszahl=ps;
		else
		System.out.println("So lahm kann die Kiste doch gar nicht sein!");
	}
	
	public void fahre (double entfernung, double verbrauch, double tankinhalt){
		
		if (this.tankinhalt >= this.verbrauch/100*entfernung)
			{resttank = this.tankinhalt - this.verbrauch/100*entfernung;
			gesamtverbrauch = this.verbrauch/100*entfernung;
			System.out.println("In meinem Tank sind jetzt noch " +resttank+" Liter drin. Ich habe also "+gesamtverbrauch+" insgesamt verbraucht.");}
	
		else
			{System.out.println("Achtung! Die Tankfuellung reicht nicht aus!");
			restdistanz = this.tankinhalt/this.verbrauch;
			System.out.println("Ich kann nur noch "+restdistanz+" Kilometer fahren, dann bleibt die Schuessel stehen!");}
		
	}
	
	public double getresttank(){
		return resttank;
	}
	
	public double getgesamtverbrauch(){
		return gesamtverbrauch;
	}
	
	public double getrestdistanz(){
		return restdistanz;
	}
	public double getverbrauch(){
		return verbrauch;
	}
	
	public void setverbrauch(double verbrauch){
		this.verbrauch=verbrauch;
	}
		
	public double gettankgroeße(){
		return tankgroeße;
	}
	
	public void settankgroeße(double tankgroeße){
		this.tankgroeße=tankgroeße;
	}
		
	public double gettankinhalt(){
		return tankinhalt;
	}
	
	public void settankinhalt(double tankinhalt){
		this.tankinhalt=tankinhalt;
	}
	
	public void setentfernung(double entfernung){
		this.entfernung=entfernung;
	}
	
	public double getentfernung(){
		return entfernung;
	}
	
	public void ladezu (Ladung eineLadung){
		if (ladung == 'JA')
		{System.out.println("Auf diesem Auto ist bereits etwas geladen. Mehr geht echt nicht mehr drauf!!");}
		else
		{if gewicht <= ladegewicht)
			{ladegewicht = gewicht;
			System.out.println("Auf das Auto wurden nun "+ladgewicht+" drauf geladen.");}
			else
			{System.out.println("Für diese Karre sind "+ladegwicht+" echt zu viel! Schau mal, dass du das woanders draufkriegst!");}
	}
	
	public Ladung entlade(){
		
	}
}

2) Das hier ist die Ladungsklasse, die eigentlich (nach meiner Idee) nur eine Variable hat, die über Getter/Setter gesetzt wird. Ich soll so eine Klasse auf jeden Fall anlegen (über den Inhalt wird aber keine Aussage gemacht..)
Java:
public class Ladung{
	
	int gewicht;
	
	public setgewicht (double gewicht){
		this.gewicht = gewicht;
	}
	
	public double getgewicht (){
		return gewicht;
	}
	
}

3) Hier erzeuge ich ein 'Auto' und mache Dinge damit.
Java:
public class AutoAnwendung{
	
	public static void main (String[]args){
		
		Auto meinauto = new Auto();
		
		meinauto.setautomarke("Audi");
		meinauto.setautotyp("Cabrio");
		meinauto.setpszahl(220);
		meinauto.setverbrauch(1.0);
		meinauto.settankgroeße(50.0);
		meinauto.settankinhalt(34);
				
		String marke = meinauto.getautomarke();
			System.out.println("Sie fahren einen "+marke);
			
		System.out.println("Das ist ein "+meinauto.getautotyp());

		int ps = meinauto.getpszahl();
			System.out.println("Der macht "+ps+" Sachen!");
		
		// Die mittlere Version ist am Besten, weil man da keine neue
		// Variable braucht!
		
		System.out.println("Mein Auto verbraucht "+meinauto.getverbrauch()+" Liter auf 100 Kilometer.");
		System.out.println("In den Tank passen "+meinauto.gettankgroeße()+" Liter.");
		System.out.println("Drin sind aber nur noch "+meinauto.gettankinhalt()+" Liter.");
		
		meinauto.fahre(2900, +meinauto.getverbrauch(), +meinauto.gettankinhalt());
		
		System.out.println("Ich will jetzt "+meinauto.getentfernung()+" Kilometer damit fahren!");		
		
	}
}

Nun will ich folgendes Erreichen:
Und zwar will ich dem Auto ein bestimmtes 'ladegewicht' zuordnen, dass dieses laden kann. Wenn schon etwas auf dem Auto geladen ist, kann man nichts mehr draufladen, wenn nichts drauf ist, kommt es darauf an, ob das 'gewicht' der Ladung nicht zu schwer ist, also gewicht <= ladegewicht soll gelten.

Mein Problem ist jetzt aber, dass die Klasse 'Ladung' ja nicht in Verbindung mit 'Auto' steht. Irgendwo müsste ich also doch jetzt eine Instanz erzeugen, oder? Wie genau mache ich das und wo?
 

Fu3L

Top Contributor
Java:
 if (ladung == 'JA')

Zuerst: Du musst
Java:
 if (ladung.equals("JA"))
verwenden. Auch der Unterschied bei den Anführungszeichen ist wichtig! Objekte kann man normal nicht per == vergleichen. Bei String gibt es eine Ausnahme, die man aber nicht nutzen sollte (insbesondere nicht, wenn man sie nicht genau versteht)

Weiter:
Das Beladen findet natürlich in deiner Autoverwaltung statt (momentan deine main-Methode). Dort erzeugst du ein Ladungsobjekt und übergibst es dem Auto. Dort kannst du dann über
Code:
eineLadung.getGewicht()
zB das Gewicht abrufen und somit prüfen.

Methoden schreibt man normal camelCase, also getGewicht, setVerbrauch, etc.

Bitte verbesser in den Methode bei den ifs und elses noch den Klammerstil ;)
 

ARadauer

Top Contributor
Mein Problem ist jetzt aber, dass die Klasse 'Ladung' ja nicht in Verbindung mit 'Auto' steht.
doch... private Ladung ladung... dein Auto hat eine Ladung nur die ist halt null

mach zb einen setter und getter wie für die anderen eigenschaften und übergib eine ladung...

Irgendwo müsste ich also doch jetzt eine Instanz erzeugen, oder? Wie genau mache ich das und wo?
wie du es mit auto gemacht hast... Auto meinauto = new Auto();
wo? mhn ja du kannst es in AutoAnwendung machen und der setLadung von auto übergeben, oder du machst in auto eine einfache laden() und machst es da drinnen...
 

alex_fairytail

Mitglied
Ganz einfach:

Die Klasse Ladung in die Klasse Auto importieren, also wie ein ganz normaler import, wenn sie im selben ordner sind ginge das etwa so:
Java:
import Ladung;

Einfacher wäre wenn du sie alle ins gleiche Package packst: Dazu musst du alle Dateien in denselben Ordner tun und überall in die Klassen folgendes Schreiben:

Java:
package packagenamedenduwillst;

Danach einfach eine Instanz erzeugen wie beim Auto:

Java:
Ladung blabla = new Ladung();

Lg :)
 

Andi_CH

Top Contributor
So ein Hinweis - eine Auto braucht kein Member mit dem Namen "automarke, autogewicht u.ä. sondern nur marke, gewicht - denn die stehen ja im Auto drin.

Ist aber ein Detail.

Mein Vorschlag: (packagebezeichnung musst du allenfalls enfernen oder anpassen)

Java:
package com.javaforum.auto;

public class Ladung {

	private final int gewicht;

	/**
	 * Konstruktor
	 * @param gewicht in kg
	 */
	public Ladung (int gewicht) {
		this.gewicht = gewicht;
	}

	public double getgewicht () {
		return gewicht;
	}

	@Override
	public String toString() {
		return "Ladungsgewicht = " + gewicht;
	}
}

Java:
package com.javaforum.auto;

public class Auto {

	private Ladung ladung;
	private final int maxLadegewicht;

	public Auto(int maxLadung) {
		maxLadegewicht = maxLadung;
	}

	public Ladung entladen() {
		Ladung tmpLadung = ladung;
		ladung = null;
		return tmpLadung;
	}

	public boolean lade(Ladung neueLadung) {
		if (ladung != null) {
			// Das Auto hat schon etwas geladen
			return false;
		}
		if (neueLadung.getgewicht() > maxLadegewicht) {
			// die neue Ladung ist zu schwer
			return false;
		}
		ladung = neueLadung;
		return true;
	}
}

Java:
package com.javaforum.auto;

public class Test {

	public static void main(String[] args) {
		Auto meinAuto = new Auto(1000);
		if (meinAuto.lade(new Ladung(500))) {
			System.out.println("Auto beladen - wie zu erwarten war");
		} else {
			System.out.println("Problem mit beladen - warum? Das müsste gehen.");
		}
		if (meinAuto.lade(new Ladung(500))) {
			System.out.println("Auto beladen - das dürfte nicht gehen");
		} else {
			System.out.println("Problem mit beladen - wie zu erwarten war");
		}
		System.out.println("Entladen " + meinAuto.entladen());
		if (meinAuto.lade(new Ladung(1500))) {
			System.out.println("Auto beladen - das dürfte nicht gehen");
		} else {
			System.out.println("Problem mit beladen - wie zu erwarten war");
		}
		if (meinAuto.lade(new Ladung(1000))) {
			System.out.println("Auto beladen - das muss gehen");
		} else {
			System.out.println("Problem mit beladen - warum? Das müsste gehen.");
		}
	}
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A mehrere Klassen verbinden Java Basics - Anfänger-Themen 7
M Mehrere Klassen verbinden - Module Java Basics - Anfänger-Themen 3
I JPA Query für mehrere Klassen Java Basics - Anfänger-Themen 3
D OOP- Eine Klasse in mehrere Klassen aufteilen Java Basics - Anfänger-Themen 7
I Klassen Mehrere Java Klassen in einer .java Datei Java Basics - Anfänger-Themen 7
B Mehrere Klassen miteinander kommunizieren lassen Java Basics - Anfänger-Themen 4
O Absolute Pfade in mehrere Klassen verwenden Java Basics - Anfänger-Themen 3
J Mehrere Klassen in eine Klasse schreiben? Java Basics - Anfänger-Themen 7
F Objektattribute über mehrere Klassen weitergeben Java Basics - Anfänger-Themen 2
K Mehrere Klassen beim JavaEditor verwenden - möglich? Java Basics - Anfänger-Themen 8
D variablen über mehrere Klassen Java Basics - Anfänger-Themen 12
M Mehrere Klassen Java Basics - Anfänger-Themen 13
R Warum mehrere Klassen? Java Basics - Anfänger-Themen 13
H OOP Mehrere Klassen Java Basics - Anfänger-Themen 3
N Überladen über mehrere Klassen hinweg? Java Basics - Anfänger-Themen 3
J Javadoc -> Mehrere Klassen Java Basics - Anfänger-Themen 8
B Mehrere Klassen in der Main Klasse? Java Basics - Anfänger-Themen 4
S mehrere einzelne klassen in eine datei packen Java Basics - Anfänger-Themen 4
H BlueJ mehrere Klassen Java Basics - Anfänger-Themen 6
Antoras eine Instanz von mehrere Klassen aus nutzen Java Basics - Anfänger-Themen 2
Antoras Auf mehrere Klassen mit einer einzigen Methode zugreifen Java Basics - Anfänger-Themen 17
H OO-Anfänger: mehrere Klassen greifen auf eine Instanz zu Java Basics - Anfänger-Themen 9
T Mehrere paint Methoden in unterschiedlichen Klassen Java Basics - Anfänger-Themen 7
S Mehrere klassen in einem GUI ausführen Java Basics - Anfänger-Themen 3
D Mehrere JFrames in eigenen Klassen und Dateien? Java Basics - Anfänger-Themen 4
P Mehrere Klassen in Applet einbringen Java Basics - Anfänger-Themen 10
L ArrayList für mehrere Klassen zugänglich Java Basics - Anfänger-Themen 10
G Chatprogramm: mehrere Klassen Java Basics - Anfänger-Themen 12
richis-fragen Mehrere Spalten mit Comparator sortieren Java Basics - Anfänger-Themen 2
K Mehrere Werte in einem Switch Case parallel überprüfen Java Basics - Anfänger-Themen 23
S HashMap mehrere Keys zu einem Value Java Basics - Anfänger-Themen 3
T Mehrere if bedingungen ohne & Java Basics - Anfänger-Themen 2
MiMa Java Doc mehrere Return Parameter Java Basics - Anfänger-Themen 11
javaBoon86 Array mehrere Dimensionen Java Basics - Anfänger-Themen 10
Buroto Klassen Mehrere .txt Datein verbienden und anschließend auslisten Java Basics - Anfänger-Themen 10
S mehrere TreeSets so speichern, dass man sie miteinander vergleichen kann Java Basics - Anfänger-Themen 1
P Zähler Variable für mehrere Objekte Java Basics - Anfänger-Themen 6
M Mehrere Daten/ Variablen Speichern Java Basics - Anfänger-Themen 9
C mehrere JPanel in ein JFrame bringen Java Basics - Anfänger-Themen 9
L Beim Java Programmstart, mehrere Parameter über die Kommandozeile übergeben Java Basics - Anfänger-Themen 9
D mehrere Berechnungen in einer Methode Java Basics - Anfänger-Themen 9
U Kann man bei Java gleich mehrere Bedingungen prüfen in der If, aber in einem "Satz"? Java Basics - Anfänger-Themen 1
Kotelettklopfer Mehrere Projekte in einem Git verwalten Java Basics - Anfänger-Themen 10
I JAX-RS Mehrere Parameter in Query Java Basics - Anfänger-Themen 3
M mehrere Rückgabenwerte aus Methode Java Basics - Anfänger-Themen 7
A Input/Output Mehrere Csv-Dateien einlesen Java Basics - Anfänger-Themen 2
R Mehrere Buchstaben aus einem String entfernen Java Basics - Anfänger-Themen 1
TimoN11 Java - Eine oder mehrere Eingaben möglich machen Java Basics - Anfänger-Themen 6
M Mehrere Datenbank zugriffe über tomee.xml regeln? Java Basics - Anfänger-Themen 1
S Mehrere Probleme im Code Java Basics - Anfänger-Themen 7
Ich lerne Java. Methoden Mehrere Methoden mit Punkt Java Basics - Anfänger-Themen 45
M Ausgabe einer Liste welche mehrere Stacks enthält Java Basics - Anfänger-Themen 3
F Mehrere Server Sockets in einer Anwendung Java Basics - Anfänger-Themen 9
T DoWhile Schleife über mehrere Mothoden Java Basics - Anfänger-Themen 5
B Methoden Mehrere ähnliche Methoden zusammenfassen Java Basics - Anfänger-Themen 24
E Mehrere Eingabezeilen gleichzeitig einlesen Java Basics - Anfänger-Themen 7
C Mehrere Zufallswerte Java Basics - Anfänger-Themen 4
M Dijkstra Algorithmus in Graphen auf mehrere verschiedene Knoten anwenden lassen Java Basics - Anfänger-Themen 11
R Error, wenn mehrere Clients gleichzeitig die Verbindung beenden Java Basics - Anfänger-Themen 16
F Mehrere Exceptions in einem Catch-Block abfangen Java Basics - Anfänger-Themen 12
O Datei in mehrere kleine Dateien umwandeln Java Basics - Anfänger-Themen 47
Henri Mehrere Ordner umbenennen Java Basics - Anfänger-Themen 11
E Mehrere Arrays addieren mit Übertrag Java Basics - Anfänger-Themen 13
B mehrere Werte mit scanner und while schleife einlesen, max berechnen bzw addieren Java Basics - Anfänger-Themen 2
J Mehrere paintComponenten in einem Programm Java Basics - Anfänger-Themen 0
F Mehrere Buttons mit einem ActionListener abdecken Java Basics - Anfänger-Themen 24
B Jeweils den Parent bekommen -> mehrere Ebenen Java Basics - Anfänger-Themen 2
javajoshi mehrere Threads: Methoden zentral unterbringen Java Basics - Anfänger-Themen 8
M Erste Schritte Mehrere eingaben in einer Line vergleichen (if equals...) Java Basics - Anfänger-Themen 6
L Mehrere Jars im Unterordner Java Basics - Anfänger-Themen 2
L LibGDX - mehrere Screens Java Basics - Anfänger-Themen 1
J Sudoku mehrere Lösungen Java Basics - Anfänger-Themen 29
F Mehrere Instanzen der Klasse A EINER Instanz der Klasse B übergeben Java Basics - Anfänger-Themen 3
T Mehrere JFrames gleichzeitig öffnen Java Basics - Anfänger-Themen 6
O Erste Schritte Scanner mehrere male benutzen (Konsole) Java Basics - Anfänger-Themen 7
S mehrere If Bedingungen Java Basics - Anfänger-Themen 5
F Mehrere Zeilen zu einer Zeile zusammenfügen und in eine Datei schreiben Java Basics - Anfänger-Themen 1
B Mehrere Zahlen speichern Java Basics - Anfänger-Themen 60
M mehrere extends? Java Basics - Anfänger-Themen 19
N Datei Zeilenweise einlesen, Ausgabe mehrere Arrays Java Basics - Anfänger-Themen 7
C ButtonController löst mehrere Methoden aus Java Basics - Anfänger-Themen 5
D JPanel mehrere Formen zeichnen Java Basics - Anfänger-Themen 5
B Timer mehrere Male ausführen Java Basics - Anfänger-Themen 4
kilopack15 Mehrere Threads in einer Klasse Java Basics - Anfänger-Themen 8
F mehrere eingegebene Zahlen mit Zahlen von 1-9 multiplizieren Java Basics - Anfänger-Themen 18
F Mehrere Konstruktoren? Wofür? Java Basics - Anfänger-Themen 21
J Mehrere Eingabefelder programmiert (Zeigt Fehler an) Java Basics - Anfänger-Themen 6
Jinnai4 Mehrere Textfelder überprüfen Java Basics - Anfänger-Themen 16
N Mehrere Forms auf einem Panel Java Basics - Anfänger-Themen 6
Tommy Nightmare Variable auf mehrere Ungleichheiten prüfen Java Basics - Anfänger-Themen 18
D Mehrere Objekte in ein Objekt zusammenfassen Java Basics - Anfänger-Themen 16
D Input/Output Mehrere Befehle nacheinander ausführen Java Basics - Anfänger-Themen 20
K Mehrere Objekte anlegen Java Basics - Anfänger-Themen 23
N Integers aus Textdatei auslesen und mehrere Arrays erstellen Java Basics - Anfänger-Themen 9
S Verständnis - Frage mehrere SQL Statements in While Schleife Java Basics - Anfänger-Themen 0
J MVC Pattern, mehrere Controller/Views/Models Java Basics - Anfänger-Themen 0
J Mehrere IF Anweisungen und dazugehörige ELSE Java Basics - Anfänger-Themen 6
V Mehrere Dateien aus JFileChooser in eine ArrayList speichern Java Basics - Anfänger-Themen 2
F Mehrere Konstruktoren Java Basics - Anfänger-Themen 10
A Mehrere Radiobuttons Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben