Klassenvariablen, Klassenmethoden

Ähnliche Dokumente
Einstieg in die Informatik mit Java

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Klassen mit Instanzmethoden

2. Unterprogramme und Methoden

Repetitorium Informatik (Java)

Einstieg in die Informatik mit Java

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Elementare Konzepte von

Tag 7 Repetitorium Informatik (Java)

JAVA - Methoden - Rekursion

Einstieg in die Informatik mit Java

Objektorientierte Programmierung und Klassen

Einstieg in die Informatik mit Java

Klassen als Datenstrukturen

Einstieg in die Informatik mit Java

Java Methoden. Informatik 1 für Nebenfachstudierende Grundmodul. Kai-Steffen Hielscher Folienversion: 1. Februar 2017

Einstieg in die Informatik mit Java

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

Einstieg in die Informatik mit Java

Vererbung, Polymorphie

JAVA - Methoden

Einstieg in die Informatik mit Java

Software Entwicklung 1. Rekursion. Beispiel: Fibonacci-Folge I. Motivation. Annette Bieniusa / Arnd Poetzsch-Heffter

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

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

Implementieren von Klassen

Felder - Arrays. Typ feldname[] = new Typ[<ganze Zahl >]; Beispiel: double vektor[] = new double[5]; auch eine Initialisierung ist möglich.

Tag 4 Repetitorium Informatik (Java)

2 Programmieren in Java I noch ohne Nachbearbeitung

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Einstieg in die Informatik mit Java

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

Test-Klausuraufgaben Softwaretechnik Fachbereich BW, für WINFO

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

Erste Java-Programme (Scopes und Rekursion)

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

Konstruktor. public Rational(int i) { Zaehler = i; Nenner = 1; }

Java Einführung Methoden. Kapitel 6

Programmiertechnik Methoden, Teil 2

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2017/18. Vorbereitende Aufgaben

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

Vorkurs Informatik WiSe 17/18

2 Eine einfache Programmiersprache

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

5.5.8 Öffentliche und private Eigenschaften

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2016/17. Vorbereitende Aufgaben

11. Rekursion. 1, falls n 1. n (n 1)!, andernfalls. Mathematische Rekursion. Rekursion in Java: Genauso! Unendliche Rekursion. n!

Fakultät IV Elektrotechnik/Informatik

2 Eine einfache Programmiersprache

2 Eine einfache Programmiersprache

Methoden und Funktionen

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

Tag 4 Repetitorium Informatik (Java)

Grundlagen der Programmierung

11. Rekursion. - Wiederholung von Anweisungen: durch Iteration und Rekursion - Anwendungsfälle der Rekursion

2 Eine einfache Programmiersprache. Variablen. Operationen Zuweisung. Variablen

12. Rekursion. 1, falls n 1. n (n 1)!, andernfalls. Lernziele. Mathematische Rekursion. Rekursion in Java: Genauso! n! =

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

Einstieg in die Informatik mit Java

Algorithmen und Datenstrukturen II

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

C++ Teil 5. Sven Groß. 16. Nov Sven Groß (IGPM, RWTH Aachen) C++ Teil Nov / 16

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

3. Klassen Statische Komponenten einer Klasse. Klassenvariablen

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

Methoden und Wrapperklassen

Propädeutikum Programmierung in der Bioinformatik

Vorkurs Informatik WiSe 16/17

Programmieren 1 C Überblick

Folienpaket 7 Themenschwerpunkte: Methoden in OOP /2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

CoMa 04. Java II. Paul Boeck. 7. Mai Humboldt Universität zu Berlin Institut für Mathematik. Paul Boeck CoMa 04 7.

Inhaltsverzeichnis. Grundlagen und Einführung (1. Band) 1

Tag 8 Repetitorium Informatik (Java)

Transkript:

Einstieg in die Informatik mit Java, Vorlesung vom 11.12.07

Übersicht 1 Klassenmethoden 2 Besonderheiten von Klassenmethoden 3 Aufruf einer Klassenmethode 4 Hauptprogrammparameter 5 Rekursion

Klassenmethoden Syntax: Bekannt: Instanzmethoden. Objektorientierte Bearbeitung der Instanzvariablen. Alternative: Klassenmethoden. Dienen zur Bearbeitung der Klassenvariablen, ähnlich wie Funktionen, Prozeduren, Subroutines in anderen Programmiersprachen. Sind mit dem Modifizierer static versehen. Sonst fast wie Instanzmethoden. Modifizierer Typspezifikation Methodenname (formale Parameterliste) { Deklarationen und Anweisungen

Methodendefinition Beispiel Beispiel: Methode zur Berechnung von x n mit n ganzzahlig static double power (double x, int n) { int m; double y = 1.0; if (n>=0) m = n; // Absolut-Betrag von n else m = -n; for (int i=0; i<m; ++i) y*=x; // Berechnung von x^m if (n>=0) return y; else return 1.0/y; Der Aufruf erfolgt dann im Hauptprogramm über: double y = power (a,5); Die Methode Math.pow() bestimmt ebenfalls x y, wobei y dann auch eine Gleitkommazahl sein darf.

Besonderheiten von Klassenmethoden Es gibt keine Referenz this auf die aktuelle Instanz. Formale Parameter, lokale Variablen, Klassenvariablen dürfen wie bei Instanzmethoden verwendet werden. Aufrufe von Klassenmethoden sind erlaubt. Instanzvariablen und Instanzmethoden dürfen nur verwendet werden, wenn eine Instanz genannt wird, z.b. Instanzname.Instanzvariable Instanzname.Instanzmethode ()

Aufruf einer Klassenmethode Im Wesentlichen wie bei Instanzmethoden. Aber: es wird keine Instanz angegeben. Innerhalb der gleichen Klasse: Klassenmethode (Aktuelle Parameterliste) class Demo { static int hoch3 (int x) { return x*x*x; public static void main (String[] args) { System.out.println ( hoch3(5) ); // 125 System.out.println ( hoch3(2+3) - 25 ); // 100

Aufruf aus einer anderen Klasse Aufruf einer Klassenmethode aus einer anderen Klasse (sofern der Zugriff aufgrund der Rechte erlaubt ist): Klasssenname.Klassenmethode (Aktuelle Parameterliste) class Demo1 { static int hoch3 (int x) { return x*x*x; class Demo2 { public static void main (String[] args) { System.out.println (Demo1.hoch3(5));

Instanzname statt Klassenname Auch erlaubt ist: Instanzname.Klassenmethode (Aktuelle Parameterliste) Hierdurch erfolgt keine Bindung an die genannte Instanz! public class Demo { static int x; // Klassenvariable static void erhoehe () { // Klassenmethode x++; // erhoeht x public static void main (String[] args) { Demo a = new Demo(); Demo b = new Demo(); // zwei Instanzen a.x = 1; // es gibt nur ein x b.erhoehe(); // erhoeht auch a.x

Hauptprogrammparameter Das Hauptprogramm bei Java (Applets sind hiervon ausgenommen) ist eine Methode der Form public static void main (String[] args) { //args ist ein Feld von Zeichenketten. Argumente werden an der Kommandozeile mit Leerzeichen getrennt. Die Umleitung der Standardausgabe vom Bildschirm in eine Datei erfolgt durch > Dateiname entsprechend erfolgt die Eingabe über < Dateiname Achtung: Diese Angaben zählen nicht zur Argumentliste!

Hauptprogrammparameter Im Gegensatz zu C++ kommt der Programmname ebenfalls nicht in der Argumentliste vor. Beispiele: java MeinPrg Hallo Welt // args[0]=hallo // args[1]=welt java MeinPrg < Daten.dat > Ausgabe.txt Hallo Welt // args[0]=hallo // args[1]=welt

Rekursion Es werden bei Methoden zwei Rekursionsarten unterschieden: (1) Bei der direkten Rekursion ruft sich die Methode selber auf, (2) bei der indirekten Rekursion rufen sich zwei oder mehrere Methoden gegenseitig auf, d. h. Methode a() ruft Methode b() und umgekehrt. Lokale Variablen werden bei jedem rekursiven Aufruf erneut angelegt. Es handelt sich bei der Rekursion um ein sehr leistungsfähiges Werkzeug, allerdings muß darauf geachtet werden, daß die Rekursion nach endlich vielen Schritten endet. In vielen Fällen ist die Iteration mit einer Schleife effizienter.

Rekursion - Demo-Beispiele Beispiel: Berechnung von x n, n N { x n x n 1 x, falls n > 0, = 1, sonst. Beispiel: Berechnung der Fibonacci Zahlen f 0 = 1, f 1 = 1, f i = f i 1 + f i 2 für i 2.

Rekursion - Beispiel Fibonaccizahlen public class Fibonacci { static int fibonacci (int i) { if (i<=1) return 1; else // nicht-rek. Teil return (fibonacci(i-1)+fibonacci(i-2)); // rek. Teil public static void main (String[] args) { for (int i=0; i<=100; ++i) System.out.println (fibonacci (i)); Achtung: Ein großer Vorteil liegt hier in der direkten Umsetzung der mathematischen Formel! Allerdings ist dies in diesem konkreten Fall sehr ineffizient, da viele Werte mehrfach berechnet werden!