1 / 24

CuP - Java Neunte Vorlesung Entspricht Kapitel 4.2 und 5 des Skriptums

CuP - Java Neunte Vorlesung Entspricht Kapitel 4.2 und 5 des Skriptums. Montag, 4. November 2002. Zweidimensionale Felder. Beispiele: Schachbrett, Fahrplan, Matrix 0 1 2 3 4 5

Télécharger la présentation

CuP - Java Neunte Vorlesung Entspricht Kapitel 4.2 und 5 des Skriptums

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CuP - JavaNeunte VorlesungEntspricht Kapitel 4.2 und 5 des Skriptums Montag, 4. November 2002

  2. Zweidimensionale Felder Beispiele: Schachbrett, Fahrplan, Matrix 0 1 2 3 4 5 0 3 15 6 0 1 4 1 2 1 4 1 3 0 2 0 0 2 0 5 2 3 Autohäuser, verkaufte Autos pro Werktag CuP WS 2002/2003

  3. 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]; CuP WS 2002/2003

  4. 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}, }; CuP WS 2002/2003

  5. 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); } } CuP WS 2002/2003

  6. Zweidimensionale Felder - „length“Ausgabe CuP WS 2002/2003

  7. 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], CuP WS 2002/2003

  8. 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. CuP WS 2002/2003

  9. 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? CuP WS 2002/2003

  10. 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 ]; } } CuP WS 2002/2003

  11. 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 CuP WS 2002/2003

  12. Die Methode loese() public class LinSystem{ static double x,y; public static boolean loese(double[][] a){ double eps = 1.0E-6; //eps = 0.000 001 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; } } CuP WS 2002/2003

  13. „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])) { CuP WS 2002/2003

  14. „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]); CuP WS 2002/2003

  15. „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."); • } • } } } CuP WS 2002/2003

  16. Erweiterungen von KlassenDie 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!"); • } • } CuP WS 2002/2003

  17. 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? CuP WS 2002/2003

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

  19. 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“? CuP WS 2002/2003

  20. 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!"); • } • } CuP WS 2002/2003

  21. Die Klasse Kraehe • /* 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!"); • } • } CuP WS 2002/2003

  22. 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. "); • } } CuP WS 2002/2003

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

  24. Welche Beziehungen gibt es zwischen folgenden Dateien? • Tier.java Kraehe.java • Tier.class Krahe.class • TesteTier.java TesteTiere.java • TesteTier.class TesteTiere.class • Hund.java • Hund.class • Katze.class • TesteHund.java • TesteHund.class CuP WS 2002/2003

More Related