Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

CuP - Java Neunte Vorlesung Entspricht Kapitel 4.2 und 5 des Skriptums Montag, 4. November 2002.

Ähnliche Präsentationen


Präsentation zum Thema: "CuP - Java Neunte Vorlesung Entspricht Kapitel 4.2 und 5 des Skriptums Montag, 4. November 2002."—  Präsentation transkript:

1 CuP - Java Neunte Vorlesung Entspricht Kapitel 4.2 und 5 des Skriptums Montag, 4. November 2002

2 4. November 2002 CuP WS 2002/ Zweidimensionale Felder Beispiele: Schachbrett, Fahrplan, Matrix Autohäuser, verkaufte Autos pro Werktag

3 4. November 2002 CuP WS 2002/ Zweidimensionale Felder - Deklaration int[ ][ ] verkäufe = new int [3][6]; double[ ][ ] temperaturen = new double[10][7]; String texte[ ][ ] = new String[5][8]; oder: int[ ][ ] verkäufe; verkäufe = new int [3][6];

4 4. November 2002 CuP WS 2002/ Zweidimensionale Felder - Wertezuweisung verkäufe[0][5] = 4; Die Deklaration und Initialisierung ist auch so möglich: int[ ][ ] verkäufe = { {3, 15, 6, 0, 1, 4}, {2, 1, 4, 1, 3, 0}, {0, 0, 2, 0, 5, 2}, };

5 4. November 2002 CuP WS 2002/ Zweidimensionale Felder - length public class FeldTest{ public static void main(String args[ ]){ int[ ][ ] verkäufe = { {3, 15, 6, 0, 1, 4}, {2, 1, 4, 1, 3, 0}, {0, 0, 2, 0, 5, 2}, }; System.out.println("verkaeufe.length = " + verkäufe.length); System.out.println("verkaeufe[0].length = " + verkäufe[0].length); }

6 4. November 2002 CuP WS 2002/ Zweidimensionale Felder - length Ausgabe

7 4. November 2002 CuP WS 2002/ Deutung Das Feld int[ ][ ] verkäufe = { {3,15,6,0,1,4}, {2,1,4,1,3,0}, {0,0,2,0,5,2}, }; ist eigentlich eine Feld der Länge drei, bestehend aus drei Feldern der Länge sechs! Diese Felder sind verkäufe[0], verkäufe[1], und verkäufe[2]. Das Feld verkäufe[0] etwa besteht aus: verkäufe[0][0], verkäufe[0][1], verkäufe[0][2], verkäufe[0][3], verkäufe[0][4], verkäufe[0][5],

8 4. November 2002 CuP WS 2002/ Summenbildung - Zeilen Wir gehen wieder von dem Feld verkäufe aus: int[ ][ ] verkäufe = { {3,15,6,0,1,4}, {2,1,4,1,3,0}, {0,0,2,0,5,2}, }; Die Summe der Verkäufe des zweiten Autohauses wird berechnet durch: int sum = 0; for ( int j = 0; j < verkäufe[1].length; j++ ) { sum = sum + verkäufe[1] [ j ] ; } Nach Ausführung dieser Anweisungen hat sum den Wert 11.

9 4. November 2002 CuP WS 2002/ Summenbildung - Spalten Die Summe der Verkäufe am dritten Tag ist: int s = 0; for ( int i = 0; i < verkäufe.length; i++ ) { s = s + verkäufe[ i ] [ 2 ] ; } Nach Ausführung dieser Anweisungen hat sum den Wert 12. Wodurch bekommt man die Summe für den fünften Tag?

10 4. November 2002 CuP WS 2002/ Gesamtsumme int s = 0; for ( int i = 0; i < verkäufe.length; i++){ for( int j = 0; j < verkäufe[0].length; j++ ){ s = s + verkäufe[ i ] [ j ]; }

11 4. November 2002 CuP WS 2002/ Beispiel: System zweier linearer Gleichungen Gegeben sei das System a[0][0]*x + a[0][1]*y = a[0][2] a[1][0]*x + a[1][1]*y = a[1][2] Die Determinante des Systems ist det = a[0][0] * a[1][1] - a[0][1] * a[1][0] Die Lösungen berechnen sich wie folgt: x = (a[0][2] * a[1][1] - a[0][1] * a[1][2]) / det y = (a[0][0] * a[1][2] - a[0][2] * a[1][0]) / det

12 4. November 2002 CuP WS 2002/ Die Methode loese() public class LinSystem{ static double x,y; public static boolean loese(double[][] a){ double eps = 1.0E-6; //eps = double det = a[0][0] * a[1][1] - a[0][1] * a[1][0]; if (Math.abs(det) > eps) { x = (a[0][2] * a[1][1] - a[0][1] * a[1][2]) / det; y = (a[0][0] * a[1][2] - a[0][2] * a[1][0]) / det; return true; } else return false; } }

13 4. November 2002 CuP WS 2002/ Treiber: Liest Daten aus einer Datei und löst das System (1/3): class Treiber { public static void main(String [] args) { String[] a = new String[6]; double[][] dArr = new double[2][3]; boolean ok = false; FileLesen.lies(a, "werte.txt"); if((null != a[0]) && (null != a[1]) && (null != a[2]) && (null != a[3]) && (null != a[4]) && (null != a[5])) {

14 4. November 2002 CuP WS 2002/ Treiber: Liest Daten aus einer Datei und löst das System (2/3): dArr[0][0] = Double.parseDouble(a[0]); dArr[0][1] = Double.parseDouble(a[1]); dArr[0][2] = Double.parseDouble(a[2]); dArr[1][0] = Double.parseDouble(a[3]); dArr[1][1] = Double.parseDouble(a[4]); dArr[1][2] = Double.parseDouble(a[5]);

15 4. November 2002 CuP WS 2002/ Treiber: Liest Daten aus einer Datei und löst das System (3/3): ok = LinSystem.loese(dArr); if(ok){ System.out.println("x = " + LinSystem.x + "."); System.out.println("y = " + LinSystem.y + "."); } else { System.out.println("System schlecht konditioniert oder singulaer."); } } } }

16 4. November 2002 CuP WS 2002/ Erweiterungen von Klassen Die Klasse Tier /* Beispiel einer Klasse mit einer Methode und einem Attribut*/ public class Tier{ int beineanzahl = 4; public void gibLaut(){ System.out.println("Keine Antwort!"); }

17 4. November 2002 CuP WS 2002/ Test der Klasse Tier public class TesteTier{ public static void main(String args[]){ Tier liebesTier = new Tier(); liebesTier.gibLaut(); System.out.println("Dieses Tier hat " + liebesTier.beineanzahl + " Beine."); } Ausgabe?

18 4. November 2002 CuP WS 2002/ Wie ist das mit Hunden? public class Hund extends Tier{ public void gibLaut(){ System.out.println ("Wau wau!"); }

19 4. November 2002 CuP WS 2002/ Test der Klasse Hund public class TesteHund{ public static void main(String args[]){ Hund waldi = new Hund(); waldi.gibLaut(); System.out.println("Dieses Tier hat " + waldi.beineanzahl + " Beine."); } Ausgabe? Hat waldi überhaupt eine beineanzahl?

20 4. November 2002 CuP WS 2002/ Schlussfolgerung Die Klasse Hund erbt ihre Beineanzahl von der Klasse Tier. Die Methode gibLaut() wird auch geerbt, aber wir haben sie durch eine neue Version überschrieben. Wir definieren noch eine Klasse Katze und eine Klasse Kraehe: public class Katze extends Tier{ public void gibLaut(){ System.out.println("Miau!"); }

21 4. November 2002 CuP WS 2002/ /* Bei dieser Klasse setzen wir die Zahl der Beine neu! Sie wird einfach überschrieben, wie man sagt. Außerdem führen wir eine Flügelanzahl ein. (Wir erweitern die Klasse Tier!) */ public class Kraehe extends Tier{ int beineanzahl = 2; int fluegelanzahl = 2; public void gibLaut(){ System.out.println("Kra kra!"); } Die Klasse Kraehe

22 4. November 2002 CuP WS 2002/ public class TesteTiere { public static void main(String args[ ]){ Tier untier = new Tier(); Hund hasso = new Hund(); Katze kleopatra = new Katze(); Kraehe rabenvieh = new Kraehe(); untier.gibLaut(); hasso.gibLaut(); kleopatra.gibLaut(); System.out.println("Kleopatra hat " + kleopatra.beineanzahl + " Beine."); rabenvieh.gibLaut(); System.out.println("Die Kraehe hat " + rabenvieh.beineanzahl + " Beine und " + rabenvieh.fluegelanzahl + " Fluegel. "); } }

23 4. November 2002 CuP WS 2002/ Diese Klasse hat folgende Ausgabe: Keine Antwort! Wau wau! Miau! Kleopatra hat 4 Beine. Kra kra! Die Kraehe hat 2 Beine und 2 Fluegel.

24 4. November 2002 CuP WS 2002/ Welche Beziehungen gibt es zwischen folgenden Dateien? Tier.javaKraehe.java Tier.classKrahe.class TesteTier.java TesteTiere.java TesteTier.classTesteTiere.class Hund.java Hund.class Katze.class TesteHund.java TesteHund.class


Herunterladen ppt "CuP - Java Neunte Vorlesung Entspricht Kapitel 4.2 und 5 des Skriptums Montag, 4. November 2002."

Ähnliche Präsentationen


Google-Anzeigen