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

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

der Universität Oldenburg
der Universität Oldenburg
der Universität Oldenburg
Zusammenfassung der Vorwoche
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
der Universität Oldenburg
Verteilte Software - Java - Prozedurale Programmierung 1
Java: Objektorientierte Programmierung
Java: Grundlagen der Sprache
Java: Grundlagen der Objektorientierung
FH-Hof Fehlerbehandlung Richard Göbel. FH-Hof Konzept Fehler können mit dem Operator throw einer übergeordneten Funktion signalisiert werden. Parameter.
SWITCH - Anweisung.
Verzweigung oder bedingte Anweisung Weiter mit PP.
IF-ELSE-IF-Ketten Weiter mit PP..
Konstruktoren.
WHILE - Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
DO...WHILE Anweisung.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
Imperative Programmierung Funktionen und Parameter
Java-Kurs - 2. Übung Entwicklungsumgebung Struktur von Programmen
Programmieren mit JAVA
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Programm besteht aus mehreren Bestandteilen: Schlüsselwörter Sonderzeichen Bezeichner Kommentare Texte.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
PKJ 2005/1 Stefan Dissmann Zusammenfassung der Vorwoche Variable stehen für (einen) Wert, der sich im Programmablauf ändern kann. Variablen besitzen einen.
Zusammenfassung Vorwoche
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Methoden sind mit einem Namen versehene Programmabschnitte besitzen Rückgabetyp, Namen, Parameterliste.
1DVG3 - anonyme Klassen Anonyme Klassen. DVG3 - anonyme Klassen 2 Syntax new BasisKlasse(Parameterliste) { Modifikationen und Erweiterungen der Basisklasse.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Thema: Fibonacci-Zahlen
Bestimmung des ggT zweier Zahlen
Verzweigung.
Informatikunterricht mit Java
Vererbung Einfache Vererbung – Erben von abstrakten Klassen – Implementieren eines Interfaces.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Grundkonzepte Java - Klassendefinition
Rekursive Funktionen (Fakultät)
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
CuP - Java Elfte Vorlesung Montag, 11. November 2002.
2.4 Rekursion Klassifikation und Beispiele
CuP - Java Eingabe über Tastatur, AudioClips, überschreiben, Quiz Montag, 18. November 2002.
Die Klasse String und ihre Methoden
Unterprogramme in JAVA
Optimale Ursprungsgerade
Wilfried Imrich CuP - Java Erste Vorlesung Entspricht ungefähr Kapitel 1.1 des Skriptums Wilfried Imrich Montanuniversität Leoben Freitag, 4. Oktober 2002.
CuP - Java Vierte Vorlesung Entspricht ungefähr Kapitel 2.1 des Skriptums Montag, 14. Oktober 2002.
CuP - Java Zwölfte Vorlesung Klassen – Komposition und Vererbung Freitag, 15. November 2002.
CuP - Java Sechste Vorlesung Entspricht ungefähr Kapitel 3. 1 – 3
Programmierung von Agenten in Java: Implementierung einer Supply-Chain
Programmiervorkurs WS 2014/15 Methoden
Programmiervorkurs WS 2014/15 Schleifen
Programmiervorkurs WS 2014/15 Instanzmethoden
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
Programmiervorkurs WS 2014 Referenzdatentypen
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
Natürliches Programmieren
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Java-Kurs - 3. Übung Hausaufgabe Arrays For-Schleifen.
Ausnahmen Vorlesung besteht aus zwei Teilen Programmierung (4 SWS)
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Vererbung.
Cäsar-Verschlüsselung
Grundkurs Informatik mit Java
Cäsar-Verschlüsselung
 Präsentation transkript:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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