Arrays in Java Ein Array ist eine Variable, die aus einer An-zahl von Elementen des gleichen Datentyps besteht, die aufeinanderfolgend im Speicher liegen. Beispiele sind Listen Tabellen Objektarrays (C) Harder 2007 12.01.2019
Objektarrays Wir haben bisher nur solche Arrays deklariert, deren Elementen aus Standarddatentypen bestehen. Arrays können aber auch aus Objekten selbstdefinierter Da- tentypen bestehen. public class pkw { public String name; public int kilowatt; public int baujahr; // Konstruktor überladen public pkw ( String nstr, int kw, int bj ) { this.name = nstr ; this.kilowatt = kw ; this.baujahr = bj ; } (C) Harder 2007 12.01.2019
Diagramm: Klasse und Objekte Wir wollen 1,2,3, ... n Objekte der pkw-Klasse erzeugen. Das er- ste Objekt habe z.B. den Namen „Festo“, das Baujahr 1998 und die Leistung 200 Kilowatt. In der UML-Notation sieht dies wie folgt aus: (C) Harder 2007 12.01.2019
Objekte erzeugen und initialisieren Da wir in der Klasse pkw über einen überladenen Kon-struktor pkw (String nstr, int kw, int bj ), verfügen, können wir natürlich mit der Anweisung Auto = new pkw (“Festo“, 200, 1998 ) ; ein Objekt des Datentyps pkw mit Objektnamen Auto deklarieren. Wir müssen aber, um die Programmierung einer Datenbank zu ermöglichen, nun ein Objektarray Auto[ ] deklarieren und initialisieren, das eine beliebige Zahl von Objekten des Datentyps pkw aufnimmt. (C) Harder 2007 12.01.2019
Deklaration eines Objektarrays Das Objektarray Auto [ ] wird durch folgende Anwei-sung deklariert (hier auf 3 Objekte beschränkt): pkw Auto [ ] = new pkw [3] ; Bei Objektarrays ruft der new-Operator den Konstruk- tor der pkw-Klasse auf. Zu beachten ist: Die Liste ist vom Typ pkw. Ihre Elemente sind Objekte vom Datentyp pkw. Die Liste hat 3 Elemente. Die Elemente des Objektarrays heißen Auto[0], Auto[1], Auto[2]. Nun müssen noch die Objekte Auto[0], Auto[1], Auto[3] erzeugt und initialisiert werden. (C) Harder 2007 12.01.2019
Objektarray initialisieren Einzelnen Objekten des Objektarrays können Werte zugewiesen werden. Dies geschieht z.B. durch den Aufruf des Konstruktors: Auto [ 0 ] = new pkw ( "Festo" , 200 , 1998 ) ; Den Objekten des Objektarrays können die Attribut-werte auch in einer Schleife zugewiesen werden. Dazu deklarieren wir einen Positionszähler pos, der die Zellen von 0 bis 3 zählen kann. Es ist darauf zu achten, daß die letzte Position den Wert pos = 3 hat. Der Javaprogrammierer ist verantwortlich, daß der Indexbereich eingehalten wird und es zu keinem Speicherfehler kommt. (C) Harder 2007 12.01.2019
Schleife (Codeauszug) Eine solche Schleife sieht dann im Kontext eines BufferedReader-Objekts In so aus (Code-Aus-schnitt): // Benutzerdialog ..... String name = In.readLine () ; int kilowatt = Integer.parseInt (In.readLine ()) ; int baujahr = Integer.parseInt (In.readLine ()) ; // Schleife initialisiert Objekte von Auto[ ] for ( pos = 0; pos < 3 ; pos++ ) { Auto[pos] = new pkw ( name, kilowatt, baujahr ); } (C) Harder 2007 12.01.2019
Zusammenfassung Aus diesen Überlegungen ergibt sich folgende Programm. Dieses Programm ist ein minimales Javaprogramm, das ein Objektarray der pkw-Klasse deklariert und initialisiert: (C) Harder 2007 12.01.2019
Codebeispiel: Ein- und Ausgabe des Objektarrays Auto[3] import java.io.* ; public class pkw { public String name; public int kilowatt; public int baujahr; public pkw ( String nstr, int kw, int bj ) { this.name = nstr ; this.kilowatt = kw ; this.baujahr = bj ; } public static void main ( String [] args ) { pkw Auto [] = new pkw [ 3 ]; Auto [ 0 ] = new pkw ("Festo" , 200 , 1998 ); Auto [ 1 ] = new pkw ("Schmatz" , 250 , 2001 ); Auto [ 2 ] = new pkw ("Herbi" , 100 , 1961 ); for ( int i = 0 ; i < 3 ; i ++ ) { System.out.println ( "Typ: "+Auto [i].name+"\tKW:" + Auto [ i ].kilowatt + "\tBaujahr: " + Auto [i].baujahr + "\n" ) ; (C) Harder 2007 12.01.2019