2. Unterprogramme und Methoden

Ähnliche Dokumente
Programmiertechnik Klassenmethoden

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

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

Programmiersprache Java Objektorientierte Programmierung II

3. Klassen Statische Komponenten einer Klasse. Klassenvariablen

Java Einführung Methoden. Kapitel 6

Einstieg in die Informatik mit Java

Programmierkurs. Manfred Jackel

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

Programmieren I. Methoden-Special Heusch --- Ratz 6.1, Institut für Angewandte Informatik

Objektorientierung (OO)

JAVA - Methoden - Rekursion

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

Java Einführung Methoden in Klassen

Elementare Konzepte von

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

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

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

Algorithmen und Programmierung II

Java Einführung Klassendefinitionen

JAVA - Methoden

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

6 Speicherorganisation

Repetitorium Informatik (Java)

Grundkurs Programmieren in Java Band 1: Der Einstieg in Programmierung und Objektorientierung

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

II.1.1. Erste Schritte - 1 -

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik

Einstieg in die Informatik mit Java

einkonto.zahle(+100); //Transaktion Einzahlung einkonto.zahle(-20); //Transaktion Auszahlung einkonto.zahle(+30); //Transaktion Einzahlung

3 Objektorientierte Konzepte in Java

Java Kurs für Anfänger Einheit 5 Methoden

Programmieren I + II Regeln der Code-Formatierung

Methoden (fortgeschritten) in C# - 1

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

Grundkurs Programmieren in Java Band 1: Der Einstieg in Programmierung und Objektorientierung

Software. 7. Methoden. Software kann sehr komplex sein... Schwerpunkte. Grundproblem der SW-Entwicklung: Komplexität

Klassen mit Instanzmethoden

Java: Eine kurze Einführung an Beispielen

Innere Klassen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden

Klassen und Objekte. Klassen sind Vorlagen für Objekte. Objekte haben. Attribute. Konstruktoren. Methoden. Merkblatt

Wo sind wir? Kontrollstrukturen

Kontrollstrukturen. Wo sind wir? Anweisung mit Label. Block. Beispiel. Deklarationsanweisung

Einstieg in die Informatik mit Java

1. Abstrakte Klassen

Einstieg in die Informatik mit Java

7 Funktionen. 7.1 Definition. Prototyp-Syntax: {Speicherklasse} {Typ} Name ({formale Parameter});

Javakurs 2013 Objektorientierung

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

3. Basiskonzepte von Java

Präzedenz von Operatoren

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

Einstieg in die Informatik mit Java

Speicher und Adressraum

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen

Vorkurs C++ Programmierung

Musterlösung Stand: 5. Februar 2009

Kapitel 3. Programmierkurs. Arten von Anweisungen. 3.1 Was sind Anweisungen?

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22

Test zu Grundlagen der Programmierung Leitung: Michael Hahsler. 21. November 2003

EINI WiMa/LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12

Prozeduren und Funktionen

Grundlagen der Programmierung Teil1 Einheit III Okt. 2010

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

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

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

1. Referenzdatentypen: Felder und Strings. Referenz- vs. einfache Datentypen. Rückblick: Einfache Datentypen (1) 4711 r

Informatik 1 - Translation Studies in Information Technology. Musterlösung zum Aufgabenblatt der ersten Pflichtübung im Wintersemester 16/17

Ein erstes Java-Programm

Typ : void* aktuelle Parameter Pointer von beliebigem Typ

Programmieren in Java

3. Anweisungen und Kontrollstrukturen

Beispiel: Temperaturumwandlung. Imperative Programmierung. Schwerpunkte. 3. Grundlegende Sprachkonstruktionen imperativer Programme

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

5.5.8 Öffentliche und private Eigenschaften

Software Engineering Klassendiagramme Einführung

Prof. W. Henrich Seite 1

1. Der Einstieg in Java. Was heißt Programmieren?

3 Objektorientierte Konzepte in Java

Klassen und Methoden

Programmiertechnik Methoden, Teil 2

12 Klassen in Java Instanz- und Klassenbestandteile

Felder (1) Felder (Arrays) speichern viele Datenelemente des gleichen Typs. Auf einzelne Elemente kann über einen Index zugegriffen werden

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

Übersicht. 4.1 Ausdrücke. 4.2 Funktionale Algorithmen. 4.3 Anweisungen. 4.4 Imperative Algorithmen Variablen und Konstanten. 4.4.

Arrays und Methoden. Programmiervorkurs WS 2010 / 11

C++ - Operatoren. Eigene Klassen mit neuen Funktionen

Übungsblatt 7. Was ist die Ausgabe de facto? Entspricht die Ausgabe Ihren Erwartungen?

Angewandte Mathematik und Programmierung

Hochschule Augsburg, Fakultät für Informatik Name:... Prüfung "Programmieren 1", IN1bac, WS 10/11 Seite 1 von 6

Java Schulung (Java 2 Java Development Kit 5 / 6)

Vererbung. Martin Wirsing. Ziele. Vererbung

VL5-Methoden: Void-Methoden und Funktionen

Rekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Distributed Computing Group

Klassen und Objekte. Objekte einer Klasse bilden

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Transkript:

2. Unterprogramme und Methoden Durch Methoden wird ausführbarer Code unter einem Namen zusammengefasst. Dieser Code kann unter Verwendung von sogenannten Parametern formuliert sein, denen später beim Aufruf der Methode Werte übergeben werden. Methoden sind ein Bestandteil von Klassen. Wir befassen uns hier mit einem Spezialfall (Klassenmethoden)! Später noch: Methoden in Verbindung mit Objekten Beispiel: mehrfache Auswertung der Funktion f(x, n) = x 2n + n 2 nx Peter Becker, Programiersprache Java FH Bonn-Rhein-Sieg, SS 08 38

Deklaration von (Klassen-)Methoden Syntax: public static Rückgabetyp Methodenname ( Parameterliste ) { Anweisungen Rückgabetyp Datentyp des Ergebnisses, das die Methode zurückliefern soll. Soll die Methode keinen Wert zurückliefern, verwenden wir hier void. Methodenname Bezeichner als Name für die Methode. Parameterliste Eine Kommaliste von Variablendeklarationen. Die darin aufgeführten Variablen heißen formale Parameter. Peter Becker, Programiersprache Java FH Bonn-Rhein-Sieg, SS 08 39

Parameterübergabe und -rückgabe Der Methodenkopf für die Berechnung von f(x, n) = x 2n + n 2 nx könnte lauten: public static double f(double x, int n) Für die Ergebnisrückgabe an die aufrufende Umgebung steht die return- Anweisung zur Verfügung. Durch return ergebnis; wird die Ausführung der Methode beendet und der Wert des Ausdrucks ergebnis als Resultat zurückgegeben. Hat eine Methode den Rückgabetyp void, so reicht return; Ein solches return als letze Anweisung kann auch entfallen. Peter Becker, Programiersprache Java FH Bonn-Rhein-Sieg, SS 08 40

Eine Methode darf mehrere return-anweisungen enthalten. Für Methoden, die nicht den Rückgabetyp void haben, muß aber sichergestellt sein, daß vor Beendigung der Methode eine return-anweisung ausgeführt wird. Beispielmethode komplett: public static double f(double x, int n) { double produkt = 1.0; for (int i=0; i<2*n ; i++) produkt = produkt * x; return produkt + n*n - n*x; Peter Becker, Programiersprache Java FH Bonn-Rhein-Sieg, SS 08 41

Aufruf von Methoden Syntax: Methodenname( Parameterliste ) Ein Methodenaufruf ist ein elementarer Ausdruck. Parameterliste ist eine Kommaliste von Ausdrücken (aktuelle Parameter). Die Werte der Ausdrücke werden über die formalen Parameter aus der Methodendeklaration an die Methode übergeben. Nach dem Aufruf wird jeweils der entsprechende Rückgabewert für den ursprünglichen Methodenaufruf eingesetzt und mit diesem Wert weitergearbeitet. double y = f(x,n); double z = f(y,3) + 3*x; In Java erfolgt die Parameterübergabe stets als Wertparameter (call by value). Es wird stets eine Kopie des Wertes einer Variablen an die Methode übergeben, der Wert der Variablen bleibt unverändert. Peter Becker, Programiersprache Java FH Bonn-Rhein-Sieg, SS 08 42

Wertparameter Wertparameter ermöglichen die Übergabe von Variablenwerten, aber nicht deren Änderung. Was wird ausgegeben? public static void methode(int a) { a++; public static void main(string[] args) { int a = 1; methode(a); System.out.println(a); Peter Becker, Programiersprache Java FH Bonn-Rhein-Sieg, SS 08 43

Referenzparameter Referenzparameter ermöglichen nicht nur die Übergabe von Variablenwerten, sondern auch deren Änderung. Referenzparameter gibt es z.b. in den folgenden Programmiersprachen: Pascal, Modula-2, C++ Durch die Benutzung von Zeigern (Referenzen) kann ein den Referenzparametern ähnliches Verhalten simulieren. Aber Vorsicht: Auch die Referenzen sind nur Wertparameter in Java! Konsequenz: Nur die referenzierten Inhalte können geändert werden, nicht die Referenz selber! Peter Becker, Programiersprache Java FH Bonn-Rhein-Sieg, SS 08 44

Referenzparameter (2) Was wird ausgegeben? public static void methode(int[] a) { a[0]++; public static void main(string[] args) { int[] a = { 1 ; methode(a); System.out.println(a[0]); Peter Becker, Programiersprache Java FH Bonn-Rhein-Sieg, SS 08 45

Referenzparameter (3) Was wird ausgegeben? public static void methode(int[] a) { a = new int[] { 2 ; public static void main(string[] args) { int[] a = { 1 ; methode(a); System.out.println(a[0]); Peter Becker, Programiersprache Java FH Bonn-Rhein-Sieg, SS 08 46

Überladen von Methoden In Java darf es auch innerhalb einer Klasse mehrere Methoden mit dem gleichen Namen geben, d.h. Methoden können überladen werden: public static int max(int x, int y) { return (x>y)? x : y; public static double max(double x, double y) { return (x>y)? x : y; Java unterscheidet Methoden gleichen Namens anhand der Zahl der Parameter, anhand des Typs Typs der Parameter und anhand der Position der Parameter. Peter Becker, Programiersprache Java FH Bonn-Rhein-Sieg, SS 08 47

Sichtbarkeit und Verdecken von Variablen Manchmal möchte man eine Variable deklarieren, die in mehr als einer Methode (einer Klasse) bekannt ist. Wir erreichen dies, indem wir die Variable ausserhalb aller Methoden, aber innerhalb einer Klasse definieren und static davor schreiben. public class MeineKlasse { static String s = "Klassenvariable"; public static void meinemethode1() { System.out.println(s); public static void meinemethode2() { System.out.println(s); Peter Becker, Programiersprache Java FH Bonn-Rhein-Sieg, SS 08 48

Solch eine Variable heißt Klassenvariable. Java erlaubt es aber auch, daß Klassenvariablen und lokale Variablen bzw. Klassenvariablen und formale Parameter den gleichen Namen tragen. Wenn dies so ist, welche Variable wird dann genommen? Grundregel für die Sichtbarkeit bzw. das Verdecken: Innerhalb von Methoden verdecken lokale Variablen und formale Parameter die Klassenvariablen gleichen Namens. Klassenvariablen können trotzdem angesprochen werden. Hierzu stellt man den Klassennamen vor den Variablennamen: Klassenname.Variablenname Peter Becker, Programiersprache Java FH Bonn-Rhein-Sieg, SS 08 49

public class VerdeckenTest { static int a=1, b=2, c=3; static int m(int a) { int b=20; System.out.println("a = " + a); System.out.println("b = " + b); System.out.println("c = " + c); return 100; public static void main(string[] args) { int a=1000; System.out.println("a = " + a); System.out.println("b = " + b); System.out.println("m(c) = " + m(c)); Ausgabe: a = 1000 b = 2 a = 3 b = 20 c = 3 m(c) = 100 Peter Becker, Programiersprache Java FH Bonn-Rhein-Sieg, SS 08 50

Rekursive Methoden Rekursion ist in Java erlaubt, d.h. Methoden dürfen sich selbst aufrufen! Beispiel: Methode zur Berechnung der Fibonacci-Zahlen F i : F 0 = 0, F 1 = 1, F n = F n 1 + F n 2 für n 2 static int fibonacci(int n) { if ( n == 0 ) return 0; if ( n == 1 ) return 1; return fibonacci(n-1) + fibonacci(n-2); Peter Becker, Programiersprache Java FH Bonn-Rhein-Sieg, SS 08 51

Die Methode main Die Hauptmethode main ist nach dem gleichen Schema wie jede andere Methode aufgebaut. public static void main(string[] args) Der Inhalt von args ergibt sich durch die Argumente, die beim Aufruf des Programms angegeben werden. Beim Aufruf von > java MeineKlasse Argument1... ArgumentN gilt für args in main von MeineKlasse: args.length hat den Wert N args[0] hat den Wert Argument1 als String args[args.length-1] hat den Wert ArgumentN als String Peter Becker, Programiersprache Java FH Bonn-Rhein-Sieg, SS 08 52