/**
* Beschreiben Sie hier die Klasse Zug.
*
* @author (Ihr Name)
* @version (eine Versionsnummer oder ein Datum)
*/
public class Zug
{
// Instanzvariablen - ersetzen Sie das folgende Beispiel mit Ihren Variablen
//lok ist anfang
//ende ist ende des Zugs
//ein Zug ist wie eine Liste mit einem Anfang und einem Ende
//der Anfang ist hierbei die Zuglok, das Ende der letzt eingefügte Waggon
private Waggon lok;
private Waggon ende;
private int WaggonAnzahl = 0;
/**
* Konstruktor für Objekte der Klasse Zug
*/
public Zug(int lokSpeed)
{
// Instanzvariable initialisieren
lok = new Waggon(lokSpeed);
ende = lok;
WaggonAnzahl = 1;
}
public void fuegePersonenWaggonHinzu(int maxSpeed, int stehAnzahl, int sitzAnzahl)
{
if (WaggonAnzahl == 1 ) {
PersonenWaggon neu = new PersonenWaggon(maxSpeed, stehAnzahl, sitzAnzahl);
lok.setNext(neu);
neu.setPrev(lok);
ende = neu;
WaggonAnzahl++;
}
else {
PersonenWaggon neu = new PersonenWaggon(maxSpeed, stehAnzahl, sitzAnzahl);
neu.setPrev(ende);
ende.setNext(neu);
ende = neu;
WaggonAnzahl++;
}
}
public void fuegeGueterWaggonHinzu(int maxSpeed, int maxLadegew, int maxVol)
{
if (WaggonAnzahl == 1 ) {
GueterWaggon neu = new GueterWaggon(maxSpeed, maxLadegew, maxVol);
lok.setNext(neu);
neu.setPrev(lok);
ende = neu;
WaggonAnzahl++;
}
else {
GueterWaggon neu = new GueterWaggon(maxSpeed, maxLadegew, maxVol);
neu.setPrev(ende);
ende.setNext(neu);
ende = neu;
WaggonAnzahl++;
}
}
public PersonenWaggon suchePersWaggonsNachAttributen(int maxSpeed, int stehAnzahl, int sitzAnzahl) {
PersonenWaggon ergPers = null;
Waggon n = null;
if (WaggonAnzahl == 0) {
return ergPers;
}
n = lok.getNext();
while (n != null) {
if (n.getObjName() == "PersonenWaggon") {
PersonenWaggon c = (PersonenWaggon) n;
if (c.getSitzplaetze() == sitzAnzahl && c.getStehplaetze() == stehAnzahl && c.getMaxSpeed() == maxSpeed) {
return c;
}
}
n = n.getNext();
}
return ergPers;
}
public PersonenWaggon suchePersWaggonsNachNummer(int nummer) {
PersonenWaggon ergPers = null;
Waggon n = null;
if (WaggonAnzahl == 0) {
return ergPers;
}
n = lok.getNext();
while (n != null) {
if (n.getObjName() == "PersonenWaggon") {
PersonenWaggon c = (PersonenWaggon) n;
if (c.getNummerPersWaggon() == nummer) {
return c;
}
}
n = n.getNext();
}
return ergPers;
}
public int berechneMaxZugSpeed(){
int minSpeed = 0;
int aktSpeed = 0;
Waggon n;
if (WaggonAnzahl == 0) {
return 0;
}
minSpeed = lok.getMaxSpeed();
n = lok.getNext();
while ( n != null) {
aktSpeed = n.getMaxSpeed();
if (minSpeed > aktSpeed) {
minSpeed = aktSpeed;
}
n = n.getNext();
}
return minSpeed;
}
public boolean pruefeErreichbarkeitPers(int nummer1, int nummer2) {
PersonenWaggon w1 = (PersonenWaggon) suchePersWaggonsNachNummer(nummer1);
PersonenWaggon w2 = (PersonenWaggon) suchePersWaggonsNachNummer(nummer2);
PersonenWaggon sWaggon = w1;
PersonenWaggon sWaggon1 = w1;
//falls die beiden nummern nicht existieren -> false
if (w1 == null || w2 == null) {
return false;
}
//schaue ob es vorwärts die entsprechende Waggon Nummer gibt
if (sWaggon.getNext() != null && sWaggon.getNext().getObjName() == "PersonenWaggon") {
sWaggon = (PersonenWaggon) sWaggon.getNext();
while ( sWaggon != null) {
if ( sWaggon.getNummerPersWaggon() == nummer2) {
return true;
}
sWaggon = (PersonenWaggon) sWaggon.getNext();
}
}
//schaue ob es rückwärts die entsprechende Waggon Nummer gibt
if (sWaggon1.getPrev() != null && sWaggon1.getPrev().getObjName() == "PersonenWaggon") {
sWaggon1 = (PersonenWaggon) sWaggon1.getPrev();
while ( sWaggon1 != null) {
if ( sWaggon1.getNummerPersWaggon() == nummer2) {
return true;
}
sWaggon1 = (PersonenWaggon) sWaggon1.getPrev();
}
}
//wenn nichts gefunden false
return false;
}
}