Sitzung 3: Klassen, Objekte, Arrays und Kontrollstrukturen

Slides:



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

Objektorientierte Programmierung
DVG Dateien Dateien. DVG Dateien 2 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem.
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Einführung in die Programmierung Zusammenfassung
Kapselung , toString , equals , Java API
Progwerkstatt JAVA Klasse, Objekte, Konstruktoren, Methoden
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Listen Richard Göbel.
Indirekte Adressierung
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
Konstruktoren.
Objekte werden als Adressen (Referenzen) übergeben. Dies führt manchmal zu unerwarteten Ergebnissen...
Polymorphie (Vielgestaltigkeit)
Objekte und Arbeitsspeicher
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 4 Vererbung Sommersemester 2003 Lars Bernard.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 6 Model-View-Controler als Grundlage für Nutzerschnittstellen Sommersemester 2003 Lars Bernard.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 5 Polymorphismus Sommersemester 2003 Lars Bernard.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 5 Sitzung 5: Polymorphismus.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung X1 Sitzung X1: Packages & Wiederholung.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
Sommersemester 2003 Lars Bernard
Java-Kurs - 2. Übung Entwicklungsumgebung Struktur von Programmen
Java-Kurs - 7. Übung Besprechung der Hausaufgabe Referenzvariablen
Programmieren mit JAVA
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 Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Zusammenfassung Vorwoche
Packages Vortrag : Cornelia Hardt 23. November 1999.
DVG Einführung in Java1 Einführung in JAVA.
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
Klassen 02 - Klassen.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Einführung in die Programmierung Datensammlung
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.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 6 Sitzung 6: Model-View-Controller als Grundlage.
Java programmieren mit JavaKara
IT2 – WS 2005/20061Oct 10, 2005 Externes Verhalten – Quelltext (source code) Durch Aufrufe der Konstruktoren und Methoden kann das externe Verhalten (=die.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
EPROG Tutorium Einheit 4 Klassen und Objekte. Wiederholung Schleifen do... while while for break/continue Strings String char Methoden für Strings Arrays.
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.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Objektorientiertes Konstruieren
Grundkonzepte des Programmierens (mit ActionScript)
Variablenkonzept Klassisch, in Java Basistyp
Die Klasse String und ihre Methoden
Parameterübergabemechanismen für den Methodenaufruf
EPROG Tutorium #3 Philipp Effenberger
Programmiervorkurs WS 2014/15 Methoden
Programmiervorkurs WS 2014/15 Instanzmethoden
Programmiervorkurs WS 2014 Referenzdatentypen
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Objektorientierte Programmierung Einführung
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Java-Kurs Übung Besprechung der Hausaufgabe
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
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,
Java Programme nur ein bisschen objektorientiert.
Implementieren von Klassen
 Präsentation transkript:

Sitzung 3: Klassen, Objekte, Arrays und Kontrollstrukturen 04.05.2004 Sitzung 3

Klassen und Objekte OO-Programmierung: Beispiel Geo (vereinfacht): Welche Objekte lassen sich identifizieren? Was müssen diese Objekte können? Objekte bestehen aus Methoden und Daten! Beispiel Geo (vereinfacht): Punkte (Point) müssen erzeugt und nach ihren Koordinaten gefragt werden können. Gezeichnet wird auf einem Bildschirm (Screen), der eine bestimmte Auflösung und einen Rahmen hat. Gespeichert wird in einer Datei (Stream), die erzeugt oder gelesen wird. 04.05.2004 Klassen, Objekte, Arrays und Kontrollstrukturen

Klassen und Objekte Klassen deklarieren (class...) Jede Klasse braucht (mindestens) einen Konstruktor: Die Methode, die speziell zur Initialisierung der Klassenattribute notwendig ist. Bsp.: Punkt mit 2 Koordinaten initialisieren Methoden der Klasse deklarieren: Wie spreche ich mit einem Objekt der Klasse? Was will ich von dem Objekt? Bsp.: Distanz zwischen zwei Punkten berechnen Attribute (=Member-Variablen) von Klassen definieren: Wie und wo speichere ich für das Objekt nötige Informationen? Bsp.: X- und Y-Koordinate eines Punktes Der new-Operator erzeugt eine neue Instanz, also ein Objekt der Klasse. 04.05.2004 Klassen, Objekte, Arrays und Kontrollstrukturen

Beispiel Number Attribute Konstruktor Methoden class Number { int number_; Number(int numberIn) { number_ = numberIn; } int getNumber() { return number_; Attribute Konstruktor Methoden 04.05.2004 Klassen, Objekte, Arrays und Kontrollstrukturen

Gültigkeitsbereiche der Variablen Klassen- und Instanzvariablen 04.05.2004 Klassen, Objekte, Arrays und Kontrollstrukturen

Sichtbarkeit/Bereich von Attributen und Methoden Zugriffs-Modifizierer static modifiziert zur beständigen Klassenvariable (= ‚für alle Instanzen‘) final Konstante transient Marker für die Serialisierung volatile verhindert Optimierung Beispiele: private int number_; public int getNumber(){…} 04.05.2004 Klassen, Objekte, Arrays und Kontrollstrukturen

Bezeichner von Klassen und Variablen Bezeichner dürfen keine Leer- oder Sonderzeichen enthalten. Bezeichner dürfen keine Schlüsselwörter sein. elementare Typen klein (int col) Klassen groß (class Point) sprechende Namen verwenden ausreichend und sinnvoll kommentieren entweder Englisch oder Deutsch 04.05.2004 Klassen, Objekte, Arrays und Kontrollstrukturen

Referenzvariablen vs. elementare Variablen = Variablen elementarer Datentypen (int, long, double,…) Speicherplatz für einen Wert int size = 5; Referenzvariable: = Variablen für Objekte Zeiger auf eine Instanz Point center = new Point(1.0, 5.0); 04.05.2004 Klassen, Objekte, Arrays und Kontrollstrukturen

Arrays Arrays für elementare Datentypen Arrays für Klasseninstanzen int[] manyInts = new int[5]; manyInts[0] = 0; manyInts[4] = 4; int size = manyInts.length; // => size == 5; Arrays für Klasseninstanzen Point[] points = new Point[4]; points[0].output();// => run time error points[0] = new Point(0.0, 0.0); points[0].output();// => ok manyInts Typ Array! Variablenname Kapazität [0] [1] [2] [3] [4] 4 04.05.2004 Klassen, Objekte, Arrays und Kontrollstrukturen

Entwurf von Methoden (1) Nur die von der Methode zu lösende Aufgabe soll erledigt werden. Der Status des Objektes sollte sich durch die Methode nicht unerwartet ändern. Die Beschreibung der Methoden muss klar sein (Kommentare!). 04.05.2004 Klassen, Objekte, Arrays und Kontrollstrukturen

Entwurf von Methoden (2) Soll die Methode Ergebnisse liefern, muss ein Rückgabewert definiert werden (return-Anweisung). Methoden definieren Schnittstelle „kapseln“ die Implementierung 04.05.2004 Klassen, Objekte, Arrays und Kontrollstrukturen

Konstruktor Spezielle Methode, die beim Instanziieren einer Klasse aufgerufen wird: Eine neue Instanz der Klasse Point wird erzeugt und die Referenz dieser Instanz in der Variablen center gespeichert: center = new Point(1.0, 5.0); Eine neue Referenz auf ein (noch nicht intanziiertes) Objekt der Klasse Point wird erzeugt: Point center; 04.05.2004 Klassen, Objekte, Arrays und Kontrollstrukturen

Methodendefinition Methoden werden beschrieben durch die Methodendeklaration: Rückgabetyp methodenName(Parametertyp1 parameter1, Parametertyp2 parameter2, …) z.B.: double getX() void setX(double xIn) die Methodendefinition: { lokalerTyp1 lokaleVariable1; lokalerTyp2 lokaleVariable2; Anweisung; } z.B.: double getX() { return x; } void setX(double xIn) { x = xIn; } 04.05.2004 Klassen, Objekte, Arrays und Kontrollstrukturen

Verwendung Methoden Die Methoden eines Objektes ruft man auf mit: InstanzName.methodenName( Variable1, ... ); p1.getX(); int xCoord = p1.getX(); myX = 12.0; p1.setX( myX ); Methoden werden importiert (durch die Klasse(n), in der die Methoden definiert sind): import PackageName.Klassenname; oder import PackageName.*; import java.util.*; 04.05.2004 Klassen, Objekte, Arrays und Kontrollstrukturen

Programmfluss, Verzweigungen, Schleifen ...und Modularisierung als Basis strukturierter Programmierung 04.05.2004 Klassen, Objekte, Arrays und Kontrollstrukturen

Programmfluss Die Ausführung eines Programms beginnt mit der Methode main(). Die Anweisungen in main() werden sequentiell („von oben nach unten“) ausgeführt. Bei einem Methodenaufruf springt der Interpreter in die erste Zeile der Methode. Programmende = letzte Anweisung in main() 04.05.2004 Klassen, Objekte, Arrays und Kontrollstrukturen

Kontrollstrukturen für den Programmfluss Bedingungen if (Bedingung) { //Bedingung ist wahr Anweisungen; } else //Bedingung ist nicht wahr 04.05.2004 Klassen, Objekte, Arrays und Kontrollstrukturen

Bedingungen: Java-Beispiel boolean regen_in_muenster; … regen_in_muenster = true; … if (regen_in_muenster == false) { System.out.println(„Heute regnet es mal nicht!“); } else System.out.println(„Heute regnet es mal wieder!“); 04.05.2004 Klassen, Objekte, Arrays und Kontrollstrukturen

Vergleichsoperatoren für if ... else Konstruktionen ==, != (gleich, ungleich) <, <= (kleiner, kleiner gleich) >, >= (größer, größer gleich) &&, || (und, oder) Beispiel: if ((a == b) && (a == c)) { System.out.println („a, b und c sind identisch“); } 04.05.2004 Klassen, Objekte, Arrays und Kontrollstrukturen

Zweck: dieselbe Anweisung mehrmals durchführen Schleifentyp I: for Zweck: dieselbe Anweisung mehrmals durchführen Es wird eine Laufvariable verändert: int i; for (i = 1; i <= 100; i++) { System.out.println("Wert von i " + i + "\n"); } Schleifenkopf Ausgabe: Zahlen von 1 bis 100 04.05.2004 Klassen, Objekte, Arrays und Kontrollstrukturen

Schleifentyp II: while Zweck: dieselbe Anweisung mehrmals durchführen Überprüfung durch Vorbedingung (analog durch Nachbedingung) int i = 1; while (i <= 100) { System.out.println("Wert von i " + i); i++; } Vorbedingung Schleifenrumpf Ausgabe: Zahlen von 1 bis 100 04.05.2004 Klassen, Objekte, Arrays und Kontrollstrukturen

Entwurfsmuster: Iterator (1) Collection > point2 point4 point10 point3 - Ein Iterator ist ein Objekt, das es ermöglicht, die Elemente eines Collection-Objekts (z.B. List) nacheinander zu durchlaufen. Als Collection-Objekt bezeichnet man ein Objekt, das eine Sammlung (meist gleichartiger) Elemente eines Typs enthält. Ein Iterator implementiert folgende Methoden: hasNext() mit der überprüft wird, ob Elemente vorhanden sind, die noch nicht besucht wurden. next(), die das nächste unbesuchte Element liefert. > > > 04.05.2004 Klassen, Objekte, Arrays und Kontrollstrukturen

Entwurfsmuster: Iterator (2) import java.util.*; public class PointListExample { public static void main(String[] args) List points; points = new java.util.ArrayList(); for (int i = 1; i < 8; i++) { points.add(new Point2D(i+1.0, i+2.0)); } Iterator itr = points.iterator(); while (itr.hasNext()) { Point2D p =(Point2D)itr.next(); System.out.println("Current Point: (" + p.getX() + "," + p.getY()+")" ); 04.05.2004 Klassen, Objekte, Arrays und Kontrollstrukturen

Zusammenfassung Programmerstellung (Klassen, Variablen, Methoden, Konstruktoren) Programmfluss und -kontrolle if ... else (Verzweigungen) Schleifen (for ..., while ...) Entwurfsmuster: Iterator 04.05.2004 Klassen, Objekte, Arrays und Kontrollstrukturen

Halbrichtig oder falsch? Java lässt keine eigenen Typdefinitionen zu. Daten sind Variablen. Objekte und Instanzen sind Teile einer Klasse. Objekte/Instanzen sind die einzelnen Variablen der jeweiligen Klasse. Eine Klasse beinhaltet Variablen und Methoden. Die Variablen gehören zur gesamten Klasse und nicht zu der Instanz der Klasse. Das Institut für Geoinformatik ist ein Objekt der Klasse Uni. Mit einem Konstruktor legt man ein Objekt in der main-Methode an. 04.05.2004 Klassen, Objekte, Arrays und Kontrollstrukturen

Aufgabe 2 und 3 die HA 2 via e-mail an: Jan Drewnak (drewnak@uni-muenster.de) & Arne Bröring (arneb@uni-muenster.de) bis Samstag, 08.05., 24.00h s.t. die HA 3 anschauen und Fragen stellen: Jan Drewnak (drewnak@uni-muenster.de) & Arne Bröring (arneb@uni-muenster.de) bis Samstag, 15.05., 24.00h s.t. 04.05.2004 Klassen, Objekte, Arrays und Kontrollstrukturen