Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Sitzung 3: Klassen, Objekte, Arrays und Kontrollstrukturen

Ähnliche Präsentationen


Präsentation zum Thema: "Sitzung 3: Klassen, Objekte, Arrays und Kontrollstrukturen"—  Präsentation transkript:

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

2 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. Klassen, Objekte, Arrays und Kontrollstrukturen

3 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. Klassen, Objekte, Arrays und Kontrollstrukturen

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

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

6 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(){…} Klassen, Objekte, Arrays und Kontrollstrukturen

7 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 Klassen, Objekte, Arrays und Kontrollstrukturen

8 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); Klassen, Objekte, Arrays und Kontrollstrukturen

9 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 Klassen, Objekte, Arrays und Kontrollstrukturen

10 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!). Klassen, Objekte, Arrays und Kontrollstrukturen

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

12 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; Klassen, Objekte, Arrays und Kontrollstrukturen

13 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; } Klassen, Objekte, Arrays und Kontrollstrukturen

14 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.*; Klassen, Objekte, Arrays und Kontrollstrukturen

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

16 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() Klassen, Objekte, Arrays und Kontrollstrukturen

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

18 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!“); Klassen, Objekte, Arrays und Kontrollstrukturen

19 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“); } Klassen, Objekte, Arrays und Kontrollstrukturen

20 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 Klassen, Objekte, Arrays und Kontrollstrukturen

21 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 Klassen, Objekte, Arrays und Kontrollstrukturen

22 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. > > > Klassen, Objekte, Arrays und Kontrollstrukturen

23 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()+")" ); Klassen, Objekte, Arrays und Kontrollstrukturen

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

25 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. Klassen, Objekte, Arrays und Kontrollstrukturen

26 Aufgabe 2 und 3 die HA 2 via e-mail an:
Jan Drewnak & Arne Bröring bis Samstag, , 24.00h s.t. die HA 3 anschauen und Fragen stellen: Jan Drewnak & Arne Bröring bis Samstag, , 24.00h s.t. Klassen, Objekte, Arrays und Kontrollstrukturen


Herunterladen ppt "Sitzung 3: Klassen, Objekte, Arrays und Kontrollstrukturen"

Ähnliche Präsentationen


Google-Anzeigen