Programmieren in Java - Von C nach Java

in #programmieren6 years ago (edited)

14485179234_b363306384_o.jpg
Bild Referenz: https://www.flickr.com/photos/xmodulo/14485179234

Intro

    Hallo, ich bin's @drifter2! Der heutige Artikel ist an meinem englischen Artikel "From C To Java" basiert, dem wir heute zu Deutsch übersetzen werden und zusätzlich auch "optimieren" werden. Das heißt das wir über den Umstieg von der Sprache C zu der Sprache Java reden werden. Dabei werden wir erstmal die Ähnlichkeiten mit C "zeigen" , einen Einstieg zu der Objekt-Orientierten-Programmierung (OOP) geben und zuletzt ein komplettes "C-like" Beispielprogramm in Java implementieren. Also, fangen wir dann mal direkt an!


Ähnlichkeiten mit C

    Die Sprache C ist eine Prozedurale Programmiersprache, welches bedeutet das die Sprache aus Imperativen Ansätzen, Kontrollstrukturen (Sequenz, Schleife, Verzweigung), Unterprogrammen und Variablen, die Daten/Informationen einspeichern, besteht. Die Objekt-Orientierte Sprache Java enthält viele dieser Prozeduralen Anweisungen und erweitert diese, indem sie auch Objekte und Klassen benutzt. Das heißt das die bereits bekannten Anweisungen von if-else, while, for, switch-case auch bei Java enthalten sind. Diese sind wie bei C auch vordefiniert und man muss keine Bibliothek (library) importieren. Die Art in der wir Variablen und Funktionen deklarieren ist auch sehr ähnlich. Da wir aber nun über Klassen reden die diese Variablen und Funktionen enthalten, muss man auch den Zugriff auf diese Variablen und Funktionen deklarieren, etwas das mit den Zugriffs-Modifizierern: "public", "private" und "static" geregelt wird (mehr dazu und über Klassen generell kommt beim nächsten Artikel). Die Ein- und Ausgabe über die Konsole und Felder sind auch Sachen die nun anders sind, da viele dieser Dinge nun mit Hilfe von Objekten ausgeführt werden.


Object-Orientiertes-Programmieren (OOP)

    Bevor wir in diese letzten Änderungen eingehen die uns beim Beispielprogramm von Nützen sein werden, sollten wir vielleicht noch ein paar mehr Sachen über die Objekt-Orientierte-Programmierung (OOP) erwähnen. Die Objekte, welche durch Klassen beschrieben werden, sind sehr ähnlich zu den Strukturen (structs) die wir bei C verwenden um komplexe Datentypen zu deklarieren. Der eigentliche Unterschied ist das diese "Strukturen" nun auch Funktionen oder Methoden enthalten. Ähnlich wie bei Strukturen kann auch die verschiedenen Variablen und Methoden mit dem "." Modifikator zugreifen. Durch die Benutzung dieser Klassen oder Objekten, kann man den Code nun viel leichter wiederverwenden, etwas das beim programmieren generell sehr wichtig ist (Wiederverwendbarkeit). Etwas sehr nützliches ist das String-Objekt, mit dem wir Zeichenketten deklarieren-definieren können. Dadurch muss man keine Zeichen-Felder deklarieren, sondern kann direkt ein Objekt vom "String-Typ" deklarieren. Java enthält sehr viele dieser vor-implementierten Objekte welche ihr euch bei der so genannten Java API ansehen könnt, bei der folgenden Adresse: https://docs.oracle.com/javase/7/docs/api/


Eingabe über die Konsole

    Der leichteste Weg indem wir eine Eingabe von "Benutzer" bekommen können, ist durch die Verwendung eines Scanner Objekts. Dieses Objekt ist sehr leicht zu verwenden und kann bei leichten Datentypen benutzt werden.
Ein solches Objekt wird wir folgend definiert:

Scanner s = new Scanner(System.in);

Erklärung vom Code:

  • Wir deklarieren ein Scanner-Objekt mit dem Namen "s"
  • Alle Objekte werden mit Hilfe des "new"-Stichworts erstellt
  • Nach dem "new" kommt dann der so genannte Konstruktor, der uns das Objekt erstellt, und bei dem wir auch Parameter abgeben können
  • Der Parameter "System.in" bedeutet z.B das wir von der Tastatur lesen wollen

Danach können wir dieses neue Objekt sehr leicht verwenden indem wir:
  • "s.nextInt()" für die Ganzzahlen-Eingabe (Integer Input) verwenden
  • "s.next()" für die Zeichenketten-Eingabe (String Input) verwenden
  • "s.nextLine()" für die Zeichenketten-Eingabe einer kompletten Linie (Line Input) verwenden
  • "s.next().CharAt(0)" für die Zeichen-Eingabe (Character Input) verwenden, wo wir das Erste Zeichen (0-Index) von der Zeichenkette zurückgeben (das geht noch leichter mit dem so genannten Reader-Objekt, das ähnlich deklariert wird)
  • "s.close()" zum schließen des Eingabe-Stroms (Input Stream), wenn man z.B. mehrere Ströme bei von der Tastatur hat. Meistens warnt euch auch der Compiler!


Ausgabe über die Konsole

    Für die Ausgabe benutzen wir System.out.print() oder System.out.println(), die zweite enthält einen Zeilenumbruch am Ende (line break - '\n'). Ihr könnt auch System.out.printf() benutzen, wenn ihr genau wie bei C ausgeben wollt. Bei den "Java-Methoden" könnt ihr eine Variable sehr leicht ausdrucken indem ihr diese ganz "alleine" reinpackt. Wenn ihr mehrere Variablen ausgeben wollt in der Form einer Nachricht, verkettet (concatenate in Englisch) ihr die verschiedenen Zeichenketten mit der Hilfe eines "+" Zeichens.

Beispiele:

1.
Sagen wir mal ihr wollt "Hello, World!" ausdrucken (Klassiker).
Die Funktion sieht wie folgend aus:

System.out.println("Hello, World!");

2.
    Sagen wir mal ihr wollt "value : 5" ausdrucken, wo '5' der Wert einer Ganzzahl Variable "value" ist. Der Code sieht wie folgend aus:

System.out.println("value : " + value);

Es ist sehr wichtig das ihr dieses Prinzip verstehen könnt!


Arrays-Felder als Objekte

    Felder in Java sind Objekte, welche mit dem "new"-Modifikator erstellt und angeordnet werden. Das ist sehr ähnlich zu den Zeigern von C (Java hat keine Zeiger, zumindest kann man diese nicht direkt sehen). Ein Zeiger zeigt erstmals zu keiner Speicherstelle, sondern zu "null", welches bei Java kleingeschrieben wird (In C war es "NULL"). Wenn man vergisst ein Objekt mit "new" zu erstellen, kommt dann ein so genannter null pointer exception-Fehler, den ihr als Anfänger sehr oft sehen werdet!
    Sagen wir mal wir wollen eine Ganzzahl Feld deklarieren von einer Größe "size". In Code sieht das in Java wie folgend aus:

int[] A = new int[size];

    Wie ihr sehen könnt ist das "[]" vor dem Namen 'A', da wir mit einem "int[]" Objekt zu tun haben. Das selbe kann man auch "geteilt" machen:

int[]A; 
// Anderer Code
A = new int[size];
Dadurch deklariert man das Objekt bereits vorher, aber "erstellt" es erst später.

C-like Beispielprogramm

Installation:

    Um Java zu schreiben müsst ihr Java und die so genannte JDK installieren. Um leichter zu schreiben solltet ihr auch eine Java-kompatible IDE verwenden wie Eclipse oder Netbeans (ich verwende Eclipse).

Beschreibung:

    Das Programm was gleich folgt, ist ein Java-Programm das aber sehr ähnlich zu einem C-Programm ist (C-like). Sagen wir mal wir wollen ein Programm erstellen welches Operationen auf ein Ganzzahl-Feld ausführt. Dieses Feld ist pseudo-dynamisch, welches heißt das wir die Größe ("size" variable) als Eingabe nehmen werden. Dieser Wert muss zwischen 1...100 sein.
    Um diese Operationen auszuführen erstellen wir eine Switch-Case Menü, welches eine Zeichenkette verwenden und folgenden Operationen ausführt, je nach Eingabe:
  • "fill": Zum füllen des Feldes mit zufälligen Nummern von a bis b, a und b Ganzzahlen, wo wir auch kontrollieren müssen ob a < b ist.
  • "sum": Zum berechnen der Summe (sum) des Feldes
  • "max": Um den Maximalen (max) Wert im Feld zu finden
  • "min": Um den Minimalen (min) Wert im Feld zu finden
  • "sort": Um das Feld zu sortieren mit zwei Optionen: aufsteigend und absteigend
  • "search": Um nach einem Wert im Feld zu suchen
  • "avg": Um die Durchschnitt (average) zu berechnen
  • “exit”: Um das Programm zu beenden
    All diese Operationen/Berechnungen werden direkt beim Switch-Case Menü und nicht mit Funktionen-Methoden berechnet, da wir noch nicht über Funktionen geredet haben.

Code:

Den Code könnt ihr bei pastebin finden:
https://pastebin.com/StFhC18U
Ja, die '>' und '<' haben sehr viele Probleme gebracht. Ich schreibe alles in HTML :P


Referenzen:

  1. https://de.wikipedia.org/wiki/Prozedurale_Programmierung
  2. https://www.heise.de/developer/artikel/Von-C-nach-Java-Teil-1-Der-schnelle-Umstieg-von-der-Kommandozeile-aus-1245697.html?seite=all
  3. https://www.dev-insider.de/was-ist-oop-a-677737/
  4. http://www.programmierenlernenhq.de/java-programmieren-lernen-einfache-ausgaben-und-eingaben/
  5. http://www.java-programmieren.com/arrays-java.php
  6. https://steemit.com/programming/@drifter1/programming-from-c-to-java
    Der Artikel ist zu 90% eine Übersetzung von meinen englischen Artikel, aber enthält ein paar mehr Informationen. Die anderen Referenzen haben dabei geholfen die richtigen deutschen Begriffe zu finden und zu verwenden, da ich Programmieren nicht in Deutsch, sondern in Englisch gelernt habe.


Vorherige Artikel

    Dies ist der erste Artikel der Java-Serie, aber wie bereits im Artikel erwähnt wurde, errate ich euch sehr das ihr euch auch ein paar Artikel der C-Serie anschaut (die Grundlagen). Diese Artikel werden bei vielen Themen von Java helfen, da ihr die Grundlagen dann bereits beherrscht. Etwas letztes das ich vielleicht noch erwähnen sollte ist das viele der Themen von der C-Serie als bekannt betrachtet werden, wie ihr auch heute bereits gesehen habt.


Schlusswort

    Und das war's dann auch mit dem heutigen Artikel und ich hoffe euch hat dieser Artikel gefallen und in die Welt von Java gebracht. Beim nächsten Artikel werden wir über Klassen und dessen so genannten Methoden (anderes Wort für Funktionen das bei OOP benutzt wird) sprechen.


Keep on drifting! ;)

Sort:  

Hello! Your post has been resteemed and upvoted by @ilovecoding because we love coding! Keep up good work! Consider upvoting this comment to support the @ilovecoding and increase your future rewards! ^_^ Steem On!

Reply !stop to disable the comment. Thanks!