Beispiel über das Schlüsselwort this




Hallo zusammen. Wie versprochen möchte ich euch ein ausführliches Beispiel über das Schlüsselwort this anzeigen. Bis jetzt haben wir nichts mit diesem Begriff gemacht. Bei meinem letzten Post habe ich nur die Erklärung beziehungsweise die Bedeutung und die Funktion des Schlüsselbegriffs in Java erklärt. Jetzt möchte ich anhand eines Beispieles die Benutzung des Wortes zeigen.

Ich habe einen Programm welches aus zwei Klassen besteht angelegt. In der Klasse AutoKlasse findet ihr das Begriff this welches wir nur zwischen Zeile 13 und 16 angewendet haben. In unsere Hauptklasse RunKlasse befindet sich die Main-Methode. In dieser Methode wird der Benutzer über die Attribute/Eigenschaften seines Wunschautos abgefragt. Der Benutzer kann hier freie Eingaben tätigen.

Fangen wir mit unsere AutoKlasse an. Beim Programmieren ist es sinnvoll immer zum Schluss die Main-Methode zu programmieren.

Nachdem wir unsere Klasse AutoKlasse angelegt haben, deklarieren wir die vier Variablen mit dem Namen autoModel, autoFarbe, autoLeistung und verbrauch mit den Datentyp String für autoModel und autoFarbe, int für autoLeistung sowie boolean für den verbrauch. Mit verbrauch wird hier nicht der Verbrauch pro 100 km gemeint sondern der Brennstoff wie Benzin oder Diesel. Nach dem wir unsere Variable deklariert haben, müssen wir diese eigentlich noch initialisieren sodass wir mit diesem auch arbeiten können. Davor müssen wir aber eine neue Methode schreiben, welches Parameter von der Klasse RunKlasse erwarten soll.

Nach der Entwicklung unsere Methode dasErsteAuto() { Zeile 11 verwenden wir das Wort this.
Das Wort this unterscheidet hier die Werte zwischen zwei Gleichnamigen Variablen.
Zum Beispiel steht in der Zeile 13 das Befehl: this.autoFarbe = autoFarbe;
Wenn ihr das Komplette Programm in eurer Entwicklungsumgebung kopiert und falls der Compiler keine Fehlermeldung anzeigt, klickt bitte einmal auf das begriff autoFarbe welches nach dem Wort this vorkommt. Ihr wird feststellen, dass diese Variable sich auf das im Zeile 6 stehenden Variable autoFarbe bezieht. Dieses hat aber kein Wert. Nun das Wert gibt die Variable welches nach dem ist gleich „=“ Zeichen stehende Variable autoFarbe an. Die Variable welches das Wert besitzt, wird in der Klasse RunKlasse definiert. Wir hatten nur die Werte zwischen Zeile 13 und 16 neu angewendet. In dem folgenden Programm sowie in der Klasse RunKlasse sind die Befehle alle Bekannt. Ich werde das Programm kurz mit euch durchgehen sodass ihr euch mit jedem Syntax auseinander setzen könnt. In der Zeile 18 Beginnt, wie ihr das anhand der Quelldatei erkennen könnt, die Verzweigung mit der Bedingung, dass falls verbrauch true ist, die Folgenden ausgaben ausgegeben werden sollen und falls aber der verbrauch false ist, die Ausgaben in dem zweiten Verzweigung Block. Nun warum ist einmal der verbrauch true und false? Das hat einen Semantischen Hintergrund. Ich habe oben erwähnt, dass wir in unserem Programm zwei Arten von Autos anbieten welches entweder Diesel oder Benziner sein können. In Wirklichkeit gibt es Erdgas, Strom, Diesel, Benzin etc. Da wir nur Benzin und Diesel im Angebot haben, haben wir nur zwei Möglichkeiten im Angebot. Da jeder Programmierer Speicherschonend programmieren soll, müssen wir uns immer den Speicher im Hintergrund behalten. Ich könnte hier auch String oder Char verwenden jedoch ist boolean hier die Sparsamste. Wie ihr das in dem Beiden Blöcken erkennen könnt, Sind die Ausgaben leicht erkennbar und braucht keine Extra erläuterung.

Bewegen wir uns zu der Klasse RunKlasse. Diese Klasse besteht aus insgesamt vier Methoden. Die erste Methode ist die Main-Methode. Die zweite Methode ist die Methode für das Abfragen der Werten für die jeweiligen Parameter. Die Dritte Methode gibt die Werte, welches in der Klasse abfragen(); der Variablen deklariert worden sind, in die Klasse AutoKlasse ein. Unsere vierte Klasse ist für das Ende zuständig. Sobald das Programm in der Klasse AutoKlasse seine letzte Ausgabe ausgegeben hat, landet es wieder in der Main-Methode genauer gesagt in der Zeile 45. Dort werden die Scanner geschlossen sodass diese nicht unnötig im Speicher den Speicherplatz besetzen und der Compiler in die vierte Methode ende(); versetzt. Nachdem der Compiler in der Methode ende(); die Ausgaben zwischen der Zeile 61 und 63 ausgegeben hat, beendet der Compiler das Programm mit dem Befehl System.exit(0);

Was Passiert in der Methode abfragen(); ?

In der Methode wird als erstes das Model und Marke des Wagens festgestellt. Dabei kann der Benutzer alle Marken eingeben. Das Programm wurde nicht für Abfangen der Fehler programmiert ansonsten wäre der Syntax zu kompliziert um die Funktion des Schlüsselworts this zu verstehen. Das Eingegebene Model und Name des Autos wird in die Variable autoModel als String wert gespeichert. Danach wird mit einer Empfehlung von vier Farben, rot, blau, gelb und schwarz, die Farbe des Autos als String in die Variable autoFarbe gespeichert. Nach dem wir dies Unternommen haben, fragt uns das Programm, welche Leistung unser Auto haben soll. Wir müssen hier eine Ganzzahl eingeben. Hier könnte der Benutzer frech sein und ein negatives Wert welches sinnlos sein würde eingeben. Genau hier könnten wir ein try & catch Block programmieren jedoch musste ich auch hier darauf verzichten da sonst das Programm zu umfangreich wäre. Schließlich wird uns am Ende die Letzte Frage in der Zeile 31 bis 35 gestellt in dem der Zustand der Variable verbrauch festgelegt wird. Wir sollen die Zahl 0 betätigen falls wir uns für ein Benziner oder die Zahl 1 tätigen falls wir uns für ein Diesel Motor entscheiden würden. Dieser Befehl ist ein Zahlenwert und kann nicht als Zustand angewendet werden. Damit wir diese Barriere überwinden können, habe ich wieder eine Verzweigung eingesetzt in dem ich falls die Variable verbrauchSoll 0 ist die variable verbrauch true zustand besitzen soll, Falls aber die Variable den Wert 1 besitzt soll die Variable verbrauch den Zustand false besitzen. Danach geht das Spiel wieder von vorne los. Ich habe für euch unten das Programm mit einem Beispielhaften Ausfuhrvorgang eingetragen. Falls ihr Fragen oder Schwierigkeiten habt, könnt ihr euch jederzeit melden.

------------------------------------RUNKLASSE-----------------------------------------

01    package java2enterprise;
02
03    import java.util.Scanner;
04
05    public class RunKlasse {
06
07       public static void main(String[] args) {
08
09          System.out.println("--------------");
10          System.out.println("PROGRAMM START");
11          System.out.println("--------------");
12          abfragen();
13       }
14
15    public static void abfragen() {
16       Scanner scannerVariable = new Scanner(System.in);
17       System.out.println("Was für ein Auto möchten Sie haben?");
18       System.out.println("Geben Sie das Modell des Wagens sowie den Namen des Herstellers ein:");
19 String autoModel = scannerVariable.nextLine();
20
21       Scanner scannerVariable1 = new Scanner(System.in);
22       System.out.println("In welcher Farbe soll das Auto lackiert werden?");
23       System.out.println("Es stehen zurzeit nur vier Farben zu verfügung \n " +
"Diese sind: [rot], [blau], [gelb], [schwarz]");
24       String autoFarbe = scannerVariable1.nextLine();
25
26       Scanner scannerVariable2 = new Scanner(System.in);
27       System.out.println("Wie viel PS soll ihr Auto haben?");
28 int autoLeistung = scannerVariable2.nextInt();
29
30       Scanner scannerVariable3 = new Scanner(System.in);
31       System.out.println("Soll es ein Diesel oder ein Benziner sein?");
32       System.out.println("Geben Sie für [benzin] die [0] ein, falls Sie ein Benziner haben wollen.");
33       System.out.println("Geben Sie für [diesel] die [1] ein, falls Sie ein Diesel haben wollen.");
34       byte verbrauchSoll = scannerVariable3.nextByte();
35
36       if(verbrauchSoll == 0){
37           boolean verbrauch = true;
38           erwarten(verbrauch, autoLeistung, autoModel, autoFarbe);
39       }
40       else if (verbrauchSoll == 1){
41           boolean verbrauch = false;
42           erwarten(verbrauch, autoLeistung, autoModel, autoFarbe);
43       }
44
45    scannerVariable3.close();
46    scannerVariable2.close();
47    scannerVariable1.close();
48    scannerVariable.close();
49    ende();
50    }
51
52    public static void erwarten(boolean verbrauch, int autoLeistung, String autoModel, String autoFarbe) {
53
54    AutoKlasse auto = new AutoKlasse();
55    auto.dasErsteAuto(autoModel, autoFarbe, autoLeistung, verbrauch);
56
57    }
58
59    public static void ende() {
60       System.out.println("-------------");
61       System.out.println("PROGRAMM ENDE");
62       System.out.println("-------------");
63
64       System.exit(0);
65    }
66
67 }



------------------------------------AUTOKLASSE-----------------------------------------

01  package java2enterprise;
02
03  public class AutoKlasse {
04
05    String autoModel;
06    String autoFarbe;
07    int autoLeistung;
08    boolean verbrauch;
09
10
11    public void dasErsteAuto(String autoModel, String autoFarbe, int autoLeistung, boolean verbrauch) {
12
13       this.autoFarbe = autoFarbe;
14       this.autoLeistung = autoLeistung;
15       this.autoModel = autoModel;
16       this.verbrauch = verbrauch;
17
18       if (verbrauch == true) {
19          // Benziner
20
21                   
22          System.out.println("Es handelt sich um den "+autoModel);
23          System.out.println("Der "+autoModel+" hat "+autoLeistung+" PS.");
24          if(autoFarbe == "rot"){
25             System.out.println("Mit der Farbe "+autoFarbe+" sieht es Sexy aus.\nPerfekt für Ihre Frau.");
26          }
27          else if(autoFarbe == "schwarz"){
28             System.out.println("Mit der Farbe "+autoFarbe+" sieht es Elegant aus.");
29          }
30          else if(autoFarbe == "blau"){
31             System.out.println("Mit der Farbe "+autoFarbe+" sieht es Himmlisch aus.");
32          }
33          else if(autoFarbe == "gelb"){
34             System.out.println("Mit der Farbe "+autoFarbe+" scheint es wie die Sonne");
35          }
36          else{
37             System.out.println("Ihr Wunschauto "+autoModel+" mit der Farbe "+autoFarbe+" sieht einfach cool aus.");
38          }
39             System.out.println("FAZIT: \n " +
"Sie möchten ein \n "+autoModel+" welches "+autoLeistung+" PS besitzt, \n" +
" in der Farbe "+autoFarbe+" mit dem Benziner Motor kaufen.");
40 
41
42
43          }
44          else if(verbrauch == false) {
45
46             // Diesel
47 
48
49             System.out.println("Es handelt sich um den "+autoModel);
50             System.out.println("Der "+autoModel+" hat "+autoLeistung+" PS.");
51             if(autoFarbe == "rot"){
52             System.out.println("Mit der Farbe "+autoFarbe+" sieht es Sexy aus.\nPerfekt für Ihre Frau.");
53             }
54             else if(autoFarbe == "schwarz"){
55             System.out.println("Mit der Farbe "+autoFarbe+" sieht es Elegant aus.");
56             }
57             else if(autoFarbe == "blau"){
58             System.out.println("Mit der Farbe "+autoFarbe+" sieht es Himmlisch aus.");
59             }
60             else if(autoFarbe == "gelb"){
61             System.out.println("Mit der Farbe "+autoFarbe+" scheint es wie die Sonne");
62             }
63             else{
64             System.out.println("Ihr Wunschauto "+autoModel+" mit der Farbe "+autoFarbe+" sieht einfach cool aus.");
65             }
66             System.out.println("FAZIT: \n " +
"Sie möchten ein \n "+autoModel+" welches "+autoLeistung+" PS besitzt, \n" +
" in der Farbe "+autoFarbe+" mit dem Benziner Motor kaufen.");
67
68         }
69      }
70  }

Kommentare

Beliebte Posts aus diesem Blog

How can I transform a .jar file to a .bat file?

Ein Kleines Spiel mit Altersabfrage

Raspberry Pi als echten Web- und Mailserver einsetzen (German)