1 / 50

Einführung in die Programmierung mit Java

I nstitut für K artographie und G eoinformation Prof.-Dr. Lutz Plümer , Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag. Einführung in die Programmierung mit Java. 5. Vorlesung WS 2002/2003. objektorientiertes Programmieren. Vorstellung wie in der realen Welt:. die Tür. Objekt.

Download Presentation

Einführung in die Programmierung mit Java

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit Java 5. Vorlesung WS 2002/2003

  2. objektorientiertes Programmieren Vorstellung wie in der realen Welt: die Tür Objekt IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

  3. objektorientiertes Programmieren Vorstellung wie in der realen Welt: • Höhe = 2.0 m • Breite = 0.7 m • u.a.m hat die Tür Attribute Objekt IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

  4. objektorientiertes Programmieren Vorstellung wie in der realen Welt: • Höhe = 2.0 m • Breite = 0.7 m • u.a.m • aufschließen • zuschließen • öffnen • schließen • u.a.m hat kann man die Tür Attribute Methoden Objekt IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

  5. objektorientiertes Programmieren Vorstellung wie in der realen Welt: • Höhe = 2.0 m • Breite = 0.7 m • u.a.m • aufschließen • zuschließen • öffnen • schließen • u.a.m hat kann man die Tür Attribute Methoden Objekt Eigenschaften IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

  6. objektorientiertes Programmieren- Prinzipien - 1. Abstraktion  klare Trennung zwischen : Konzept Umsetzung jede Tür und diese Tür Klasse Objekt einer Klasse oder auch : alle Objekte mit gleichen Eigenschaften gehören zu einer Klasse  Klassenbildung IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

  7. objektorientiertes Programmieren- Prinzipien - 1. Abstraktion 2. Kapselung • Zugriff auf die Attribute eines Objektsi.d.R. nur über seine Methoden • Verbergen unwichtiger Details damit man z.B. eine abgeschlossene Tür nicht öffnen kann ohne sie aufzuschließen ! z.B. die genaue Konstruktion des Schlosses IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

  8. objektorientiertes Programmieren- Prinzipien - 1. Abstraktion 2. Kapselung 3. Vererbung später ... 4. Polymorphismus IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

  9. Java - Klassen • Klassen besitzen : • einen Klassennamen • immer nur eine Klasse je Datei • der Dateiname ist immerKlassenname.java Syntax : classKlassenname{ ... } IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

  10. Java - Klassen • Klassen besitzen : • einen Klassennamen Syntax : Beispiel : classKlassenname{ ... } classPunkt2D{ ... } IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

  11. Java - Klassen- Deklaration von Attributen - • Klassen besitzen : • einen Klassennamen • beliebig viele Attribute Syntax : classKlassenname{ typattributsname; ... } IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

  12. Java - Klassen - Deklaration von Attributen - • Klassen besitzen : • einen Klassennamen • beliebig viele Attribute Syntax : classKlassenname{ typattributsname; ... } • Deklaration von Attributen • für jedes Objekt (Instanz) der Klasse: • gleiche Attributsnamen • aber individuelle Werte IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

  13. Java - Klassen - Deklaration von Attributen - • Klassen besitzen : • einen Klassennamen • beliebig viele Attribute Syntax : Beispiel : classKlassenname{ typattributsname; ... } classPunkt2D{ intnummer; doublex; doubley; } IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

  14. Java - Klassen - Definition von Methoden - • Klassen besitzen : • einen Klassennamen • beliebig viele Attribute • beliebig viele Methoden Syntax : classKlassenname{ // Attribute typmethodenname( Parameter){ Anweisung; ... } } IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

  15. Java - Klassen - Definition von Methoden - • Klassen besitzen : • einen Klassennamen • beliebig viele Attribute • beliebig viele Methoden Beispiel : classPunkt2D{ intnummer; doublex, y; doublegetX(){ return(x); } voidsetX(double wert){ x = wert; } } Syntax : classKlassenname{ // Attribute typmethodenname( Parameter){ Anweisung; ... } } IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

  16. Java - Klassen - Rückgabewerte von Methoden - Syntax : Beispiel : classKlassenname{ // Attribute typmethodenname( Parameter){ Anweisung; ... } } classPunkt2D{ intnummer; doublex, y; doublegetX(){ return(x); } voidsetX(double wert){ x = wert; } } Typ des Rückgabewertes IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

  17. Java - Klassen - Rückgabewerte von Methoden - Syntax : Beispiel : classKlassenname{ // Attribute typmethodenname( Parameter){ Anweisung; ... } } classPunkt2D{ intnummer; doublex, y; doublegetX(){ return(x); } voidsetX(double wert){ x = wert; } } Rückgabe eines Wertes IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

  18. Java - Klassen - Rückgabewerte von Methoden - Syntax : Beispiel : classKlassenname{ // Attribute typmethodenname( Parameter){ Anweisung; ... } } classPunkt2D{ intnummer; doublex, y; doublegetX(){ return(x); } voidsetX(double wert){ x = wert; } } Methoden ohne Rückgabe IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

  19. Java - Klassen - Parameter von Methoden - Beispiel : Syntax : classPunkt2D{ intnummer; doublex, y; doublegetX(){ return(x); } } classKlassenname{ // Attribute typmethodenname( Parameter){ Anweisung; ... } } eine Methode muss keine Parameter haben ! IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

  20. Java - Klassen - Parameter von Methoden - Beispiel : classPunkt2D{ intnummer; doublex, y; voidsetX(doublewert){ x = wert; } } Syntax eines Parameters: typ parametername IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

  21. Java - Klassen - Parameter von Methoden - Beispiel : classPunkt2D{ intnummer; doublex, y; voidsetPosition(doublewert_x,doublewert_y){ x = wert_x; y = wert_y; } } bei mehreren Parametern sind die einzelne Parameter durch ein Komma zu trennen ! IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

  22. Java - Klassen - Zugriff auf Attribute aus Methoden - Beispiel : classPunkt2D{ intnummer; doublex, y; voidsetPosition(doublewert_x,doublewert_y){ x = wert_x; y = wert_y; } } der Zugriff auf Attribute der Klasse aus ihren Methoden erfolgt genau wie bei Variablen der Methoden IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

  23. Java - Klassen - Erzeugen von Objekten einer Klasse - Syntax : Klassennameobjektname; objektname = newKlassenname(); // Deklaration // Instanziierung oder kurz : Klassennameobjektname = newKlassenname(); Beispiel : Punkt2Dtp_1001; tp_1001 = newPunkt2D(); IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

  24. Objekte - Zugriff auf die Attribute - Syntax : objektname.attributsname IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

  25. Objekte - Zugriff auf die Attribute - Syntax : objektname.attributsname Beispiel : Punkt2Dtp_1001 = newPunkt2D(); tp_1001.x = 56987.43; tp_1001.y = 4365.73; tp_1001.nummer = 1001; IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

  26. Objekte - Zugriff auf die Attribute - Syntax : objektname.attributsname Beispiel : Punkt2Dtp_1001 = newPunkt2D(); tp_1001.x = 56987.43; tp_1001.y = 4365.73; tp_1001.nummer = 1001; Attribute eines Objekts können genauso verwendet werden wie andere Variablen desselben Typs doubledelta_x = tp_1001.x - tp_1002.x; IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

  27. Objekte - im Arbeitsspeicher - tp_1001 Beispiel : Punkt2Dtp_1001 ; IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

  28. Objekte - im Arbeitsspeicher - tp_1001 Beispiel : Punkt2Dtp_1001 ; tp_1001 = newPunkt2D(); x = y = nummer = IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

  29. Objekte - im Arbeitsspeicher - tp_1001 Beispiel : Punkt2Dtp_1001 ; tp_1001 = newPunkt2D(); tp_1001.x = 56987.43; tp_1001.y = 4365.73; tp_1001.nummer = 1001; x = 56987.43 y = 4365.73 nummer = 1001 IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

  30. Objekte - im Arbeitsspeicher - tp_1001 Beispiel : Punkt2Dtp_1001 ; tp_1001 = newPunkt2D(); tp_1001.x = 56987.43; tp_1001.y = 4365.73; tp_1001.nummer = 1001; Punkt2Dtp_1002 ; x = 56987.43 y = 4365.73 nummer = 1001 tp_1002 IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

  31. Objekte - im Arbeitsspeicher - tp_1001 Beispiel : Punkt2Dtp_1001 ; tp_1001 = newPunkt2D(); tp_1001.x = 56987.43; tp_1001.y = 4365.73; tp_1001.nummer = 1001; Punkt2Dtp_1002 ; tp_1002 = tp_1001; x = 56987.43 y = 4365.73 nummer = 1001 tp_1002 IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

  32. Objekte vergleichen Punkt2D a = newPunkt2D(), b = newPunkt2D(); a.x= 1.0;b.x= 1.0; a.y= 2.0;b.y= 2.0; a.nummer = 1; b.nummer= 1; Was liefert a == b ? a b x = 1.0 y = 1.0 nummer = 1 x = 1.0 y = 1.0 nummer = 1 IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

  33. Objekte vergleichen Punkt2D a = newPunkt2D(), b = newPunkt2D(); a.x= 1.0;b.x= 1.0; a.y= 2.0;b.y= 2.0; a.nummer = 1; b.nummer= 1; Was liefert a == b ?  false ! a b  x = 1.0 y = 1.0 nummer = 1 x = 1.0 y = 1.0 nummer = 1 IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

  34. Objekte vergleichen Punkt2D a = newPunkt2D(), b = newPunkt2D(); a.x= 1.0;b.x= 1.0; a.y= 2.0;b.y= 2.0; a.nummer = 1; b.nummer= 1; Was liefert a == b ?  false ! Was liefert a.x == b.x ? a b x = 1.0 y = 1.0 nummer = 1 x = 1.0 y = 1.0 nummer = 1 IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

  35. Objekte vergleichen Punkt2D a = newPunkt2D(), b = newPunkt2D(); a.x= 1.0;b.x= 1.0; a.y= 2.0;b.y= 2.0; a.nummer = 1; b.nummer= 1; Was liefert a == b ?  false ! Was liefert a.x == b.x ?  true ! a b x = 1.0 y = 1.0 nummer = 1 x = 1.0 y = 1.0 nummer = 1 IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

  36. Arrays - ein Array von Objekten - Syntax : Klassenname[ ]arrayname; arrayname = newKlassenname[groesse]; // Deklarieren // Instanziieren // eines Arrays ACHTUNG : jedes Arrayelement ist einzeln zu instanziieren // Instanziieren // eines Elements arrayname[index] = newKlassenname(); IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

  37. Arrays - ein Array von Objekten - Beispiel : linie Punkt2D[ ]linie; IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

  38. Arrays - ein Array von Objekten - Beispiel : linie Punkt2D[ ]linie; linie = newPunkt2D[2]; 0 1 IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

  39. Arrays - ein Array von Objekten - Beispiel : linie Punkt2D[ ]linie; linie = newPunkt2D[2]; linie[0] = newPunkt2D(); 0 1 x = y = nummer = IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

  40. Arrays - ein Array von Objekten - Beispiel : linie Punkt2D[ ]linie; linie = newPunkt2D[2]; linie[0] = newPunkt2D(); 0 1 linie[1] = newPunkt2D(); x = y = nummer = x = y = nummer = IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

  41. Arrays - Zugriff auf Objektattribute im Array - Syntax : arrayname[index].attributsname; IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

  42. Arrays - Zugriff auf Objektattribute im Array - Syntax : arrayname[index].attributsname; Beispiel : linie Punkt2D[ ]linie; linie = newPunkt2D[2]; 0 1 IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

  43. Arrays - Zugriff auf Objektattribute im Array - Syntax : arrayname[index].attributsname; Beispiel : linie Punkt2D[ ]linie; linie = newPunkt2D[2]; linie[0] = newPunkt2D(); 0 1 x = y = nummer = IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

  44. Arrays - Zugriff auf Objektattribute im Array - Syntax : arrayname[index].attributsname; Beispiel : linie Punkt2D[ ]linie; linie = newPunkt2D[2]; linie[0] = newPunkt2D(); 0 1 linie[0].x = 56743.43; x = 56743.43; y = nummer = IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

  45. Java - Klassen - Zusammenspiel von Klassen - Beispiel : Attribute vom Typ einer Klasse : classPunkt2D{ intnummer ; doublex; doubley; } classDreieck{ intnummer ; Punkt2D a, b, c; } zugehörige Datei : Punkt2D.java zugehörige Datei : Dreieck.java IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

  46. Java - Klassen - Zusammenspiel von Klassen - Beispiel : Variablen vom Typ einer Klasse : classPunkt2D{ intnummer ; doublex; doubley; } classBerechneStrecke2D{ static public void main(String arg[ ]){ Punkt2Danfang = newPoint2D(), ende = newPoint2D(); anfang.x = 10.0; anfang.y = 20.0; ende.x = -10.0; ende.y = -20.0; double delta_x = anfang.x – ende.x; double delta_y = anfang.y – ende.y; double strecke = Math.sqrt( delta_x * delta_x + delta_y * delta_y); } } Methode IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

  47. Java - Klassen - Anlegen einer neuen Klasse mit Forte - Kontextmenu zu einem Verzeichnis erreichbar über einen Klick mit der rechten Maustaste auf das Verzeichnis ( z.B. U:\JAVA ) New Classes Class weiter, genau wie immer ... IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

  48. Übungsaufgabe (1/2) • Definiert eine Klasse "Kreis" mit den Eigenschaften eines Kreises (Radius, Mittelpunkt). • Erzeugt fünf Instanzen der Klasse mit gleichem Mittelpunkt und verschiedenen Radien. Hinweis zu (2.) : Lege eine neue Klasse “Kreise“ an und innerhalb von main(...){ } geht‘s weiter ... IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

  49. Übungsaufgabe (2/2) • Definiert eine Klasse "Kreis" mit den Eigenschaften eines Kreises (Radius, Mittelpunkt). • Erzeugt fünf Instanzen der Klasse mit gleichem Mittelpunkt und verschiedenen Radien. • Speichert die fünf erzeugten Instanzen der Klasse "Kreis" in einem Array ab. IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

  50. Hausaufgabe • Entwerft analog zur Definition von Kreisen die Klassendefinitionen für Dreiecke, Ellipsen und Trapeze. Erzeugt mindestens eine Instanz jeder Klasse und weist ihnen sinnvolle Werte zu. • Hinweis: Die Lösung umfasst mehrere .java-Dateien. In jedem der Dateinamen (und auch Klassennamen) muss Euer Nachname auftauchen (z.B. Schmitz_Dreieck.java) IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

More Related