Einstieg in die Informatik mit Java

Ähnliche Dokumente
Einstieg in die Informatik mit Java

Klassen mit Instanzmethoden

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Repetitorium Informatik (Java)

Programmierkurs. Manfred Jackel

Programmiertechnik Klassenmethoden

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Klassenmethoden

JAVA - Methoden

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

Präzedenz von Operatoren

Einstieg in die Informatik mit Java

Java Einführung Methoden. Kapitel 6

Wiederholung Wozu Methoden? Methoden Schreiben Methoden Benutzen Rekursion?! Methoden. Javakurs 2012, 3. Vorlesung

Einstieg in die Informatik mit Java

Grundlagen der Programmierung Prof. H. Mössenböck. 6. Methoden

Einstieg in die Informatik mit Java

5.5.8 Öffentliche und private Eigenschaften

JAVA - Methoden - Rekursion

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden

Computeranwendung und Programmierung (CuP)

Prof. W. Henrich Seite 1

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Die Programmiersprache C99: Zusammenfassung

Einstieg in die Informatik mit Java

Methoden (fortgeschritten) in C# - 1

Java Vererbung. Inhalt

Java Kurs für Anfänger Einheit 5 Methoden

Klassen und Objekte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

Einführung in den Einsatz von Objekt-Orientierung mit C++ I

C++ - Einführung in die Programmiersprache Funktionen. Leibniz Universität IT Services Anja Aue

Prozeduren und Funktionen

2. Methoden. n Generelles zum Aufruf von Methoden. n Parameterübergabemechanismen (call by value, call by reference)

6 Speicherorganisation

3 Objektorientierte Konzepte in Java

Objektorientierte Programmierung. Objektorientierte Programmierung. Klasse. Objekt. Beispiel: Sportfest1. Methode. Eine Einführung mit BlueJ

4. Objektorientierte Programmierung

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Eine Einführung in C-Funktionen

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Der Operator this. Wir betrachten nochmals die Klassendefinition von Ballon.

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Ein erstes Java-Programm

Algorithmen und Programmierung II

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 4

Objektorientierte Programmierung

Algorithmen & Programmierung. Steuerstrukturen im Detail Selektion und Iteration

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

3. Anweisungen und Kontrollstrukturen

Speicher und Adressraum

Einführung in die Informatik

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode

12 Klassen in Java Instanz- und Klassenbestandteile

Einleitung Entwicklung in C Hello-World! Konstrukte in C Zusammenfassung Literatur. Grundlagen von C. Jonas Gresens

Deklarationen in C. Prof. Dr. Margarita Esponda

Zeiger: Der Adressoperator &

Informationsverarbeitung im Bauwesen

Informationsverarbeitung im Bauwesen

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

Objektorientierte Programmierung OOP Programmieren mit Java

Einführung in die Java- Programmierung

Algorithmen und Datenstrukturen

JAVA-Datentypen und deren Wertebereich

Programmieren in Java

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

Software Engineering Klassendiagramme Einführung

MATLAB - Funktionen. function fcn (Parameterliste) 1. Zeiger

Letztes Mal. static int ggt(int a, int b) { if (a == b) return a; else if (a > b) return ggt(a-b,b); else if (a < b) return ggt(a,b-a);

Programmieren I + II Regeln der Code-Formatierung

Aufgabe 1. »Programmieren«, WS 2006/2007. Nino Simunic M.A.

1.4. Funktionen. Objektorientierte Programmierung mit C++

Überschreiben von Methoden

Java Einführung Methoden in Klassen

Grundzüge der Programmierung. Wiederverwendung VERERBUNG

Methoden und Funktionen in Scala

Programmierkurs Java

Programmieren in C++ Überladen von Methoden und Operatoren

Semestralklausur Einführung in die Programmierung, WS 2005/06, Seite 1/6 Name, Vorname, Matrikelnummer: Gruppe A

Aufbau von Klassen. class punkt {...

VL5-Methoden: Void-Methoden und Funktionen

Typumwandlungen bei Referenztypen

Objektorientierte Programmierung mit Java. Grundlagen Übersicht. Programmiersprachen

Kapitel 6. Vererbung

Objektorientiertes Programmieren für Ingenieure

Dr. Monika Meiler. Inhalt

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Blöcke. Beispiel: Variablen in Blöcken

Einstieg in die Informatik mit Java

Programmieren Tutorium

2.4.3 Polymorphie (Wiederholung von Alp2)

Einführung in die C-Programmierung

Programmierkurs Python I

Die Programmiersprache C Eine Einführung

Transkript:

1 / 27 Einstieg in die Informatik mit Java Methoden / Funktionen Gerd Bohlender Institut für Angewandte und Numerische Mathematik

Gliederung 2 / 27 1 Überblick 2 Zweck von Methoden 3 Methodendefinition 4 void-methoden 5 Parameterübergabe, Methodenaufruf 6 Spezialfälle 7 Überladen von Methoden

Gliederung 3 / 27 1 Überblick 2 Zweck von Methoden 3 Methodendefinition 4 void-methoden 5 Parameterübergabe, Methodenaufruf 6 Spezialfälle 7 Überladen von Methoden

Überblick In diesem Kapitel betrachten wir Methoden als spezielle Form von Funktionen. Standardfunktionen Bekannt: Standardfunktionen wie Math.sin, Math.exp Eigene Funktionen Definition beliebiger eigener Funktionen 4 / 27

Gliederung 5 / 27 1 Überblick 2 Zweck von Methoden 3 Methodendefinition 4 void-methoden 5 Parameterübergabe, Methodenaufruf 6 Spezialfälle 7 Überladen von Methoden

6 / 27 Methoden Methoden bilden das Analogon zu den aus anderen Programmiersprachen bekannten Konzepten wie Funktionen, Prozeduren, Unterprogrammen oder Subroutines. Zweck: mehrfach vorkommender Quelltext kann zusammengefasst werden (Einsparung an Quelltext), Methoden können in anderen Programmen leicht wieder verwendet werden, Programme können übersichtlicher gestalten werden, Methoden können separat getestet werden, dadurch: Fehlermöglichkeiten werden reduziert. In diesem Abschnitt werden zunächst nur statische Methoden, d. h. nicht objektorientierte Methoden, behandelt, die aus diesem Grunde mit dem Modifizierer static markiert werden.

Gliederung 7 / 27 1 Überblick 2 Zweck von Methoden 3 Methodendefinition 4 void-methoden 5 Parameterübergabe, Methodenaufruf 6 Spezialfälle 7 Überladen von Methoden

Methodendefinition Syntax Modifizierer Typspezifikation Methodenname (formale Parameterliste) { Variablendefinitionen und Anweisungen Die formale Parameterliste (oder formale Argumentliste ) setzt sich jeweils aus der Typspezifikation gefolgt vom zugehörigen Bezeichner zusammen und wird durch Kommata getrennt: Typ 1 Name 1,..., Typ n Name n Demobeispiel s t a t i c i n t zehnmal ( i n t x ) { return x 10; 8 / 27

9 / 27 Methodendefinition, Regeln Einige Regeln bei der Methodendefinition: Formale Parameter sind spezielle Variablen, die Werte an eine Methode übergeben; in der Methode dürfen sie als normale Variable verwendet werden. Die formale Parameterliste darf leer sein, die runden Klammern hingegen müssen stehen. Für jeden Parameter muss eine eigene Typspezifikation existieren. Demobeispiel s t a t i c i n t ohneparameter ( ) {... s t a t i c i n t mehrereparameter ( i n t x, i n t y ) {...

10 / 27 Methodendefinition, Weitere Regeln Referenztypen sind als Parameter und Ergebnisse zugelassen, also Zeichenketten, Feldtypen und beliebige andere Objekte (dies wird später im Detail behandelt). Demobeispiel: String s t a t i c S t r i n g zweimal ( S t r i n g s t r ) { return s t r + + s t r ;

Methodendefinition: Ergebnistyp Die Rückgabe des Ergebnisses erfolgt über return Ausdruck; Der Ausdruck muss dabei zuweisungskompatibel zum Typ der Methode sein (also gleicher Typ oder automatisch konvertierbar). Varianten von return s t a t i c double r i c h t i g 1 ( double x ) { return 3.14159 x + 5.678; / / okay Varianten von return s t a t i c double r i c h t i g 2 ( i n t x ) { return x +7; / / auch okay, wird k o n v e r t i e r t 11 / 27

12 / 27 Methodendefinition: fehlendes return Mit der return Anweisung wird die Methode abgebrochen und das angegebene Ergebnis zurückgeliefert. Insgesamt muss ein return durchlaufen werden, sonst tritt ein Fehler auf. Achtung Ein fehlendes return ist eine beliebte Fehlerquelle bei der Verwendung von bedingten und verzweigten Anweisungen! s t a t i c i n t f a l s c h ( i n t x ) { i f ( x > 0) return x +1;

Methodendefinition: fehlendes return In jedem Zweig ein return s t a t i c i n t r i c h t i g 1 ( i n t x ) { i f ( x > 0) return x +1; else return 0; / / a l s B e i s p i e l Variante: ein return am Ende s t a t i c i n t r i c h t i g 2 ( i n t x ) { i f ( x > 0) return x +1; / /... return x ; 13 / 27

14 / 27 Komplettes Beispiel Beispiel Methode zur Berechnung von x n mit n ganzzahlig s t a t i c double power ( double x, i n t n ) { i n t m = Math. abs ( n ) ; / / Absolut Betrag von n double y = 1. 0 ; / / Berechnung von x ˆm for ( i n t i =0; i <m; ++ i ) y =x ; / / Ergebnis e v e n t u e l l i n v e r t i e r e n i f ( n>=0) / / O r i g i n a l n return y ; else return 1. 0 / y ; Der Aufruf erfolgt dann z.b. im Hauptprogramm über: double y = power ( a, 5 ) ; Die Methode Math.pow() bestimmt ebenfalls x y, wobei y dann auch eine Gleitkommazahl sein darf.

Gliederung 15 / 27 1 Überblick 2 Zweck von Methoden 3 Methodendefinition 4 void-methoden 5 Parameterübergabe, Methodenaufruf 6 Spezialfälle 7 Überladen von Methoden

Definition einer void-methode 16 / 27 Wird kein Ergebnis benötigt, so ist der Ergebnistyp void und die return Anweisung lautet schlicht: return; Diese Anweisung muss nicht explizit angegeben werden, sondern wird am Ende der Methode automatisch ausgeführt. Demobeispiel s t a t i c void h a l l o ( S t r i n g name) { System. out. p r i n t l n ( Hallo + name +! ) ;

17 / 27 void-methode: Beispiel Hauptprogramm Das Hauptprogramm main ist eine bekannte void-methode. Es hat kein Ergebnis. Aber es gibt meistens Werte über die Standardausgabe aus. Demobeispiel public s t a t i c void main ( S t r i n g [ ] args ) { System. out. p r i n t l n ( p i = + Math. PI ) ;

Gliederung 18 / 27 1 Überblick 2 Zweck von Methoden 3 Methodendefinition 4 void-methoden 5 Parameterübergabe, Methodenaufruf 6 Spezialfälle 7 Überladen von Methoden

Parameterübergabe, Methodenaufruf Syntax Methodenname (aktuelle Parameterliste) Die aktuelle Parameterliste (oder aktuelle Argumentliste ) muss genauso viele Parameter besitzen wie die formale Parameterliste. Aktuelle und formale Parameter werden entsprechend ihrer Reihenfolge einander zugeordnet. Die aktuellen Parameter müssen von zuweisungskompatiblem Typ zum entsprechenden formalen Parameter sein (also gleicher Typ oder automatische Konversion möglich). Beim Aufruf der Methode wird das aktuelle Argument ausgewertet und das Ergebnis in einer lokalen Variablen mit dem Namen des formalen Parameters abgelegt, d. h. es wird stets mit einer Kopie der übergebenen Daten gearbeitet. 19 / 27

Parameterübergabe, Methodenaufruf 20 / 27 Diese Art der Parameterübergabe heißt Werteparameter. In Java werden alle Parameter einer Methode als Werteparameter übergeben. Weiterhin muss der Methodenaufruf in einem Ausdruck eines zuweisungskompatiblen Typs erfolgen (gleicher Typ oder automatische Konversion möglich). Beispiel zum Methodenaufruf s t a t i c i n t summe ( i n t m, i n t n ) { return m+n ; / / A u f r u f z. B. i n main i n t a=1, b=2, c ; c = summe ( a, b ) ; / / okay, a l l e s i n t c = summe ( X, 3); / / okay, Konversion c = 3 summe( a, 2 2 ) + b ; / / okay, i n t Ausdruck

Leere Parameterlisten 21 / 27 Ist die formale (und damit auch die aktuelle) Parameterliste leer, so müssen die runden Klammern trotzdem stehen. Leere Parameterlisten s t a t i c i n t l e e r ( ) { return 777; / / A u f r u f z. B. i n main System. out. p r i n t l n ( l e e r ( ) ) ;

Änderungen der formalen Parameter 22 / 27 Der aktuelle Parameter lässt sich bei einer Übergabe als Werteparameter nicht verändern. (Bei Referenztypen ist dies mit Einschränkungen möglich). Wertzuweisungen an den entsprechenden formalen Parameter sind erlaubt und wirken sich nur innerhalb der Methode aus. Änderung des formalen Parameters s t a t i c i n t aendern ( i n t x ) { ++x ; / / x erhoehen return x ; / / dies i s t das Ergebnis / / A u f r u f z. B. i n main i n t a=1, b ; b = aendern ( a ) ; / / 2 System. out. p r i n t l n ( a ) ; / / 1

Gliederung 23 / 27 1 Überblick 2 Zweck von Methoden 3 Methodendefinition 4 void-methoden 5 Parameterübergabe, Methodenaufruf 6 Spezialfälle 7 Überladen von Methoden

Aktuelle Argumente mit Ausdrücken 24 / 27 Die aktuellen Parameter werden von links nach rechts ausgewertet. Beispiel s t a t i c i n t f ( i n t i, i n t j ) { / / D e f i n i t i o n von f return ( i + j ) ;... / / im Hauptprogramm : i n t i = 1; System. out. p r i n t l n ( f ( i ++, i ) ) ; / / A u f r u f : f ( 1, 2 ) e r g i b t 3

25 / 27 Bemerkungen zu Methoden Eine Schachtelung von Methoden ist im Gegensatz zu manchen anderen Programmiersprachen in der Regel nicht erlaubt. Methoden müssen stets auf äußerster Ebene in einer Klasse definiert werden. Die Reihenfolge der Definition von Methoden spielt in Java keine Rolle. Man darf auch Methoden aufrufen, die erst weiter unten in der Klasse definiert sind. Es wird auch keine separate Deklaration von Methoden benötigt, wie dies in manchen anderen Programmiersprachen üblich ist. Lokale Variablen dürfen nicht den gleichen Namen wie ein formaler Parameter besitzen. Aktuelle und zugeordnete formale Parameter können die gleichen oder verschiedene Bezeichner erhalten. Es sind in jedem Fall verschiedene Variablen.

Gliederung 26 / 27 1 Überblick 2 Zweck von Methoden 3 Methodendefinition 4 void-methoden 5 Parameterübergabe, Methodenaufruf 6 Spezialfälle 7 Überladen von Methoden

Überladen von Methoden 27 / 27 In Java können mehrere Methoden mit gleichem Namen in einer Klasse existieren. Beispiel double max ( double x, double y ) {... i n t max ( i n t x, i n t y ) {... Die Methoden müssen unterschiedliche Parameterlisten besitzen. Entscheidend sind hierbei die Typen, nicht die Namen der formalen Parameter. Der Ergebnistyp ist frei wählbar. Allerdings ist es nicht erlaubt, dass sich die Methoden nur in ihrem Ergebnistyp unterscheiden. Signatur: Name und Parameterliste sind entscheidend. Es existiert eine Variante mit beliebig vielen Parametern eines Typs.