28
Äußere Form ArrayList Vererbung API Einführung in Java Arne Hüffmeier Michelle Liebers, Dennis Hoffmann Tilman Lüttje, Jean Wiele Angelehnt an Java-Vorkurs der Freitagsrunde 1 / 28

Einführung in Java - uni-bielefeld.defrettloe/teach/alte-vorles/ueb/Java... · Äußere Form ArrayList VererbungAPI Einführung in Java ArneHüffmeier MichelleLiebers,DennisHoffmann

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Einführung in Java - uni-bielefeld.defrettloe/teach/alte-vorles/ueb/Java... · Äußere Form ArrayList VererbungAPI Einführung in Java ArneHüffmeier MichelleLiebers,DennisHoffmann

Äußere Form ArrayList Vererbung API

Einführung in Java

Arne Hüffmeier

Michelle Liebers, Dennis Hoffmann

Tilman Lüttje, Jean Wiele

Angelehnt an Java-Vorkurs der Freitagsrunde

1 / 28

Page 2: Einführung in Java - uni-bielefeld.defrettloe/teach/alte-vorles/ueb/Java... · Äußere Form ArrayList VererbungAPI Einführung in Java ArneHüffmeier MichelleLiebers,DennisHoffmann

Äußere Form ArrayList Vererbung API

1 Äußere FormKommentareFormatierungSchreibweise

2 ArrayListDie Liste

3 VererbungEinfache Vererbung

4 API

2 / 28

Page 3: Einführung in Java - uni-bielefeld.defrettloe/teach/alte-vorles/ueb/Java... · Äußere Form ArrayList VererbungAPI Einführung in Java ArneHüffmeier MichelleLiebers,DennisHoffmann

Äußere Form ArrayList Vererbung API

Kommentare

Wie war das noch gleich?

Nun können wir Programme schreiben, aber was bringt uns all das,wenn wir später nicht mehr wissen, was wir getan haben?

Man bräuchte eine Art Notizzettel, um sich merken zu können, wasim Quelltext steht.

Die Lösung: Kommentare!

3 / 28

Page 4: Einführung in Java - uni-bielefeld.defrettloe/teach/alte-vorles/ueb/Java... · Äußere Form ArrayList VererbungAPI Einführung in Java ArneHüffmeier MichelleLiebers,DennisHoffmann

Äußere Form ArrayList Vererbung API

Kommentare

Eine alte Methode

Gucken wir uns ein Beispiel an:p u b l i c s t a t i c i n t f ( i n t x ) {

i n t v1 , v2 , v3 ;v1 = 1 ;v2 = 1 ;f o r ( i n t i = 2 ; i < x ; i++) {

v3 = v1 ;v1 += v2 ;v2 = v3 ;

}r e t u r n v1 ;

}

Wer weiß was diese Methode ausgibt?Ist es gut zu erkennen?

4 / 28

Page 5: Einführung in Java - uni-bielefeld.defrettloe/teach/alte-vorles/ueb/Java... · Äußere Form ArrayList VererbungAPI Einführung in Java ArneHüffmeier MichelleLiebers,DennisHoffmann

Äußere Form ArrayList Vererbung API

Kommentare

Die KommentareEin paar Kommentaren machen diese Methode deutlichübersichtlicherInlinekommentar

// Kommentar b i s zum Ende de r Z e i l e

Oft mitten im Code zu findenMeistens ein Hinweis was an der Stelle passiert

Blockkommentar

/∗ Geht uebe rmehrere Z e i l e n ∗/

Ein mehrzeilige Beschreibung der Vorgänge an der Stelle.Kann auch innerhalb einer Zeile stehen, da er nur vom /* biszum */ geht. 5 / 28

Page 6: Einführung in Java - uni-bielefeld.defrettloe/teach/alte-vorles/ueb/Java... · Äußere Form ArrayList VererbungAPI Einführung in Java ArneHüffmeier MichelleLiebers,DennisHoffmann

Äußere Form ArrayList Vererbung API

Kommentare

JavaDoc

Es gibt noch einen dritten Kommentartyp, denJavaDoc-Kommentar./∗∗

∗ Ein Satz de r d i e K l a s s e oder Methode b e s c h r e i b t .∗ V i e l e w e i t e r e zum genauen E r k l a e r e n .∗∗ @author Arne Hue f fme i e r∗∗/

JavaDoc wird verwendet, um anderen Hilfestellung zu geben,beim Umgang mit dem eigenen Programm, oder sich selbst.JavaDoc unterscheidet sich von normalen Blockkommentaren,dass er mit /** statt mit /* eingeleitet wird.JavaDoc schreibt man immer über die zugehörige Methodeoder Klasse.

6 / 28

Page 7: Einführung in Java - uni-bielefeld.defrettloe/teach/alte-vorles/ueb/Java... · Äußere Form ArrayList VererbungAPI Einführung in Java ArneHüffmeier MichelleLiebers,DennisHoffmann

Äußere Form ArrayList Vererbung API

Kommentare

Übersicht über JavaDoc Besonderheiten

@author Angabe über den Autor der Klasse.@param x Angabe über den Parameter x, was der sein soll, oder

was damit geschehen wird.@return Angabe über den Rückgabewert der Methode.@version Angabe zur Version des Programms.

Zudem hat ein Satz in JavaDoc mit einem Punktbeendet zu werden.

Gucken wir uns den Code noch einmal an.

7 / 28

Page 8: Einführung in Java - uni-bielefeld.defrettloe/teach/alte-vorles/ueb/Java... · Äußere Form ArrayList VererbungAPI Einführung in Java ArneHüffmeier MichelleLiebers,DennisHoffmann

Äußere Form ArrayList Vererbung API

Kommentare

Eine alte Methode

/∗∗∗ Methode zum Ausgeben de r F i b o n a c c i z a h l von x .∗∗ @param x Zahl von de r w i r d i e F i b o n a c c i z a h l wo l l e n .∗ @re tu rn Die F i b o n a c c i z a h l an s t e l l e x .∗/

p u b l i c s t a t i c i n t f ( i n t x ) {// Va r i a b l e n zum a r b e i t e n .i n t v1 , v2 , v3 ;v1 = 1 ; // i n i t i a l i s i e r e n de r Va r i a b l e n mit 1 .v2 = 1 ; // f i b (1 ) = 1 && f i b (2 ) = 1/∗ So lange w i r noch n i c h t d i e x . z a h l e r r e i c h t haben .

und x g r o e s s e r a l s 2 i s t ∗/f o r ( i n t i = 2 ; i < x ; i++) {

// v1 i s t d i e g r o e s s e r e Zahl .v3 = v1 ; // v1 zw i s c h e n s p e i c h e r nv1 += /∗ v1 + ∗/ v2 ; // v2 au f v1 a u f a d d i e r e nv2 = v3 ; // das a l t e v1 i n v2 ab s p e i c h e r n// na e c h s t e r I t e r a t i o n s s c h r i t t

}// d i e g r o e s s e r e de r be i d en F i b o n a c c i z a h l e n i s t i n v1//und damit d i e an S t e l l e x .r e t u r n v1 ;

}

8 / 28

Page 9: Einführung in Java - uni-bielefeld.defrettloe/teach/alte-vorles/ueb/Java... · Äußere Form ArrayList VererbungAPI Einführung in Java ArneHüffmeier MichelleLiebers,DennisHoffmann

Äußere Form ArrayList Vererbung API

Kommentare

Eine alte Methode

Deutlich übersichtlicher so, oder?

Tut euch selber und allen, die euren Code irgendwann mal lesenwerden, den Gefallen und kommentiert ihn ausführlich.

9 / 28

Page 10: Einführung in Java - uni-bielefeld.defrettloe/teach/alte-vorles/ueb/Java... · Äußere Form ArrayList VererbungAPI Einführung in Java ArneHüffmeier MichelleLiebers,DennisHoffmann

Äußere Form ArrayList Vererbung API

Formatierung

Die richtige Ausrichtung

Hier ist ein Fehler enthalten:p u b l i c s t a t i c i n t f ( i n t x ) {i n t k = 0 ;f o r ( i n t i = 0 ; i <= x ; i++) {i f ( i % 2 == 0) {k = k + i ;}}

Dieser Fehler wäre offensichtlicher gewesen, hätte man eingerückt.p u b l i c s t a t i c i n t f ( i n t x ) {

i n t k = 0 ;f o r ( i n t i = 0 ; i <= x ; i++) {

i f ( i % 2 == 0) {k = k + i ;

}}

Wir sehen sofort, da fehlt eine Klammer!

10 / 28

Page 11: Einführung in Java - uni-bielefeld.defrettloe/teach/alte-vorles/ueb/Java... · Äußere Form ArrayList VererbungAPI Einführung in Java ArneHüffmeier MichelleLiebers,DennisHoffmann

Äußere Form ArrayList Vererbung API

Formatierung

NetBeans

NetBeans ist nett zu uns. Es hat extra eine Funktion zurAutoformatierung, welche über das Tastenkürzel

Alt + Shift + F

den Quellcode richtig formatiert.

11 / 28

Page 12: Einführung in Java - uni-bielefeld.defrettloe/teach/alte-vorles/ueb/Java... · Äußere Form ArrayList VererbungAPI Einführung in Java ArneHüffmeier MichelleLiebers,DennisHoffmann

Äußere Form ArrayList Vererbung API

Schreibweise

Richtig benennen

S t r i n g Meine−Oma−f a e h r t−im−Huehne r s t a l l−Motorrad = "Hallo␣Welt" ;

Eine sinnvolle Benennung von Variablen, Methoden oder Klassengehört zum guten Ton.Auch Java hat einige Konventionen, die, wenn man sich an siehält, lesbaren und verständlichen Code produzieren.

12 / 28

Page 13: Einführung in Java - uni-bielefeld.defrettloe/teach/alte-vorles/ueb/Java... · Äußere Form ArrayList VererbungAPI Einführung in Java ArneHüffmeier MichelleLiebers,DennisHoffmann

Äußere Form ArrayList Vererbung API

Schreibweise

Richtig benennen

Variablen und Methodennamen mit Kleinbuchstabenanfangen.Variablen sinnvoll nach ihrem Verwendungszweck benennen.Methoden ebenso.Klassen großschreiben.Zählvariablen i,j,k nennen.CamelCase statt Unter- oder Bindestriche verwenden.

13 / 28

Page 14: Einführung in Java - uni-bielefeld.defrettloe/teach/alte-vorles/ueb/Java... · Äußere Form ArrayList VererbungAPI Einführung in Java ArneHüffmeier MichelleLiebers,DennisHoffmann

Äußere Form ArrayList Vererbung API

Schreibweise

CamelCase

Was ist dieses CamelCase eigentlich?

CamelCase ist eine Schreibweise von zusammengesetzten Wörtern.

So wird im CamalCase aus

gib mir Fischdurch das Streichen der Leerzeichen und Großschreiben des erstenBuchstaben des nächsten Wortes

gibMirFisch

14 / 28

Page 15: Einführung in Java - uni-bielefeld.defrettloe/teach/alte-vorles/ueb/Java... · Äußere Form ArrayList VererbungAPI Einführung in Java ArneHüffmeier MichelleLiebers,DennisHoffmann

Äußere Form ArrayList Vererbung API

Schreibweise

Beispiele für gute Namen

GUTFehlerArrayIndexOutOfBoundsException

Index eines Arrays istaußerhalb der Grenze

Methode isCharInWord Ist das Zeichen imWort?

Variable isInWord Impliziert Ja/Nein-Frage → boolean

schlechtMethode convert Konvertiert zu was?Variable foo Könnte alles mögliche

sein

15 / 28

Page 16: Einführung in Java - uni-bielefeld.defrettloe/teach/alte-vorles/ueb/Java... · Äußere Form ArrayList VererbungAPI Einführung in Java ArneHüffmeier MichelleLiebers,DennisHoffmann

Äußere Form ArrayList Vererbung API

Die Liste

Ein besseres Array

Java gibt uns eine Möglichkeit Arrays mit variabler Länge zuerstellen.

Die ArrayList ist einem Array sehr ähnlich.

Wir könnendie Länge ändern.auf einzelne Elemente zugreifen.sie automatisch sortieren lassen.

16 / 28

Page 17: Einführung in Java - uni-bielefeld.defrettloe/teach/alte-vorles/ueb/Java... · Äußere Form ArrayList VererbungAPI Einführung in Java ArneHüffmeier MichelleLiebers,DennisHoffmann

Äußere Form ArrayList Vererbung API

Die Liste

Wie bekomme ich diese Liste?

Nun erklären wir euch, wie man eine ArrayList nutzt.Zur Vorbereitung:

impor t j a v a . u t i l . A r r a y L i s t ;

Erklärungimport : sagt Java, dass wir etwas von außerhalb unserer

Klasse verwenden wollen.java.util.ArrayList : ist der Verweis auf die Quelle, die wir

verwenden wollen.

Diese Anweisung kommt über den Beginn der Klasse.

17 / 28

Page 18: Einführung in Java - uni-bielefeld.defrettloe/teach/alte-vorles/ueb/Java... · Äußere Form ArrayList VererbungAPI Einführung in Java ArneHüffmeier MichelleLiebers,DennisHoffmann

Äußere Form ArrayList Vererbung API

Die Liste

In Code

Hier ein Beispiel:impor t j a v a . u t i l . A r r a y L i s t ;p u b l i c c l a s s Test {

p r i v a t e A r r a yL i s t <I n t e g e r > a r r a y L i s t ;

p u b l i c Test ( ) {a r r a y L i s t = new Ar r a yL i s t <>() ;

}}

ArrayList erklärtArrayList<Integer> : Dies deutet an, dass wir eine ArrayList mit

Integern machen wollen.Ähnlich wie int[].

ArrayList<>() : Konstruktor der ArrayList. Gleichbedeutend wieArrayList<Integer>();Dies erstellt uns eine Liste der Länge 0.

18 / 28

Page 19: Einführung in Java - uni-bielefeld.defrettloe/teach/alte-vorles/ueb/Java... · Äußere Form ArrayList VererbungAPI Einführung in Java ArneHüffmeier MichelleLiebers,DennisHoffmann

Äußere Form ArrayList Vererbung API

Die Liste

Der Harken

Warum schreibe ich da Integer und nicht einfach int?

Weil eine ArrayList nur mit Objekten funktioniert.Ein int ist kein Objekt, darum nutzen wir Integer,welcher eine Objektvariante des int ist.

Und was bringt mir das für Vorteile?

Ein Array mit einer beliebigen Länge!

So geht es

19 / 28

Page 20: Einführung in Java - uni-bielefeld.defrettloe/teach/alte-vorles/ueb/Java... · Äußere Form ArrayList VererbungAPI Einführung in Java ArneHüffmeier MichelleLiebers,DennisHoffmann

Äußere Form ArrayList Vererbung API

Die Liste

Hinzufüegen

Einige nützliche Beispiele:

Eintrag hinzufügen

a r r a y L i s t . add (5 ) ;

5 wird ans Ende des Arrays hinzugefügt.

Eintrag abfragen

a r r a y L i s t . ge t (0 ) ;

Gibt das erste Element der Liste zurück.

20 / 28

Page 21: Einführung in Java - uni-bielefeld.defrettloe/teach/alte-vorles/ueb/Java... · Äußere Form ArrayList VererbungAPI Einführung in Java ArneHüffmeier MichelleLiebers,DennisHoffmann

Äußere Form ArrayList Vererbung API

Die Liste

Hinzufüegen

Einige nützliche Beispiele:

Länge abfragen

a r r a y L i s t . s i z e ( ) ;

Gibt uns die Anzahl der Einträge in unserer ArrayList zurück.

Eintrag entfernen

a r r a y L i s t . remove (0 ) ;

Löscht das erste Element der ArrayList.

21 / 28

Page 22: Einführung in Java - uni-bielefeld.defrettloe/teach/alte-vorles/ueb/Java... · Äußere Form ArrayList VererbungAPI Einführung in Java ArneHüffmeier MichelleLiebers,DennisHoffmann

Äußere Form ArrayList Vererbung API

Die Liste

Weitere Features

Kann die auch mehr?

Ja, in der Java-API steht noch viel mehr.

22 / 28

Page 23: Einführung in Java - uni-bielefeld.defrettloe/teach/alte-vorles/ueb/Java... · Äußere Form ArrayList VererbungAPI Einführung in Java ArneHüffmeier MichelleLiebers,DennisHoffmann

Äußere Form ArrayList Vererbung API

Einfache Vererbung

Die Bahn ist nicht zufrieden

Es ist zwar schön, dass wir die Wagen eine bestimmte Klassezuteilen können, aber die Deutsche Bahn will nunDoppelstockwaggons verwenden.

Wie setzen wir das nun um?

Wir wollen nur ungern wieder von vorn anfangen, also verwendenwir unseren Waggon weiter!Betrachten wir die Unterschiede

Wir können oben und unten unterschiedliche Klassen habenWir können oben und unten unterschiedlich viele Passagierehaben

Eine Idee:Wir erweitern den Waggon um passagiereOben und klasseOben!

23 / 28

Page 24: Einführung in Java - uni-bielefeld.defrettloe/teach/alte-vorles/ueb/Java... · Äußere Form ArrayList VererbungAPI Einführung in Java ArneHüffmeier MichelleLiebers,DennisHoffmann

Äußere Form ArrayList Vererbung API

Einfache Vererbung

Der neuere Waggon

So sähe unser Waggon wie folgt ausp u b l i c c l a s s Waggon {p r i v a t e i n t k l a s s e , k l a s seOben ;p r i v a t e i n t p a s s a g i e r e , pa s sag i e r eOben ;

p u b l i c Waggon( i n t k l a s s e , i n t k l a s seOben ) {t h i s . k l a s s e = k l a s s e ;t h i s . k l a s seOben = k la s seOben ;p a s s a g i e r e = 0 ;pa s sag i e r eOben = 0 ;}}

Natürlich werden auch die Setter und Getter Methoden erweitertum diese beiden Attribute.

24 / 28

Page 25: Einführung in Java - uni-bielefeld.defrettloe/teach/alte-vorles/ueb/Java... · Äußere Form ArrayList VererbungAPI Einführung in Java ArneHüffmeier MichelleLiebers,DennisHoffmann

Äußere Form ArrayList Vererbung API

Einfache Vererbung

Ein schwieriger Kunde

Kaum ist unsere Version des Doppelstockwaggons fertig, ruft derBahnchef wutentbrannt bei uns an.

Er beschwert sich, dass er nun nur noch Doppelstockwaggonsverwenden kann, aber ein ICE keine hat. Wir sollen dieses Problemumgehend beheben, aber die Möglichkeit lassen, einen Zug mitDoppelstockwaggons ausstatten zu können.

Wir bräuchten also weiterhin unseren alten Waggon und müsseneinen Weg finden, einen Sonderfall davon zu erstellen, den wirDoppelstockwaggon nennen sollen.

Java gibt uns da eine Möglichkeit. Sie nennt sich Vererbung.

25 / 28

Page 26: Einführung in Java - uni-bielefeld.defrettloe/teach/alte-vorles/ueb/Java... · Äußere Form ArrayList VererbungAPI Einführung in Java ArneHüffmeier MichelleLiebers,DennisHoffmann

Äußere Form ArrayList Vererbung API

Einfache Vererbung

Vererbung

Wir haben schnellstmöglich unseren Waggon wieder zurück gebaut.Nun kommt der zweite Versuch, einen Doppelstockwaggon zuerstellen.

26 / 28

Page 27: Einführung in Java - uni-bielefeld.defrettloe/teach/alte-vorles/ueb/Java... · Äußere Form ArrayList VererbungAPI Einführung in Java ArneHüffmeier MichelleLiebers,DennisHoffmann

Äußere Form ArrayList Vererbung API

Einfache Vererbung

Zweiter Versuch eines Doppelstockwaggons

p u b l i c c l a s s Doppelstockwaggon ex t end s Waggon {p r i v a t e i n t k l a s seOben ;p r i v a t e i n t pa s sag i e r eOben ;

p u b l i c Doppelstockwaggon ( i n t k l a s s e , i n t k l a s seOben ) {supe r ( k l a s s e ) ;t h i s . k l a s seOben = k la s seOben ;pa s sag i e r eOben = 0 ;}

Doppelstockwaggon erklärtextends sagt Java, dass unser Doppelstockwaggon von Waggon erbt, also alles kann, was Waggon

kann und auch als Waggon behandelt werden kann.

super() ruft den Konstruktor der Klasse auf, von der wir geerbt haben. In dem Fall wird also

dadurch ein Waggon erstellt, welchen wir nur ergänzen.

Die Klasse Waggon wird aus Sicht des Doppelstockwaggons alsSuperklasse bezeichnet, weil wir den Konstruktor des Waggons mitsuper aufrufen.

27 / 28

Page 28: Einführung in Java - uni-bielefeld.defrettloe/teach/alte-vorles/ueb/Java... · Äußere Form ArrayList VererbungAPI Einführung in Java ArneHüffmeier MichelleLiebers,DennisHoffmann

Äußere Form ArrayList Vererbung API

Die Java API

Das beste Nachschlagewerk für Java.

http://docs.oracle.com/javase/8/docs/api/

oder nach Java API googlen.’Java ist eine Insel’ ist ebenfalls sehr empfehlenswert

http://openbook.galileocomputing.de/javainsel/

28 / 28