Hilfe bei Instanzmethoden

Ich habe ein kleines Problem mit folgender aufgabenstellung

Folgende Prozesse beim Start und bei der Landung eines Flugzeugs sollen in der Klasse Flugzeug
mittels Instanzmethoden abgebildet werden:
• Vergabe einer Landebahn
Eine Methode vergebeLandebahn() soll die zu belegende Landebahn übergeben werden. Dieser
Wert soll die Instanzvariable landebahn überschreiben. Außerdem soll der Status des Flugzeugs
auf “Landeanflug” gesetzt werden.
• Vergabe einer Parkstelle
Der Methode vergebeParkstelle() soll die zu belegende Parkstelle übergeben werden. Zusätzlich
soll der Status auf “Gelandet” gesetzt werden.
• Meldung einer erfolgreichen Landung
Einer weiteren Methode meldeGelandet() wird die Istzeit der Landung übergeben, die in istzeitLandung
gespeichert werden soll. Der Status des Flugzeugs wird auf “Geparkt” gesetzt.
• Vergabe einer Startbahn
Die Methode vergebeStartbahn() setzt die zu verwendende Startbahn, die erwartete Sollzeit
für den Start sowie den Status auf “Startvorbereitung”.
• Meldung eines erfolgreichen Starts
Der Methode meldeGestartet() wird die Istzeit des Starts übergeben. Der Status wird auf “Gestartet”
gesetzt.
Als letztes soll der Klasse Flugzeug eine Methode ausgabe() hinzugefügt werden. Diese Methode dient
dazu, den aktuellen Zustand eines Flugzeuges auf dem Bildschirm auszugeben.
Alle Methoden sollen durch den Modifikator public öffentlich aufrufbar sein.

So weit bin ich schon komm aber bei den Instanzmethoden einfach nicht weiter und bräuchte einfach mal einen schubs in die richtige Richtung:



Code:
public class Flugzeug {
    private String Fluggesellschaft, Flugzeugtyp, istzeitLandung, istzeitStart, 
           sollzeitLandung, sollzeitStart, landebahn, parkstelle, startbahn;
    public enum State{
        Wartend, Landeanflug, Gelandet, Geparkt, Startvorbereitung, Gestartet
    }
    
    State status1 = State.Wartend;
    State status2 = State.Landeanflug;
    State status3 = State.Gelandet;
    State status4 = State.Geparkt;
    State status5 = State.Startvorbereitung;
    State status6 = State.Gestartet;
           
    private int Flugnummer;
    
    private static int anzahlFlugzeuge = 0;
    
    public Flugzeug (String typ, String gesellschaft, String zeitLandung){
        Flugzeugtyp = typ;
        Fluggesellschaft = gesellschaft;
        sollzeitLandung = zeitLandung;
    }
    
    vergebeLandebahn(){
        
    }
    
    
    }
 

HimBromBeere

Top Contributor
deine vergieb-Methoden müssen alle etwa so ausehen:

Java:
public void set<Name der zu setzenden variablen>(int neuer_wert) {
    this.<Name der zu setzenden Variablen> = neuer_wert;
}

im Bsp. also:
Java:
public void setLandebahn(int landebahn) {this.landebahn = landebahn;}
public void setStatus(String status) {this.status = status;}

Da ich gestern schon eine Rüge bekommen habe, dass setter-Methoden keine Seiteneffekte haben dürfen, werde ich dir diesen Tipp mal weiterreichen, d.h. es wird nicht innerhalb des setLandebahn() der Status auf "landen" gesetzt, dass mussst du über eine eigene setter-Methoide machen
 

hdi

Top Contributor
Guten Abend!

Erstmal der pauschale Newcomer-Anschiss: Variablen schreibt man in lowerCaseCamelCase. Also erster Buchstabe klein, und Teilwörter beginnen jeweils mit großem Buchstaben. Also zB:

Fluggesellschaft -> fluggesellschaft (oder flugGesellschaft)
istzeitLandung -> istZeitLandung

Nun zum Thema:
Die Sache mit den States hast du glaube ich nicht ganz richtig verstanden. Das enum ist korrekt, aber du brauchst nicht 6 Variablen die diese Konstanten einfach unter einem anderen Namen halten.. Sondern nur eine Variable, die den aktuellen Zustand speichert:

Java:
State aktuellerStatus; // evtl Initialisieren mit Anfangsstatus, zB Startvorbereitung oder Wartend

So weit bin ich schon komm aber bei den Instanzmethoden einfach nicht weiter und bräuchte einfach mal einen schubs in die richtige Richtung:
Was hier gefordert wird sind sogenannte "Setter". Das sind einfach Methoden um eine Instanz-Variable auf einen bestimmten wert zu setzen. Normalerweise folgen sie dem Muster:

Java:
setX(Y x){
   this.x = x;
}

Wobei das jetzt der Setter wäre für eine Instanz-Variable:

Java:
private Y x;

In deinem Fall heißen die Methoden halt nicht setXX, sondern haben einen ganz anderen Namen (nicht so tolles Design, aber anscheinend dooferweise so vorgegeben). Am Rest ändert sich aber nix. Die Methoden brauchen einen Parameter, und zwar von dem Typ, von dem die Variable ist der sie diesen Wert zuweisen sollen. zB:

Java:
vergebeLandebahn(String landebahn){
     this.landebahn = landebahn;
}

Die anderen Methoden analog.
 

hdi

Top Contributor
Da ich gestern schon eine Rüge bekommen habe, dass setter-Methoden keine Seiteneffekte haben dürfen, werde ich dir diesen Tipp mal weiterreichen, d.h. es wird nicht innerhalb des setLandebahn() der Status auf "landen" gesetzt, dass mussst du über eine eigene setter-Methoide machen
Freut mich, dass du dir das gemerkt hast :toll: Allerdings wird genau dieser Seiteneffekt anscheinend explizit vom Aufgabensteller gefordert. Hab ich jetzt im Bsp auch vergessen noch als zweite Anweisung reinzunehmen. Aber es stimmt: Das ist eigentlich nicht so gut. Aber dass der Aufgabensteller hier selbst wohl nicht grad ein Java-Experte ist sieht man ja schon anhand der Namen, die für die Setter festgelegt wurden..

edit: @TO also um das nochmal klar zu machen - die Methode müsste so aussehen:

Java:
public void setLandebahn(String landebahn){
     this.landebahn = landebahn;
     this.aktuellerStatus = State.Landeanflug;
}

Analog die anderen. Also Wert setzen und Status ändern.
 
Zuletzt bearbeitet:

HimBromBeere

Top Contributor
vorzugsweise mit einem Standardwert, also noch über dem Konstruktor mit sowas:
Java:
public class MyClass {
    private State state = State.<default_status>;
...
}

EDIT: Gibt keine doofen Fragen, aber schön, dass du´s bereits rausbekommen hast...
 
Jetzt häng gleich nochmal bei der nächsten Teilaufgabe die da lautet:

Als letztes soll der Klasse Flugzeug eine Methode ausgabe() hinzugefügt werden. Diese Methode dient
dazu, den aktuellen Zustand eines Flugzeuges auf dem Bildschirm auszugeben.
Alle Methoden sollen durch den Modifikator public öffentlich aufrufbar sein.

Mein Code sieht bisher folgendermaßen aus

Code:
public class Flugzeug {
    private String Fluggesellschaft, Flugzeugtyp, istzeitLandung, istzeitStart, 
           sollzeitLandung, sollzeitStart, parkstelle, startbahn;
    private int landebahn;
    private State aktuellerStatus = State.Wartend;
    
    public enum State{
        Wartend, Landeanflug, Gelandet, Geparkt, Startvorbereitung, Gestartet
    }
    
    State status1 = State.Wartend;
    State status2 = State.Landeanflug;
    State status3 = State.Gelandet;
    State status4 = State.Geparkt;
    State status5 = State.Startvorbereitung;
    State status6 = State.Gestartet;
           
    private int Flugnummer;
    
    private static int anzahlFlugzeuge = 0;
    
    public Flugzeug (String typ, String gesellschaft, String zeitLandung){
        Flugzeugtyp = typ;
        Fluggesellschaft = gesellschaft;
        sollzeitLandung = zeitLandung;
    }
    
    public void vergebeLandebahn (int landebahn){
        this.landebahn = landebahn;
        this.aktuellerStatus = State.Landeanflug;
    }   
    
    public void vergebeParkstelle (String parkstelle){
        this.parkstelle = parkstelle;
        this.aktuellerStatus = State.Gelandet;
    }
    
    public void meldeGelandet (String istzeitLandung){
        this.istzeitLandung = istzeitLandung;
        this.aktuellerStatus = State.Geparkt;
    }
    
    public void vergebeStartbahn (String startbahn, String sollzeitStart){
        this.startbahn = startbahn;
        this.sollzeitStart = sollzeitStart;
        this.aktuellerStatus = State.Startvorbereitung;
    }
    
    public void meldeGestartet (String istzeitStart){
        this.istzeitStart = istzeitStart;
        this.aktuellerStatus = State.Gestartet;
    }
    
    public static void main (String [] args){
        
        public void ausgabe(){
            
        }
    }
 

hdi

Top Contributor
Du kannst keine Methoden in anderen Methoden definineren. Die Methode ausgabe() muss also aus der main-Methode raus, und auf die Klassenebene. So, wie auch alle anderen Methoden. Und was die Logik angeht: Nun, wenn nichts genaueres verlangt wird, dann kannst du jetzt wohl selbst entscheiden was du alles zum Zustand des Flugzeugs zählst. Ich würd sagen auf jeden Fall dein state, also ob Wartend oder im Landeanflug usw, und von den restlichen Instanz-Variablen kannst du dir ja die wichtigsten raussuchen. Oder du gibst einfach alle Infos aus die es gibt.
 

HimBromBeere

Top Contributor
Übrigens: verwende mal
Java:
Tags für deinen Code, da werden dann Schlüsselwörter auch noch hervorgehoben (in der Werkzeugleiste das Symbol zwischen oho und xml).

Deine Methode zum Ausgeben des Status sollte etwa so aussehen:
Java:
public <name der enum, deren Name ich grade vergessen hab> getState() {return this.state;}

Diese Funktion rufst du in deinem Hauptprogramm innerhalb eines System.out.println() auf, und schon haste deine Ausgabe
 
Zuletzt bearbeitet:
Jep, das hab ich selber gerade gemerkt :)
Aber wie gebe ich jetzt z.B. den aktuellen Status über die methode ausgabe wieder zurück?
Habs mit System.out.prinln versucht aber das möchte er ganz und gar nicht!!
 

hdi

Top Contributor
Zurückgeben sollst du nix. Die Methode ist void. Sie gibt direkt etwas aus - und System.out.println() ist schon richtig. Zeig mal den Code.
 

hdi

Top Contributor
@HimBromBeere enums werden bei Konkatentation und/oder dem toString()-Aufruf automatisch zu einem String interpretiert, dessen Name genau der Name der Konstante ist.

@TO Du musst die Methode noch schließen mit einem }. Achso und ich seh grad: Die soll NICHT static sein, wie bist du darauf gekommen das einzufügen?
 
ich hab da ja noch einen Konstruktor mit Übergabeparametern
Code:
public Flugzeug (String typ, String gesellschaft, String zeitLandung){
        Flugzeugtyp = typ;
        Fluggesellschaft = gesellschaft;
        sollzeitLandung = zeitLandung;
    }

Ist das vielleicht des Rätsels Lösung?
 

HimBromBeere

Top Contributor
Bin mir grad nicht sicher, ob man toString() in einer enum überschreiben kann, wahrscheinlich nicht. D.h. du musst dich um das Umwandeln von Status in Text irgendwie noch selbst kümmern...

EDIT: Oha, hat sich erledigt, danke HDI
 

hdi

Top Contributor
Bin mir grad nicht sicher, ob man toString() in einer enum überschreiben kann, wahrscheinlich nicht. D.h. du musst dich um das Umwandeln von Status in Text irgendwie noch selbst kümmern...
Huhu, noch wach? ;) Lies doch mal was ich geschrieben hab. Und überschreiben kannste die genauso wie auch bei ner Klasse.

edit: ja ja ok wir schreiben hier ständig gleichzeitig ^^
 
Erst einmal vielen vielen Dank für die krass gute Hilfe.
Eine Frage hätte ich allerdings noch.

Ich soll nun eine weiter Klasse anlegen um die Daten der ersten Klasse weiterzuverarbeiten.
Wie greif ich auf die andere Klasse zurück. Mit Befehl import ???
 

hdi

Top Contributor
import brauchst du nur wenn die Klasse nicht im selben Package liegt. Zur Weiterverarbeitung der Daten musst du halt ein Objekt der einen Klasse in die andere Klasse reinreichen.
 

HimBromBeere

Top Contributor
du musst in der Methode eine Referenz auf die Instanz der Klasse übergeben. Möchtest du z.B. bei der Erstellung eines Kunden festlegen, in welches Flugzeug er gehört, schreibst du das so:

Java:
public Kunde(Flugzeug f) {this.flugzeug = f;}

Aufruf sieht dann so aus:
Java:
Kunde kunde = new Kunde(flugzeug);

EDIT: hab gerade bemerkt, dass du ja eine stativ main() im Kunden hast, also ist das deine Eintrittsklasse. Dann kannst/ und brauchst du natrülich gar kein neues Objekt vom Typ Kunde erstellen (jdenfalls nicht ganz so einfach).
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
Kerstininer Vererbung Hilfe beim lernen von Objektorientierung für eine Klausur Java Basics - Anfänger-Themen 10
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
E Hilfe bei rekursiver Funktion Java Basics - Anfänger-Themen 3
H pdf stempel - Hilfe erbeten Java Basics - Anfänger-Themen 6
KogoroMori21 Wann ist der richtige Zeitpunkt, um sich Hilfe zu suchen? (Bin Informatik-Student) Java Basics - Anfänger-Themen 10
A Hilfe beim Lesen von Pfaden und Systemvariablen Java Basics - Anfänger-Themen 3
F RegEx Hilfe Java Basics - Anfänger-Themen 5
S Hilfe bei Endlosschleife Java Basics - Anfänger-Themen 2
S Hilfe bei Praktischen Aufgaben von Arrays Java Basics - Anfänger-Themen 39
U Ich bräuchte Hilfe Java Basics - Anfänger-Themen 1
Say abstract class und Objekt erzeugen - Dringend Hilfe Java Basics - Anfänger-Themen 10
Justin4687 Benötige Hilfe bei folgender Aufgabe Java Basics - Anfänger-Themen 2
aero043 Hilfe bei BlueJ Hausübung Java Basics - Anfänger-Themen 27
S Hilfe zu einer Aufgabe Java Basics - Anfänger-Themen 5
P Hilfe gesucht Java Basics - Anfänger-Themen 11
D Hilfe bei Calculator Test Java Basics - Anfänger-Themen 15
R Hilfe bei Aufgabe Java Basics - Anfänger-Themen 4
Zentriks Hilfe zu Sieb des Eratosthenes ohne boolean Java Basics - Anfänger-Themen 5
R Java Bücher hilfe Java Basics - Anfänger-Themen 9
U HILFE! - per ActionListener Felder enablen....... Java Basics - Anfänger-Themen 5
I Scheduling: "Quartz" verwenden, Hilfe bei Umstellung Java Basics - Anfänger-Themen 3
I Hilfe bei Klausur Frage Java Basics - Anfänger-Themen 8
L Hilfe! Liste mit Items werden ausgegeben aber nicht in zufälliger Reihenfolge Java Basics - Anfänger-Themen 6
Ekooekoo Hilfe spiel Java Basics - Anfänger-Themen 5
SpiritsHuner Hilfe!! Java Basics - Anfänger-Themen 16
Lacotto Java Kurs Aufgaben Hilfe Java Basics - Anfänger-Themen 14
V Hilfe bei Implementierung einer boolean Methode Java Basics - Anfänger-Themen 6
M HILFE JPanel - Graphics Java Basics - Anfänger-Themen 1
D Hilfe bei einer Aufgabe mit for-Schleife Java Basics - Anfänger-Themen 6
X Hilfe beim Übertragen in eine For-Schleife Java Basics - Anfänger-Themen 1
Neuling47 Denkfehler? Hilfe Java Basics - Anfänger-Themen 11
S Hilfe bei Umänderung von Java Code Java Basics - Anfänger-Themen 16
Robert_Klaus Hamster java Simulation Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 5
X Erste Schritte Hilfe bei einem kleinen Spiel. Java Basics - Anfänger-Themen 19
D Bitte um Hilfe muss es schnellstmöglich erledigen Java Basics - Anfänger-Themen 15
L Hilfe bei RegEx Java Basics - Anfänger-Themen 4
I Bitte um Hilfe zu unterstehenden Code Java Basics - Anfänger-Themen 6
B Brauche Hilfe zu einem Code Java Basics - Anfänger-Themen 5
Neuling47 bräuchte dringend hilfe Java Basics - Anfänger-Themen 6
D Bräuchte Hilfe im Bezug zum printarray() Java Basics - Anfänger-Themen 4
M Bitte um Hilfe bei 2DArrays Java Basics - Anfänger-Themen 8
HeiTim Array hilfe Java Basics - Anfänger-Themen 14
M LCD-Ziffern-Hilfe Java Basics - Anfänger-Themen 6
özkan hilfe!! Java Basics - Anfänger-Themen 4
C Hilfe bei einem Anfängerprojekt Java Basics - Anfänger-Themen 25
D Abrechnung bitte um hilfe Java Basics - Anfänger-Themen 25
J Brauche Hilfe bei for-each Aufgabe Java Basics - Anfänger-Themen 1
D Zahlentabelle Anfänger braucht Hilfe Java Basics - Anfänger-Themen 1
HeiTim Brauche Hilfe soll ein nummeriertes Feld ausgeben lassen Java Basics - Anfänger-Themen 17
S Interaktive Abfrage, Hilfe mit Schleifen! Java Basics - Anfänger-Themen 6
N Hilfe bei der Installation Java Basics - Anfänger-Themen 2
J Brauche Hilfe bei Aufgabe Java Basics - Anfänger-Themen 4
S Hilfe bei Programmierung einer Hotelabrechnung Java Basics - Anfänger-Themen 5
enjoykimii Strukturierte Programmierung Hilfe Java Basics - Anfänger-Themen 29
H Bräuchte hilfe Java Basics - Anfänger-Themen 3
D Snake-Spiel ähnliche Aufgabe Hilfe Java Basics - Anfänger-Themen 3
H Brauche Hilfe Java Basics - Anfänger-Themen 2
D Dijkstra Algorithmus Hilfe!! Java Basics - Anfänger-Themen 9
H Hilfe Java Basics - Anfänger-Themen 6
H Brauche hilfe Java Basics - Anfänger-Themen 3
M Hilfe - Array Aufgabe Java Basics - Anfänger-Themen 8
R Schulaufgabe, Bruache Hilfe mit non-static Methoden Java Basics - Anfänger-Themen 2
kevkev Hilfe bei Schiffe versenken Java Basics - Anfänger-Themen 5
FelixxF Erste Schritte Hilfe bei Fußball Manager Java Basics - Anfänger-Themen 2
C Brauche Hilfe beim Schreiben eines Programmes :/ Java Basics - Anfänger-Themen 1
C Brauche Hilfe um ein Programm zu schreiben Java Basics - Anfänger-Themen 8
josfe1234 Hilfe access denied ("java.io.FilePermission" " " "read") Java Basics - Anfänger-Themen 12
Vivien Hilfe bei Type Conversion Java Basics - Anfänger-Themen 3
Leo0909 Ich brauche Hilfe bei dieser Aufgabe Java Basics - Anfänger-Themen 2
D Hilfe beim Erzeugen eines Arrays NullPointerException wird ausgelöst Java Basics - Anfänger-Themen 11
J Doppelt verkette Liste ich bitte um Hilfe Java Basics - Anfänger-Themen 4
N Laufzeitberechnung - dringende Hilfe! Java Basics - Anfänger-Themen 1
G Java Hilfe Java Basics - Anfänger-Themen 3
J Java List, Bitte um Hilfe Java Basics - Anfänger-Themen 15
J Java List, bitte um Hilfe Java Basics - Anfänger-Themen 3
U anfänger braucht hilfe . wir konnten die aufgaben nicht beantworten Java Basics - Anfänger-Themen 5
A Schleifen, Hilfe! Java Basics - Anfänger-Themen 6
LeonDerStudent Hilfe bei Uniprojekt Java Basics - Anfänger-Themen 2
H Brauche Hilfe in Java Eclipse Programmieraufgabe Neuling Java Basics - Anfänger-Themen 3
B Hilfe bei Map Liste erstellen Java Basics - Anfänger-Themen 10
Kapfski Was habe ich falsch gemacht? Hilfe! Java Basics - Anfänger-Themen 17
R Java (Eclipse) "Lagerverwaltung" HILFE Java Basics - Anfänger-Themen 13
M Bräuchte Hilfe bei diesen Methoden Java Basics - Anfänger-Themen 4
dieter000 Aufgabe Hilfe Java Basics - Anfänger-Themen 18
Gaudimagspam Dringend Java Hilfe benötigt Java Basics - Anfänger-Themen 19
jonathanpizza Hilfe bei einer Übungsaufgabe Java Basics - Anfänger-Themen 6
dieter000 Hilfe bei dem Beispiel, wie gehe ich sowas am besten an? Java Basics - Anfänger-Themen 32
jonathanpizza Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 5
Q Hilfe auf Aufgabe(Matrixmultiplikation) Java Basics - Anfänger-Themen 1
jonathanpizza Hilfe bei der Aufgabe Java Basics - Anfänger-Themen 19
pry bitte Hilfe beim Kreditrechner objektorientiert Java Basics - Anfänger-Themen 6
R Hilfe bei removeduplicates Java Basics - Anfänger-Themen 5
D Brauche Dringend Hilfe...Prozedur/Funktionsprozedur Ergebnis augeben Java Basics - Anfänger-Themen 11
marcooooo einmal noch schnell hilfe bitte:/ Java Basics - Anfänger-Themen 2
Q Hilfe bei Hausaufgeben Java Basics - Anfänger-Themen 2
J Hilfe beim Label animieren Java Basics - Anfänger-Themen 1
S Hilfe Java Basics - Anfänger-Themen 1
JD_1998 Random Array sortieren mit Hilfe einer Methode Java Basics - Anfänger-Themen 4
Kawastori Hilfe bei Methoden Übung Java Basics - Anfänger-Themen 6
Chabub Hilfe bei Stacks und Queue Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben