Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

Jetzt lerne ich Java 6

Methoden von Klassen

Testen Sie unsere 2016 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Was Sie bei der Definition von Java-Methoden beachten müssen, erfahren Sie in diesem Film: Wie deklariert und definiert man Rückgabewerte, wie geht Java mit den übergebenen Parametern um?
13:42

Transkript

Nachdem wir uns Eigenschaften von Klassen angeschaut haben, wollen wir uns jetzt auch noch Methoden anschauen. In anderen Programmiersprachen wird unterschieden zwischen Funktionen und Prozeduren. Diese Unterscheidung gibt es in dem Sinne in Java nicht, denn es gibt eigentlich keine Funktionen und Prozeduren innerhalb von Java. Wir haben in Java lediglich Methoden und das liegt da dran, dass egal was wir an Funktionalitäten kapseln. Und dafür sind Methoden ja eigentlich gedacht, dass sie einen funktionellen Block bilden. Alle diese stecken jeweils innerhalb von Klassen und daher sind diese Methoden. Wenn wir sogar unsere Main-Klasse hier uns anschauen und da steckt schon das Wort darin, unser Hauptprogramm innerhalb von Java ist auch schon wieder eine Klasse, dann haben wir dort eine Methode mit dem Namen Main und daher es gibt gar keine Möglichkeit innerhalb von Java irgendwo eine Funktion zu schreiben, denn irgendwie stecken wir immer in einer Klasse darin. Daher bei Einfachheit halber wir haben nur Methoden in Java, nun aber zurück zu unserer Kontoklasse. Wir wollen uns im nächsten eine Methode etwas näher anschauen, wie diese funktioniert. Methoden manipulieren Eigenschaften der Klasse. Das heißt, wir haben hier oben zwei Eigenschaften Kontostand und Besitzer mit Kontostand haben wir schon ein bisschen gearbeitet, mit Besitzer noch nicht und daher möchte ich jetzt mal scheibchenweise mit Ihnen zusammen eine Methode aufbauen, die den Namen des Besitzers setzt. Das Erste was wir tun, ist wir überlegen uns einen griffigen Namen für diese Methode. Ich wähle dazu setBesitzer. Denn dies sagt doch relativ gut aus, was wir eigentlich machen wollen. Zudem ist es üblich Setter und Getter zu machen, aber darauf gehe ich gleich in einem anderen Film nochmal ein. Daher wenn wir etwas verändern an Eigenschaften, nennt man die normalerweise set, unter den Namen der Eigenschaft, also setBesitzer. Dabei setzte ich hier kein Leerzeichen dazwischen, es muss in einem Wort geschrieben sein. Sie sollten noch keine Umlaute oder Sonderzeichen einbauen und in Java ist es üblich PascalCase zu schreiben. Das bedeutet, man beginnt zwar klein bei Methoden, genau wie hier bei Eigenschaften, aber setzt jeden neuen Wortstamm da mit einem Großbuchstaben fort. Das ist bei PascalCase, es gibt doch noch in der Informatik das CamelCase. Das ist auch in einigen Programmiersprachen üblich, dann beginnt man auch mit einem Großbuchstaben und jeder neue Wortstamm hat ein Großbuchstaben. Das CamelCase kommt wohl vielleicht von diesen netten Hocken, die man hier hat. Na gut, also wir bleiben bei PascalCase. Jede Methode hat nach dem Namen grundsätzlich runde Klammern, dadran erkennt man eben, dass es eine Methode ist. Das hat man einmal bei Definition einer Methode hier, hatte es aber auch wenn wir eine Methode aufrufen. Das heißt, wenn ich hier mal schaue, hier habe ich verschiedene Methoden aufgerufen und auch dort haben wir immer runde Klammern dahinter. Hier fällt auch schon auf, dass man in die runden Klammern was hinein schreiben kann. So beim Aufruf können wir Parameter mitgeben und diese Parameter können wir auffangen, um damit innerhalb der Methode zu arbeiten. Wenn wir gedenken Parameter aufzunehmen, dann muss man diese entsprechend hier innerhalb der runden Klammern auflisten. Und wie in Java üblich ist das Ganze typisiert, das bedeutet, wir müssen ein Datentyp angeben des Parameters, den wir erwarten. Bei setBesitzer erwarte ich, dass jemand mir einen String liefert mit dem neuen Namen des Besitzers, also nb, nenne ich den einfach mal. Es ist auch möglich an eine Methode mehrere Parameter zu übergeben. Dann schliest man diese mit Komma an, zum Beispiel, das Alter des Besitzers, es ist auch wichtig, also int alter, zum Beispiel. Es ist übrigens nicht möglich einfach Default-Werte zu setzen. Dafür bietet Java die Möglichkeit an, dass Methoden überschrieben werden müssen, schauen wir uns später noch an. Das heißten, aber wenn mehrere Parameter hier aufgeführt werden, dass sie auch genau natürlich in der gleichen Reihenfolge und der gleichen Anzahl, wenn hier Parameter senden müssen. Nun gut, wir wollen also nur einen einzigen Parameter haben und zwar in String, der angeliefert wird mit nb - neuer besitzer. Die ganze Methode wird dann definiert in geschweiften Klammern. Das heißt, das ist der Kopf der Methode und hier drin steht jetz, was sie tut, auch recht einfach, aber damit sind wir hier mit dem Kopf der Methode noch gar nicht fertig und das sehen wir hier schon an den roten Unterringelungen besteht nämlich, dass wir, dass noch nicht richtig deklariert haben diese Methode, uns fällt der sogenannte Return Type. Eine Methode ist nicht nur dafür da, das ist etwas mit den Eigenschaften hier tut. Eine Methode kann auch als Ergebnis einen Wert nach draußen geben und das haben wir sogar schon genutzt und zwar bei getKontostand. Daher hat uns sehr interessiert auf welchen Kontostand, wir im Moment sind und hier wurde dann eben über return, das ist also das Schlüsselwort zum zurückgeben von Werten aus Methoden heraus, der Kontostand nach draußen geliefert. Und wir müssen in Java grundsätzlich den Rückgabewert angeben, entweder wir liefern wirklich etwas zurück, da müssen wir den Datentyp angeben, Kontostand hier, er ist ein double, deshalb steht hier vor den Namen der Methode, es kommt ein double zurück oder wenn Sie nichts zurückliefern, dann kommt vor die Methode ein void. Das schreibe ich jetzt auch hierhin, wir gedenken nichts zurück zu liefern, void und schon ist hier unsere Umgebung auch zufrieden. Also wir merken uns Rückgabewert, Name der Methode, runde Klammern und gegebenenfalls Parameter hinein, die wir hineingeben wollen. Jetzt müssten wir uns mal mit den Parametern auseinandersetzen. Nun, diese Parameter werden kopiert, das nennt man call by value, um uns es etwas besser anschauen zu können, machen wir mal folgendes, wir lassen hier mal, auf der Konsole, nb ausgeben. Ich nenne das mal ganze Angekommen und dann klebe ich hier einfach mal nb ran. setBesitzer heisst die Methode, jetzt müssen wir die hier natürlich irgendwo auch mal benutzen. Und gehen wir einfach mal hierhin, ich gehe also bei setze Besitzer und jetzt hmaus Konto verwenden setBesitzer wir sehen jetzt hier unsere Methode schon aufgelistet, sie heißt setBesitzer erwartet einen String nb und gibt nichts zurück. Hier sehen wir also auch, dass direkt unsere Methodendeklaration entsprechen übernommen worden ist, in die Hilfe. Wir machen einen Doppelklick drauf und nun erwartet natürlich unsere Methode einen Übergabewert. Jetzt können wir da eine Variable reinschreiben oder wir können natürlich auch die Zeichenkette direkt hierhin einschreiben Helge Maus. Wenn wir das Ganze jetzt mal laufen lassen, dann sehen wir hier Angekommen: Helge Maus Wie das Ganze nun funktioniert, sollten wir uns noch etwas näher anschauen. In einigen Programmiersprachen, zum Beispiel, c++ gibt es zwei Arten, wie man Werte an Funktionen übergeben kann. Und Methoden und Funktionensind sind in Java, wie gesagt, gleich. Einmal call by value und einmal call by reference, Java kennt beides, aber grundsätzlich verwendet ist in fast allen Fällen call by value. Was heißt das nun? Nun, wenn wir hier ein Übergabeparameter hineinschreiben, rufen setBesitzer aus. Der wird folgendes getan. Ich demonstriere das jetzt mal, natürlich wird das nicht wirklich im Quellcode getan, aber es ist ein gutes Bild, um es zu verstehen, was da passiert. Wir kopieren uns jetzt hier diesen Übergabeparameter in die Zwischenablage. Das habe ich jetzt per Tastatur getan. Gehe jetzt nach Konto.java hier steht der String nb, das wird erwartet, an erster Stelle muss also ein String stehen. Und dann passiert folgendes, hier wird eine Zuweisung gemacht, das nennt man call by value, hier wird der Value, als der Wert, hineinkopiert in diese neue Variable nb und deshalb ist diese hier auch vorhanden. Die einzige Ausnahme, bei den Java nicht call by value die Werte kopiert, ist bei übergebenen Objekten, wenn Sie also ein Objekt übergeben an eine Methode. Er kann natürlich nicht das ganze Objekt dareinkopiert werden, sondern dann wird nur eine Referenz auf das Objekt übergeben. Was aber letztendlich bedeutet, dass sich hier drinnen in nb, dann auch entsprechend ein Zeiger auf das gleiche Objekt hätten, wie als wenn Sie draußen arbeiten. Und dies ist für die fortgeschrittene Programmierung sehr wichtig, denn wenn Sie jetzt Daten ändern, hier würden Sie nur nb ändern, aber draußen mein Name würde nicht verändert werden. Würde ich call by reference übergeben, würden Sie intern das gleiche Objekt ändern, das auch draußen vorhanden ist, was dann wiederum für viele Programmierer ein böses Erwachen gäbe. Dies ist aber ein Thema für eine Java Masterclass oder die fortgeschrittene Programmierung. Ich möchte Sie nur an dieser Stelle bereits für dieses Thema sensibilisieren. Aber normalerweise wird es call by value übergeben und genau so funktioniert das intern und deshalb gibt es auch hier die entsprechenden Ausgaben. Jetzt löschen wir das ganz schnell wieder raus, das ist dann nicht zur Verwirrung kommt. Nun gut, jetzt können wir also den Besitzer hier oben entsprechend neu belegen. Besitzer ist gleich nb. Eine weitere Verwirrung, die gerne mal vorkommt, ist, ich übergebe hier nicht eine Zeichenkette, sondern einen Namen. Jetzt mal kurz noch ein String davor auch hier das gleiche Spiel statt Name, wird hier Helge Maus eingesetzt und dieses Helge Maus wird hier hineinkopiert und hierher übergeben. Also auch an dieser Stelle ändere ich das Original nicht. Das nehmen wir hier nun wieder raus und schauen uns die Sache mit dem Rückgabewert noch an. Wenn wir jetzt gedenken würden einen Rückgangwert zu setzen, müssten wie diesen hier vorne deklarieren. Wir sagen einfach mal, wir geben einen String zurück, dann augenblicklich bekommen wir einen Fehler, denn hier weist uns die Entwicklungsumgebung darauf hin, du hast aber gar kein Returnwert angegeben, du hast gar kein Return verwendet. Meinem Wert zurück zu geben, müssen wir ein Return setzen und dann einen Wert zurückgeben. Ich nenne den einfach mal hat geklappt, hier kommt jetzt nur die bittere Nachricht: Java unterstützt nur die Rückgabe eines einzigen Wertes. Sie haben nicht die Möglichkeit über Return mehrere Werte zurückzugeben. Also die Idee irgendwie so funktioniert nicht, auch funktioniert es nicht mehrere Returns hintereinander zu schreiben. Grundsätzlich endet übrigens ein Script innerhalb einer Methode bei der Stelle Return. Das heißt, Befehle darunter werden nicht ausgeführt. Sie können wohl mehrere Returns haben innerhalb einer Methode, wenn Sie, zum Beispiel, in einer if-Frage stehen. Also auf gut Hochdeutsch if fertig, dann machen wir ein Return von hat geklappt, else, machen wir ein anderes Return hat nicht geklappt. Das könnten wir natürlich tun ohne Probleme, aber sobald ein Return ausgelöst worden ist, ist die Sache zu Ende. Nun, wir begeben also jetzt einen Wert zurück. Dieser Wert haben wir hier angegeben, es kommt ein String zurück und daher bekommen wir jetzt hier auch einen String zurückgeliefert, den wir, wenn wir wollen, auffangen können. Wie fangen wir diesen auf? Nun, ähnlich wie wir hier die Sache hineinkopiert haben, wird beim Beenden der ganzen Geschichte folgendes getan. Dieser Wert wird wieder in die Zwischenablage kopiert, wie es wieder das Denkmodell nach hier geschafft und dieser ganze Teil hier wird ersetzt durch die Ausgabe aus der Zwischenablage. Und wenn wir also vorher hier hingehen würden und sagen würden, wir wollen hier ein Ergebnis aufnehmen dann hätten wir in erg sieht dann in der Praxis etwa so aus String erg und das kennen Sie ja schon aus allen möglichen Beispielen, die wir bis jetzt schon durchgemacht haben. Damit wissen Sie jetzt ziemlich alles, was wir mit Methoden machen können. Später werden Sie noch kennenlernen, dass wir Methoden überladen können. Dies ist ein recht interessantes Kapitel, denn damit können wir sehr flexibel mit Methoden arbeiten. Soweit jetzt wir doch unser setBesitzer, wir begeben einen Namen, gehen da hinein, sagen - das kein Rückgabewert stattfindet, daher dürfen wir auch nichts retournieren, das hier löschen wir aus und damit ist der Besitzer gesetzt. Wir können jetzt, wenn wir wollen, auch noch als Übung eine getBesitzer schreiben, da kommt ein String zurück getBesitzer, es wird nicht so eine Methode übergeben und retournieren den momentanen Besitzer, genau das was wir eben besprochen haben, können jetzt hier nach Main gehen und direkt darunter eine Ausgabe machen, Neuer Besitzer: hmaus.getBesitzer. Voilà.

Jetzt lerne ich Java 6

Steigen Sie ein in die Programmierung mit Java 6, lernen Sie die Grundlagen kennen und unternehmen Sie anschließend Ihre ersten Schritte in der objektorientierten Programmierung.

12 Std. 27 min (98 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!