# Eisenbahn-Programmierung



## Oblivion123 (6. Apr 2010)

Hi,
wir müssen eine Eisenbahn mit einer abstrakten Klasse programmieren in Informatik. Die Eisenbahn sollte aus mehreren Waggons bestehen und der Maus folgen.

Folgendes ist gegeben:

------------------------------------------

Der Zug

Oberklasse:
Waggon

Unterklassen:
Lok
Personenwagen
Güterwagen

Waggon
-zLaenge
+! init
+! gibFrei
+! bewegeUm
+! loesche
+? hPosition
+? vPosition
+? laenge
+! setzeLaenge

Personenwagen

+! init
+! zeichne
Güterwagen

+! init
+! zeichne

Lokomotive

+! init
+! zeichne


Erzeuge:
Hauptprogramm
Abstrakte Oberklasse Waggon
Unterklassen Lokomotive, Personenwagen, Güterwagen

--------------------------------------------------------------------------------

Leider habe ich in Informatik 2x gefehlt und habe dieses Dokument mit den gegebenen Sachen erst später bekommen. Da Ferien sind, kann ich den Lehrer nicht fragen. Hoffentlich weiss hier einer etwas dazu.

Erstmal: Kann sich einer vorstellen, was dieses "-", "+!" und "+?" vor den "methoden" bedeutet?
Dann würd ich noch gerne wissen, was dieses "init" heisst.

Wäre gut wenn mir einer da helfen könnte. Denn ich weiss sonst garnicht so recht wie ich anfangen soll.

Danke im Vorraus.
mfg


----------



## function (6. Apr 2010)

- heißt private
+ heißt public
+! werden wohl methoden ohne rückgabewert sein, also void
+? methoden mit rückgabe wert
init ist eine methode namens init ;-) da wird wohl etwas initialisiert


----------



## cz3kit (6. Apr 2010)

Moin,



> Erstmal: Kann sich einer vorstellen, was dieses "-", "+!" und "+?" vor den "methoden" bedeutet?


Also "-" steht für Privat und "+" für Public. 



> Dann würd ich noch gerne wissen, was dieses "init" heisst.



"init" steht für den Konstruktor.

Verdammt war einer Schneller xD Naja dann wäre ! und ? auch geklärt  Gut zu wissen.


----------



## Oblivion123 (6. Apr 2010)

Ok sehr gut danke schonmal an euch beide.

Eine Frage: Ich hab hier jetzt die Klasse "Lokomotive" 

[java=42]
    public Lokomotive(int pH, int pV, int pGroesse, int pFarbe)
    {
        derStift = new Buntstift();
        derStift.bewegeBis(pH, pV);
        derStift.setzeFarbe(pFarbe);
        zAktiv = false;
        groesse = pGroesse;
        this.zeichne();
    }

    // Dienste
    public void zeichne()
    {
        derStift.zeichneRechteck(groesse,groesse);
    }
[/code]

Nun füge ich sie ins Hauptprogramm ein:

[java=42]        
lWagen = new Lokomotive(160, 100, 30, 6);[/code]

und dann will ich das sie der Maus folgt

[java=42]public void Start()
    {
        do
        {
           lWagen.bewegeBis(dieMaus.hPosition(), dieMaus.vPosition());
        } while (!dieMaus.doppelKlick());

    }[/code]

Aber das macht sie nicht. Was mach ich also falsch?


----------



## function (6. Apr 2010)

ich rate mal, Lokomotive kennt die methode bewegeBis nicht, oder sie bewegt sich shcon wird nur nicht "aktualisiert" neu gezeichnet, ...

gibt es denn eine fehlermeldung?
was passiert in bewegeBis()?...


----------



## Oblivion123 (6. Apr 2010)

Es gibt keine Fehlermeldung, es passiert einfach nichts. Das Rechteck bleibt an der selben Stelle, egal wo ich mit der Maus hinfahre.


----------



## function (6. Apr 2010)

dann existiert ja wenigstens die methode für deine Lokomotive, allerdings wird dir niemand wirklich helfen können, weil keiner von uns weiß, was es mit diesem bewegeBis aufsich hat


----------



## Oblivion123 (6. Apr 2010)

Ich sollte vielleicht noch erwähnen das ich mit BlueJ arbeite.

"BewegeBis" ist eine Methode für die Klasse Buntstift. Sie bedeutet das sich das Objekt zu der angegebenen Stelle bewegen soll, also in meinem Fall zur Mausposition.


----------



## Oblivion123 (7. Apr 2010)

Ok.

Ich habe in der abstrakten Klasse Waggon folgende Methoden:

[java=42]
public abstract void zeichne();

private void loesche()
    {
       this.radiere();
       this.zeichne();
       this.normal();
    }



    public void bewege(int distanz)
    {
           this.loesche();
           this.bewegeUm(distanz);
           this.zeichne();
    }[/code]

Und in den Unterklassen hab ich folgende Methode:

[java=42]
 public void zeichne()
    {
        derStift.zeichneRechteck(groesse,groesse);
    }
[/code]

Im Hauptprogramm rufe ich dann die Methode "bewege" von Waggon ab:

[java=42]lWagen.bewege(50);[/code]

Was habe ich falsch gemacht?


----------

