Ich habe ein Projekt welches aus einer Tester Methode , einer Flugzeug Methode und einer Fluggesellschafts Methode besteht, in der Flugzeug Methode wird ein Flugzeug erzeugt, welches mit 3 Parameter in der Fluggesellschafts Klasse einer ArrayList hinzugefügt wird.
Nun habe ich 3 Parameter ("Name des Flugzeugs", aktiv/inaktiv(fliegt gerade), wert des Flugzeugs)
Nun möchte ich diese 2 Werte(aktiv/inaktiv) und Die Werte der Flugzeuge summieren.
kannst du ein Beispiel machen? wenn ich 2 Variablen definiere und beide erhöhe mit foreach und eines nur wenn der wert true ist, erhalte ich dennoch einen falschen wert.
Zur Vereinfachung und kleinen Transferaufgabe auf deine eigenen Datenstrukturen habe ich mir ein Array von Boolean angelegt, damit ich nicht deine Klassen nachbauen muss. Das Prinzip ist jedoch das gleiche, wenn du über boolean iterierst und Flugzeuge und deren Zustände (die ja ebenfalls boolean sind).
1. Bitte benutze Codetags
2. Wieso eine Methode add wo du nichts addest sondern doch eigentlich die Flugzeuge zählen möchtest.
3. if(flugzeug.equals(true) Überlege mal wann ein Flugzeug aktiv ist...
publicclassTester{publicstaticvoidmain(String[] args){Fluggesellschaft fl =newFluggesellschaft("Swiss");Flugzeug eins =newFlugzeug("a830",true,450000);Flugzeug zwei =newFlugzeug("a840",true,600000);Flugzeug drei =newFlugzeug("a850",false,500000);
fl.add(eins);
fl.add(zwei);
fl.add(drei);
fl.print();}}
Du addierst jedesmal wenn ein Flugzeug hinzugefügt wird alle schon eingefügten Flugzeuge auf. Das ist falsch.
Entweder du addierst nur das einzufügende Flugzeug auf ohne Schleife oder du gehst nur in deiner print Methode durch die Flugzeugliste und suchst die entsprechenden Flugzeuge heraus.
equals Prüft ob zwei Objekte gleich sind. Im einfachsten Fall sind es zwei Objekte vom gleichen Typ. Also z.B. wie vorhin boolean und boolean. Du vergleichst gerade true (boolean) mit einem Flugzeug. Das hört sich sogar sprachlich ziemlich gefährlich und falsch an. Versuche auch hier wieder booleans zu vergleichen.
Du fügst deiner Fluggesellschaft die Attribute wert und aktiveFlugzeuge hinzu. Diese aktualisierst du immer wenn ein Flugzeug hinzugefügt wird.
In der print Methode kannst du dann auf diese Attribute zugreifen.
Du fügst deiner Fluggesellschaft die Attribute wert und aktiveFlugzeuge hinzu. Diese aktualisierst du immer wenn ein Flugzeug hinzugefügt wird.
In der print Methode kannst du dann auf diese Attribute zugreifen.
Als Attribute in der Klasse Fluggesellschaft wie du es in deinem erstem Beispiel schon getan hast. Von der OOP Modellierung her entspricht es "Eine Fluggesellschaft hat einen Namen, eine Anzahl von aktiven Flugzeugen und einen Wert, welcher sich aus der Summe der der Werte aller Flugzeuge ergibt."
Fast, eine Fluggesellschaft ist ja nicht aktiv oder inaktiv sondern hat eine Anzahl von aktiven Flugzeugen.
dann noch die Flugzeugliste, und die add Methode.
import java.util.ArrayList;
public class Fluggesellschaft {
int wert=0;
int aktiveFlugzeuge;
ArrayList<Flugzeug> fl = new ArrayList<Flugzeug>();
public void add(Flugzeug flugzeug){
fl.add(flugzeug);
}
}
Genau.
Die Attribute wert und aktive Flugzeuge ändern sich ja jedes mal wenn wenn ein Flugzeug hinzugefügt wird. Also musst du sie dann auch aktualisieren.
Ja.
Weiterhin sollte man die Sichtbarkeit von Attributen immer möglichst einschränken und entsprechende getter Methoden bereitstellen um Sicherzustellen dass der wert und die Anzahl der aktiven Flugzeuge von Außen nicht geändert werden kann.
Ja.
Weiterhin sollte man die Sichtbarkeit von Attributen immer möglichst einschränken und entsprechende getter Methoden bereitstellen um Sicherzustellen dass der wert und die Anzahl der aktiven Flugzeuge von Außen nicht geändert werden kann.