Hallo,
ich habe folgenden Aufgabe und zugleich folgendes Problem.
Ich soll ein Programm fuer ein Aquarium programmieren.
Als Basisklasse habe ich das Aquarium
Anschließend können verschiedene Tierarten drinnen vorkommen
Diese Klasse ist abstrakt da die anderen Klassen von Ihr erben sollen, also haie, goldfische, etc
Nun die Klasse Haie
Soweit so gut.
dann habe ich natürlich auch ein Beispielprogramm dazu geschrieben
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
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