Sonntag, 8. Oktober 2017

Objektorientierung bei Java


Letztes mal hatten wir das ähnliche Thema der Objektorientierung. Da hatten wir mehrere Methoden in einer Klasse miteinander verbunden was im Überblick dem User darauf auffordert seinen Namen und Alter einzugeben. Danach hat das Programm schließlich den Namen des Benutzer und seinen Alter auf die Konsole mit dem folgenden Satz ausgegeben:
>>EingegebeneName<< ist >>EingegebeneAlter<< Jahre alt.


Heute möchte ich euch zeigen, dass man das Ganze viel umfangreicher machen kann. Für den Beispiel-Programm, welches ich unten aufgeschrieben habe, brauchte man nicht mehrere Klassen zu erzeugen. Man konnte es in einer Klasse und jawohl in einer einzigen Methode, nämlich in die Main-Methode, programmieren. Aber wie es der Zufall will, handelt es sich hierbei um eine Beispielaufgabe und deshalb möchte ich euch zeigen, dass ihr mit der Art von Programmierung viel Übersicht sparen könnt. Die Funktion des Programms ist wie folgt:
Als erstes wird in der Konsole dem Benutzer die Information mitgeteilt, dass Sie weitergeleitet werden.
>>Sie werden weitergeleitet.<<
Danach zählt das Programm von Null bis Zehn mit der Schrittweite Eins und diese gibt er jeweils in der Konsole aus.
Sobald das Programm bis Zehn gezählt hat, bestätigt diese die Verbindung mit einer anderen Klasse.
>>Sie sind nun verbunden :) <<

Bevor wir anfangen, müssen wir als erstes zwei Klassen anlegen. Die erste Klasse, welches die Main-Methode beinhaltet, heißt „Main“ und die zweite Klasse, welches die Ausgabe
Sie sind nun verbunden :)erzeugt heißt „nebenKlasse“. Achten Sie hier auf die Groß und Klein Schreibung. Java ist eine Programmiersprache welches auf Groß- und Kleinschreibung der Wörter, Buchstaben etc. achtet.
Haben Sie das alles erfolgreich gemacht, können wir jetzt loslegen.
Noch eine Information möchte ich hier von mir geben. Falls Sie die Quelldateien mit einem Editor geschrieben haben, empfähle ich ihnen, dass Sie die beiden Klassen in einem Ordner Speichern. Falls Sie aber eine Entwicklungsumgebung verwenden sollten Sie darauf achten, dass die beiden Klassen in dem gleichen package gespeichert sind.

Erste Klasse:

1      public class Main {
2
3           public static void main(String[] args) {
4
5                System.out.println("Sie werden weitergeleitet.");
6                int i = 0;
7                while (i <= 10) {
8                     System.out.println(i);
9                     i++;
10                    if (i==11) {
11                    nebenKlasse verbinden = new nebenKlasse();
12                    verbinden.sollVerbinden();
13                    }
14               }
15          }
16      }



Zweite Klasse:

01      public class nebenKlasse {
02
03           public static void sollVerbinden(){
04
05                System.out.println("Sie sind nun verbunden :)");
06           }
07
08      }


Wie sie es schon feststellen können haben wir zwei Klassen. Die erste Klasse beinhaltet die Main-Methode und die zweite Klasse beinhaltet die erbende Methode sollVerbinden-Methode.

Als erstes fängt das Programm, sobald diese gestartet wird, wie immer die Main-Methode auszuführen. Der Kompiler entdeckt, dass in der fünften Zeile eine Zeichenkette als Satz ausgegeben werden soll. Diese Zeichenkette erscheint als erstes auf der Konsole mit der Ausgabe "Sie werden weitergeleitet.".
Nachdem dieses Text ausgegeben wurde, wird gleichzeitig eine GanzZahlige Integer Variable
int i = 0; mit dem Wert Null und mit dem Namen "i" deklariert und initialisiert. Danach wird die Bedingung gesteuerte while-Schleife mit der Bedingung, dass falls i kleiner ist gleich Zehn ist:
"i" ausgeben soll Zeile 8
i++; Ist das gleiche wie i = i + 1; also immer zu dem Aktuellen i-Wert eins addieren. Zeile9.
Da die While-Schleife als erstes etwas ausgibt und danach diese wieder überprüft, müssten wir den VariablenWert bei der if-Verzweigung auf 11 setzen. Das heißt: falls i das gleiche Wert beinhaltet wie die 11, das Soll folgendes unternommen werden.
Bis hierher war nichts neues am Werk. Wir haben die While-Schleife wiederholt benutzt, eine Zeichenkette ausgegeben und eine Variable initialisiert und deklariert.
Das eigentliche neue Funktion unsers Programmierthema ist das Objekt was zwischen Zeile 11-12 steht.
nebenKlasse verbinden = new nebenKlasse(); Mit dieser Anweisung rufen wir die Variable "verbinden" mit der Funktion, dass es und zu unsere zweiten Klasse mit dem Namen nebenKlasse verbindet.
Mit der endgültigen Eingabe des Befehls, verbinden.sollVerbinden();, haben wir als Benutzer zugriff auf die Klasse nebenKlasse. Mit dem Befehl sollVerbinden ist hier die Methode in der Klasse nebenKlasse gemeint. Sobald wir zugriff auf die zweite Klasse haben und auf die Methode in der zweiten Klasse, wird die Ausgabe "Sie sind nun verbunden :)" ausgegeben.

Mittwoch, 4. Oktober 2017

Grundlagen der Objektorientierten Programmierung


Bei der Objektorientierten Programmiersprachen wie Java, C#, C++ etc. haben wir im Gegensatz zu den Skript Sprachen viele Vorteile. Eine diese Vorteile werden wir Heute bearbeiten. Bis jetzt haben wir kleine Programme geschrieben die auf einem DIN A4 Blatt Papier reichen würden. Jedoch ist es in der Wirklichkeit, also in der Uni oder im Beruf, nicht der Fall, dass man ein kleines Programm schreiben muss. Da Sie alles dem Rechner sagen müssen, was es für Funktionen und Einstellungen dem Benutzer anbieten soll, müssen Sie als erstes all dieses können das Gerät beibringen. Deshalb brauchen Sie in der Praxis mehrere Klassen oder Methoden zur Erzeugung eines Professionellen Programms. Im folgenden Beispiel habe ich eine Klasse Namens „mehrereMethoden“ und insgesamt drei Methoden inklusive der Main-Methode erzeugt.

01 import java.util.Scanner;
02
03 public class MehrereMethoden {
04
05    public static void main(String[] args) {
06
07       // EINGABE DES ALTERS
08       Scanner x = new Scanner(System.in);
09       System.out.println("WIE ALT SIND SIE?");
10       int b = x.nextInt();
11
12       // EINGABE DER NAME
13       Scanner y = new Scanner(System.in);
14       System.out.println("WIE HEISSEN SIE?");
15       String c = y.nextLine();
16
17       // AUFRUF DER METHODEN
18       dritteMethode(c);
19       zweiteMethode(b);
20
21       // KONTROLLIERTES BEENDEN DES PROGRAMMS
22       System.exit(0);
23    }
24
25    public static int zweiteMethode(int b) {
26       System.out.print(b+" JAHRE ALT.");
27       return 0;
28    }
29
30    public static void dritteMethode(String c) {
31       System.out.print(c+" IST ");
32
33    }
34 }

Zum Vergleich zu den vergangenen Klassen haben wir dieselbe Main-Methode und den Selben Klassenstruktur. Jedoch unterscheidet sich die Anzahl an Methoden. Sobald wir das Programm anfangen zu starten wird dabei nur die Main-Methode gestartet und nicht die beiden Methoden zwischen den Zeilen 25-28 und 30-33.
1. Die Main-Methode fängt erst ab der 5 Zeile an. Danach wird, wie es in der Quelldatei auskommentiert worden ist, der Benutzer darauf aufgefordert eine Eingabe des Alters einzugeben. Dies ermöglichen wir, in dem wir den Objekt Scanner x = ….. einfügen. Der Alter besitzt den Primitiven Datentyp integer und ist somit ein Ganzzahliges Wert da kein Alter als Fließkommazahl definiert ist. Achtung wir konnten anstatt int auch den Primitiven Datentyp byte verwenden.
2. Ab Zeile 12 wird der Benutzer aufgefordert seinen Namen einzugeben. Da der Name durch Zeichen und nicht durch Mathematische Werte definiert werden können besitzt die Variable, welches den Namen, die vom Benutzer eingegeben wurde, speichern soll den Datentyp String. Sie haben es schon vielleicht bemerkt, dass das Begriff String nicht mit rotem Buchstaben geschrieben worden ist. Das ist kein Zufall da das Datentyp String kein Primitives Datentyp ist sondern in Wirklichkeit eine Methode.
4. Wie Sie es schon bereits festgestellt haben werden die zwischen Zeile 25 – 28 und 30 – 33 erstellten Klassen in den Zeilen 18 und 19 abgerufen. Sie haben auch womöglich festgestellt, das nach dem Klassennamen im Klammer die Variable „c“ und „b“ welches den Namen und den Alter gespeichert haben an die jeweilige Methoden übergeben werden. Das heißt kurz zusammen gefasst. In der Main-Methode hat der Benutzer seinen Namen, oder die von jemand anderem, und sein Alter eingegeben. Diese beiden Eingaben werden dann beim Abrufen der Methoden „zweiteKlasse“ und „dritteKlasse“ an die Methoden übergeben.
5. Ab Zeile 25 fängt die „zweiteMethode“ an zu arbeiten. Sie nimmt den Interger Wert nämlich den Alter und gibt diese mit zusätzlichem Zwei Wörter aus. Die Ausgabe lautet “25 JAHRE ALT“. Da wir keine Rückmeldung von der Methode „zweiteMethode“ brauchen müssen wir dies dem Compiler mitteilen in dem wir wie in der Zeile 27 es mitgeteilt haben return 0;“.
6. Ab Zeile 30 fängt die „zweiteMethode“ an zu arbeiten. Ihre Aufgabe ist ebenfalls mit einem Parameter weiter zu arbeiten. Jedoch muss diese Methode mit einem String Variablen also mit einer Zeichenkette arbeiten. Zum Vergleich zu der zweiten Methode fängt die Methode mit „public static void“ an. Innerhalb der Runden Klammer soll dem Compiler ebenfalls mitgeteilt werden, was für ein Wert die Methode erwartet. Die dritte und somit die Letzte Methode gibt in meinem Fall
Muhammet Esmer IST aus.

Da das ganze einen Statischen Ablauf hat, möchte ich Sie noch einmal auf die Methoden aufrufe der beiden Methoden zweite-/dritteMethode machen. Als erstes wird die Methode dritteMethode aufgerufen und als zweites, somit als letztes, die zweiteMethode. Die Ausgabe der „dritteMethode“ lautet “Muhammet Esmer IST“ und die Ausgabe der „zweiteMethode“ lautet “25 JAHRE ALT“. Bei starten des Programms wird die Ausgabe, nach der Eingabe des Namens und des Alters,
Muhammet Esmer IST 25 JAHRE ALT“ erzeugt.

Danach wird das Programm am Ende der Main-Methode kontrolliert mit dem Befehl System.exit(0); beendet anstatt es abstürzen zu lassen.

Sonntag, 1. Oktober 2017

Scanner Einführung mit einem Beispiel



Bis jetzt haben wir nur Programme geschrieben, die nur mit fest definierten Variablen gearbeitet haben. Dabei sind ja in der Mathematik die Variablen nur Platzhalter. Das bedeutet, dass die Variable „x“ in Wirklichkeit eine beliebig große und kleine Zahl werden kann. Wir können leider als Benutzer nicht wie in der Mathematik einfach den Wert radieren und danach mit einem neuen Wert überschreiben. Dies ist leider nicht möglich. Damit der Benutzer ohne Programmiererfahrungen das Programm oder die Anwendung bedienen kann, muss im Programm die Funktion „Scanner“ vor definiert sein. Somit wartet der Compiler bis ihr eine Zahl oder eine Eingabe betätigt habt.
Im folgenden Programm habe ich einen kleinen Taschenrechner, der nur addieren und subtrahieren kann, eingebaut. Die einzelnen Schritte werden wir am Ende erörtern.


  1   import java.util.Scanner;

  2   public class Main {

  3

  4      public static void main(String[] args) {

  5

  6         Scanner variableX_Y = new Scanner(System.in);

  7         System.out.println("0=ADDITION");

  8         System.out.println("1=SUBTRAKTION");

  9         byte eingabe = variableX_Y.nextByte();

 10

 11         switch(eingabe){

 12            case 0:

 13

 14               System.out.println("ADDITION");

 15               Scanner summandEins = new Scanner(System.in);

 16               System.out.println("GEBEN SIE DEN ERSTEN SUMMAND EIN: ");

 17               double ersteSummand = summandEins.nextDouble();

 18

 19               Scanner summandZwei = new Scanner(System.in);

 20               System.out.println("GEBEN SIE DEN ZWEITEN SUMMAND EIN: ");

 21               double zweiteSummand = summandZwei.nextDouble();

 22

 23               double ergebnis1 = ersteSummand + zweiteSummand;

 24

 25               System.out.println("ERGEBNIS DER ADDITION LAUTET: "+ergebnis1);

 26               break;

 27

 28            case 1:

 29               System.out.println("SUBTRAKTION");

 30               Scanner summandDrei = new Scanner(System.in);

 31               System.out.println("GEBEN SIE DEN ERSTEN SUMMAND EIN: ");

 32               double dritteSummand = summandDrei.nextDouble();

 33

 34               Scanner summandVier = new Scanner(System.in);

 35               System.out.println("GEBEN SIE DEN ZWEITEN SUMMAND EIN: ");

 36               double vierteSummand = summandVier.nextDouble();

 37

 38               double ergebnis2 = dritteSummand - vierteSummand;

 39

 40               System.out.println("ERGEBNIS DER SUBTRAKTION LAUTET: "+ergebnis2);

 41               break;

 42            default:

 43               System.out.println("UNGULTIGE EINGABE");

 44               break;

 45            }

 46        }

 47   }

Obwohl ich in dem letzten Post von mir gegeben habe, dass ich am liebsten if und else/else if Verzweigungen verwende, wollte ich im obigen Beispiel trotzdem das switch and case anwenden damit ihr sehen könnt, dass es die selbe Anwendungsgebiet besitzt wie das if und else/else if.
Ich habe in diesem Beispiel Verzweigung und den Scanner, für das warten und lesen der Eingabe des Benutzers verantwortlich ist, eingefügt.
6 Scanner variableX_Y = new Scanner(System.in);
Fangen wir ab Zeile 6. Auf der Zeile 6 ist die erste Anweisung „Scanner“ Diese Angabe teilt dem Compiler mit, dass es sich um eine Anweisung handelt, welche eine Eingabe des Benutzers warten soll. Es ist bis jetzt unwichtig ob es sich hierbei um einen Zahlenwert oder um eine String Eingabe handeln soll. Das Zweite Wort „variableX_Y“ ist, wie der Name es schon sagt, eine Variable welches den eingegebenen Wert speichern soll. Danach schließen wir die Anweisung mit dem „= new Scanner(System.in);“ aus. Ich werde in dem folgenden Beispielen erörtern wozu das Schlüsselbegriff new und System.in stehen.

6 Scanner variableX_Y = new Scanner(System.in);
7 System.out.println("0=ADDITION");
8 System.out.println("1=SUBTRAKTION");
9 byte eingabe = variableX_Y.nextByte();

Zwischen Zeile 7 und 8 wird dem Benutzer eine sogenannte Menü/ Wegweiser angezeigt. Der Benutzer kann durch die Eingabe des Wertes 0 mit dem Addition und durch die Eingabe des Werts 1 Subtrahieren. In der Zeile 9 wird dem Compiler mitgeteilt, dass das Eingegebene Wert ein byte Datentyp mit dem Namen „eingabe“ haben soll. Danach wird mit dem befehl „variableX_Y.nextByte()“ das eingegebene String Wert in einem primitiven Datentyp umgewandelt.

Danach kommt das switch and case hier in Verwendung.

Ab Zeile 11 überprüft der Compiler welches Wert die Variable eingabe besitzt. Wenn es das Wert 0 besitzt wird der Benutzer in das Menü „Addition“ weitergeleitet wenn aber das Wert 1 ist wird es zur Menü „Subtraktion“ weitergeleitet. Wenn keines der beiden Werte eingegeben wurde. Kommt wird die Ausgabe in der Zeile 43 ausgegeben.

Samstag, 30. September 2017

switch und case Abfrage in Java




In der Programmiersprache Java gibt es neben dem if und else Verzweigungen auch die switch und case Abfrage. (Verzweigung = Abfrage) Die meisten Programmierer verwenden in Java das switch und case Verzweigung jedoch muss ich zugeben, dass ich am liebsten das if und else/
else if Verzweigung verwende.

In dem folgenden Quellcode präsentiere ich euch ein Beispielprogramm welches eine Verzweigung mit switch und case ausführt.

1   public class switchAndCase {
2
3      public static void main(String[] args){
4         int i=2;
5
6         switch(i){
7           case 0:
8                System.out.println("i ist null");
9                break;
10          case 1:
11               System.out.println("i ist eins");
12               break;
13          case 2:
14               System.out.println("i ist zwei");
15               break;
16          case 3:
17               System.out.println("i ist drei");
18               break;
19          default:
20               System.out.println("i liegt nicht zwischen null und drei");
21       }
22     }
23  }


Womöglich haben Sie es schon bemerkt, dass diese Art von Verzweigung fast keinen Unterschied zum if und else/else if Verzweigung besitzt.
In der Zeile 1 wird eine Klasse namens „switchAndCase“ erzeugt. Ab Zeile 3 Fängt das Programm mit der Standartmäßigen Main-Methode an. Ohne Main-Methode würde das Programm nicht funktionieren. In der Zeile 4 wird Ganzzahlige Variable „i“ mit dem Wert „2“ initialisiert und deklariert. Ab Zeile 6 fängt die Verzweigung an damit wir das Passende Ausgabe für die Variable „i“ erzeugen können. Ab Zeile 6 fängt der Compiler an die Abfrage zu starten. Mit der Anweisung switch(i) vergleicht der Compiler(Übersetzer) den Variablenwert i mit dem case x: werte.
Also wäre Beispielsweise i = 1; dann würde die Ausgabe in der 11 Zeile ausgegeben. Ist aber i > 4 dann würden wir stets die Ausgabe auf der Zeile 20 in der Konsole ausgegeben. Das Schlüsselwort default hat die gleiche Funktion wie das else also gilt
(default = else).

Freitag, 29. September 2017

if und else if Abfrage in Java

Die "if" und "else if" ist ebenfalls neben "if" und "else" abfrage eine sehr wichtige Abzweigung der Programmiersprache Java. Ich werde euch im folgenden Programm zeigen wie man mit diesem Befehl in der Programmiersprache Java und die einzelnen Schritte erörtern.

Bei den vorherigen Beispiel mit der Lampe konnten wir dies nur bei einer "if" und "else" Abfrage machen da wir nur zwei Auswahlmöglichkeiten hatten. Entweder ist die Lampe an oder aus. Wir können die mehrmalige "if" und "else if" Abfrage mit einer Altersabfrage bestimmen.

Beispiel >> if & else if<<

1  public class if_und_else_if {
2     public static void main(String[] args) {
3
4       int alter = 17;
5
6       if ( alter < 18 ) {
7          System.out.println(“Du bist Minderjährig ;) “);
8       }
9       else if ( alter >= 18 && alter < 65 ) {
10         System.out.println(“Sie sind Volljährig und kein Rentner :o “);
11      }
12      else if ( alter >= 65 ) {
13         System.out.println(“Sie sind ein Stolzer Rentner :P “);
14      }
15      else {
16         System.out.println(“Alter dann habe ich keine Ahnung was du bist. “);
17      }
18    }
19 }

Wie Sie es sehen, haben wir bei dem Obigen Programm eine Sehr kleine Quelldatei. Wir Weisen den Variablen „alter“ den Ganz Zahlligen Integer Wert zu und initialisieren dieses mit dem Datentyp int. Danach fängt die Abfrage ab Zeile 6 an zu arbeiten. Das Programm stellt dabei die Frage ob die Variable alter, welches auf der Zeile 4 initialisiert und deklariert worden ist, den Wert kleiner 18 oder größer gleich 18 und kleiner 65 oder größer gleich 18 besitzt. Ansonsten wird das Programm die Ausgabe in der Zeile 16 ausgeben.
Stellt der Compiler fest, dass die Variable alter den Wert 17 besitzt so wird die Ausgabe in Zeile 7 ausgegeben. Wenn die Variable einen Wert besitzt welches zwischen 18 und 65 liegt, dann wird die Ausgabe in der Zeile 13 ausgegeben. Falls die Variable alter einen nicht Reellen Wert besitzt, wird die Ausgabe in der Zeile 16 ausgegeben.
Auf Deutsch: if = wenn ; else if = wenn aber
(4) alter ist ein Ganzzahl mit dem Wert 17;
(6) wenn alter kleiner als 18 dann → (7)
(9) wenn alter zwischen 18 und 65 dann → (10)
(12) wenn alter größer als 65 → (13)
(15) sonst → (16)