einführung in java - uni-bielefeld.defrettloe/teach/alte-vorles/ueb/java... · Äußere form...
Post on 19-Oct-2020
3 Views
Preview:
TRANSCRIPT
Ä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
Äußere Form ArrayList Vererbung API
1 Äußere FormKommentareFormatierungSchreibweise
2 ArrayListDie Liste
3 VererbungEinfache Vererbung
4 API
2 / 28
Ä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
Ä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
Ä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
Ä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
Ä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
Ä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
Ä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
Ä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
Ä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
Ä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
Ä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
Ä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
Ä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
Ä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
Ä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
Ä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
Ä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
Ä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
Ä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
Ä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
Ä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
Ä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
Ä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
Ä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
Ä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
Ä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
top related