Referenz problem

Status
Nicht offen für weitere Antworten.

javadubidu

Mitglied
Hallo,
ich habe folgenden Aufgabe und zugleich folgendes Problem.

Ich soll ein Programm fuer ein Aquarium programmieren.

Als Basisklasse habe ich das Aquarium
Code:
public class aquarium {
	
	// Variablen für die Höhe und die Breite des Aquariums
	private int hoehe;
	private int breite;

	// leerer Konstruktor, der nichts macht
	aquarium(){
	}
	
	// Konstruktor, mit dem man zu Beginn die Groesse und Breite des Aquariums angeben kann
	aquarium(int breite, int hoehe){
		this.hoehe 	= hoehe;
		this.breite = breite;
	}

	// Legt die Groesse des Aquariums fest
	public void setAquarium(int breite,int hoehe){
		this.hoehe	= hoehe;
		this.breite = breite;
	}
	
	// Gibt die Breite des Aquariums zurueck
	public int getBreite(){
		return this.breite;
	}
	
	// Gibt die Hoehe des Aquariums zurueck
	public int getHoehe(){
		return this.hoehe;
	}
	
	// Setzt die breite des Aquariums
	public void setBreite(int breite){
		this.breite = breite;
	}
	
	// Hoehe des Aquariums setzen
	public void setHoehe(int hoehe){
		this.hoehe = hoehe;
	}	
	
	// Gibt eine Beschreibung ueber das Aquarium zurueck
	public String toString(){
		return "Breite und Hoehe des Aquariums (" + breite + "," + hoehe + ")";
	}
}

Anschließend können verschiedene Tierarten drinnen vorkommen

Code:
abstract public class fische extends aquarium{
	
	// Standard Geschwindigkeit des Fisches, hin und her!
	private int geschwindigkeit = 5;
	
	// Variable fuer die aktuelle Position des Schwimmverhaltens der Methode "schwimmVerhalten"
	private int aktuellePosition;
	
	// Variable fuer die Richtung des Fisches, 0 = rechts, 1 = links
	private int richtung=0;
	
	// Variable fuer die Tiefe des Fisches
	private int tiefe=0;
	
	// Erstellt das Aussehen des Fisches
	abstract public void setFisch(String setFisch);
	
	// Ausgabe des Fisches (Aussehen)
	abstract public String toString();
	
	// Methode fuer die Wahrscheinlichkeit des Schwimmtiefe
	abstract public void schwimmTiefe();
	
	// Die private Methoden sind nur fuer diese Klasse gedacht
	// Gibt die aktuelle Position des Fisches zurueck
	public int getPosition(){
		return aktuellePosition;
	}
	
	// Setzt die neue Position des Fisches
	private void setPosition(int aktuellePosition){
		this.aktuellePosition = aktuellePosition;
	}
	
	// Setzt die neue Geschwindigkeit, (den Abstand) des Fisches
	public void setGeschwindigkeit(int geschwindigkeit){
		this.geschwindigkeit = geschwindigkeit;
	}
	
	// Gibt die Geschwindigkeit, (den Abstand in Leerzeichen) zurueck
	public int getGeschwindigkeit(){
		return this.geschwindigkeit;
	}
	
	
	// Für das hin und her schwimmen des Fisches
	// Als Parameter bekommt es den Fisch den es ausgeben soll
	public String schwimmVerhalten(String fischart){
		
		aquarium objekt = new aquarium();	
		
		// Variable, fuer die maximale Anzahl der Durchlaufe im Aquarium 
		int max;
	
		// Falls die aktuelle Position die Grenze des Aquariums erreicht (min.5 Einheiten)
		// So findet ein Richtungswechsel statt. Die Variable "richtung" gibt dabei die Richtung an
		// die Geschwindigkeit, wird entweder erhoeht oder vermindert
		if((getBreite()-5>getPosition()) && this.richtung == 0){
			max = getPosition()+this.geschwindigkeit;
			if(max==getBreite()-5){
				this.richtung=1;
			}
		}
		else{
			max = getPosition()-this.geschwindigkeit;
			if(max==0){
				this.richtung=0;
			}
		}

		// Leerzeichen fuer die neue Position des Fisches
		for(int i=0; i<max;i++){
			System.out.print(" ");
		}
		// neue Position des Fisches setzen
		setPosition(max);
		return fischart;
	}
	
	// Gibt die Tiefe des Fisches zurueck
	public int getTiefe(){
		return this.tiefe;
	}
	
	// Setzt die neue Tiefe des Fisches
	public void setTiefe(int tiefe){
		this.tiefe = tiefe;
	}
}

Diese Klasse ist abstrakt da die anderen Klassen von Ihr erben sollen, also haie, goldfische, etc

Nun die Klasse Haie

Code:
import java.util.*;

public class haie extends fische{
	
	// Setzt fuer das Aquarium die Hoehe und Breite fest
	haie(int breite, int hoehe){
		this.setBreite(breite);
		this.setHoehe(hoehe);
	}
	
	private String aussehen = "<///====><";
	
	
	// Neues Aussehen des Fisches setzen, falls gewuenscht
	public void setFisch(String aussehen){
		this.aussehen = aussehen;
	}
	
	// Aussehen des Fisches
	public String toString(){
		return aussehen;
	}
	
	public void schwimmTiefe(){
		Random r = new Random();
		
		int tiefe = 0;
		
		// Mit einer Wahrscheinlichkeit von 1 zu 4, wechselt der Fisch seine Tiefe
		tiefe = r.nextInt()%4;
		if(tiefe <0)
			tiefe*=-1;


		if(tiefe==1){
			for(int i=0;i<this.getTiefe();i++)
				System.out.println("");
			System.out.print(getTiefe());
			setTiefe(getTiefe()+1);
		}

	
	}
}

Soweit so gut.
dann habe ich natürlich auch ein Beispielprogramm dazu geschrieben

Code:
package blatt_09;

public class testprogramm {
	

	
	public static void main(String args[]){
		
		// Aquariurm aufbauen
		aquarium box = new aquarium(50,20);
		
		// Hai erstellen, der im oberen Aquarium lebt
		haie hai = new haie(box.getBreite(),box.getHoehe());
		
		// Einen Schwertfisch erstellen
		schwertfische schwert = new schwertfische(box.getBreite(),box.getHoehe());

		// Einen Kugelfisch erstellen
		kugelfische kugel = new kugelfische(box.getBreite(),box.getHoehe());		
		
		for(int i=0;i<10;i++){
			
			System.out.println("\n");
			for(int x=0;x<hai.getBreite();x++)
				System.out.print("=");
			System.out.println("\n");
			

			hai.schwimmTiefe();			
			System.out.print(hai.schwimmVerhalten(hai.toString()));

			
		}
		
		
	}

}

Meine Frage ist nun

Die Klasse Aquarium ist die Vaterklasse, und die Hai klasse erbt natürlich alle Methoden von der Vaterklasse.
Nun initalisiere ich mit der Vaterklasse das Aquarium, und anschließend ein Hai Objekt, Goldfisch objekt etc.
Diese sollen jedoch alle die Eigenschaften, sprich die Größe des Aquarirums von dem Objekt aquarium beziehen.
Wie bekomme ich das hin?

Mein Problem ist, das wenn ich ein neues Hai Objekt erzeuge, dessen Aquariumswerte 0 sind, diese sollen jedoch die Werte vom vorher deifinierten Aquarium bekommen

mfg
 

Wildcard

Top Contributor
Wenn du nur ganz kurz darüber nachdenkst, wird dir auffallen das dein Konzept Unsinn ist.
Seit wann ist ein Fisch ein Aquarium?
 

kleiner_held

Top Contributor
Sorry, aber wieso erbt dein Hai von Aquarium? Besser gesagt, wieso erbt die Klasse Fische von Aquarium?

Ich meine, stell dich doch mal vor einen Spiegel und sage laut folgende 2 Sätze:

1. Ein Hai ist ein Fisch.
2. Ein Hai ist ein Aquarium.

So, welcher der beiden Sätze klingt irgendwie sinnfrei?
 

javadubidu

Mitglied
:D
Alsoo
Bin grad in die OOP am einsteigen.

Habe gedacht da das im Aquarium verschiedene Fischarten vorkommen, das ich deshalb vom Aquarium erben soll. ;)

Ich muss ja irgendwie das Aquarium festlegen
 

Wildcard

Top Contributor
Gerade am Anfang von OOP sollte man immer möglichst nahe an der Realität bleiben.
Aqarium hat Fische
Hai ist ein Fisch
Goldfisch ist ein Fisch
 

javadubidu

Mitglied
und die Fische müssen sich anhand der Werte des Aquariums bewegen! Also nicht über die festgelegten Werte des Aquariums herausschwimmen
 

kleiner_held

Top Contributor
Dann sollte jeder Fisch sein Aquarium kennen:
Code:
public abstract class Fisch
{
    protected Aquarium aquarium;

    public Fisch(Aquarium aquarium)
    {
         this.aquarium = aquarium;
    }
}

PS: Klassennamen bitte groß schreiben und in Einzahl
 

javadubidu

Mitglied
Habe das nun soweit geändert.
Das Aquarium nur noch Klassen, wie die Größe des Aquariums setzen kann.
Und das die Vaterklasse Fisch, Goldfische Haie etc haben kann.

die Lösung von "kleiner held" hilft, mit jedoch nicht wirklich weiter, da ich verschiedene Fischarten ja im Aquarium haben darf, bzw haben will
 

Wildcard

Top Contributor
javadubidu hat gesagt.:
die Lösung von "kleiner held" hilft, mit jedoch nicht wirklich weiter, da ich verschiedene Fischarten ja im Aquarium haben darf, bzw haben will
Warum sollte das mit kleiner held's Ansatz nicht funktionieren?
So wird's gemacht.
 
B

bygones

Gast
oder sogar
Code:
public class Aquarium<T extends Fisch>{
    private List<T> fische;
}
falls man mehrer Aquarien mit untersch. Fischen hat ;-)
 

schalentier

Gesperrter Benutzer
Code:
public class Aquarium<T extends Fisch>{
    private List<T> fische;
}

Das is ziemlicher Unfug, denn in einem Aquarium sollen verschiedene Fischarten schwimmen... Wozu also an dieser Stelle Generics?

Was genau ist jetzt die Frage vom TE?
 
B

bygones

Gast
schalentier hat gesagt.:
Code:
public class Aquarium<T extends Fisch>{
    private List<T> fische;
}

Das is ziemlicher Unfug, denn in einem Aquarium sollen verschiedene Fischarten schwimmen... Wozu also an dieser Stelle Generics?

Was genau ist jetzt die Frage vom TE?
hey ich lass doch meine Koi Karpfen nicht in einem Aquarium mit den gefraessigen Haien schwimme ;-)

*auch mal lachen*
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Luk10 Problem mit Singleton bzw statischer Referenz! Java Basics - Anfänger-Themen 16
deetee Problem mit Referenz auf Map Java Basics - Anfänger-Themen 5
D Array reverse Problem, da Referenz nicht auf tmpArray zeigt Java Basics - Anfänger-Themen 4
G Referenz-Problem Java Basics - Anfänger-Themen 3
Hzrfa Objekte, Referenz Java Basics - Anfänger-Themen 5
I Grundsatzfrage: Belegt eine Referenz auf 'null' RAM, und wenn ja - wieviel ;-) ? Java Basics - Anfänger-Themen 5
O Warum bekommen wir nicht die Referenz vom zurückgegebenen Objekt? Java Basics - Anfänger-Themen 4
P Wie rufe ich Methoden mit einer Referenz auf eine Klasse||Objekt auf Java Basics - Anfänger-Themen 4
C Kopie oder Referenz ? Java Basics - Anfänger-Themen 5
A Binärbaum rekursiv durchsuchen und Referenz zurückgeben Java Basics - Anfänger-Themen 4
B Neue Liste erstellen, wenn Objekte bestimmte Referenz hat / Gruppierung von Einträgen Java Basics - Anfänger-Themen 12
Y Pointer / Referenz - Theorie Java Basics - Anfänger-Themen 3
H Referenz Objekt aufrufen Java Basics - Anfänger-Themen 12
D Uebergabe per Referenz Java Basics - Anfänger-Themen 2
O Referenz - toString Java Basics - Anfänger-Themen 9
S This-Referenz Java Basics - Anfänger-Themen 6
F Referenz an ein Objekt in einer anderen Klasse erstellen(Nullpointer exception) Java Basics - Anfänger-Themen 6
I Referenz auf Klasse als Rückgabewert Java Basics - Anfänger-Themen 7
P Datentypen LinkedList: Kopie behält Referenz? Java Basics - Anfänger-Themen 3
J Referenz und Instanzierung Java Basics - Anfänger-Themen 25
I Erste Schritte Referenz zum Knoten davor, in einer Liste Java Basics - Anfänger-Themen 4
M Referenz geht bei Zwischenspeichern verloren (ArrayList) Java Basics - Anfänger-Themen 4
8 Referenz (Pointer, Zeiger) in Java Java Basics - Anfänger-Themen 9
O This-Referenz als Returnwert einer Methode? Java Basics - Anfänger-Themen 13
O This Referenz Java Basics - Anfänger-Themen 3
A top referenz bei queues Java Basics - Anfänger-Themen 1
J Rückgabe als Wert, keine Referenz Java Basics - Anfänger-Themen 3
Q Parameterübergabe - Objekt - Referenz Java Basics - Anfänger-Themen 5
C Dynamische Referenz & abstrakte Klassen Java Basics - Anfänger-Themen 3
V Frage zu Polymorphismus: Objekt der Subklasse in Referenz der Oberklasse Java Basics - Anfänger-Themen 4
T Aufgerufene Methode Inhalt der übergebenen Referenz Java Basics - Anfänger-Themen 5
B Referenz in Java Java Basics - Anfänger-Themen 5
C Referenz auf ein Objekt kopieren! Java Basics - Anfänger-Themen 2
J Methoden Referenz und Speicherplatz für Objekte reservieren Java Basics - Anfänger-Themen 2
M Wie komm ich an die Referenz eines Oberflächenelements Java Basics - Anfänger-Themen 2
A Klassenvariablen Referenz auf ein Objekt Java Basics - Anfänger-Themen 18
M Referenz Frage Java Basics - Anfänger-Themen 12
K OOP Probleme mit Objekt-Referenz in Methode Java Basics - Anfänger-Themen 6
W Die leidige Referenz-Frage Java Basics - Anfänger-Themen 9
B Arraycopy kopiert nur die Referenz?! Java Basics - Anfänger-Themen 3
S Speicheradresse auf die eine Referenz zeigt ausgeben Java Basics - Anfänger-Themen 12
E Compiler-Fehler kann Objekt-Referenz nicht erstellen Java Basics - Anfänger-Themen 3
B Referenz zu anderen Frame Java Basics - Anfänger-Themen 10
Blackskyliner Referenz ähnlicher Zugriff, aber wie? Java Basics - Anfänger-Themen 4
K Klassen this-Referenz und Klassen/Methodenaufruf Syntax Java Basics - Anfänger-Themen 3
C Referenz einer bereits instanziierten Klasse während des Programmablaufs Java Basics - Anfänger-Themen 16
H Objekt holen per Referenz als String. Java Basics - Anfänger-Themen 4
T Referenz einer Variable übergeben Java Basics - Anfänger-Themen 3
S Datentypen Objekt Integer Referenz Java Basics - Anfänger-Themen 5
B Referenz auf Referenz Java Basics - Anfänger-Themen 3
H ArrayList Zugriffe per Referenz verkürzen? Java Basics - Anfänger-Themen 9
B Static Referenz auf Non-static Feld Java Basics - Anfänger-Themen 6
Luk10 Sinn von Instanzierung ohne Referenz Java Basics - Anfänger-Themen 7
C0FFEE Referenz auf Methode übergeben Java Basics - Anfänger-Themen 2
aze NullpointerException :Null Referenz anzeigen lassen Java Basics - Anfänger-Themen 2
D Fehlen einer Referenz auf Objekt Java Basics - Anfänger-Themen 14
N this.referenz erläuterung Java Basics - Anfänger-Themen 2
K Attribut als Referenz auf Objekt Java Basics - Anfänger-Themen 8
K 3 Threads bearbeiten 1 Referenz: Ich versteh's nicht... Java Basics - Anfänger-Themen 2
P OOP-Theorie-Frage: Referenz auf Objekt Java Basics - Anfänger-Themen 27
D Referenz auf Objekt Java Basics - Anfänger-Themen 5
P Methode BigInteger-Array übergeben als Referenz Java Basics - Anfänger-Themen 6
U null-referenz Java Basics - Anfänger-Themen 26
G Interface referenz probleme Java Basics - Anfänger-Themen 10
V Return - JA/NEIN - Parameterübergabe Array (Referenz) Java Basics - Anfänger-Themen 7
D enum und Referenz der umgebenden Klasse Java Basics - Anfänger-Themen 2
C Referenz Java Basics - Anfänger-Themen 11
A ClassNotFoundException: Referenz nicht aktualisiert Java Basics - Anfänger-Themen 2
P Textarea aktualisieren, Referenz fehlt Java Basics - Anfänger-Themen 4
T Die this Referenz Java Basics - Anfänger-Themen 21
C Größe einer Referenz ? Java Basics - Anfänger-Themen 16
G primitive Datentypen als Referenz an eine Methode übergeben Java Basics - Anfänger-Themen 2
G Wie Referenz auf Objekt übergebn Java Basics - Anfänger-Themen 8
P Objekte als Attribut: Referenz oder Kopie? Java Basics - Anfänger-Themen 3
G Parameterübergabe als Referenz bzw. als Kopie Java Basics - Anfänger-Themen 4
S Prüfen, ob null Referenz? Java Basics - Anfänger-Themen 2
D tiefergehende Java-Referenz Java Basics - Anfänger-Themen 3
M Referenz auf Membervariable Java Basics - Anfänger-Themen 5
G Objektübergabe als Referenz bei RMI Java Basics - Anfänger-Themen 2
J referenz auf noch nicht erzeugte objekte? Java Basics - Anfänger-Themen 2
G Rückgabe einer Kopie bzw. Referenz Java Basics - Anfänger-Themen 22
M Parameter als Referenz übergeben Java Basics - Anfänger-Themen 5
F Referenz Pointer oder doch nochmal neu suchen ? Java Basics - Anfänger-Themen 2
D Unterschied zwischen Referenz auf Objekt/Instanz von Objekt Java Basics - Anfänger-Themen 9
K Referenz auf Funktion Java Basics - Anfänger-Themen 6
J Referenz auf ein Objekt Java Basics - Anfänger-Themen 2
javasdann Referenz als String ausgeben. Java Basics - Anfänger-Themen 10
B Was ist eine Referenz? Java Basics - Anfänger-Themen 6
Z Zugriff auf Attribute nach Zuweisung einer Referenz Java Basics - Anfänger-Themen 8
L Referenz vs. Kopie Java Basics - Anfänger-Themen 2
G Zeiger/Referenz auf int- Variable Java Basics - Anfänger-Themen 5
K Verständnis Problem bei Server/Client Java Basics - Anfänger-Themen 2
I WildFily - unterschiedliche Libs im Projekt verursachen Problem Java Basics - Anfänger-Themen 11
imocode Vererbung Problem mit Vererbung Java Basics - Anfänger-Themen 2
L Taschenrechner Problem Java Basics - Anfänger-Themen 4
I Applikationsserver (WildFly) - Zugriff auf Ressourcen.. Problem mit Pfade Java Basics - Anfänger-Themen 10
A ScheduledExecutorService problem Java Basics - Anfänger-Themen 7
marcelnedza Problem mit Weltzuweisung, JavaKarol Java Basics - Anfänger-Themen 13
XWing Methoden rückgabe Problem? Java Basics - Anfänger-Themen 6
M Erste Schritte Collatz Problem max int Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben