Äußere Form ArrayList Vererbung API. Einführung in Java. Arne Hüffmeier. Michelle Liebers, Dennis Hoffmann. Tilman Lüttje, Jean Wiele

Ähnliche Dokumente
Einführung in Java. Arne Hüffmeier. Angelehnt an Java-Vorkurs der Freitagsrunde. Methoden implementieren. Michelle Liebers, Dennis Hoffmann

AuD-Tafelübung T-B5b

Programmieren I + II Regeln der Code-Formatierung

Programmieren I + II Regeln der Code-Formatierung

Einführung in die Programmierung für NF MI. Übung 07

Einstieg in die Informatik mit Java

Java Vererbung. Inhalt

1 Klassen anlegen und Objekte erzeugen

Programmierkonventionen - 1 -

Organisatorisches. drei Gruppen Gruppe 1: 10:10-11:40, Gruppe 2: 11:45-13:15 Gruppe 3: 13:20-14:50

Organisatorisches. Neue Übungsblätter: Nur mehr elektronisch? Abgabe Di, , 14 Uhr bis Do, , 8Uhr

ADT: Java Collections und ArrayList

1 Klassen anlegen und Objekte erzeugen

API und Kommentare. Javakurs 2014, 4. Vorlesung. Georg Hieronimus. basierend auf der Vorlage von Theresa Enghardt, Mario Bodemann und Sebastian Dyroff

Programmierpraktikum Java Entdecken Merkblatt 2

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 13. Listen. Listen 1

Fragen zur OOP in Java

Programmiermethodik 1. Klausur

Studentische Lösung zum Übungsblatt Nr. 7

Programmierkurs Java

Klausur Grundlagen der Programmierung

Wie entwerfe ich ein Programm?

Einführung in die Java- Programmierung

Programmier-Richtlinien

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke

2. Vererbung und Kapselung

Javakurs für Anfänger

JAVA Kommentieren mit Javadoc

Programmierstarthilfe SS 2008 Fakultät für Ingenieurwissenschaften und Informatik 8. Blatt Für den 16. und

Selbststudium OOP6 & ALG Programmieren 1 - H1103 Felix Rohrer

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Vererbung. Oberklassen und Unterklassen

Javakurs für Anfänger

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

Einführung in die Programmierung WS 2009/10. Übungsblatt 7: Imperative Programmierung, Parameterübergabe

Überschreiben von Methoden

Einführung in die Programmierung

9. Zurück zur OOP: Vererbung und Polymorphismus

Institut für Programmierung und Reaktive Systeme. Java 3. Markus Reschke

Objekte haben eine eigene Notation, also Schreibweise, beim Aufruf:

Institut für Programmierung und Reaktive Systeme 5. Dezember Programmieren I. 5. Übungsblatt

Programmieren in Java -Eingangstest-

Java: Vererbung. Teil 3: super()

Staubsauger-Roboter. Als Vorlage dienen dir drei Klassen: RECHTECK Damit kannst du die Wände des Raums darstellen.

Einführung in die Programmierung mit Java

3. Grundregeln für die Java-Programmierung

Schwerpunkte. 10. Felder (Arrays) Grundprinzip von Arrays. Klassifikation von Typen in Programmiersprachen

Selbststudium OOP7 & ALG2 Auftrag

Programmieren I. Strategie zum Entwurf von Klassen. Vorlesung 5. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011

2.13 Vererbung. Rainer Feldmann Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/ Article

Methoden und Wrapperklassen

Problem: Was ist, wenn der Stapel voll ist? Idee: Erzeuge dynamisch ein grösseres Array und kopiere um. Dynamische Anpassung der Größe

Javakurs für Anfänger

public interface Stack<E> { public void push(e e); public E pop();

Probeklausur: Programmierung WS04/05

javascript Coding-Guidelines 2. Ausgabe Februar 2015 Der Guideline beschreibt den verwendeten Coding-Stil von javascript als eigene Richtline.

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 10

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH

Computeranwendung und Programmierung (CuP)

Programmierkurs Java. Vererbung. Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)

3. Das erste eigene Programm mit Greenfoot: Litte Crab

Tel PHP-Coding-Guidelines PHP Coding-Guidelines 1. Ausgabe Oktober 2012

Android will doch nur spielen. Java Übung

Durch die Möglichkeit, Ein- und Ausgaben auf der Konsole durchzuführen, kann man auch systematisch das Verhalten von Klassen analysieren.

Girls Day 2017 Programmierung

Objektorientierte Programmierung Studiengang Medieninformatik

Schein-/Bachelorklausur Teil 2 am Zulassung: Mindestens 14 Punkte in Teilklausur 1 und 50% der Übungspunkte aus dem 2. Übungsblock.

Programmieren I. Dokumentation mit javadoc Heusch 10.4 Ratz Institut für Angewandte Informatik

Diana Lange. Generative Gestaltung Grundlagen von Processing

Vererbung und Traits

Selbststudium OOP Programmieren 1 - H1103 Felix Rohrer

Tag 5. Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme)

Vorkurs Informatik WiSe 16/17

Qualitätssicherungskonzept

Java I Vorlesung Collections

Javakurs für Anfänger

Programmierkurs Java

Schlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe:

Einführung in die Programmierung für NF MI. Übung 04

12 Abstrakte Klassen, finale Klassen und Interfaces

GI Vektoren

Besprechung. Übung 1 Software Engineering

Repetitorium Informatik (Java)

pue08 December 9, 2016

Übungsblatt 4. Java Vorkurs (WS 2015)

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik

Einstieg in die Informatik mit Java

Einführung in die Programmierung I. 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich

Felder. M. Jakob. 28. April Gymnasium Pegnitz

3. Übungsbesprechung Programmkonstruktion

(6) Verknüpfen der GUI mit dem Spiel

C# - Einführung in die Programmiersprache Arrays, Enumeration und Collections. Leibniz Universität IT Services Anja Aue

Statische Methoden, Vererbung, Benutzereingabe

3. Anatomie eines imperativen Java- Programms

Java Einführung Vererbung und Polymorphie. Kapitel 13

C# - Einführung in die Programmiersprache Methoden. Leibniz Universität IT Services

Transkript:

Einführung in Java Arne Hüffmeier Michelle Liebers, Dennis Hoffmann Tilman Lüttje, Jean Wiele Angelehnt an Java-Vorkurs der Freitagsrunde 1 / 28

1 Äußere Form Kommentare Formatierung Schreibweise 2 ArrayList Die Liste 3 Vererbung Einfache Vererbung 4 API 2 / 28

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, was im Quelltext steht. Die Lösung: Kommentare! 3 / 28

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

Kommentare Die Kommentare Ein paar Kommentaren machen diese Methode deutlich übersichtlicher Inlinekommentar // Kommentar b i s zum Ende d e r Z e i l e Oft mitten im Code zu finden Meistens ein Hinweis was an der Stelle passiert Blockkommentar / Geht u e b e r mehrere 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 /* bis zum */ geht. 5 / 28

Kommentare JavaDoc Es gibt noch einen dritten Kommentartyp, den JavaDoc-Kommentar. / Ein Satz d e r d i e K l a s s e o d e r Methode b e s c h r e i b t. V i e l e weitere zum genauen Erklaeren. @author Arne H u e f f m e 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 Methode oder Klasse. 6 / 28

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 Punkt beendet zu werden. Gucken wir uns den Code noch einmal an. 7 / 28

Kommentare Eine alte Methode / Methode zum Ausgeben d e r F i b o n a c c i z a h l von x. @param x Zahl von der wir d ie F i b o n a c c i z a h l wollen. @ r e t u r n 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 ) { // V a 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 d e r V a r i a b l e n mit 1. v2 = 1 ; // f i b ( 1 ) = 1 && f i b ( 2 ) = 1 / S o l a n g e 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 z w i s c h e n s p e i c h e r n v1 += / v1 + / v2 ; // v2 a u f v1 a u f a d d i e r e n v2 = v3 ; // das a l t e v1 in v2 abspeichern // n a 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 d e r b e i d e n 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

Kommentare Eine alte Methode Deutlich übersichtlicher so, oder? Tut euch selber und allen, die euren Code irgendwann mal lesen werden, den Gefallen und kommentiert ihn ausführlich. 9 / 28

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

Formatierung NetBeans NetBeans ist nett zu uns. Es hat extra eine Funktion zur Autoformatierung, welche über das Tastenkürzel den Quellcode richtig formatiert. Alt + Shift + F 11 / 28

Schreibweise Richtig benennen S t r i n g Meine Oma f a e h r t im H u e h n e r s t a l l Motorrad = " Hallo Welt " ; Eine sinnvolle Benennung von Variablen, Methoden oder Klassen gehört zum guten Ton. Auch Java hat einige Konventionen, die, wenn man sich an sie hält, lesbaren und verständlichen Code produzieren. 12 / 28

Schreibweise Richtig benennen Variablen und Methodennamen mit Kleinbuchstaben anfangen. 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

Schreibweise CamelCase Was ist dieses CamelCase eigentlich? CamelCase ist eine Schreibweise von zusammengesetzten Wörtern. So wird im CamalCase aus gib mir Fisch durch das Streichen der Leerzeichen und Großschreiben des ersten Buchstaben des nächsten Wortes gibmirfisch 14 / 28

Schreibweise Beispiele für gute Namen GUT Fehler ArrayIndexOutOfBoundsException Index eines Arrays ist außerhalb der Grenze Methode ischarinword Ist das Zeichen im Wort? Variable isinword Impliziert Ja/Nein- Frage boolean Methode convert Variable foo schlecht Konvertiert zu was? Könnte alles mögliche sein 15 / 28

Die Liste Ein besseres Array Java gibt uns eine Möglichkeit Arrays mit variabler Länge zu erstellen. Die ArrayList ist einem Array sehr ähnlich. Wir können die Länge ändern. auf einzelne Elemente zugreifen. sie automatisch sortieren lassen. 16 / 28

Die Liste Wie bekomme ich diese Liste? Nun erklären wir euch, wie man eine ArrayList nutzt. Zur Vorbereitung: i m p o r t j a v a. u t i l. A r r a y L i s t ; Erklärung import : 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

Die Liste In Code Hier ein Beispiel: i m p o r 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 y L 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 A r r a y L i s t <>() ; } ArrayList erklärt ArrayList<Integer> : Dies deutet an, dass wir eine ArrayList mit Integern machen wollen. Ähnlich wie int[]. ArrayList<>() : Konstruktor der ArrayList. Gleichbedeutend wie ArrayList<Integer>(); Dies erstellt uns eine Liste der Länge 0. 18 / 28

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

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. g e t ( 0 ) ; Gibt das erste Element der Liste zurück. 20 / 28

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

Die Liste Weitere Features Kann die auch mehr? Ja, in der Java-API steht noch viel mehr. 22 / 28

Einfache Vererbung Die Bahn ist nicht zufrieden Es ist zwar schön, dass wir die Wagen eine bestimmte Klasse zuteilen können, aber die Deutsche Bahn will nun Doppelstockwaggons verwenden. Wie setzen wir das nun um? Wir wollen nur ungern wieder von vorn anfangen, also verwenden wir unseren Waggon weiter! Betrachten wir die Unterschiede Wir können oben und unten unterschiedliche Klassen haben Wir können oben und unten unterschiedlich viele Passagiere haben Eine Idee: Wir erweitern den Waggon um passagiereoben und klasseoben! 23 / 28

Einfache Vererbung Der neuere Waggon So sähe unser Waggon wie folgt aus p 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 s e O b e n ; p r i v a t e i n t p a s s a g i e r e, p a s s a g i e r e O b e n ; p u b l i c Waggon ( i n t k l a s s e, i n t k l a s s e O b e n ) { t h i s. k l a s s e = k l a s s e ; t h i s. k l a s s e O b e n = k l a s s e O b e n ; p a s s a g i e r e = 0 ; p a s s a g i e r e O b e n = 0 ; } } Natürlich werden auch die Setter und Getter Methoden erweitert um diese beiden Attribute. 24 / 28

Einfache Vererbung Ein schwieriger Kunde Kaum ist unsere Version des Doppelstockwaggons fertig, ruft der Bahnchef wutentbrannt bei uns an. Er beschwert sich, dass er nun nur noch Doppelstockwaggons verwenden kann, aber ein ICE keine hat. Wir sollen dieses Problem umgehend beheben, aber die Möglichkeit lassen, einen Zug mit Doppelstockwaggons ausstatten zu können. Wir bräuchten also weiterhin unseren alten Waggon und müssen einen Weg finden, einen Sonderfall davon zu erstellen, den wir Doppelstockwaggon nennen sollen. Java gibt uns da eine Möglichkeit. Sie nennt sich Vererbung. 25 / 28

Einfache Vererbung Vererbung Wir haben schnellstmöglich unseren Waggon wieder zurück gebaut. Nun kommt der zweite Versuch, einen Doppelstockwaggon zu erstellen. 26 / 28

Einfache Vererbung Zweiter Versuch eines Doppelstockwaggons p u b l i c c l a s s Doppelstockwaggon e x t e n d s Waggon { p r i v a t e i n t k l a s s e O b e n ; p r i v a t e i n t p a s s a g i e r e O b e n ; p u b l i c Doppelstockwaggon ( i n t k l a s s e, i n t k l a s s e O b e n ) { s u p e r ( k l a s s e ) ; t h i s. k l a s s e O b e n = k l a s s e O b e n ; p a s s a g i e r e O b e n = 0 ; } Doppelstockwaggon erklärt extends 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 als Superklasse bezeichnet, weil wir den Konstruktor des Waggons mit super aufrufen. 27 / 28

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