broetchen
Erfahrenes Mitglied
moin
ich hab ne code-wust die is riesengroß
das problem is, die Funktionen eigentlich das selbe machen, nur auf verschiedene Werte zugreifen:
setTempPsiRang() setzt Ränge für die Temp-Werte des Tages
setGSPsiRang() setzt Ränge für die Globalstrahlungs-Werte des Tages
setRfPsiRang() setzt Ränge für die relative Feuchte-Werte des Tages
alle funktionen machen das gleiche, nur greift setTempPsiRang() aus t.Temp.Tagesmittel zu,
setGSPsiRang() greift auf t.GS.Tagesmittel zu und setRfPsiRang greift auf t.rF.Tagesmittel zu
das ganze wird also etwas unübersichtlich, wie man sieht.
meine frage also: gibt es irgendeine möglichkeit den code zu verallgemeinern und so die code-menge auf 1/3 zu reduzieren
Klasse Wert:
Klasse Tag:
desweiteren gibt es noch die Klasse Monat mit ner Hashtable wo die Tage drin sind(Keys sind die Date-Zahlen) und ne Klasse Jahr wo ne Hashtable mit den Monaten drin is(Keys sind Monatszahlen)
ganz oben steht eine Klasse Periode die ne Hashtable mit Jahren beinhaltet(Keys sind die Jahreszahlen) und den ganzen Funktionen
setTempPsiRang()
setGSPsiRang()
setRfPsiRang()
mfg broetchen
ich hab ne code-wust die is riesengroß
das problem is, die Funktionen eigentlich das selbe machen, nur auf verschiedene Werte zugreifen:
setTempPsiRang() setzt Ränge für die Temp-Werte des Tages
setGSPsiRang() setzt Ränge für die Globalstrahlungs-Werte des Tages
setRfPsiRang() setzt Ränge für die relative Feuchte-Werte des Tages
alle funktionen machen das gleiche, nur greift setTempPsiRang() aus t.Temp.Tagesmittel zu,
setGSPsiRang() greift auf t.GS.Tagesmittel zu und setRfPsiRang greift auf t.rF.Tagesmittel zu
das ganze wird also etwas unübersichtlich, wie man sieht.
meine frage also: gibt es irgendeine möglichkeit den code zu verallgemeinern und so die code-menge auf 1/3 zu reduzieren
Klasse Wert:
Code:
public class Wert
{
public float Tagesmittel;
public int PsiRang; //A2-Rangliste
public double Psi;
public int FRang; //A3-Rangliste
public double F;
public double FMinusPsi;
public Wert(float mittel)
{
this.Tagesmittel = mittel;
this.PsiRang = 0;
this.Psi = 0;
this.FRang = 0;
this.F = 0;
this.FMinusPsi = 0;
}
}
Klasse Tag:
Code:
public class Tag
{
public int Day;
public Monat Parent;
public Wert Temp;
public Wert rF;
public Wert GS;
public float WG_Tagesmittel;
public Tag(int day, float temp, float rf, float gs, float wind,Monat parent)
{
this.Day = day;
this.Temp = new Wert(temp);
this.rF = new Wert(rf);
this.GS = new Wert(gs);
this.WG_Tagesmittel = wind;
this.Parent = parent;
}
override public string ToString()
{
int year = Parent.Parent.YearNr;
int month = Parent.MonthNr;
int day = this.Day;
return day.ToString()+"."+month.ToString()+"."+year.ToString();
}
}
desweiteren gibt es noch die Klasse Monat mit ner Hashtable wo die Tage drin sind(Keys sind die Date-Zahlen) und ne Klasse Jahr wo ne Hashtable mit den Monaten drin is(Keys sind Monatszahlen)
ganz oben steht eine Klasse Periode die ne Hashtable mit Jahren beinhaltet(Keys sind die Jahreszahlen) und den ganzen Funktionen
setTempPsiRang()
Code:
public void setTempPsiRang() //A2T-Ranglistenerzeugung
{
for(int i=1;i<=12;i++)
{
ArrayList tage = new ArrayList();
int aktRang = 1;
foreach(Jahr y in this.Jahre.Values)
{
Monat m = (Monat) y.Months[i];
foreach(Tag t in m.Tage.Values)
{
tage.Add(t);
}
}
while(tage.Count != 0)
{
Tag t = getMinTempTag(tage);
t.Temp.PsiRang = aktRang;
aktRang++;
tage.Remove(t);
}
}
}
setGSPsiRang()
Code:
public void setGSPsiRang() //A2T-Ranglistenerzeugung
{
for(int i=1;i<=12;i++)
{
ArrayList tage = new ArrayList();
int aktRang = 1;
foreach(Jahr y in this.Jahre.Values)
{
Monat m = (Monat) y.Months[i];
foreach(Tag t in m.Tage.Values)
{
tage.Add(t);
}
}
while(tage.Count != 0)
{
Tag t = getMinGsTag(tage);
t.GS.PsiRang = aktRang;
aktRang++;
tage.Remove(t);
}
}
}
setRfPsiRang()
Code:
public void setRfPsiRang() //A2T-Ranglistenerzeugung
{
for(int i=1;i<=12;i++)
{
ArrayList tage = new ArrayList();
int aktRang = 1;
foreach(Jahr y in this.Jahre.Values)
{
Monat m = (Monat) y.Months[i];
foreach(Tag t in m.Tage.Values)
{
tage.Add(t);
}
}
while(tage.Count != 0)
{
Tag t = getMinRfTag(tage);
t.rF.PsiRang = aktRang;
aktRang++;
tage.Remove(t);
}
}
}
mfg broetchen