ADG Tag 2 – Java Basics

Damit man erfolgreich Android Apps entwickeln kann, muss man Java beherrschen. Ich biete einen groben Überblick über die Programmiersprache. Wem das nicht reicht, der sollte sich definitiv noch weiter damit beschäftigen. Generell, und da ich die Galileo OpenBooks sehr schätze, empfehle ich:

Java ist auch nur eine Insel

Java Grundlagen

Das wichtigste zuerst: Java ist Objektorientiert.

Wem das nichts sagt: keine Panik, es ist ein einfaches Konzept: In Objekt-orientierten Programmiersprachen arbeitet man ausschließlich mit… Objekten. Ein String ist ein Objekt vom Typ String, eine Klasse ist ein Objekt, ein Integer ist ein Objekt. Das einzige, was keine Objekte  sind, sind Funktionen an sich.

Dieses Konzept ermöglicht ein sehr strukturiertes Programmieren.
Was die Meisten mit „Programmieren“ verbinden sind Funktionen und Variablen.
Die Bedeutung dieser Elemente sind bekannt, Funktionen – auch Methoden genannt – stellen eine bestimmte Funktionalität im Programm bereit, Variablen sind variable Objekte, also Texte, Zahlen, Daten…
Das nächste wichtige Element ist die Klasse. Hat man dieses Konzept verstanden, ist das schon die halbe Miete.

Eine Instanz einer Klasse ist ein Objekt. Die Klasse beherbergt Methoden und Variablen (Objekte). Man nutzt Klassen dazu, um Funktionen und Eigenschaften zu einem bestimmten Objekt zusammen zu fassen.

Die einfachste Erklärung dafür ist ein Auto.

Wenn wir in einem Programm so etwas wie ein Auto darstellen wollen, benutzen wir ein Objekt der Klasse Auto.
Dieser Klasse weisen wir nun einige Eigenschaften aus dem Themengebiet zu, wie „PS, Gewicht, Farbe, Marke…“. Außerdem stellen Autos (normalerweise) auch Funktionen bereit, wie „Motor starten, Fahren, Blinken, Zigarettenanzünder“. Durch die Sammlung dieser Eigenschaften – auch Felder genannt – und Methoden, können wir im Programm ein Auto repräsentieren.

HelloWorld

Wir sehen uns nun den Code unseres ersten Programmes an. Wichtig: Wie genau das Programm angelegt wird, besprechen wir im nächsten Artikel. Heute geht es nur um grundlegende Syntax, das Verständnis von Klassen etc. Hier ist ein einfaches HelloWorld in Java:

package helloworld;

public class HelloWorld
{

	public static void main(String[] args)
	{

		String hw = "HelloWorld!";
		System.out.println(hw);

	}

}

Komponenten:

package helloworld Das package ist nur eine Sammlung von Klassen, um sie zu Gruppieren. So kann ein bestimmter Programmteil in ein Package zusammengefasst werden.
class HelloWorld Die Klasse HelloWorld, hier werden unsere Methoden und Felder untergebracht.
void main Die Methode main. Die main-Methode ist der Einstiegspunkt eines jeden Programmes, diese Methode wird beim Start automatisch aufgerufen.
String[] args Parameter für die Main-Methode. Mithilfe von Parametern werden Daten an Methoden übergeben, um sie innerhalb der Funktion zu nutzen. In diesem Fall kann der Main-Methode ein String-Array übergeben werden.
String hw Eine Zeichenkette namens hw, ihr wird der Wert ,,HelloWorld!“ zugewiesen
System.out.println(hw) println ist eine Methode, um eine Zeile in die Standardausgabe des Programms zu schreiben (normalerweise also in die Konsole). Diese Methode erwartet einen String als Parameter, also geben wir unseren String hw an. Dieser wird nun in die Ausgabe geschrieben.

Führt man das Programm in der Konsole aus, wird HelloWorld! Ausgegeben, und das Programm schließt sich wieder.
println schreibt in die Standardausgabe, STDOUT. Das System.out. davor ist gewissermaßen ein Pfad zu dieser Methode, System und out sind, so wie unser HelloWorld, Klassen. Es gibt einige Standardklassen, die durch das Java Framework bereitgestellt werden. Eine Übersicht über alle bereitgestellten Methoden und Konstanten erhält man (für Java7) unter http://docs.oracle.com/javase/7/docs/api/
Wichtig ist ebenfalls die Deklaration und Definition von hw: Unter Deklaration versteht man, dass bekannt gegeben wird, dass ein Objekt existiert. Aber zu diesem Zeitpunkt muss dieses Objekt noch keinen Wert haben. Wir hätten den String hw auch in 2 Schritten Definieren können:

String hw;

hw = "HelloWorld";

Zunächst wird hw nur deklariert, der String hat noch keinen Wert (null). Erst mit der Zuweisung des Wertes „HelloWorld!“ ist hw auch definiert.

Vor Klassen, Methoden und Feldern (Variablen, die innerhalb einer Klasse, aber nicht innerhalb einer Methode sind) stehen immer Zugriffsmodifizierer. Diese regeln, inwiefern andere Objekte diese Ressourcen nutzen dürfen. Es gib private, default, protected und public. Ist eine Methode privat, darf sie nur innerhalb der eigenen Klasse, also nicht von anderen Klassen heraus aufgerufen werden. Eine gute Erklärung gibt es im Wikibook Java.

Zusammenfassung

Ein Package beinhaltet Klassen, welche Methoden und Felder beinhalten. Klassen, deren Methoden und Felder brauchen immer einen Zugriffsmodifizierer, der die Rechte an dem bestimmten Objekt verwaltet. Ist keiner angegeben, wird default verwendet.

Die Main-Methode ist der Einstiegspunkt in einem Programm, diese Methode wird bei Programmstart aufgerufen. (Es ist egal, in welcher Klasse die Main-Methode deklariert wurde)
Wir kennen außerdem Parameter, durch die es möglich ist, Daten an Methoden weiterzugeben.
Im nächsten Artikel werden wir uns mit dem konkreten Programmieren beschäftigen, also das Anlegen von Projekten, kompilieren und Ausführen. Ich kann und will keine komplette Einführung in die Programmiersprache geben, dies würde den Rahmen des Projekts deutlich sprengen. Auch wenn es lange dauert: Wer noch kein Java kann, muss üben. Anleitungen gibt es schon genügend. Ich selbst kann Java, da ich schon länger in C# programmiert habe. Die Grundlagen die ich anspreche sind wichtig, um Umsteigern zu helfen.
Ab „Tag 4“ werden Java-Kenntnisse vorausgesetzt.

MfG
Damon

Dieser Eintrag wurde veröffentlicht in Android, Java
Bookmarken: Permanent-Link Schreibe einen Kommentar oder hinterlasse einen Trackback: Trackback-URL.

2 Kommentare

  1. Felix
    Erstellt am 14. Januar 2013 um 08:07 | Permalink zum Kommentar

    Hey,
    dein Blog ist auf jeden Fall interessant, hab ihn gestern gefunden, als ich angefangen habe, mich mit Androidentwicklung auseinanderzusetzen ;-) Btw – geht die Serie nach W2D1 noch weiter? ;-)
    Der eigentliche Punkt ist:
    Eine Klasse ist, wie bereits erwähnt, ein Objekt. Das stimmt so nicht, eine Klasse ist eine Klasse und ein Objekt ist ein Objekt. Ein Objekt ist eine Instanz einer Klasse, die erzeugt wird mit Object obj = new Object();. Wenn Objekte das gleiche wie Klassen wären, dann könntest du von jeder Klasse nur ein Objekt haben, das ganze Instanzensystem würde ja dann nicht funktionieren ;-)
    Gruß
    Felix

    • Erstellt am 14. Januar 2013 um 12:37 | Permalink zum Kommentar

      Hi, danke für den Hinweis – hast natürlich recht, der Fehler ist gefixt.
      Leider habe ich aktuell nicht so viel Zeit, dass ich die Serie fortfahren kann. Ich nutze die Zeit die ich habe um kleinere Artikel über Linux/HTPC zu schreiben, bis ich endlich raus aus dem Stress und fertig mit der Schule bin. Dann kommen erstmal ein paar Arduino-Projekte.
      Die ADG Serie steht natürlich auf meiner ToDo Liste, ich kann aber noch nicht sagen, wann ich weiter daran arbeiten kann.
      MfG
      Damon

Ein Trackback

Achtung: Wordpress interpretiert bestimmte Zeichenfolgen als Markup und verändert diese. Nutzt für Programmcode lieber Gist oder PasteBin-Services und verlinkt die Code-Schnipsel.

Post a Comment

Ihre E-Mail wird niemals veröffentlicht oder verteilt. Benötigte Felder sind mit * markiert

*
*

Du kannst diese HTML Tags und Attribute verwenden: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>