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

Java 7 Grundkurs

Kein Java-Programm ohne main()-Methode

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Jetzt geht's an das erste lauffähige Programm: Sie erzeugen Autos wie am Fließband. Dafür nutzen Sie eine neue Klasse mit der Methode für den Programmeinstieg.
13:23

Transkript

In diesem Video erstellen wir unser erstes lauffähiges Java-Programm. Wir haben hier unsere Klasse "Auto", die beschreibt, wie Auto-Objekte aussehen sollen, denn sie ist ja ein Bauplan für Auto-Objekte. Nach diesem Bauplan könnte man jetzt also beliebig viele Auto-Objekte erzeugen und genau das werden wir jetzt tun. Eine wesentliche Eigenschaft der Objektorientierung besteht darin, dass unsere Anwendung aus vielen Objekten besteht, die miteinander interagieren und nicht aus einem einzelnen Objekt, das alles tut. Jedes einzelne Objekt hat seine ganz spezielle Verantwortlichkeit. Unser Auto hier z.B. kann beschleunigen und bremsen und es kann sich merken, wie schnell es gerade fährt. Das ist aber auch schon alles. Mit Dingen wie ein Programm starte oder andere Autos erzeugen hat unsere Autoklasse nichts am Hut. Möchten wir unserem Programm also Funktionalität hinzufügen, die nicht in diese Klasse hineinpasst, dann brauchen wir eine weitere Klasse. Wir legen also einfach noch eine Klasse an. Das machen wir wieder rechte Maustaste, "New Java Class". Diese Klasse nennen wir jetzt einmal "AutoDemo", weil ich damit demonstrieren möchte, wie man Auto-Objekte erzeugt und benutzt. Also Name "AutoDemo". Achten Sie auf diese lustige Groß-Kleinschreibung, auch das ist eine Konvention in der JavaWelt. Dann wird der Beginn jedes weiteren Wortes mit einem Großbuchstaben verdeutlicht. So, also "AutoDemo". Drücken wir auf "Finish", dann wird die Klasse angelegt, Kommentare nehme ich wieder weg hier oben. Damit wir unser Programm ausführen können, benötigen wir einen speziellen Einstiegspunkt, an dem es losgeht. Für diesen Einstiegspunkt ist in der Java-Sprachspezifikation eine ganz spezielle Methode vorgesehen, die Methode muss einen bestimmten Namen tragen und auf eine ganz spezielle Art deklariert werden. Nur dann funktioniert sie auch als Einstiegspunkt. Erst einmal unabhängig davon, was das im Detail alles bedeutet, muss die Methode so aussehen. Sie muss "public" sein, dann muss hier ein Wort stehen, das heißt "static", jetzt kommt "void" und die Methode selbst heißt "main", mit einem kleinen "m". In den runden Klammern muss jetzt "String" stehen mit einem großen "S", dahinter eine rechteckige Klammer auf und wieder zu, Leerzeichen und hier schreiben wir hin "args". Wie gesagt, unabhängig davon, was genau das im Detail alles bedeutet, es muss genau so dastehen und nur dann funktioniert diese Zeile als Einstiegspunkt, als Startpunkt für unsere Anwendung. Leerzeichen, geschweifte Klammer auf, Enter, und hier schreiben wir jetzt rein, was passieren soll, wenn wir unsere Anwendung später ausführen. Wenn wir unser Programm starten möchten, dann müssen wir angeben, welche Klasse unsere Hauptklasse sein soll. Also sprich, welche Klasse unsere Mengenmethode enthält. Der Java-Interpreter sucht dann in dieser Hauptklasse diese Mengenmethode mit genau dieser Signatur und führt die aus. Wenn die Methode zu Ende ist, dann ist auch das Programm zu Ende. Wir schreiben hier also einfach alles rein, was passieren soll. In unserem Fall bedeutet das, dass wir ein Auto-Objekt erzeugen möchten und dass wir danach ein bisschen beschleunigen und bremsen möchten. Wenn ich ein neues Auto haben möchte, dann schreibe ich genau das hin: "new Auto". Jetzt muss ich dahinter noch runde Klammern setzen und wie bei jeder Einweisung am Ende einen Semikolon. Auf diese Weise wird nun ein neues Objekt nach dem Bauplan dieses Namens, also "Auto", erzeugt. Damit ich mit dem Auto, nachdem es erzeugt wurde, auch reden kann, damit ich von ihm irgendwelche Methoden aufrufen kann, muss ich mir aber irgendwie merken wo es sich befindet, wenn es erzeugt wird. Deshalb deklariere ich mir hier eine Variable und weise ihr das zu, was bei "new Auto" entsteht. Also, auf der rechten Seite erzeuge ich ein neues Auto-Objekt. Auf der linken Seite deklariere ich mir lediglich eine Variable, in der ich mir merken kann, wo sich dieses Auto-Objekt befindet. Da diese Variable auf das Objekt verweist, ist das eine sogenannte Referenzvariable. Die referenziert das Objekt. Über diese Variable, "meinAuto" kann ich jetzt mit dem Objekt reden, mit dem Objekt kommunizieren. Das mache ich, indem ich den Namen der Variable nehme und jetzt einen Punkt dahinter setze und dann kann ich Methoden aufrufen, die das Objekt hat. Auch NetBeans weiß, dass "meinAuto" vom Typ "Auto" ist und dass es deshalb Methoden hat, die "beschleunigen" und "bremsen" heißen, bietet mir diese Methoden also gleich an. Ich kann jetzt hier mit den Pfeiltasten hoch und runter die entsprechende Methode auswählen und mit Enter bestätigen. Jetzt haben wir das Auto ein bisschen beschleunigt, beschleunigen wir es noch ein bisschen mehr, Strg+Leertaste, und jetzt haben wir aber ein kleines Problem. Wir haben jetzt ein Auto und das Auto beschleunigt auch, es könnte sogar bremsen, aber keine Möglichkeit, herauszufinden, wie schnell das Auto gerade fährt. Das Auto selbst weiß sehr wohl wie schnell es fährt; es hat ja ein privates Attribut "geschwindigkeit" und da steht drin, welche Geschwindigkeit das Auto gerade hat. Aber das Attribut ist eben privat, deshalb kann ich nicht von außen drauf zugreifen. Wenn ich in einer anderen Klasse bin, und "AutoDemo" ist ja eine andere Klasse, habe ich keine Möglichkeit, an dieses Geschwindigkeit-Attribut heranzukommen, und wenn mir eine Klasse keine Möglichkeit bietet, ein Attribut zuzugreifen, dann geht das halt nicht. Aber wir haben Glück, wir können die Auto-Klasse ja um die passende Methode erweitern. Auch diese Methode ist erst einmal "public". Sie gibt uns ein "int" zurück. Das erkläre ich gleich genauer. Und für den Namen der Methode gibt es auch hier wieder eine Konvention. Wenn die Methode dazu dient, den Wert eines Attributes auszulesen, dann beginnt der Name typischerweise mit "get" und dann folgt der Name des Attributes, mit einem Großbuchstaben beginnend. In unserem Fall also "getGeschwindigkeit". Was soll die Methode tun? Sie soll an den Aufrufer den Wert des Attributes "Geschwindigkeit" zurückgeben. "Zurück" heißt "return" und hier kommt einfach der Name des Attributes hin. Das bedeutet, welches andere Objekt auch immer diese Methode jetzt aufruft, es bekommt den aktuellen Wert des Attributes "Geschwindigkeit" zurück. Vor dem Namen der Methode steht der "Typ" des Rückgabewertes, damit der Aufrufer auch weiß, was er da zu erwarten hat. Unser Attribut "Geschwindigkeit" ist vom Typ "Int", also für Ganze Zahlen. Deswegen steht hier auch "Int". So, und nun hat unser Auto-Klasse also auch eine Möglichkeit, die aktuelle Geschwindigkeit zu erfragen, also quasi eine Art Tachometer. Den können wir hier nun benutzen, indem wir uns die aktuelle Geschwindigkeit aus "Mein Auto" einmal herausholen. Hier steht es: "getGeschwindigkeit". Um den Rückgabewert weiter benutzen zu können, also z.B. um ihn ausgeben zu können, wäre es wieder hilfreich, den in einer Variablen zu speichern und dafür bietet uns NetBeans eine Vereinfachung an das sehen wir daran, dass wir hier links ein Lämpchen haben. Das Lämpchen bedeutet immer, das NetBeans da eine Vereinfachung hat. Klicke ich einmal darauf auf das Lämpchen, einmal, und jetzt steht hier "Assign Return Value To New Variable", D.h. den Rückgabewert von "getGeschwindingkeit" allen neuen Variablen zuweisen. Klicke ich einmal darauf und jetzt steht hier "int geschwindigkeit". Super, fast das, was ich haben möchte. Ich nenne es einmal "aktuelleGeschwindigkeit" und dann bin ich eigentlich glücklich. D.h. ich lege mir jetzt hier einfach eine Variable an vom Typ "int", dann gehe ich zu meinem Auto, frage es: "Wie schnell sind wir denn gerade?" Das, was da zurück kommt, merke ich mir hier in dieser Variablen. Jetzt fehlt nur noch eins, nämlich diesen Wert auch tatsächlich einmal anzeigen. Um etwas auszugeben, verwenden Sie in Java die folgende Zeile: "System" mit einem großen "S", Punkt "out", "out" klein, Punkt "println", das steht für "print line", also geben wir etwas aus und dahinter einen Zeilenvorschub. Jetzt machen wir eine runde Klammer auf und dem folgen Anführungszeichen, D.h. hier schreiben wir jetzt rein, was wir gerne ausgeben möchten. Wir können einzelne Zeichenketten aneinanderhängen, indem wir ein Pluszeichen dazwischen schieben. Und wenn twas dazwischen kein Text sein sollte, wird es automatisch in einen Text umgewandelt, D.h. ich kann jetzt hier die aktuelle Geschwindigkeit einfach dazwischen schieben mit Pluszeichen. Ich verwende wieder Strg+Leertaste, dann spare ich mir eine Menge Tipparbeit, noch einmal Plus, und hintendran Klammer. Am Ende wieder ein Semikolon, wie bei jeder Anweisung. Hier natürlich statt "meinAuto" auch einfach "A" schreiben können und statt "aktuelleGeschwindigkeit" einfach "G" oder "AG" o.Ä. Aber, wie Sie gesehen haben, mit Strg+Leertaste spare ich mir die Tipparbeit bei den folgenden Malen, ich muss nur einmal den vollständigen Namen angeben und jeder einen Blick auf diesen Quelltext wirft, weiß sofort, worum es geht. Auch Sie, wenn Sie in einem halben Jahr noch einmal daraufschauen. Dieses Konzept nennt sich "Sprechende Bezeichner" und es ist der Praxis wirklich enorm hilfreich, sich daran zu halten. So, nun wollen wir aber unsere Java-Anwendung einmal ausführen. Um eine Java-Anwendung auszuführen, müssen wir bekanntlich zwei Schritte durchgehen: Zuerst einmal müssen wir unseren Quelltext nehmen und vom Java-Compiler in Bytecode übersetzen lassen und dann gehen wir mit diesem Bytecode zum Java-Interpreter, der dann die eigentliche Ausführung übernimmt. Dem Interpreter übergebe ich dabei immer genau eine Klasse und der Interpreter schaut dann in dieser einen Klasse nach der Mengenmethode, die er dann ausführt. Mit einer IDE ist dieser mehrteilige Vorgang etwas vereinfacht worden, und zwar haben wir hier oben ein grünes Dreieck, einen Play-Knopf, einen Abspielknopf, und da steht daran: "Run Main Project". Wenn ich klicke, dann passiert Folgendes: Zuerst werden alle noch nicht gespeicherten Änderungen gespeichert. Danach werden alle Java-Klassen übersetzt, in Bytecode, und schließlich wird die eine Klasse mit der Mengenmethode an den Interpreter übergeben, der die Anwendung dann also ausführt. Sollte die Anwendung irgendetwas ausgeben, dann wird hier unten ein neues Fensterchen erscheinen, in dem wir die Ausgaben verfolgen können. Also drücke ich jetzt einmal oben auf den grünen Knopf. Wenn Ihnen das auch passieren sollte, dann hat das folgenden Grund: Ich habe noch nicht gespeichert und deswegen weiß NetBeans noch nicht, dass diese Klasse eine Mengenmethode hat. NetBeans kann nicht herausfinden, dass das eine Klasse wäre, die ich vielleicht starten könnte. In diesem Fall muss ich also zumindest einmal das Speichern noch selbst übernehmen. Also, noch einmal, grüner Knopf, jetzt steht hier: "Möchten Sie diese Klasse als Main-Klasse benutzen?" Ja, möchte ich. Die Frage kommt auch nur beim ersten Mal. Drücke ich auf "OK". Jetzt wird die Anwendung ausgeführt. Das sehen wir hier unten und, siehe da, wir haben ein Auto gebaut, wir haben das Auto zweimal beschleunigt, uns die Geschwindigkeit des Autos geholt und das Auto fährt 2 km/h. Dann schauen wir einmal noch, ob auch das Bremsen funktioniert. Treten wir einmal kurz auf die Bremse und geben das Ergebnis noch einmal aus. Wenn Sie nicht jedes Mal "system.out.println" tippen möchten, dann gibt es da auch noch eine Kurzform dafür, und zwar tippen Sie "sout", alles klein, und drücken dann die Tabulator-Taste, das ist die links neben dem "Q" mit den beiden Pfeilen links und rechts. Tab, und dann steht dort "system.out.println" und alles ist gut. Jetzt kann ich mir noch einmal die aktuelle Geschwindigkeit holen. Ich muss mir das nicht an den Variablen merken, ich kann auch an dieser Stelle, wo ich den Wert haben möchte, mir den Wert direkt vom Objekt holen, geht beides. So, noch einmal ausführen, Sie können da oben daraufklicken, Sie können auch F6 drücken. Jetzt weiß NetBeans, dass das mein Main Class ist, fragt also nicht mehr nach, sondern führt einfach aus, und wir sehen, wir fahren gerade 2 km/h und jetzt fahren wir nur noch 1 km/h. Ich habe ja gesagt, dass die Main-Methode genau so aussehen muss, wie das hier steht. Ich zeige Ihnen was passiert, wenn es nicht so aussieht. Ich mache aus dem kleinen "m" ein großes "M". Für den Java-Compiler ist das in Ordnung, wir kriegen also keinen Fehler. Es ist ein gültiger Methodenname, wenn auch unüblich, aber nicht mehr der Methodenname, den der Interpreter sucht, wenn er die Anwendung ausführen möchte. Wenn ich jetzt also hier sage  "Mach mal!", dann heißt es wieder "No main classes found", weil es gibt keine Klasse, die eine gültige Mengenmethode enthält. Wir müssen also hier tatsächlich ein kleines "m" hinsetzen und dann ist alles wieder in Ordnung. Sie haben Ihr erstes kleines Java- Programm geschrieben und gesehen, dass Sie eine Mengenmethode benötigen, um eine Anwendung ausführen zu können.

Java 7 Grundkurs

Machen Sie sich mit den Grundlagen der Java-Programmierung vertraut und lernen Sie die Syntax der Sprache sowie das Konzept der objektorientierten Softwareentwicklung kennen.

8 Std. 32 min (66 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!