Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 5. Vorlesung WS 2001/2002.

Slides:



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

der Universität Oldenburg
Objektorientierte Programmierung
Einführung in die Programmierung Zusammenfassung
Objektorientierte Programmierung Definition von Klassen
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Imperative Programmierung Funktionen und Parameter
Einführung in die Programmierung mit Java
Java-Kurs - 2. Übung Entwicklungsumgebung Struktur von Programmen
Java-Kurs - 7. Übung Besprechung der Hausaufgabe Referenzvariablen
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
Programmieren mit JAVA
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
Abstrakte Klassen DVG
Abstrakte Klassen, Interface
Wir müssen also überlegen: Implementierung der Knoten, Implementierung der Kanten, daraus: Implementierung des Graphen insgesamt. Annahme: die Knoteninhalte.
Einführung in die Programmierung Klassendefinition und Objekte
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Programmierung Wintersemester 2013/14 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Objektorientierte Konzepte/UML Geoinformation I Vorlesung 2 WS 2000/2001.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2011/12 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2011/12 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2012/13 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
2.4 Rekursion Klassifikation und Beispiele
Objektorientiertes Konstruieren
CuP - Java Vierte Vorlesung Entspricht ungefähr Kapitel 2.1 des Skriptums Montag, 14. Oktober 2002.
Programmiervorkurs WS 2014/15 Instanzmethoden
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Java-Kurs - 7. Übung Besprechung der Hausaufgabe Referenzvariablen
Java-Kurs - 6. Übung Besprechung der Hausaufgabe
Java-Kurs - 6. Übung Besprechung der Hausaufgabe
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 4. Vorlesung WS 2001/2002.
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Einführung in die Programmierung mit Java
Einführung in die Programmierung mit Java
Java-Kurs Übung Besprechung der Hausaufgabe
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
Einführung in die Programmierung mit Java
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 5. Vorlesung WS 2002/2003.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 11. Vorlesung WS 2001/2002.
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/ Übungsaufgabe vom Logische Ausdrücke 1.true & false | true 2.(10>2)
Institut für Kartographie und Geoinformation Prof. Dr. L. Plümer, Dipl.-Ing. D. Dörschlag, Dr. G. Gröger Einführung in die Programmierung mit Java 13.
Einführung in die Programmierung mit Java 5. Vorlesung WS 2002/2003 Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger,
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 7. Vorlesung WS 2002/2003.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 9. Vorlesung WS 2001/2002.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 10. Vorlesung WS 2002/2003.
Einführung in die Programmierung mit Java
Java-Kurs - 9. Übung Besprechung der Hausaufgabe
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Objektorientierte Programmierung (OOP)
Java Programme nur ein bisschen objektorientiert.
Tutorium Software-Engineering SS14 Florian Manghofer.
Java-Kurs Übung Grafik in Java - das Abstract Windowing Toolkit
Einführung in die Programmierung mit Java
Java-Kurs - 5. Übung Das Paradigma der Objektorientierung (OO)
Java-Kurs Übung Klassen und Objekte: Vererbung (Fortsetzung)
Einführung in die Programmierung mit Java
«Delegierter» Methoden Schablone Funktionszeiger
Implementieren von Klassen
 Präsentation transkript:

Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 5. Vorlesung WS 2001/2002

T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/022 Übersicht Besprechung der Übungsaufgabe Grundbegriffe der objektorientierten Modellierung Klassen und Objekte –Klassendefinition –Objektattribute (Instanzvariablen) –Methoden (Parameterübergabe, Rückgabewert)

T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/023 Übungsaufgabe vom Schreiben Sie ein Programm, das den Wert einer ganzzahligen Variablen w (0 bis 999) so als Text ausgibt, wie er ausgesprochen wird. Beispiele: w = 285 Ausgabe: "zweihundertfünfundachtzig" w = 513 Ausgabe: "fünfhundertdreizehn"

T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/024 Wdh.:Software-Entwicklung: Problemanalyse Problemanalyse Software-Entwicklung für einfache Probleme Ein- und Ausgabe Was sind die Eingangsdaten? Was soll ausgegeben werden? Zerlegung in Teilprobleme Formalisierung Randbedingungen Komplexität Wie werden aus den Eingabedaten die Ausgabedaten hergeleitet?

T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/025 Übungsaufgabe vom Schreiben Sie ein Programm, das den Wert einer ganzzahligen Variablen w (0 bis 999) so als Text ausgibt, wie er ausgesprochen wird. Beispiele: w = 285 Ausgabe: "zweihundertfünfundachtzig" w = 513 Ausgabe: "fünfhundertdreizehn" Lösungsansatz: die 100er, 10er und 1er getrennt be- trachten. Sonderfälle: die Zahlen von 0 bis 19 müssen zusammen betrachtet werden und die Zahl 0 muss auch gesondert berücksichtigt werden.

T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/026 Software-Entwicklung: Programmentwurf Programmentwurf Software-Entwicklung für einfache Probleme Zerlegung in Einzelschritte Notation in Pseudo-Code als Ablaufdiagramm direkt in der Zielprogrammiersprache Auswahl geeigneter Datenstrukturen Algorithmen für viele Teilprobleme gibt es bereits fertige Alg. + DS (siehe Vorlesung Diskrete Mathe) Roter Faden = Hauptprogramm Projekt Zahlenausgabe: einfaches Problem Keine komplexen Datenstrukturen Keine besonderen Algorithmen Nur Hauptprogramm Notation direkt in Java Benötigte Kontrollstrukturen: if-then-else und switch Projekt Zahlenausgabe: einfaches Problem Keine komplexen Datenstrukturen Keine besonderen Algorithmen Nur Hauptprogramm Notation direkt in Java Benötigte Kontrollstrukturen: if-then-else und switch

T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/027 Lösung zur AufgabeTeil 1/3 class Zahlenausgabe { public static void main (String args[]) { int wert, einer, zehner, hunderter; wert=157;// dies ist der auszugebende Wert einer = wert % 10;// Ziffer der 1er-Stelle berechnen wert = wert / 10; zehner = wert % 10;// Ziffer der 10er-Stelle berechnen wert = wert / 10; hunderter=wert;// Ziffer der 100er-Stelle berechnen switch(hunderter) { case 1: { System.out.print("einhundert"); break; } case 2: { System.out.print("zweihundert"); break; } case 3: { System.out.print("dreihundert"); break; } case 4: { System.out.print("vierhundert"); break; } case 5: { System.out.print("fünfhundert"); break; } case 6: { System.out.print("sechshundert"); break; } case 7: { System.out.print("siebenhundert"); break; } case 8: { System.out.print("achthundert"); break; } case 9: { System.out.print("neunhundert"); break; } // bei 0 wird nichts ausgegeben }... Fortsetzung auf der nächsten Seite

T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/028 Lösung zur AufgabeTeil 2/3 if (zehner<2) // ist die Zehnerstelle 0 oder 1 ? switch(zehner*10+einer) { // ja: Zahlen von 0 bis 19 besonders behandeln case 0: { if (hunderter==0) // wenn auch die 100er Stelle System.out.print("null"); // 0 ist, dann „null“ ausgeben break; } case 1: { System.out.print("eins"); break; } case 2: { System.out.print("zwei"); break; } case 3: { System.out.print("drei"); break; } case 4: { System.out.print("vier"); break; } case 5: { System.out.print("fünf"); break; } case 6: { System.out.print("sechs"); break; } case 7: { System.out.print("sieben"); break; } case 8: { System.out.print("acht"); break; } case 9: { System.out.print("neun"); break; } case 10: { System.out.print("zehn"); break; } case 11: { System.out.print("elf"); break; } case 12: { System.out.print("zwölf"); break; } case 13: { System.out.print("dreizehn"); break; } case 14: { System.out.print("vierzehn"); break; } case 15: { System.out.print("fünfzehn"); break; } case 16: { System.out.print("sechzehn"); break; } case 17: { System.out.print("siebzehn"); break; } case 18: { System.out.print("achtzehn"); break; } case 19: { System.out.print("neunzehn"); break; } }... Fortsetzung auf der nächsten Seite

T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/029 Lösung zur AufgabeTeil 3/3 else {// zehner sind größer als 2 switch(einer) { case 0: break; case 1: { System.out.print("einund"); break; } case 2: { System.out.print("zweiund"); break; } case 3: { System.out.print("dreiund"); break; } case 4: { System.out.print("vierund"); break; } case 5: { System.out.print("fünfund"); break; } case 6: { System.out.print("sechsund"); break; } case 7: { System.out.print("siebenund"); break; } case 8: { System.out.print("achtund"); break; } case 9: { System.out.print("neunund"); break; } } switch(zehner) { case 2: { System.out.print("zwanzig"); break; } case 3: { System.out.print("dreißig"); break; } case 4: { System.out.print("vierzig"); break; } case 5: { System.out.print("fünfzig"); break; } case 6: { System.out.print("sechzig"); break; } case 7: { System.out.print("siebzig"); break; } case 8: { System.out.print("achtzig"); break; } case 9: { System.out.print("neunzig"); break; } } } // Ende des Else-Teils } // Ende der Methode main } // Ende der Klasse Zahlenausgabe

T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0210 Software-Entwicklung: Implementierung Implementierung Software-Entwicklung für einfache Probleme Realisierung in einer konkreten Programmiersprache Auswahl geeigneter Datentypen Berücksichtigung vorhandener Funktionsbibliotheken Schrittweise Umsetzung des Pseudo-Codes in der Ziel-Programmiersprache Dokumentation des Quelltextes nicht vergessen! Implementierung Zahlenausgabe: trivial Entwurf liegt bereits in Java-Syntax vor Nur integer-Variablen Keine besonderen Funktionen aus Bibliotheken benötigt Implementierung Zahlenausgabe: trivial Entwurf liegt bereits in Java-Syntax vor Nur integer-Variablen Keine besonderen Funktionen aus Bibliotheken benötigt

T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0211 Software-Entwicklung: Testen Testen Software-Entwicklung für einfache Probleme Sicherung der Programm- eigenschaften Korrektheit Terminierung typische Fehler Falsche Ergebnisse Absturz (z.B. Durch Fehleingaben) Endlossschleifen Testszenarien definieren Programm mit repräsentativen Eingabedaten starten und Ergebnisse überprüfen Test: mindestens fünf Fälle Zahlen größer 99 u.a. die in der Aufgabenstellung geforderten 285 und 513 Zahlen kleiner 100 Zahlen mit Zehnerstelle 0 oder 1 Zahlen mit Zehnerstelle 2-9 Die Zahl 0 Test: mindestens fünf Fälle Zahlen größer 99 u.a. die in der Aufgabenstellung geforderten 285 und 513 Zahlen kleiner 100 Zahlen mit Zehnerstelle 0 oder 1 Zahlen mit Zehnerstelle 2-9 Die Zahl 0

T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0212 Objektorientierte Modellierung & Programmierung Hinter OO stehende Prinzipien –Abstraktion –Kapselung –Objekt –Kommunikation über Botschaften Klassenbildung –Objekte als Instanzen von Klassen Vererbung Polymorphismus

T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0213 Abstraktion ist eine Repräsentation der für die beabsichtigten Anwendungen / Programme wesentlichen Eigenschaften Abstraktion ermöglicht in frühen Entwicklungsstadien die Erfassung des Problemraumes Generalisierung von Details –bei wichtigen Details wird in mehreren Ebenen abstrahiert

T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0214 Kapselung (engl.: Information hiding) Ergebnis der Kapselung ist eine Entität (Objekt) mit einer scharfen Abgrenzung von seiner Umgebung, einer wohldefinierten Schnittstelle und einer verborgenen internen Repräsentation. Wohldefinierte Schnittstelle Austauschbarkeit der Realisierung Objekte sind gut wartbar (z.B. Einbettung in Testumgebung) Verbergen Schutz vor Fehlern, die aufgrund von Annahmen über interne Realisierung entstehen Zugriff auf Attribute idealerweise nur über die Schnittstelle

T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0215 Objektkommunikation mittels Botschaften Eine Botschaft ist eine u.U. parametrisierte Nachricht, die der Kommunikation zwischen Objekten dient. Botschaften lösen in der Regel beim Empfängerobjekt (Re-)Aktionen aus. Die Parameterbelegung einer Botschaft kann die Art der Reaktion beeinflussen.

T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0216 Objekt ist eine gekapselte, der Anwendung entsprechend abstrahierte Entität. Jedes Objekt besitzt eine eindeutige Objektidentität einen Zustand, der durch eine Menge von Attributen beschrieben wird Verfahren, die auf eine definierte Menge von Botschaften entsprechend reagieren

T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0217 Klassenbildung Gleichartige Objekte werden durch eine Klasse repräsentiert. –Objekte sind Instanzen von Klassen –Alle Objekte einer Klasse haben die gleichen Attribute (aber i.d.R. mit unterschiedlichen Werten) und verstehen Botschaften auf dieselbe Art. Zu einer Klassendefinition gehören Klassenname Liste der Attribute (in Java: Instanz- und Klassenvariablen) Liste der Botschaften, die Objekte dieser Klasse verstehen können (in Java: Methoden)

T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0218 Klassendefinition in Java class Klassenname { Typ1 Variablenname1; Typ2 Variablenname2;... Rückgabewerttyp1 Methode1 (Parameterliste) { // Methodendefinition der 1. Methode } Rückgabewerttyp2 Methode2 (Parameterliste) { // Methodendefinition der 2. Methode }... } Klassenbezeichner Deklaration der Instanzvariablen: jede Instanz (Objekt) der Klasse hat gleichnamige Variablen; die Werte können aber für jedes Objekt individuell zugewiesen werden. Methodenbezeichner

T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0219 Beispiel zur Klassendefinition class Rechteck { double breite, höhe;// Instanzvariablen (jedes Objekt der Klasse // Rechteck hat jeweils eigene Variablen) }

T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0220 Beispiel zur Klassendefinition class Rechteck { double breite, höhe;// Instanzvariablen (jedes Objekt der Klasse // Rechteck hat jeweils eigene Variablen) // Methode zur Berechnung des Flächeninhalts double fläche () { // keine Parameter; Rückgabewert vom Typ double double flächeninhalt;// lokale Variable (ex. nur in der Methode) flächeninhalt=breite*höhe; // Berechnung anhand der Instanzvariablen return flächeninhalt; // Rückgabe des berechneten Wertes }

T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0221 Beispiel zur Klassendefinition class Rechteck { double breite, höhe;// Instanzvariablen (jedes Objekt der Klasse // Rechteck hat jeweils eigene Variablen) // Methode zur Berechnung des Flächeninhalts double fläche () { // keine Parameter; Rückgabewert vom Typ double double flächeninhalt;// lokale Variable (ex. nur in der Methode) flächeninhalt=breite*höhe; // Berechnung anhand der Instanzvariablen return flächeninhalt; // Rückgabe des berechneten Wertes } // Methode zur Ausgabe des Objekts (als Text) void ausgeben() {// keine Parameter; kein Rückgabewert System.out.println("Dieses Rechteck hat folgende Eigenschaften:"); System.out.print("Breite: "); System.out.println(breite); System.out.print("Höhe: "); System.out.println(höhe); System.out.print("Fläche: "); System.out.println(fläche());// hier steckt ein Methodenaufruf! } “void“ bedeutet, dass die Methode keinen Wert an den Aufrufer zurückliefert

T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0222 Erzeugen von Objekten Das Erzeugen eines Objekts wird auch als Instantiierung bezeichnet. Syntax:... Klassenname Objektvariable; // Deklaration... Objektvariable = new Klassenname (); // Instantiierung Beispiel: Rechteck my_rechteck1, my_rechteck2; my_rechteck1 = new Rechteck(); my_rechteck2 = new Rechteck();

T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0223 Aufruf von Methoden Syntax: // Methode ohne Rückgabewert (void) Objektvariable.Methode1(Parameterliste);... // Methode mit Rückgabewert Variable = Objektvariable.Methode2(Parameterliste); Beispiel: my_rechteck.ausgeben(); double flächeninhalt; flächeninhalt=my_rechteck.fläche();

T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0224 Zugriff auf Instanzvariablen Syntax:... Objektvariable.Instanzvariable = Wert ;... Beispiel: my_rechteck = new Rechteck; my_rechteck.breite = 10.0; System.out.println(my_rechteck.breite);

T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0225 Beispiel zu Instantiierung, Variablenzugriff und Methodenaufruf class Rechteck {... // hier Variablendeklaration & Methodendefinition aus vorigem Beispiel // einfügen... public static void main (String args[]) { // Hauptprogramm Rechteck my_rechteck1; // Deklaration einer Objektvariablen my_rechteck1 = new Rechteck(); // Instantiierung eines Objekts my_rechteck1.breite = 10.0; // Zugriff auf Variablen der my_rechteck1.höhe = 5.0; // Instanz (Zuweisung eines Werts) my_rechteck1.ausgeben(); Rechteck my_rechteck2 = new Rechteck();// 2. Objekt dekl. & instant. my_rechteck2.breite = my_rechteck1.breite - 2.0; my_rechteck2.höhe = 7.5; my_rechteck2.ausgeben(); // Die beiden Objekte der Klasse Rechteck haben jeweils einen // eigenen Zustand, der durch die Wertebelegung der Instanzvariablen // breite und höhe gegeben ist ((b=10.0,h=5.0) und (b=8.0,h=7.5)). }

T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0226 Übungsaufgaben 1.Entwerfen und Implementieren Sie analog zur Definition von Rechtecken die Klassendefinitionen für Dreiecke, Kreise, Ellipsen und Trapeze. Als Methoden sollten mindestens die Flächenberechnung und die textuelle Ausgabe der Variableninhalte zur Verfügung gestellt werden. 2.Entwerfen Sie die Klasse Student, die alle zur Verwaltung eines Studentenregisters wesentlichen Informationen beinhaltet. a)Welche Methoden können Sie sich dazu vorstellen? b)Welche Informationen (Variablen & Methoden) sind auch auf Dozenten oder Verwaltungsangestellte anwendbar?