Einstieg in JAVA

Aus ComeniusWiki
Wechseln zu: Navigation, Suche

Am Ende des Kapitels solltest du

  • wissen, was Java ist,
  • die BlueJ-Programmierumgebung für Java eigenständig auf Deinem Computer installiert haben,
  • Dir einen ersten Überblick über den Editor verschafft haben,
  • in der Lage sein, erste kleine Programme zu erstellen,
  • wissen, wo Deine Programme abgespeichert werden,
  • wesentliche Gemeinsamkeiten und Unterschiede von Processing und Java kennengelernt haben,
  • eine Methode für die Eingabe in JAVA-Programmen beherrschen.


Inhaltsverzeichnis

Vorbereitende Aufgaben

Da wir ab jetzt vorwiegend mit JAVA als Programmiersprache arbeiten, empfiehlt es sich, das JDK-Paket und BlueJ als Programmierumgebung herunterzuladen und zu installieren.

JDK (Java Development Kit) (download)

BlueJ (Entwicklungsumgebung für Java) (download)


Was ist Java?

Wir wissen bereits, dass Processing eine vereinfachte Variante von JAVA ist. JAVA selbst ist eine objektorientierte Programmiersprache. Sie besteht grundsätzlich aus dem JAVA-Entwicklungswerkzeug (JDK) zum Erstellen von JAVA-Programmen und der JAVA-Laufzeitumgebung (JRE) zu deren Ausführung. Die Laufzeitumgebung selbst umfasst die virtuelle Maschine (JVM) und die mitgelieferten Bibliotheken. Nachdem wir nun bereits wissen, wie man programmiert, lohnt es sich einen kurzen Blick "unter die Haube" zu werfen und sich klar zu machen, was Programmierung eigentlich bedeutet:


Programmieren

Um einem Computer beizubringen, welche Aufgabe er lösen soll und auf welche Art und Weise er dies tun soll, benötigt man eine Methode um mit dem Computer zu kommunizieren. Da dieser aber letztlich nur eine Sprache versteht, die aus den Zeichen 0 und 1 besteht, hat man Programmiersprachen entwickelt, die diese Kommunikation ermöglichen. Programmiersprachen können je nach Anwendungszweck sehr unterschiedlich aussehen. Es können mächtige Werkzeuge wie C++ oder JAVA sein, speziell auf bestimmte Anwendungen hin konzipierte Sprachen wie Processing, aber auch die sehr einfache Sprache von Robot Karol. Der Programmierer schreibt sein Programm auf der Basis einer Modellierung des Problems in der jeweiligen Sprache. Anschließend wird das Programm über einen oder mehrere Zwischenschritte in einen Maschinencode übersetzt, der vom Computer ausgeführt werden kann.

B.Schiller Arbeitsablauf bei Programmerstellung.JPG

In unsere JAVA-Programmierumgebung BlueJ lassen sich diese Schritte relativ einfach erledigen:

  1. Zunächst erzeugen wir mit Projects - New Project... ein neues Projekt und speichern dieses in einem Ordner für die BlueJ-Projekte ab.
  2. Dann öffnen wir mit Mausklick rechts auf die Klassenkarte das Kontextmenü und anschließend den Editor (Open Editor) und löschen den vorgegebenen Text. Jetzt können wir unseren Code schreiben.
  3. Nachdem das Programm fertiggestellt ist, kann es kompiliert, d.h. in Maschinensprache übersetzt werden (Button "Compile" oben links). Genau genommen wird der JAVA-Code in eine Sprache übersetzt, die von der sogenannten Virtual Machine, dem JRE gelesen werden kann.
  4. Enthält das Programm noch Fehler, werden diese am unteren Rand des Editors angezeigt. Ist das Programm (syntaktisch) fehlerfrei, dann wird dort "class compiled - no syntax errors" angezeigt.
  5. Jetzt kann das Programm ausgeführt werden, indem wir in der Projektansicht mit Mausklick rechts auf die Klassenkarte das Kontextmenü öffnen und eine Instanz der Klasse erzeugen (Rechtsklick auf obersten Eintrag). Anschließend öffnen wir auf dem Symbol für die Instanz unten links das Kontextmenü und starten eine der Methoden, worauf diese ausgeführt wird.


[[Datei:B.Schiller Bluejprojekt.JPG]]


Das erste Programm

In Java kann man nur objektorientiert programmieren. Alle Programme in Java basieren daher von ihrem Aufbau her komplett auf Klassen. Im Gegensatz zu Processing muss also auch das Hauptprogramm in einer Klasse stehen.

Öffne BlueJ und erzeuge eine neue Klasse mit Namen "Test". Öffne dann mit Mausklick rechts auf die Klassenkarte das Kontextmenü und anschließend den Editor und lösche den vorgegebenen Text. Schreibe nun folgendes Programm in den Editor:

B.Schiller Programm01.JPG

Programmbeispiel 1.1.

Erzeuge anschließend eine Instanz von "Test" und trage in das Feld hinter new Test deinen Namen in Anführungszeichen ein.

B.Schiller Programm1kon.JPG

Rufe nun durch Rechtsklick auf das Instanzensymbol die Methode ausgabe() auf. Dadurch wird ein Willkommensgruß auf der Konsole angezeigt.


Unterschiede zwischen Processing und JAVA

Sehen wir uns nun die wesentlichen Unterschiede zu einem Processing-Programm an:

  • Sowohl die Klassen, als auch Attribute, Konstruktor und Methoden erhalten einen Zugriffsmodifikator. Zugriffsmodifikatoren definieren die Sichtbarkeit einer Variable, eines Konstruktors oder einer Methode. Öffentliche (public) Elemente sind sowohl innerhalb der definierenden Klasse zugreifbar als auch von anderen Klassen aus; private (private) Elemente sind ausschließlich innerhalb der definierenden Klasse zugreifbar. Dies ist Teil des Sicherheitskonzepts von JAVA und war in Processing nicht notwendig.
  • Da es sich um keine Graphikanwendung handelt, finden wir in einem JAVA-Programm weder eine setup()- noch eine draw()-Methode.
  • Zur Ausgabe auf der Konsole benötigen wir eine nähere Bestimmung der entsprechenden Methode. Wir schreiben deshalb statt println System.out.println. Zudem benutzen wir hier eine sogenannte Konkatenation zum Verbinden von Zeichenketten (Strings). Dabei wir das Zeichen + als Operator zum Verbinden der Zeichenketten genutzt.

Der Übergang zu JAVA sollte keine größeren Probleme bereiten.


Eingaben mit JAVA

Bei Processing war es nicht notwendig, Eingabewerte über die Tastatur einzugeben. JAVA-Anwendungen erfordern häufiger solche Eingaben. Dafür gibt es verschiedene Möglichkeiten. Wir wollen das folgende Grundgerüst für unsere Aufgaben nutzen:


import java.util.Scanner;
 
public class Aufgaben{
 
//Attribute
Scanner eingabe;
 
//Konstruktor
public Aufgaben(){
  eingabe = new Scanner (System.in);
}
 
 
//Beispielaufgabe Addieren
public void addieren(){
   System.out.print ("Geben Sie die erste Zahl ein: ");
   int z1 = eingabe.nextInt(); 
   System.out.print ("Geben Sie die zweite Zahl ein: ");
   int z2 = eingabe.nextInt();
   int add = z1 + z2;
   System.out.println("Die Summe aus "+z1+" und "+z2+" lautet: "+add);
}
 
 
}


Erläuterungen:

  • Mit import java.util.Scanner wird ein sogenanntes Package importiert, das die Möglichkeit bietet, Zahlen oder Text auf der Konsole einzugeben. (Dokumentation der Klasse Scanner)
  • Mit Scanner eingabe = new Scanner (System.in) wird ein Scanner-Objekt mit dem Namen eingabe erzeugt, das die Verwendung der benötigten Eingabemethoden ermöglicht.
  • Die Eingabe erfolgt nach folgendem Schema:
System.out.print ("Geben Sie die erste Zahl ein: ");        // Der Text zwischen den Anführungszeichen kann beliebig sein
   int zahl1 = eingabe.nextInt();                           // für ganze Zahlen
double zahl2 = eingabe.nextDouble();                        // für Fließkommazahlen
String ein   = eingabe.next();                                // für Zeichenketten
  • Der Wert wird nach der ausgegebenen Eingabeaufforderung eingegeben. Nach Betätigen der ENTER-Taste wird der jeweilige Wert der entsprechenden Variable zugewiesen.


Folgende Methoden sollen alle in der Klasse Aufgaben realisiert werden:


Aufgabe 1 (Kreisberechnung)

Erstelle eine Methode public void kreisberechnung(), die nach Eingabe des Radius den Umfang und den Inhalt des Kreises berechnet und auf der Konsole ausgibt. Pi kann mit dem gerundeten Wert 3.1415926 verwendet werden.


Aufgabe 2 ("Mondbremse")

Aufgrund der Gezeitenkräfte des Mondes wird die Rotation der Erde abgebremst. Als Folge daraus verlängern sich in den nächsten 1000 Jahren die Tage jedes Jahres um 0.0016 Sekunden. Erstelle eine Methode public void mondbremse(), die nach Eingabe des Kalenderjahres angibt, um wieviel länger der Tag im Vergleich zu heute dauert. (Achtung: Hier ist eine sogenannte Typumwandlung notwendig! Um z.B. einen int-Wert mit einem double-Wert verrechnen zu können, muss der int-Wert mittels (double) in einen double-Wert verwandelt werden (z.B. (double) x.)


Aufgabe 3 ("Temperaturumrechnung")

Erstelle eine Methode public void umrechnung_F_C (), die die eingegebene Temperatur von Fahrenheit in Celsius umrechnet und ausgibt. Die Umrechnungsformel lautet: C=5/9(F-32). Vorsicht mit den verwendeten Datentypen, da sonst als Ergebnis immer 0.0 erscheinen wird! (Kontrolle: 212 Grad Fahrenheit entsprechen 100 Grad Celsius.)


Aufgabe 4 ("Zinsrechnung")

Erstelle eine Methode public void zinsrechnung(), die nach Eingabe von Kapital und Zinssatz (in Prozent) das Kapital nach einem Jahr berechnet. Erweitere anschließend das Programm um die Ausgabe des Kapitals nach zwei Jahren.


Aufgabe 5 ("Bogenmaß")
Erstelle eine Methode public void Bogenmaß(), die einen Winkel von Grad nach Bogenmaß umrechnet. (Kontrolle: 180° entsprechen 3,141)


Aufgabe 6 ("Inchumrechnung")
Erstelle eine Methode public void inchUmrechnung(), die von der Einheit Inch nach cm umrechnet. (Kontrolle: 1 Inch entsprechen 2,54 cm)


Aufgabe 7 ("Prozentumrechnung")
Erstelle eine Methode public void prozentumrechnung() die durch Eingabe des Gesamtenbetrags und des Teilbetrags den prozentualen Anteil des Gesamtbetrags berechnet.


Aufgabe 8 ("body mass index")
Erstelle eine Methode public void bodyMassIndex() zur Berechnung des body mass index. Die notwendigen Informationen findest du in folgendem Artikel.


Aufgabe 9 ("Binomische Formeln")
Erstelle eine Methode public void binomischeFormeln(), die bei Eingabe der Werte für a und b das Ergebnis für die drei binomischen Formeln berechnet.