Variablen benennen: Unterschied zwischen den Versionen

Aus Byte-Welt Wiki
Zur Navigation springenZur Suche springen
K
K
Zeile 56: Zeile 56:
  
 
Weitere Informationen zur Verwendung von Arrays findet man in allen gängigen Tutorials, zum Beispiel dem online verfügbaren Buch [http://openbook.galileocomputing.de/javainsel/ Java ist auch eine Insel], und dort im [http://openbook.galileocomputing.de/javainsel/javainsel_03_008.html#dodtp9894e88c-16e7-4052-8cc7-1f947e09e784 Kapitel 3.8: Arrays]. Alternativ dazu kann man sich auch das [http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html Kapitel über Arrays] aus dem [http://docs.oracle.com/javase/tutorial/java/nutsandbolts/index.html Java-Grundlagentutorial] von Oracle (früher Sun) ansehen.
 
Weitere Informationen zur Verwendung von Arrays findet man in allen gängigen Tutorials, zum Beispiel dem online verfügbaren Buch [http://openbook.galileocomputing.de/javainsel/ Java ist auch eine Insel], und dort im [http://openbook.galileocomputing.de/javainsel/javainsel_03_008.html#dodtp9894e88c-16e7-4052-8cc7-1f947e09e784 Kapitel 3.8: Arrays]. Alternativ dazu kann man sich auch das [http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html Kapitel über Arrays] aus dem [http://docs.oracle.com/javase/tutorial/java/nutsandbolts/index.html Java-Grundlagentutorial] von Oracle (früher Sun) ansehen.
 +
 +
=== Im komplizierteren Fall: Auch mit einem Array ===
 +
Wenn man mehrere Daten hat, die zusammen gehören, sieht man häufig Code wie diesen:
 +
<code=java>
 +
String vorname0 = "Foo";
 +
String nachname0 = "Oof";
 +
int punktestand0 = "123";
 +
 +
String vorname1 = "Bar";
 +
String nachname1 = "Rab";
 +
int punktestand1 = "456";
 +
 +
String vorname2 = "Foobar";
 +
String nachname2 = "Raboof";
 +
int punktestand2 = "789";
 +
....
 +
</code=java>
 +
 +
Das könnte einen dazu verleiten, mehrere Arrays zu erstellen:
 +
<code=java>
 +
String[] vornamen = new String[6];
 +
String[] nachname = new String[6];
 +
int[] punktestaende[]; = new int[6];
 +
...
 +
</code=java>
 +
 +
Allerdings ist diese Lösung wiederum sehr unübersichtlich, fehleranfällig und schlecht erweiterbar.
 +
 +
Stattdessen sollte man in Erwägung ziehen, eine Klasse "Datensatz" zu erstellen, die alle Informationen zusammenfasst:
 +
<code=java>
 +
class Datensatz
 +
{
 +
    private String vorname;
 +
    private String nachname;
 +
    private int punktestand;
 +
 +
    public Datensatz(String vorname, String nachname, int punktestand)
 +
    {
 +
        this.vorname = vorname;
 +
        this.nachname = nachname;
 +
        this.punktestand = punktestand;
 +
    }
 +
 +
    // Get-Methoden für alle Daten:
 +
    public String getVorname() { return vorname; }
 +
    public String getNachname() { return nachname; }
 +
    public int getPunktestand() { return punktestand; }
 +
 +
    // Set-Methoden - NUR für die Daten, die nachträglich geändert werden können!
 +
    public void setPunktestand(int punktestand) { this.punktestand = punktestand; }
 +
}
 +
</code=java>
 +
 +
Dann mann man die Daten wieder in einem Array ablegen, der dann 'Datensatz'-Objekte enthält:
 +
<code=java>
 +
Datensatz[] datensaetze = new Datensatz[6];
 +
datensaetze[0]; = new Datensatz("Foo", "Oof", 123);
 +
datensaetze[1]; = new Datensatz("Bar", "Rab", 456);
 +
datensaetze[2]; = new Datensatz("Foobar", "Raboof", 789);
 +
 +
// Nachname aus dem Datensatz 1 lesen:
 +
String nachname = datensaetze[1].getNachname();
 +
 +
// Punktestand für den Datensatz 2 setzen:
 +
datensaetze[2].setPunktestand(666);
 +
</code=java>
 +
 +
 +
 +
  
  
Zeile 62: Zeile 132:
 
[[Kategorie:Programmierung Grundlagen]]
 
[[Kategorie:Programmierung Grundlagen]]
  
-- [[Benutzer:foobar | foobar]]  02.03.2008
+
-- [[Benutzer:foobar | foobar]]  02.03.2008 |
 
-- [[Benutzer:L-ectron-X | L-ectron-X]]  30.08.2013 (update)
 
-- [[Benutzer:L-ectron-X | L-ectron-X]]  30.08.2013 (update)

Version vom 30. August 2013, 13:39 Uhr

Benennung von Variablen

Hier sind die Antworten auf einige Fragen zu Variablennamen, die in ähnlicher Form immer wieder gestellt werden:

1. Wie kann man Variablennamen nummerieren?

2. Wie kann man "variable Variablennamen" vergeben?

3. Wie kann man den Variablennamen zu einem gegebenen Objekt herausfinden?

Wie kann man Variablennamen nummerieren?

Wenn man viele Objekte erstellen will, und diese Objekte über Variablennamen ansprechen möchte, werden die Variablennamen oft einfach direkt durchnummeriert: <code=java> String vorname0 = "Foo"; String vorname1 = "Bar"; String vorname2 = "Foobar"; String vorname3 = "Barfoo"; String vorname4 = "Far"; String vorname5 = "Boo"; ... </code=java>

Das ist sehr unflexibel, bläht den Code auf und ist sehr schlecht erweiterbar. Zusätzlich hat man dann das Problem, dass man häufig einen Index (eine Nummer) hat, und dan dazu passenden Variablennamen benötigt: <code=java> public String getVorname(int index) {

   return vorname //-->hier den 'index' einsetzen<--;

} </code=java>

Letzteres ist in dieser Form in Java nicht möglich. (Im Gegensatz zu PHP, wo man Variablennamen in dieser Form "zusammenbauen" kann). Den Index mit 'switch' oder einer 'if'-Abfrage zu überprüfen, und den passenden Vornamen zurückzugeben ist hier keine Abhilfe, sondern verschlimmert den Code nur.

Im einfachsten Fall: Mit einem Array

In den meisten Fällen ist die Lösung für dieses Problem ein einfacher Array. Dieser Array kann direkt bei der Erstellung oder mit einzelnen Anweisungen mit den passenden Daten gefüllt werden: <code=java> String[] vornamen = new String[] { "Foo", "Bar", "Foobar", "Barfoo", "Far", "Boo" }; </code=java>

oder

<code=java> String[] vornamen = new String[6]; vornamen[0] = "Foo"; vornamen[1] = "Bar"; vornamen[2] = "Foobar"; ... </code=java>

Alle Vornamen mit einer for-Schleife zu durchlaufen, oder mit einem Index auf einen einzelnen Vornamen zuzugreifen ist damit ganz einfach: <code=java> public String getVorname(int index) {

   return vorname[index];

} </code=java>

Weitere Informationen zur Verwendung von Arrays findet man in allen gängigen Tutorials, zum Beispiel dem online verfügbaren Buch Java ist auch eine Insel, und dort im Kapitel 3.8: Arrays. Alternativ dazu kann man sich auch das Kapitel über Arrays aus dem Java-Grundlagentutorial von Oracle (früher Sun) ansehen.

Im komplizierteren Fall: Auch mit einem Array

Wenn man mehrere Daten hat, die zusammen gehören, sieht man häufig Code wie diesen: <code=java> String vorname0 = "Foo"; String nachname0 = "Oof"; int punktestand0 = "123";

String vorname1 = "Bar"; String nachname1 = "Rab"; int punktestand1 = "456";

String vorname2 = "Foobar"; String nachname2 = "Raboof"; int punktestand2 = "789"; .... </code=java>

Das könnte einen dazu verleiten, mehrere Arrays zu erstellen: <code=java> String[] vornamen = new String[6]; String[] nachname = new String[6]; int[] punktestaende[]; = new int[6]; ... </code=java>

Allerdings ist diese Lösung wiederum sehr unübersichtlich, fehleranfällig und schlecht erweiterbar.

Stattdessen sollte man in Erwägung ziehen, eine Klasse "Datensatz" zu erstellen, die alle Informationen zusammenfasst: <code=java> class Datensatz {

   private String vorname;
   private String nachname;
   private int punktestand; 
   public Datensatz(String vorname, String nachname, int punktestand)
   {
        this.vorname = vorname;
        this.nachname = nachname;
        this.punktestand = punktestand;
   }
   // Get-Methoden für alle Daten:
   public String getVorname() { return vorname; }
   public String getNachname() { return nachname; }
   public int getPunktestand() { return punktestand; } 
   // Set-Methoden - NUR für die Daten, die nachträglich geändert werden können!
   public void setPunktestand(int punktestand) { this.punktestand = punktestand; }

} </code=java>

Dann mann man die Daten wieder in einem Array ablegen, der dann 'Datensatz'-Objekte enthält: <code=java> Datensatz[] datensaetze = new Datensatz[6]; datensaetze[0]; = new Datensatz("Foo", "Oof", 123); datensaetze[1]; = new Datensatz("Bar", "Rab", 456); datensaetze[2]; = new Datensatz("Foobar", "Raboof", 789);

// Nachname aus dem Datensatz 1 lesen: String nachname = datensaetze[1].getNachname();

// Punktestand für den Datensatz 2 setzen: datensaetze[2].setPunktestand(666); </code=java>

-- foobar 02.03.2008 | -- L-ectron-X 30.08.2013 (update)