Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

, 1 / Javakurs 2012 – Objektorientierung Objektorientierte Programmierung I This work is licensed under the Creative Commons Attribution-ShareAlike 3.0.

Ähnliche Präsentationen


Präsentation zum Thema: ", 1 / Javakurs 2012 – Objektorientierung Objektorientierte Programmierung I This work is licensed under the Creative Commons Attribution-ShareAlike 3.0."—  Präsentation transkript:

1 , 1 / Javakurs 2012 – Objektorientierung Objektorientierte Programmierung I This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 License. Armelle Vérité 8 März 2012 Technische Universität Berlin

2 , 2 / Bessere Teillösung Mittelmäßige Teillösung Objektorientierte Programmierung Motivation Teillösung ● Modularisierung ● Wartbarkeit ● Verringerung der Komplexität ● Schnittstellen ● Java ● Objekte

3 , 3 / Was macht einen Objekt aus? Inhalt Zustand Verhalten Identität Schnittstelle Objekt Erzeugung

4 , 4 / Was davon könnte kein Java Objekt sein? Objekte Eine Folge von Nullen und Einsen... Eine dreidimensionale Form... Eine Verbindung... Die Zahl 42...

5 , 5 / Antwort : alle könnten Objekte sein! Objekte Box Ein Objekt ist ein Objekt... Wenn es eine java Klasse gibt, die dieses Objekt erzeugt Man kann auch Eigene Java Klassen definieren

6 , 6 / Ein Objekt ist eine Instanz einer Klasse Instanziieren r2d2 Volum = 200 cm³ Farbe = blau megaKiste Volum = 450 cm³ Farbe = gelb x42 Volum = ? Farbe = ? class Box { public int volum; public String farbe; } Attribute Objektname Box x42 = new Box();

7 , 7 / Abstraktion Klassen Bin ich eine Instanz von Box? class Box { public int volum; public String farbe; }

8 , 8 / Arbeiten mit mehreren Klassen Klassen class Schuh { public Box verpackung ; public int modellNr; public static void main(String[] args) { System.out.println("I love new shoes"); } import java.awt.Color; class Box { public int volum; public Color farbe; } $ javac Schuh.java $ ls Box.class Box.java Schuh.class Schuh.java $ java Schuh

9 , 9 / Variablen vor dem Zugriff definieren Klassen public class Schuhladen { public Schuh[] sortiment; public String adresse; public String erzeugeRechnung(int i){ String Rechnung = adresse + sortiment[i].modellNr; return Rechnung; } public static void main(String[] args) { Schuhladen shop = new Schuhladen(); shop.printRechnung(42); } Exception in thread "main" java.lang.NullPointerException Fehler!

10 , 10 / Standard-Konstruktor Konstruktoren Box x42 = new Box(); import java.awt.Color; class Box { public int volum; public Color farbe; public Box() { farbe = Color.MAGENTA; } Erzeugung eines Objektes: Und was ist mit dem Volumen?

11 , 11 / Punktnotation Konstruktoren Box x42 = new Box(); x42.volum = 420; import java.awt.Color; class Box { public int volum; public Color farbe; public Box() { farbe = Color.MAGENTA; } Definieren von Schnittstellen mit dem Schlüsselwort public: Ich bin eine Schnittstelle

12 , 12 / Konstruktoren mit Parametern Konstruktoren Box Schuhkarton = new Box(630,Color.RED); import java.awt.Color; class Box { public int volum; public Color farbe; public Box(int volum, Color farbe) { this.volum = volum; this.farbe = farbe; } Erzeugung eines Objektes mit Parametern:

13 , 13 / Zusammenfassung Konstruktoren Konstruktoren Konstruktoren initialisieren Objekten Name = Klassenname Kein Angabe zu Rückgabewert Wird kein Konstruktor definiert, existiert ein impliziter Konstruktor ohne Parameter Mehrere Konstruktoren in einer Klasse möglich, wenn sie sich an die Parametern unterscheiden

14 , 14 / Zugriff auf public Attribute Sichtbarkeit Box schwarzesLoch = new Box(); SchwarzesLoch.volum = -42; import java.awt.Color; class Box { public int volum; public Color farbe; public Box() { farbe = Color.MAGENTA; } Wir verlassen uns darauf, dass alles gut gehen wird:

15 , 15 / Die Idee von Kapselung Kapselung Attribute Methoden M e t h o d e n M e t h o d e n

16 , 16 / import java.awt.Color; class Box { private Color farbe; private int volum; public int getVolum() { return volum; } public void setFarbe(Color farbe) { this.farbe = farbe; } public void paintBlue() { setFarbe(Color.CYAN); } } Getter und Setter Methoden Verhalten

17 , 17 / Frage Wir wollen einen Attribut der Klasse Box definieren, der angibt, wie viele Instanzen von Box existieren. Wie machen wir das?

18 , 18 / Klassenvariable = gehört zur Klasse selbst import java.awt.Color; class Box { private Color farbe; private int volum; private static int total = 0; public Box() { farbe = Color.MAGENTA; total ++; } public Box(Color farbe, int volum) { this.farbe = farbe; this.volum = volum; Box.total++; }

19 , 19 / Utilities sind oft static Methoden int wuerfel; wuerfel= (int)Math.round((Math.random()*5)+1); Math public static long round(double a) Returns the closest long to the argument. The result is rounded to an integer by adding 1/2, taking the floor of the result, and casting the result to type long. In other words, the result is equal to the value of the expression: (long)Math.floor(a + 0.5d) public static double random() Returns a double value with a positive sign, greater than or equal to 0.0 and less than 1.0. Was ist casting ?

20 , 20 / Zusammenfassung static Klassen-Methoden nur Zugriff auf Klassenvariablen Können direkt auf Klasse aufgerufen werden Instanz-Methoden Zugriff auf Klassen- und Instanzvariablen erfordern Erstellung eines Objektes statische Methodennicht-statische Methoden

21 , 21 / Zusammenfassung Attribute speichern Zustände eines Objektes ● Konstanten mit Schlüsselwort final ● Format der Deklaration : – Sichtbarkeit (private, public) – Schlüsselwörter (final, static) – Typ (int, String, Box...) – Name ( klein & darf nicht mit einer Zahl beginnen) Methoden implementieren Verhalten eines Objektes ● Getter und Setter für private Attribute ● Format der Deklaration : – Sichtbarkeit (private, public) – Rückgabetyp (int, String, Box…) außer bei Konstruktoren – methodenName (ParameterTyp parameterName)

22 , 22 / Reference / value Identität int a = 0; int b = a; a++; System.out.println(a); System.out.println(b); Box a = new Box(100, Color.ROT); Box b = a; a.volum++; System.out.println(a.volum); System.out.println(b.volum); Ergebnis: a: 1 b: 0 Ergebnis: a.volum: 101 b.volum: 101 ( public volum wird angenommen)

23 , 23 / Referenzen Identität Referenz a Referenz b

24 , 24 / Referenzen Identität Referenz a Referenz b ) ) ) ) )

25 , 25 / Identität Referenzen Referenz a Referenz b

26 , 26 / Referenzen Identität Referenz a Referenz b ) ) ) ) )

27 , 27 / Referenzen Identität Referenz a Referenz b

28 , 28 / Häufige Compiletime- und Runtime-Fehler Häufige Fehler Box mystery; mystery.getFarbe(); mystery = null; mystery.paintBlue(); Box alias = mystery; alias.getVolum(); Box bonbons = new Box(); bonbons.paintBlue(); System.out.print(100 / bonbons.volum); Box geschenk = new Box(50, Color.ORANGE); geschenk.getVolum(); Box ueberraschung = geschenk; ueberraschung.setFarbe(Color.PINK); Compiletime Fehler Runtime Fehler

29 , 29 / Zur guten Letzt... Hinweis Merken: genau eine Klasse pro Datei Dateiname identisch mit Klassennamen Klassennamen groß, fängt mit Buchstabe an Fragen?


Herunterladen ppt ", 1 / Javakurs 2012 – Objektorientierung Objektorientierte Programmierung I This work is licensed under the Creative Commons Attribution-ShareAlike 3.0."

Ähnliche Präsentationen


Google-Anzeigen