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

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

Embed Size (px)

DESCRIPTION

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 - PowerPoint PPT Presentation

Citation preview

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

CuP - Java

Neunte VorlesungEntspricht Kapitel 4.2 und 5 des Skriptums

Montag, 4. November 2002

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

4. November 2002

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

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

4. November 2002

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];

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

4. November 2002

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}, };

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

4. November 2002

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);}

}

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

4. November 2002

CuP WS 2002/2003 6

Zweidimensionale Felder - „length“Ausgabe

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

4. November 2002

CuP WS 2002/2003 7

DeutungDas 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],

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

4. November 2002

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.

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

4. November 2002

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?

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

4. November 2002

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 ];

} }

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

4. November 2002

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]) / dety = (a[0][0] * a[1][2] - a[0][2] * a[1][0]) / det

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

4. November 2002

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; } }

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

4. November 2002

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])) {

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

4. November 2002

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]);

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

4. November 2002

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.");

}

} } }

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

4. November 2002

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!"); }}

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

4. November 2002

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?

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

4. November 2002

CuP WS 2002/2003 18

Wie ist das mit Hunden?

public class Hund extends Tier{

public void gibLaut(){

System.out.println ("Wau wau!");

}

}

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

4. November 2002

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“?

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

4. November 2002

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!");

}

}

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

4. November 2002

CuP WS 2002/2003 21

/* 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

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

4. November 2002

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. ");

} }

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

4. November 2002

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.

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

4. November 2002

CuP WS 2002/2003 24

Welche Beziehungen gibt es zwischen folgenden Dateien?

Tier.java Kraehe.javaTier.class Krahe.classTesteTier.java TesteTiere.javaTesteTier.class TesteTiere.classHund.javaHund.classKatze.classTesteHund.javaTesteHund.class