Einstieg in die Informatik mit Java

Ä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

Klassenvariablen, Klassenmethoden

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Klassen mit Instanzmethoden

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Klassen als Datenstrukturen

Einstieg in die Informatik mit Java

Softwareentwicklung I (IB) Objekte. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München

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

Objektorientierte Programmierung und Klassen

Vererbung, Polymorphie

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

2. Unterprogramme und Methoden

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

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

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

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

Tag 4 Repetitorium Informatik (Java)

Implementieren von Klassen

Algorithmen und Programmierung II

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Umsetzung einer Klassenkarte in einer Programmiersprache

Einstieg in die Informatik mit Java

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

Tag 4 Repetitorium Informatik (Java)

Informatik II Übung 05. Benjamin Hepp 3 April 2017

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

Repetitorium Informatik (Java)

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Heap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen

Beuth Hochschule Parameter-Übergabe-Mechanismen WS17/18, S. 1

Methoden und Wrapperklassen

Einstieg in die Informatik mit Java

6 Speicherorganisation

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

Heap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Programmierkurs. Manfred Jackel

Arrays,Strings&Pointer in C/C++

Programmiersprachen Einführung in C

Tag 8 Repetitorium Informatik (Java)

Variablen. int Flugzeug. float. I write code Hund. String. long. Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel

2 Eine einfache Programmiersprache

Vorlesung Programmieren

Test-Klausuraufgaben Softwaretechnik Fachbereich BW, für WINFO

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

1. Referenzdatentypen: Felder und Strings

Wichtige Prinzipien von C#

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften

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

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

Java: Eine kurze Einführung an Beispielen

Algorithmen und Datenstrukturen II

2 Eine einfache Programmiersprache

Methoden (fortgeschritten) in C# - 1

Einführung in die Programmierung Blockkurs Java

Ausgabe:

Einstieg in die Informatik mit Java

Themen der Übung. Methoden und Wrapperklassen. Vorteile von Methoden. Methoden. Grundlagen

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)

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

Bei for-schleifen muss man nur immer bedenken, dass die letzte Anweisung immer erst nach der Ausführung der restlichen Anweisungen der Schleife

pue13 January 28, 2017

Schöner Programmieren

Vorkurs Informatik WiSe 17/18

Grundlagen der Programmierung

Grundlagen der OO- Programmierung in C#

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

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

6. Funktionen, Parameterübergabe

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

Programmiertechnik Klassenmethoden

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

Einstieg in die Informatik mit Java

Einführung in die Java- Programmierung

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

Intuitive Einführung. Informatik B Objektorientierte Programmierung in Java. Vorlesung 01: Objektorientierte Programmierung (Teil 1)

Programmierung mit C Zeiger

JAVA - Methoden

Transkript:

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

Gliederung 2 / 17 1 Überblick 2 Felder als Parameter bei Methoden 3 Feld als Ergebnistyp einer Methode 4 Hauptprogrammparameter

Gliederung 3 / 17 1 Überblick 2 Felder als Parameter bei Methoden 3 Feld als Ergebnistyp einer Methode 4 Hauptprogrammparameter

4 / 17 Überblick In diesem Kapitel wird die Verwendung von Feldern bei Methoden beschrieben. Allgemein: Referenzen Felder, Klassen, Strings Felder als Parameter und Ergebnis Unterscheidung zwischen Referenz und referenziertem Wert Hauptprogramm-Parameter Feld von Strings

Gliederung 5 / 17 1 Überblick 2 Felder als Parameter bei Methoden 3 Feld als Ergebnistyp einer Methode 4 Hauptprogrammparameter

Felder als Parameter bei Methoden 6 / 17 Felder sind als Parameter bei Methoden erlaubt. Syntax: Basistyp [] Die Dimension darf nicht angegeben werden, sie kann über.length bestimmt werden. Beispiel s t a t i c i n t summe ( i n t [ ] x ) { i n t s = 0; for ( i n t i =0; i <x. l e n gth ; i ++) summe += x [ i ] ; return s ; } / / A u f r u f z. B. i n main : i n t [ ] werte = {22,33}; System. out. p r i n t l n (summe( werte ) ) ; / / 55

7 / 17 Felder als Parameter bei Methoden Felder sind Referenztypen wie alle Objekte (Klassen, Strings) Bei Referenztypen enthält eine Variable nicht den eigentlichen Inhalt (z.b. Zahlen in den Feldelementen), sondern nur eine Referenz darauf (Pointer, Zeiger, Verweis, Adresse). Referenzvariablen werden per Wertaufruf übergeben genau wie alle anderen Variablen. D. h. die Referenz wird in eine lokale Variable kopiert. Folglich wird die aktuelle Größe im aufrufenden Programm durch Wertzuweisungen an den formalen Parameter in der Methode nicht verändert. Ein Vorteil hierbei ist, dass eine solche Parameterübergabe extrem schnell ausgeführt werden kann. Sie braucht für ein beliebig großes Feld (oder Objekt) praktisch keine Rechenzeit. Achtung Die Werte, auf die die Referenz verweisen, werden nicht kopiert und können deshalb verändert werden!

Felder als Parameter bei Methoden: Beispiel 8 / 17 Beispiel s t a t i c void demo1 ( i n t [ ] x ) { / / x und y zeigen beide a u f / / g l e i c h e Speicheradressen! / / vorher : x [ 0 ] = y [ 0 ] = 1 x [ 0 ] + + ; / / nachher : x [ 0 ] = y [ 0 ] = 2 } / / Aufruf, z. B. im Hauptprogramm : i n t [ ] y = {1, 2}; / / vorher : y [ 0 ] = 1, x i s t unbekannt demo1 ( y ) ; / / A u f r u f der Methode demo1 / / nachher : y [ 0 ] = 2, x i s t unbekannt

9 / 17 Referenztypen als Parameter bei Methoden Achtung Dies entspricht aus den folgenden Gründen nur teilweise dem Referenzaufruf aus anderen Programmiersprachen (Pascal var, C++ &). Es besteht keine Wahlmöglichkeit. Grundtypen sind immer Werte, Objekte immer Referenzen. Auch bei Referenztypen kann die Referenzvariable selber nicht verändert werden. Die Komponenten des referenzierten Objekts können aber verändert werden.

Felder als Parameter bei Methoden: Beispiel 10 / 17 Beispiel s t a t i c void demo2 ( i n t [ ] x ) { / / vorher : x [ 0 ] = y [ 0 ] = 1 x = new i n t [ ] {4, 5, 6}; / / neues Objekt / / nachher : x [ 0 ] = 4, y [ 0 ] = 1 System. out. p r i n t l n ( x [ 0 ] ) ; / / 4 } / / Aufruf, z. B. im Hauptprogramm : i n t [ ] y = {1,2}; / / vorher : y [ 0 ] = 1, x unbekannt demo2 ( y ) ; / / A u f r u f der Methode demo2 / / nachher : y [ 0 ] = 1 unveraendert, x unbekannt System. out. p r i n t l n ( y [ 0 ] ) ; / / 1

Gliederung 11 / 17 1 Überblick 2 Felder als Parameter bei Methoden 3 Feld als Ergebnistyp einer Methode 4 Hauptprogrammparameter

12 / 17 Feld als Ergebnistyp einer Methode Der Ergebnistyp einer Methode darf ein beliebiger Typ sein, z.b. ein Feld oder ein anderer Referenztyp (String, Klasse). Die return-anweisung gibt eine Referenz auf das Ergebnis zurück. Das referenzierte Objekt (Feld, String, Klasse) wird nicht kopiert. Die Referenzvariable ist nur bis zum Ende der Methode zugänglich. Dies schadet nicht, da das referenzierte Objekt weiter existiert. Diese Form der Ergebnisrückgabe kann extrem schnell ausgeführt werden. Sie braucht für ein beliebig großes Feld (oder Objekt) praktisch keine Rechenzeit.

Feld als Ergebnistyp einer Methode, Beispiel 13 / 17 Beispiel-Programm s t a t i c i n t [ ] quadrate ( i n t dim ) { / / Feld der Laenge dim erzeugen i n t [ ] f = new i n t [ dim ] ; for ( i n t i =0; i <dim ; i ++) f [ i ] = i i ; / / Quadratzahlen / / Ergebnis a b l i e f e r n return f ; / / h i e r endet die Lebensdauer der Referenz f, / / aber das Feld s e l b s t e x i s t i e r t w e i t e r } public s t a t i c void main ( S t r i n g [ ] args ) { i n t [ ] f e l d ; / / nur Referenz / / Feld per Methode erzeugen f e l d = quadrate ( 5 ) ; / / a l l e Feldelemente ausgeben for ( i n t i =0; i <f e l d. l e n g t h ; i ++) System. out. p r i n t l n ( f e l d [ i ] ) ; / / Ausgabe : 0 1 4 9 16 }

Gliederung 14 / 17 1 Überblick 2 Felder als Parameter bei Methoden 3 Feld als Ergebnistyp einer Methode 4 Hauptprogrammparameter

Hauptprogrammparameter 15 / 17 Das Hauptprogramm bei Java-Programmen ist eine Methode der Form Beispiel-Programm class MeinPrg { public s t a t i c void main ( S t r i n g [ ] args ) { / / Z u g r i f f auf args [ 0 ],... } } Argumente werden an der Kommandozeile beim Programmstart angegeben und mit Leerzeichen oder Tabulator getrennt. Anmerkung: Nicht alle Java-Anwendungen besitzen ein Hauptprogramm, z.b. Applets. Aufruf des Beispiel-Programms java MeinPrg Hallo Welt // args[0] = Hallo // args[1] = Welt

16 / 17 Umleitung Eingabe und Ausgabe Die Umleitung der Standardausgabe vom Bildschirm in eine Datei erfolgt durch Achtung > Dateiname Die angegebene Datei wird falls sie schon existiert ohne Warnung unwiderbringlich gelöscht und überschrieben! Entsprechend erfolgt die Umleitung der Eingabe von der Tastatur zu einer Datei über < Dateiname Diese Angaben zählen nicht zur Argumentliste!

Programmname, spezielle Parameter Der Programmname kommt ebenfalls nicht in der Argumentliste vor (im Gegensatz etwa zu C++). Argumente, die Leerzeichen oder Sonderzeichen enthalten, können (je nach Betriebssystem) in Hochkommata eingeschlossen werden. Die Anzahl der Argumente kann (wie bei jedem Feld) über die Komponente.length bestimmt werden. Beispiel java MeinPrg < Daten.dat > Ausgabe.txt Hallo Welt // args[0] = Hallo // args[1] = Welt // args.length = 2 java MeinPrg "Hallo Welt" // args[0] = Hallo Welt // args.length = 1 17 / 17