1 Lehreinheit im Javakurs der Freitagsrunde SoSe2008 Technische Universität Berlin Mario Bodemann Björn Lohrmann Javakurs 2008 – LE06 „You’ve got questions.

Slides:



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

Objektorientierte Programmierung
der Universität Oldenburg
der Universität Oldenburg
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.
Kritische Betrachtung
Kapselung , toString , equals , Java API
Zusammenfassung des Kapitels 8
der Universität Oldenburg
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Erweiterte Zuweisungskompatibilität
Konstruktoren.
Interface bzw. Schnittstelle anschaulich: Hüllenklasse
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 4 Vererbung Sommersemester 2003 Lars Bernard.
Programmieren mit JAVA
Programmieren mit JAVA
Vererbung Spezialisierung von Klassen in JAVA möglich durch
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 Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Packages Vortrag : Cornelia Hardt 23. November 1999.
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
Abstrakte Klassen, Interface
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
05 - Reflection Das Reflection API Reflection2 Ziel Es kommt vor, dass eine Methode ein Objekt als Parameter übergeben bekommt, ohne dass bekannt.
Einführung in die Programmierung Vererbung
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
EPROG Tutorium #4 Philipp Effenberger
EPROG Tutorium #6 Philipp Effenberger
EPROG Tutorium #5 Philipp Effenberger
Programmiervorkurs WS 2014/15 Instanzmethoden
Vererbung Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
Objektorientierte Programmierung (OOP)
Java Programme nur ein bisschen objektorientiert.
Objektorientierte Programmierung mit JAVA. © Klasse Wie in C++ ist die Klasse das primäre Mittel um ein Entity abzubilden Die Eigenschaften.
Tutorium Software-Engineering SS14 Florian Manghofer.
, PD Dr. Wolfram Amme, Tutorium zum Programmierpraktikum, FSU Jena, WS 2006/07 1 Objekte in Java.
, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Kapselung von Daten I Gründe für die Datenkapselung Datenkonsistenz leichtere.
Objektorientierung in Java Java-Kurs LE 5.
Schwarz, Lubkoll : Javakurs LE Organisatorisches ● Wer sind wir? ● Was machen wir hier? ● Was haben wir davon? ● Was habt ihr davon?
, 1 / Javakurs 2011 – Objektorientierung Objektorientierte Programmierung I This work is licensed under the Creative Commons Attribution-ShareAlike 3.0.
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
Konstruktoren.
Objektorientierung Gliederung von Daten und Funktionen zu Objekten
Vererbung.
„Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen.“
Hello World! Javakurs 2013 Arne Kappen
Einführung in die Programmierung mit Java
Einführung in die Programmierung mit Java
Grundkurs Informatik 11-13
Raphael Fischer Informatik II - Übung 06 Raphael Fischer
Objektorientierte Programmierung und Vererbung
Arrays in Java Ein Array ist eine Variable, die aus einer An-zahl von Elementen des gleichen Datentyps besteht, die aufeinanderfolgend im Speicher liegen.
2. Vererbung und Kapselung
Definition Felder Konstruktor Methoden Beispiel
1. Die rekursive Datenstruktur Liste 1
9. Vererbung und Polymorphie
Implementieren von Klassen
Statische und Nichtstatische Methoden Properties / Eigenschaften
Vererbung in Java Von Jan und Eddi.
Grundkurs Informatik 11-13
Juli 19 Informatik Kurse
 Präsentation transkript:

1 Lehreinheit im Javakurs der Freitagsrunde SoSe2008 Technische Universität Berlin Mario Bodemann Björn Lohrmann Javakurs 2008 – LE06 „You’ve got questions. We’ve got dancing paperclips.“ - Microsoft Sexy Unix Commands: date; unzip; touch; strip; finger; mount; gasp; yes; uptime;

2 Übersicht Wiederholung Java Packages Vererbung Kapselung Revisited toString() equals()

3 Wiederholung LV 5 - Codebeispiel

4 Wiederholung: Objekte und Klassen Was war eine Klasse?  Im obigen Beispiel: Human  Allgemein: Der Bauplan eines Objektes Was war dann ein Objekt?  Als Beispiel: Human luigi = new Human("luigi");  Allgemein: ein konkrete Ausprägung einer Klasse

5 Wiederholung: Attribute und Verhalten Was waren Attribute?  Im Beispiel: name  Eigenschaften, die ein Objekt dieser Klasse haben kann Was war Verhalten?  Im Beispiel: void say(String message)  Methoden die ein Objekt der Klasse haben kann

6 Übersicht Wiederholung Java Packages Vererbung Kapselung Revisited toString() equals()

7 Java Packages Situation: Fred gibt euch seine Klasse „Human“ Problem: Zwei Dateien, gleicher Name Lösung: Fred gibt euch seine Klasse(n) in einem Package!

8 Java Packages package de.fred; class Human { } package de.javakurs; class Human { }

9 Java Packages Benutzung von Klassen aus anderen packages: import de.javakurs.Human; class MyMain { public static void main(String[] args) { Human h = new Human(); } Sagt Compiler: Human = de.javakurs.Human

10 Java Packages Problem: In welchem package waren uns Beispiele bisher? ● Lösung: ● Bisher keine Angabe von „package xy“ ● Daher im default-package ACHTUNG Klassen aus default-package sind nicht importierbar!

11 Übersicht Wiederholung Java Packages Vererbung Kapselung Revisited toString() equals()

12 Vererbung Problem: Wir wollen.... Neue Klasse „Child“ „Child“ hat Namen „Child“ hat Lieblingseis Lösung: Vererbung class Human { String name; Human(String name) { this.name = name; } void sayName() { System.out.println(name); }

13 Vererbung (Bsp. Fortsetzung) Child erbt von Human Human = Superklasse Child = Subklasse class Child extends Human { String favIcecream; Child(String favIcecream) { this.favIcecream = favIcecream; } void orderIcecream() { System.out.println(this.favIcecream + " icecream, please!"); } Achtung: Child-Klasse kompiliert (noch) nicht!

14 Was passiert bei Vererbung? Was wird vererbt? Attribute Methoden Typ Child hat Attribut „name“ Child hat Methode „sayName()“ Child-Objekte sind vom Typ Child UND Human

15 Vererbung von Attributen Benutzung geerbter Attribute: Geerbter Name class Child extends Human { String favIcecream; Child(String favIcecream) { this.favIcecream = favIcecream; } void orderIcecream() { System.out.println("Hi, I am " + this.name); System.out.println(this.favIcecream + " icecream, please!"); }

16 Vererbung von Attributen Problem: Child-Klasse kompiliert nicht! Grund: Name wird nicht initialisiert Lösung: Konstruktor korrigieren Aufruf Human-Konstruktor Child(String favIcecream, String name) { super(name); this.favIcecream = favIcecream; }

17 Vererbung von Methoden Benutzung geerbter Methoden: Aufruf geerbter Methode void orderIcecream() { System.out.print("Hi, I am "); sayName(); System.out.println(this.favIcecream + " icecream, please!"); }

18 Vererbung von Methoden (Overriding) Problem: Child soll bei sayName() etwas anderes sagen, als Human. class Child extends Human { [...] void sayName() { System.out.println(„gaga“ + this.name + „brubbel“); } Lösung: Overriding! Child definiert sayName() nochmal.

19 Vererbung des Typs Child ist Subtyp von Human = Child ist Human, aber Human nicht immer Child Child Human

20 Vererbung des Typs (Bsp. 1) Human fred = new Human("Fred"); Child freddie = new Child("Vanilla", "Freddie"); fred = freddie; fred.sayName(); RICHTIG fred.orderIcecream(); FALSCH

21 Vererbung des Typs (Bsp. 2) Human fred = new Human("Fred"); Child freddie = new Child("Vanilla", "Freddie"); fred = freddie; freddie = fred; FALSCH freddie = (Child) fred; RICHTIG freddie.orderIcecream();

22 Vererbung des Typs (Bsp. 3) Human fred = new Human("Fred"); Child freddie; freddie = (Child) fred; freddie.orderIcecream(); Kompiliert der Code? Funktioniert der Code zur Laufzeit? JAJA NEIN

23 Die Klasse java.lang.Object Jede Java-Klasse ist Subklasse von java.lang.Object

24 Werden später besprochen

25 Übersicht Wiederholung Java Packages Vererbung Kapselung Revisited toString() equals()

26 Kapselung Problem: Ein Human soll immer (gültigen) Namen haben! Lösung: Zugriff auf „name“ Attribut einschränken. Nur Human-Klasse hat noch Zugriff public class Human { private String name; [...] String getName() { return name; } void setName(String newName) { if (newName != null && newName.length() > 0) { this.name = newName; }

27 Kapselung Kapselung von Attributen: Kein direkter Zugriff von außen Zugriff nur über Methoden ( getName(), setName() ) Kapselungsstufen in Java: ● Public: ➔ public void say() {...} ● Private: ➔ private void say() {...} ● Ohne Modfizierer: ➔ void say() {...} Anwendbar auf: Klassen Attribute Methoden

28 Kapselung (Bsp: Public) Alle Klassen class Human class Foo class Child extends Human public class Human { public void sayName() { System.out.println("Mario"); } class Child extends Human { void foo() { Human h = new Human(); h.sayName(); } class Foo { void bar() { Human h = new Human(); h.sayName(); }

29 Kapselung (Bsp: Public) Alle Klassen class Human class Foo class Child extends Human public class Human { private void sayName() { System.out.println("Mario"); } class Child extends Human { void foo() { Human h = new Human(); h.sayName(); } class Foo { void bar() { Human h = new Human(); h.sayName(); }

30 Kapselung (Bsp: ohne Modifizierer) Alle Klassen package de.fred public class Human: void sayName() {...} class Foo class Bar sayName()

31 Zusammenfassung ● Java Packages unterteilen den Klassen-Namensraum Chuck Norris says... ● Vererbung: ● Erben von Attributen, Methoden, Typen ● Overriding ● Alles erbt von java.lang.Object! ● public, private etc. schränken die Sichtbarkeit ein

32 Übersicht Wiederholung Java Packages Vererbung Kapselung Revisited toString() equals()

33 Ein Beispiel für System.out.println( Object obj )

34 Die Ausgabe von System.out.println( Object obj )

35 System.out.println( Object obj ) - Wie funktioniert es? System.out.println( Object obj )  Human erbt von Object (Subtyping)  Ruft obj.toString() auf  Die Methode Object.toString() gibt den Klassennamen des Objektes und eine eindeutige Zahl zurück (daher Können wir toString() verändern?  Ja, das Zauberwort heißt Overriding  Man überschreibt die toString()-Methode mit seiner eigenen

36 Die neue Klasse Version 1.0

37 Die Ausgabe von toString() nach der Änderung

38 Übersicht Wiederholung Java Packages Vererbung Kapselung Revisited toString() equals()

39 equals(Object obj) – Ein Codefragment

40 Die Ausgabe

41 Noch nicht ganz korrekt Aus der API  equals() vergleicht zwei Objekte  Aber luigi ist gleich zu luigi2! Das Problem  In Object.equals(Object obj) steht return (this == obj) ;  Und == vergleicht nur die Referenzen nicht, die Eigenschaften der Objekte  Daher sollten wir Object.equals() überschreiben, damit es nicht mehr == verwendet.

42 Grafik Inhalt ungleich! „luigi“ Irgendwo im Speicher... Speicherzelle Speicherzelle 6e e1408 Referenz luigi Referenz luigi2 Referenz

43 Der Code zu Human.equals(Object obj)

44 Die Ausgabe von equals nach der Veränderung

45 Zusammenfassung ● toString() stellt Objekte als Strings dar ● equals() vergleicht Objekte auf Inhaltsgleichheit Chuck Norris says...

46 Danke für die Aufmerksamkeit Stichworte zur weiteren Recherche: ● static ● Exceptions ● Javadoc ● Interfaces, Abstrakte Klassen ● Dynamisches Binden ● Polymorphie ● Jar-Files ● Java Generics ● Collections, Iteratoren

47 Integrierte Entwicklungsumgebungen (IDEs): ● Eclipse ● Sun NetBeans ● CodeGear Jbuilder ● IntelliJ IDEA Literaturlinks: ● Java ist auch eine Insel: ● Javabuch: ● Java API (Java 1.5.0):

48 Coming up November

49 Raumänderungen Übungen nur in folgenden Räumen heute: ● MA 241 ● FR 2516 ● FR 2517 ● FR 5535 ● FR 5538 ● FR 5539 Folgende Räume sind geschlossen: ● FR 5083 ● FR 5087 ● FR 6514