Objektorientierung II - Javakurs 2010 -...

34
Wiederholung Modifizierer Standardmethoden Vererbung Zusammenfassung Objektorientierung II Javakurs 2010 - LE6 Sebastian Koch, Freitagsrunde TU Berlin, 25. M¨ arz 2010 OOP2, 25.03.2010 1 von 34

Transcript of Objektorientierung II - Javakurs 2010 -...

Page 1: Objektorientierung II - Javakurs 2010 - LE6docs.freitagsrunde.org/Veranstaltungen/javakurs_2010/vortrag6/java… · WiederholungModi ziererStandardmethodenVererbungZusammenfassung

Wiederholung Modifizierer Standardmethoden Vererbung Zusammenfassung

Objektorientierung IIJavakurs 2010 - LE6

Sebastian Koch, Freitagsrunde

TU Berlin, 25. Marz 2010

OOP2, 25.03.2010 1 von 34

Page 2: Objektorientierung II - Javakurs 2010 - LE6docs.freitagsrunde.org/Veranstaltungen/javakurs_2010/vortrag6/java… · WiederholungModi ziererStandardmethodenVererbungZusammenfassung

Wiederholung Modifizierer Standardmethoden Vererbung Zusammenfassung

Inhaltsubersicht

1 Wiederholung Objektorientierung I

2 Modifizierer

3 Standardmethoden

4 Vererbung

5 Zusammenfassung

OOP2, 25.03.2010 2 von 34

Page 3: Objektorientierung II - Javakurs 2010 - LE6docs.freitagsrunde.org/Veranstaltungen/javakurs_2010/vortrag6/java… · WiederholungModi ziererStandardmethodenVererbungZusammenfassung

Wiederholung Modifizierer Standardmethoden Vererbung Zusammenfassung

Ein Wort zur Ubung . . .

1

1geekandpoke.typepad.com

OOP2, 25.03.2010 3 von 34

Page 4: Objektorientierung II - Javakurs 2010 - LE6docs.freitagsrunde.org/Veranstaltungen/javakurs_2010/vortrag6/java… · WiederholungModi ziererStandardmethodenVererbungZusammenfassung

Wiederholung Modifizierer Standardmethoden Vererbung Zusammenfassung

Arbeit mit Objekten

1

1geekandpoke.typepad.com

OOP2, 25.03.2010 4 von 34

Page 5: Objektorientierung II - Javakurs 2010 - LE6docs.freitagsrunde.org/Veranstaltungen/javakurs_2010/vortrag6/java… · WiederholungModi ziererStandardmethodenVererbungZusammenfassung

Wiederholung Modifizierer Standardmethoden Vererbung Zusammenfassung

Vier Saulen der Objektorientierung

OOP2, 25.03.2010 5 von 34

Page 6: Objektorientierung II - Javakurs 2010 - LE6docs.freitagsrunde.org/Veranstaltungen/javakurs_2010/vortrag6/java… · WiederholungModi ziererStandardmethodenVererbungZusammenfassung

Wiederholung Modifizierer Standardmethoden Vererbung Zusammenfassung

Motivation Objektorientierung II

1

≈ 2,5 Mio SLOC (source lines of code)

1mozilla.com/en-US/about/logo

OOP2, 25.03.2010 6 von 34

Page 7: Objektorientierung II - Javakurs 2010 - LE6docs.freitagsrunde.org/Veranstaltungen/javakurs_2010/vortrag6/java… · WiederholungModi ziererStandardmethodenVererbungZusammenfassung

Wiederholung Modifizierer Standardmethoden Vererbung Zusammenfassung

Was sind Objekte?

Objekte . . .

• sind Instanzen von Klassen

• sind Einheiten von Attributen und Methoden

• haben eine Identitat, einen Zustand und ein Verhalten

• fuhren logisch zusammenhangenden Code zusammen

• ermoglichen auch komplexen Code einfach zu verstehen

• erlauben das einfache Wiederverwenden von Code

OOP2, 25.03.2010 7 von 34

Page 8: Objektorientierung II - Javakurs 2010 - LE6docs.freitagsrunde.org/Veranstaltungen/javakurs_2010/vortrag6/java… · WiederholungModi ziererStandardmethodenVererbungZusammenfassung

Wiederholung Modifizierer Standardmethoden Vererbung Zusammenfassung

Ein Beispielobjekt?

1 c l a s s Human{2 pub l i c S t r i n g name ;3 pub l i c i n t age ;45 pub l i c Human( S t r i n g name , i n t age ){6 t h i s . name = name ;7 t h i s . age = age ;8 }9 }

OOP2, 25.03.2010 8 von 34

Page 9: Objektorientierung II - Javakurs 2010 - LE6docs.freitagsrunde.org/Veranstaltungen/javakurs_2010/vortrag6/java… · WiederholungModi ziererStandardmethodenVererbungZusammenfassung

Wiederholung Modifizierer Standardmethoden Vererbung Zusammenfassung

Kapselung

Was passiert bei folgendem Programmfragment?

1 Human l e n n y = new Human( ”L . L . H o f s t a d t e r ” , 2 7 ) ;2 l e n n y . age = −12;34 Human s h e l l y = new Human( ”S . L . Cooper ” , 1 3 3 7 ) ;

Wie kann man so etwas verhindern?

OOP2, 25.03.2010 9 von 34

Page 10: Objektorientierung II - Javakurs 2010 - LE6docs.freitagsrunde.org/Veranstaltungen/javakurs_2010/vortrag6/java… · WiederholungModi ziererStandardmethodenVererbungZusammenfassung

Wiederholung Modifizierer Standardmethoden Vererbung Zusammenfassung

Eine gekapselte Klasse

1 c l a s s Human{2 p r i v a t e S t r i n g name ; // Zugriff begrenzt

3 p r i v a t e i n t age ;45 pub l i c Human( S t r i n g name , i n t age ){6 t h i s . name = name ;7 t h i s . se tAge ( age ) ; }89 pub l i c vo id setName ( S t r i n g name ){

10 t h i s . name = name ;}1112 pub l i c vo id setAge ( i n t age ){13 i f ( age >= 0 and . . . ) { // illegale Werte

14 t h i s . age = age ;}} // verhindern

1516 pub l i c vo id getName ( ) { . . . }17 pub l i c vo id getAge ( ) { . . . }18 }

OOP2, 25.03.2010 10 von 34

Page 11: Objektorientierung II - Javakurs 2010 - LE6docs.freitagsrunde.org/Veranstaltungen/javakurs_2010/vortrag6/java… · WiederholungModi ziererStandardmethodenVererbungZusammenfassung

Wiederholung Modifizierer Standardmethoden Vererbung Zusammenfassung

Modifizierer - Arten und Verwendung

• Zugriff: public, protected, package(default), private

• static, final, abstract, . . .

• Werden vor Klassen, Variablen, Methoden geschrieben undverandern sie

OOP2, 25.03.2010 11 von 34

Page 12: Objektorientierung II - Javakurs 2010 - LE6docs.freitagsrunde.org/Veranstaltungen/javakurs_2010/vortrag6/java… · WiederholungModi ziererStandardmethodenVererbungZusammenfassung

Wiederholung Modifizierer Standardmethoden Vererbung Zusammenfassung

Zugriffskontrolle

1 pub l i c c l a s s Password{2 p r i v a t e S t r i n g password = ” 1234 ” ;34 pub l i c vo id a s s i g n ( S t r i n g oldPW , S t r i n g newPW){5 i f ( password . e q u a l s ( oldPW ) && newPW != n u l l ){6 t h i s . password = newPW ;7 System . out . p r i n t l n ( ” Passwort g e s e t z t . ” ) ;8 }9 e l s e

10 System . out . p r i n t l n ( ” Passwort n i c h t g e s e t z t . ” ) ;11 }1213 pub l i c boolean check ( S t r i n g passwordToCheck ){14 r e t u r n password . e q u a l s ( passwordToCheck ) ;15 }16 }

OOP2, 25.03.2010 12 von 34

Page 13: Objektorientierung II - Javakurs 2010 - LE6docs.freitagsrunde.org/Veranstaltungen/javakurs_2010/vortrag6/java… · WiederholungModi ziererStandardmethodenVererbungZusammenfassung

Wiederholung Modifizierer Standardmethoden Vererbung Zusammenfassung

Was bedeutet static?

• Bindung einer Variablen oder Methode an eine Klasse

• Aufruf erfolgt dann uber den Klassennamen (z. B. Math.PI)

• Sind nicht von einem Zustand abhangig

• Anwendungen: Konstanten, Zustandsunabhangige Methoden,Datenaustausch

OOP2, 25.03.2010 13 von 34

Page 14: Objektorientierung II - Javakurs 2010 - LE6docs.freitagsrunde.org/Veranstaltungen/javakurs_2010/vortrag6/java… · WiederholungModi ziererStandardmethodenVererbungZusammenfassung

Wiederholung Modifizierer Standardmethoden Vererbung Zusammenfassung

Zustandsunabhangige Methoden

• Math.max() - Maximum zweier Zahlen

• Math.sin() - Berechnung des Sinus

• Integer.parseInt() - Konvertierung String nach Int

• . . .

OOP2, 25.03.2010 14 von 34

Page 15: Objektorientierung II - Javakurs 2010 - LE6docs.freitagsrunde.org/Veranstaltungen/javakurs_2010/vortrag6/java… · WiederholungModi ziererStandardmethodenVererbungZusammenfassung

Wiederholung Modifizierer Standardmethoden Vererbung Zusammenfassung

Datenaustausch

1 pub l i c c l a s s Human{2 p r i v a t e S t r i n g name ;3 p r i v a t e i n t age ;4 p r i v a t e i n t i d ;56 p r i v a t e s t a t i c i n t i d c o u n t e r = 0 ;78 pub l i c Human( S t r i n g name , i n t age ){9 t h i s . name = name ;

10 t h i s . age = age ;11 t h i s . i d = Human . g e n e r a t e I D ( ) ;12 }1314 p r i v a t e s t a t i c i n t g e n e r a t e I D ( ){15 r e t u r n i d c o u n t e r ++;16 }1718 { . . . }19 }

OOP2, 25.03.2010 15 von 34

Page 16: Objektorientierung II - Javakurs 2010 - LE6docs.freitagsrunde.org/Veranstaltungen/javakurs_2010/vortrag6/java… · WiederholungModi ziererStandardmethodenVererbungZusammenfassung

Wiederholung Modifizierer Standardmethoden Vererbung Zusammenfassung

Standardmethoden

”Damit es gerecht zugeht, erhalten Sie alle die gleichePrufungsaufgabe: Klettern Sie auf diesen Baum!”

OOP2, 25.03.2010 16 von 34

Page 17: Objektorientierung II - Javakurs 2010 - LE6docs.freitagsrunde.org/Veranstaltungen/javakurs_2010/vortrag6/java… · WiederholungModi ziererStandardmethodenVererbungZusammenfassung

Wiederholung Modifizierer Standardmethoden Vererbung Zusammenfassung

Die zwei Wichtigsten

• public boolean equals(Object o) - zum Vergleichen

• public String toString() - zum Ausgeben

OOP2, 25.03.2010 17 von 34

Page 18: Objektorientierung II - Javakurs 2010 - LE6docs.freitagsrunde.org/Veranstaltungen/javakurs_2010/vortrag6/java… · WiederholungModi ziererStandardmethodenVererbungZusammenfassung

Wiederholung Modifizierer Standardmethoden Vererbung Zusammenfassung

Referenzvergleich

1 Human l e n n y = new Human( ”L . L . H o f s t a d t e r ” , 2 7 ) ;2 Human s h e l l y = new Human( ”S . L . Cooper ” , 2 8 ) ;3 Human s h e l l y 2 = new Human( ”S . L . Cooper ” , 2 8 ) ;45 System . out . p r i n t l n ( l e n n y == s h e l l y ) ;6 System . out . p r i n t l n ( s h e l l y == s h e l l y 2 ) ;

Was wird ausgegeben?false, false

OOP2, 25.03.2010 18 von 34

Page 19: Objektorientierung II - Javakurs 2010 - LE6docs.freitagsrunde.org/Veranstaltungen/javakurs_2010/vortrag6/java… · WiederholungModi ziererStandardmethodenVererbungZusammenfassung

Wiederholung Modifizierer Standardmethoden Vererbung Zusammenfassung

Vergleich per equals (Implementierung)

1 pub l i c c l a s s Human{2 { . . . }3 pub l i c boolean e q u a l s (Human otherHuman ){4 i f ( otherHuman == n u l l ){ //Sonst NullPointerException

5 r e t u r n f a l s e ;6 }78 r e t u r n ( t h i s . name . e q u a l s ( otherHuman . getName ( ) )9 && t h i s . age == otherHuman . getAge ( ) ) ;

10 }11 }

OOP2, 25.03.2010 19 von 34

Page 20: Objektorientierung II - Javakurs 2010 - LE6docs.freitagsrunde.org/Veranstaltungen/javakurs_2010/vortrag6/java… · WiederholungModi ziererStandardmethodenVererbungZusammenfassung

Wiederholung Modifizierer Standardmethoden Vererbung Zusammenfassung

Zustandsvergleich per equals (Beispiel)

1 Human l e n n y = new Human( ”L . L . H o f s t a d t e r ” , 2 7 ) ;2 Human s h e l l y = new Human( ”S . L . Cooper ” , 2 8 ) ;3 Human s h e l l y 2 = new Human( ”S . L . Cooper ” , 2 8 ) ;45 System . out . p r i n t l n ( l e n n y . e q u a l s ( s h e l l y ) ) ;6 System . out . p r i n t l n ( s h e l l y . e q u a l s ( s h e l l y 2 ) ) ;

Was wird ausgegeben?false, true

OOP2, 25.03.2010 20 von 34

Page 21: Objektorientierung II - Javakurs 2010 - LE6docs.freitagsrunde.org/Veranstaltungen/javakurs_2010/vortrag6/java… · WiederholungModi ziererStandardmethodenVererbungZusammenfassung

Wiederholung Modifizierer Standardmethoden Vererbung Zusammenfassung

Ausgabe von Objekten

1 Human l e n n y = new Human( ”L . L . H o f s t a d t e r ” , 2 7 ) ;2 Human s h e l l y = new Human( ”S . L . Cooper ” , 2 8 ) ;34 System . out . p r i n t l n ( l e n n y ) ;5 System . out . p r i n t l n ( s h e l l y ) ;

Was wird ausgegeben?Human@9304b1, Human@190d11

OOP2, 25.03.2010 21 von 34

Page 22: Objektorientierung II - Javakurs 2010 - LE6docs.freitagsrunde.org/Veranstaltungen/javakurs_2010/vortrag6/java… · WiederholungModi ziererStandardmethodenVererbungZusammenfassung

Wiederholung Modifizierer Standardmethoden Vererbung Zusammenfassung

Ausgabe mit toString (Implementierung)

1 c l a s s Human{2 { . . . }3 pub l i c S t r i n g t o S t r i n g ( ){4 r e t u r n ”Name : ”+t h i s . name +” ,\ t A l t e r : ”5 +t h i s . age +” ,\ t ID : ”+t h i s . i d ;6 }7 }

OOP2, 25.03.2010 22 von 34

Page 23: Objektorientierung II - Javakurs 2010 - LE6docs.freitagsrunde.org/Veranstaltungen/javakurs_2010/vortrag6/java… · WiederholungModi ziererStandardmethodenVererbungZusammenfassung

Wiederholung Modifizierer Standardmethoden Vererbung Zusammenfassung

Ausgabe mit toString (Beispiel)

1 Human l e n n y = new Human( ”L . L . H o f s t a d t e r ” , 2 7 ) ;2 Human s h e l l y = new Human( ”S . L . Cooper ” , 2 8 ) ;34 System . out . p r i n t l n ( l e n n y ) ;5 System . out . p r i n t l n ( s h e l l y ) ;

Was wird ausgegeben?Name: L. L. Hofstadter, Alter: 27, ID: 0Name: S. L. Cooper, Alter: 28, ID: 1

OOP2, 25.03.2010 23 von 34

Page 24: Objektorientierung II - Javakurs 2010 - LE6docs.freitagsrunde.org/Veranstaltungen/javakurs_2010/vortrag6/java… · WiederholungModi ziererStandardmethodenVererbungZusammenfassung

Wiederholung Modifizierer Standardmethoden Vererbung Zusammenfassung

Fragenzeit

1

1geekandpoke.typepad.com

OOP2, 25.03.2010 24 von 34

Page 25: Objektorientierung II - Javakurs 2010 - LE6docs.freitagsrunde.org/Veranstaltungen/javakurs_2010/vortrag6/java… · WiederholungModi ziererStandardmethodenVererbungZusammenfassung

Wiederholung Modifizierer Standardmethoden Vererbung Zusammenfassung

Was ist Vererbung?

Erklarung am Beispiel Shape

OOP2, 25.03.2010 25 von 34

Page 26: Objektorientierung II - Javakurs 2010 - LE6docs.freitagsrunde.org/Veranstaltungen/javakurs_2010/vortrag6/java… · WiederholungModi ziererStandardmethodenVererbungZusammenfassung

Wiederholung Modifizierer Standardmethoden Vererbung Zusammenfassung

Vererbung - Ein Uberblick

• Eine Klasse kann mittels Vererbung erweitert werden

• Die erbende Klasse erbt alle Attribute und Methoden

• Methoden konnen neu definiert werden und vorhandeneuberschreiben

• Mit super.funktionsname () kann eine Methode aus derElternklasse aufgerufen werden

• Alle Klassen in Java erben von der Klasse Object

• ”The object-oriented version of ’Spaghetti code’ is, of course,’Lasagna code’. (Too many layers).”

OOP2, 25.03.2010 26 von 34

Page 27: Objektorientierung II - Javakurs 2010 - LE6docs.freitagsrunde.org/Veranstaltungen/javakurs_2010/vortrag6/java… · WiederholungModi ziererStandardmethodenVererbungZusammenfassung

Wiederholung Modifizierer Standardmethoden Vererbung Zusammenfassung

Abstrakte Klassen

• Eine abstrakte Klasse kann abstrakte Methoden undimplementierte Methoden enthalten

• Von einer abstrakten Klasse kann keine Instanz erstellt werden

• Eine Subklasse muss alle abstrakten Methodenimplementieren oder selbst abstrakt sein

Anwendung auf unser Beispiel Shape

OOP2, 25.03.2010 27 von 34

Page 28: Objektorientierung II - Javakurs 2010 - LE6docs.freitagsrunde.org/Veranstaltungen/javakurs_2010/vortrag6/java… · WiederholungModi ziererStandardmethodenVererbungZusammenfassung

Wiederholung Modifizierer Standardmethoden Vererbung Zusammenfassung

Interfaces

• Ermoglichen die Mehrfachvererbung

• Von einem Interface kann keine Instanz erstellt werden

• Es konnen nur Methodenkopfe und Variablen vorgegebenwerden

• Eine Subklasse muss alle durch das Interface vorgeschriebenenMethoden implementieren

Mehr dazu in der Ubung . . .

OOP2, 25.03.2010 28 von 34

Page 29: Objektorientierung II - Javakurs 2010 - LE6docs.freitagsrunde.org/Veranstaltungen/javakurs_2010/vortrag6/java… · WiederholungModi ziererStandardmethodenVererbungZusammenfassung

Wiederholung Modifizierer Standardmethoden Vererbung Zusammenfassung

Modifizierer und Standardmethoden

• Modifizierer public, protected, package, private zurZugriffsanderung

• Modifizierer static, final, abstract wofur?

• Anwendung vor der Klasse, Variable, Methode

• Standardmethoden: equals zum Vergleich und toString zurAusgabe

• Werden von Object geerbt und uberschrieben

OOP2, 25.03.2010 29 von 34

Page 30: Objektorientierung II - Javakurs 2010 - LE6docs.freitagsrunde.org/Veranstaltungen/javakurs_2010/vortrag6/java… · WiederholungModi ziererStandardmethodenVererbungZusammenfassung

Wiederholung Modifizierer Standardmethoden Vererbung Zusammenfassung

Vererbung

• Ableitung neuer Klassen von Elternklassen• Erweiterung der Elternklasse durch die Kindklasse• Uberschreiben von Methoden der Elternklasse

• Code kann wiederverwendet werden

• Als Zusatz konnen abstrakte Klassen und Interfaces benutztwerden

OOP2, 25.03.2010 30 von 34

Page 31: Objektorientierung II - Javakurs 2010 - LE6docs.freitagsrunde.org/Veranstaltungen/javakurs_2010/vortrag6/java… · WiederholungModi ziererStandardmethodenVererbungZusammenfassung

Wiederholung Modifizierer Standardmethoden Vererbung Zusammenfassung

Klausurhinweis

1

1geekandpoke.typepad.com

OOP2, 25.03.2010 31 von 34

Page 32: Objektorientierung II - Javakurs 2010 - LE6docs.freitagsrunde.org/Veranstaltungen/javakurs_2010/vortrag6/java… · WiederholungModi ziererStandardmethodenVererbungZusammenfassung

Wiederholung Modifizierer Standardmethoden Vererbung Zusammenfassung

Java?

1

1geekandpoke.typepad.com

OOP2, 25.03.2010 32 von 34

Page 33: Objektorientierung II - Javakurs 2010 - LE6docs.freitagsrunde.org/Veranstaltungen/javakurs_2010/vortrag6/java… · WiederholungModi ziererStandardmethodenVererbungZusammenfassung

Wiederholung Modifizierer Standardmethoden Vererbung Zusammenfassung

Weitere Recherchemoglichkeiten

• Polymorphie

• Exceptions

• Generics

• Ein-/Ausgabe

• Collections, Iteratoren

• IDE: Eclipse, NetBeans

OOP2, 25.03.2010 33 von 34

Page 34: Objektorientierung II - Javakurs 2010 - LE6docs.freitagsrunde.org/Veranstaltungen/javakurs_2010/vortrag6/java… · WiederholungModi ziererStandardmethodenVererbungZusammenfassung

Wiederholung Modifizierer Standardmethoden Vererbung Zusammenfassung

Referenzen

• http://java.sun.com/j2se/1.5.0/docs/api

• http://openbook.galileocomputing.de/javainsel8/

• http://www.javabuch.de

• http://geekandpoke.typepad.com

• http://www.mozilla.com/en-US/about/logo/

OOP2, 25.03.2010 34 von 34