Guten Abend,
ich habe ein Problem mit der Verarbeitung von Daten in meinem Programm.
Ich habe ein Objekt Schacht:
[Java]
package rohrnetz;
public class Schacht {
private double xKoordinate;
private double yKoordinate;
private double zKoordinate;
private double durchmesser;
private double tiefe;
private double zulaufmenge;
public Schacht(double xKoordinate, double yKoordinate, double zKoordinate,
double durchmesser, double tiefe, double zulaufmenge) {
this.xKoordinate = xKoordinate;
this.yKoordinate = yKoordinate;
this.zKoordinate = zKoordinate;
this.durchmesser = durchmesser;
this.tiefe = tiefe;
this.zulaufmenge = zulaufmenge;
}
public double getxKoordinate() {
return xKoordinate;
}
public void setxKoordinate(double xKoordinate) {
this.xKoordinate = xKoordinate;
}
public double getyKoordinate() {
return yKoordinate;
}
public void setyKoordinate(double yKoordinate) {
this.yKoordinate = yKoordinate;
}
public double getzKoordinate() {
return zKoordinate;
}
public void setzKoordinate(double zKoordinate) {
this.zKoordinate = zKoordinate;
}
public double getDurchmesser() {
return durchmesser;
}
public void setDurchmesser(double durchmesser) {
this.durchmesser = durchmesser;
}
public double getTiefe() {
return tiefe;
}
public void setTiefe(double tiefe) {
this.tiefe = tiefe;
}
public double getZulaufmenge() {
return zulaufmenge;
}
public void setZulaufmenge(double zulaufmenge) {
this.zulaufmenge = zulaufmenge;
}
}[/Java]
Ein Objekt Haltung:
[Java]
package rohrnetz;
public class Haltung {
private double durchmesser;
private int anfangsschacht;
private int endschacht;
private double xKoordinate;
private double yKoordinate;
private double zKoordinate;
Rohrnetz rohrnetz = new Rohrnetz();
public Haltung(double durchmesser, int anfangsschacht, int endschacht) {
this.durchmesser = durchmesser;
this.anfangsschacht = anfangsschacht;
this.endschacht = endschacht;
this.xKoordinate = endschacht;
}
public double getDurchmesser() {
return durchmesser;
}
public int getAnfangschacht() {
return anfangsschacht;
}
public int getEndschacht() {
return endschacht;
}
public double getxKoordinate() {
return xKoordinate;
}
public void setxKoordinate(double xKoordinate, int index) {
this.xKoordinate = xKoordinate;
}
public double getyKoordinate() {
return yKoordinate;
}
public void setyKoordinate(double yKoordinate) {
this.yKoordinate = yKoordinate;
}
public double getzKoordinate() {
return zKoordinate;
}
public void setzKoordinate(double zKoordinate) {
this.zKoordinate = zKoordinate;
}
}[/Java]
Und in dieser Klasse werden 2 ArrayListen erzeugt, welche die Objekte (Haltung/Schacht) beinhalten.
[Java]
package rohrnetz;
import java.util.ArrayList;
public class Rohrnetz {
private ArrayList<Schacht> schaechte;
private ArrayList<Haltung> haltungen;
public Rohrnetz() {
schaechte = new ArrayList<Schacht>();
haltungen = new ArrayList<Haltung>();
}
// Haltungen bzw Schächte den jeweiligen ArrayListen zufügen.
public void neuerSchacht(Schacht schacht) {
this.schaechte.add(schacht);
}
public void neueHaltung(Haltung haltung) {
this.haltungen.add(haltung);
}
// summiert die Zulaufmengen aller Schächte.
public static double getGesamtZulaufmenge(ArrayList<Schacht> schaechte) {
ArrayList<Schacht> schachtliste = schaechte;
double summe = 0;
for (int index = 0; index < schaechte.size(); index++) {
Schacht aktuellerschacht = new Schacht(0, 0, 0, 0, 0, 0);
aktuellerschacht = (Schacht) schachtliste.get(index);
double zulaufmenge = aktuellerschacht.getZulaufmenge();
summe += zulaufmenge;
}
return summe;
}
public ArrayList<Schacht> getSchaechte() {
return schaechte;
}
public void setSchaechte(ArrayList<Schacht> schaechte) {
this.schaechte = schaechte;
}
public ArrayList<Haltung> getHaltungen() {
return haltungen;
}
public void setHaltungen(ArrayList<Haltung> haltungen) {
this.haltungen = haltungen;
}
} [/Java]
Wie ihr seht, wird im Konstruktor der Haltungen nur der Durchmesser, der Anfangs- und der Endschacht bestimmt. Da eine Haltung, zwei Schächte am unteren Ende miteinander verbindet, möchte ich z.B. die Koordinaten der ArrayList schaechte auslesen (Hier liegt nicht das Problem) und diese effektiv irgendwo speichern. Mit effektiv meine ich, dass sie nachher wieder leicht zugänglich sind.
Ich glaube, dass es am sinnvollsten wäre, die ArrayList haltungen zu clonen und zu erweitern, im Sinne von, vorher sieht das Objekt in der ArrayList so aus: (durchmesser, anfangsschacht, endschacht) und nachher so: (durchmesser, anfangsschacht, endschacht, x, y, z).
Ist das überhaupt möglich?
Außerdem habe ich überlegt, ob man vielleicht das Objekt Haltung selber zu einer ArrayList machen sollte um dann irgendwie eine Methode zu schreiben mit der man nachher über "add." neue Elemnte zur inneren ArrayList hinzufügt?
Zu guter letzt, würde ich es glaube ich schaffen eine neue ArrayList oder Array anzulegen, welche dann über den dazugehörigen Index die richtigen Koordinaten zugewiesen bekommt. Irgendwie empfinde ich diese Variante als unelegant gelöst, da ich dadurch (Es gibt ja mehr als eine Koordinate die ausgelesen werden muss) etliche neue ArrayListen im Code unterkriegen müsste.
Könnt ihr mir vielleicht einen Denkanstoß geben??
Grüße
ich habe ein Problem mit der Verarbeitung von Daten in meinem Programm.
Ich habe ein Objekt Schacht:
[Java]
package rohrnetz;
public class Schacht {
private double xKoordinate;
private double yKoordinate;
private double zKoordinate;
private double durchmesser;
private double tiefe;
private double zulaufmenge;
public Schacht(double xKoordinate, double yKoordinate, double zKoordinate,
double durchmesser, double tiefe, double zulaufmenge) {
this.xKoordinate = xKoordinate;
this.yKoordinate = yKoordinate;
this.zKoordinate = zKoordinate;
this.durchmesser = durchmesser;
this.tiefe = tiefe;
this.zulaufmenge = zulaufmenge;
}
public double getxKoordinate() {
return xKoordinate;
}
public void setxKoordinate(double xKoordinate) {
this.xKoordinate = xKoordinate;
}
public double getyKoordinate() {
return yKoordinate;
}
public void setyKoordinate(double yKoordinate) {
this.yKoordinate = yKoordinate;
}
public double getzKoordinate() {
return zKoordinate;
}
public void setzKoordinate(double zKoordinate) {
this.zKoordinate = zKoordinate;
}
public double getDurchmesser() {
return durchmesser;
}
public void setDurchmesser(double durchmesser) {
this.durchmesser = durchmesser;
}
public double getTiefe() {
return tiefe;
}
public void setTiefe(double tiefe) {
this.tiefe = tiefe;
}
public double getZulaufmenge() {
return zulaufmenge;
}
public void setZulaufmenge(double zulaufmenge) {
this.zulaufmenge = zulaufmenge;
}
}[/Java]
Ein Objekt Haltung:
[Java]
package rohrnetz;
public class Haltung {
private double durchmesser;
private int anfangsschacht;
private int endschacht;
private double xKoordinate;
private double yKoordinate;
private double zKoordinate;
Rohrnetz rohrnetz = new Rohrnetz();
public Haltung(double durchmesser, int anfangsschacht, int endschacht) {
this.durchmesser = durchmesser;
this.anfangsschacht = anfangsschacht;
this.endschacht = endschacht;
this.xKoordinate = endschacht;
}
public double getDurchmesser() {
return durchmesser;
}
public int getAnfangschacht() {
return anfangsschacht;
}
public int getEndschacht() {
return endschacht;
}
public double getxKoordinate() {
return xKoordinate;
}
public void setxKoordinate(double xKoordinate, int index) {
this.xKoordinate = xKoordinate;
}
public double getyKoordinate() {
return yKoordinate;
}
public void setyKoordinate(double yKoordinate) {
this.yKoordinate = yKoordinate;
}
public double getzKoordinate() {
return zKoordinate;
}
public void setzKoordinate(double zKoordinate) {
this.zKoordinate = zKoordinate;
}
}[/Java]
Und in dieser Klasse werden 2 ArrayListen erzeugt, welche die Objekte (Haltung/Schacht) beinhalten.
[Java]
package rohrnetz;
import java.util.ArrayList;
public class Rohrnetz {
private ArrayList<Schacht> schaechte;
private ArrayList<Haltung> haltungen;
public Rohrnetz() {
schaechte = new ArrayList<Schacht>();
haltungen = new ArrayList<Haltung>();
}
// Haltungen bzw Schächte den jeweiligen ArrayListen zufügen.
public void neuerSchacht(Schacht schacht) {
this.schaechte.add(schacht);
}
public void neueHaltung(Haltung haltung) {
this.haltungen.add(haltung);
}
// summiert die Zulaufmengen aller Schächte.
public static double getGesamtZulaufmenge(ArrayList<Schacht> schaechte) {
ArrayList<Schacht> schachtliste = schaechte;
double summe = 0;
for (int index = 0; index < schaechte.size(); index++) {
Schacht aktuellerschacht = new Schacht(0, 0, 0, 0, 0, 0);
aktuellerschacht = (Schacht) schachtliste.get(index);
double zulaufmenge = aktuellerschacht.getZulaufmenge();
summe += zulaufmenge;
}
return summe;
}
public ArrayList<Schacht> getSchaechte() {
return schaechte;
}
public void setSchaechte(ArrayList<Schacht> schaechte) {
this.schaechte = schaechte;
}
public ArrayList<Haltung> getHaltungen() {
return haltungen;
}
public void setHaltungen(ArrayList<Haltung> haltungen) {
this.haltungen = haltungen;
}
} [/Java]
Wie ihr seht, wird im Konstruktor der Haltungen nur der Durchmesser, der Anfangs- und der Endschacht bestimmt. Da eine Haltung, zwei Schächte am unteren Ende miteinander verbindet, möchte ich z.B. die Koordinaten der ArrayList schaechte auslesen (Hier liegt nicht das Problem) und diese effektiv irgendwo speichern. Mit effektiv meine ich, dass sie nachher wieder leicht zugänglich sind.
Ich glaube, dass es am sinnvollsten wäre, die ArrayList haltungen zu clonen und zu erweitern, im Sinne von, vorher sieht das Objekt in der ArrayList so aus: (durchmesser, anfangsschacht, endschacht) und nachher so: (durchmesser, anfangsschacht, endschacht, x, y, z).
Ist das überhaupt möglich?
Außerdem habe ich überlegt, ob man vielleicht das Objekt Haltung selber zu einer ArrayList machen sollte um dann irgendwie eine Methode zu schreiben mit der man nachher über "add." neue Elemnte zur inneren ArrayList hinzufügt?
Zu guter letzt, würde ich es glaube ich schaffen eine neue ArrayList oder Array anzulegen, welche dann über den dazugehörigen Index die richtigen Koordinaten zugewiesen bekommt. Irgendwie empfinde ich diese Variante als unelegant gelöst, da ich dadurch (Es gibt ja mehr als eine Koordinate die ausgelesen werden muss) etliche neue ArrayListen im Code unterkriegen müsste.
Könnt ihr mir vielleicht einen Denkanstoß geben??
Grüße
Zuletzt bearbeitet von einem Moderator: