Programmaufbau

Nachdem wir nun die Theorie genügend betrachtet haben, kommen wir zur Praxis. Wie schreibe ich den jetzt ein eigenes Programm in JAVA?
Als erstes sollte man eine Idee haben, was man den eigentlich machen will. Klingt super, oder?
Diese Idee sollte man aufschreiben. Warum??? ... Gute Frage! Beim Programmieren ist es wichtig zu wissen, wo man denn hin will. Man sollte eine Vorstellung davon haben, wie das Programm am Ende aussehen soll.

Machen wir uns an ein Beispiel. Wir reden schon die ganze Zeit über Kaffeetassen - Schön!, schreiben wir ein Programm dafür.

Ich möchte ein Programm schreiben um meine Kaffeetassen zu archivieren. Es soll:

  • Meine Kaffeetassen beschreiben
  • Meine Kaffentassen auf dem Bildschirm anzeigen
  • Das Anzeigen der Kaffeetassen wird sich in dieser Version noch auf eine Textbeschreibung beschränken. Später werden wir noch einige andere Funktionen, wie z.B. Bilder und Grafiken, hinzufügen. Für den Anfang bleiben wir bei Text.

    Jetzt ist übrigens ein guter Zeitpunkt JAVA zu installieren. Wie das geht steht hier.

    Wir beginnen mit dem Programm in dem wir eine Klasse erzeugen:

    
             class Kaffeetassen {
    
    

    Hier beginnt also unser Programm. Alles was innerhalb der Klammer { steht, gehört dazu.

    Als erstes schreiben wir die Beschreibung unseres Programms auf. Dieser Text ist nur eine Information, soll also nicht innerhalb unseres Programms ausgeführt werden. Dafür gibt es die sogenannten Kommentare.
    Lange Kommentare werden in JAVA zwischen./* ... */ eingeschlossen. Jede neue Zeile des Kommentars beginnt mit *.
    Das sieht dann so aus:

    
                     /* Programm Kaffeetassen von Heiko Schmuck, im März 2011
                      * Das Programm beschreibt Kaffetassen und gibt die Beschreibung
                      * auf dem Bildschirm aus.
                      */
    
    

    Diesen Bereich eines Programms nennt man auch Header oder Kopfbereich.

    Einen kurzen Kommentar kann man auch mit // beginnen lassen, dann kann man allerdings nur in dieselbe Zeile schreiben.

    
                     // Als erstes werden Platzhalter für unsere Tassen erzeugt
                     Tasse kikisweb, java, schalke, bayern, bvb;
    
    

    In der Zeile oben, werden unsere Tassen als Objekte vom Typ Tasse angegeben. Man spricht dann auch von Objektvariablen.

    Häääää???? Was denn jetzt schon wieder? Was sind denn Variablen?

    OK, zu schnell. Eine Variable ist ein Platzhalter für ein Objekt oder einen Wert. Um mit meinen Objekten in einem Programm arbeiten zu können, macht es Sinn ihnen einen Namen zu geben. Das mache ich hier mit kikisweb, java, schalke, bayern, bvb. Das heißt, ich sage meinem Programm es gibt 5 Objekte Tasse die die Namen kikisweb, java, schalke, bayern, bvb haben. Mit dem ; beende ich meine Zeile, damit das Programm weiß, hier kommt nichts mehr.

    Jetzt "bauen" wir uns unsere Kaffeetassen. Dies geschieht im Konstruktor. Dieser Konstruktor heißt wie die Klasse, in unserem Fall also Kaffeetassen.

    
                     // Kaffeetassen haben die Eigenschaften: Farbe, Höhe, Durchmesser, Henkel, Aufdruck
                     Kaffeetassen () {
                             kikisweb = new Tasse("Weiß", 10, 8, "Ja", "KIKISWEB");
                             java     = new Tasse("Schwarz", 10, 8, "Ja", "JAVA");
                             schalke  = new Tasse("Blau", 10, 8, "Ja", "SCHALKE");
                             bayern   = new Tasse("Rot", 10, 8, "Ja", "BAYERN");
                             bvb      = new Tasse("Gelb", 10, 8, "Nein", "BVB");
    
    

    Hier füllen wir die Variablen mit Werten. Jede Tasse bekommt über = new Tasse ihre Eigenschaften zugewiesen.

    Jetzt müssen wir noch die einzelnen Tassen auf dem Bildschirm ausgeben.

    
                             // Erst einmal eine Überschrift
                             System.out.println("Meine Kaffeetassen:");
    
                             // Dann die einzelnen Tassen
                             kikisweb.ausgeben();
                             java.ausgeben();
                             schalke.ausgeben();
                             bayern.ausgeben();
                             bvb.ausgeben();
    
                     // und den Konstruktor Kaffetassen wieder schließen.
                     }
    
    

    Jetzt noch die Main-Methode:

    
                     public static void main (String [] args) {
                             new Kaffeetassen();
                     }
    
             // Die Klasse Kaffeetassen wieder schließen.
             }
    
    

    So, Fertig. Denkt man. Ist aber nicht so. Wer weiß warum?
    Wir haben zwar schön unsere Kaffeetassen erzeugt, Variablen angegeben und auch eine Ausgabe programmiert.
    Dumm nur, dass wir nichts zum Ausgeben haben.
    Wie??? Wir haben doch die Variablen mit Werten gefüllt!!
    Das schon, aber was ist mit = new Tasse? Was ist denn bitteschön Tasse? Wir haben dem Programm nicht gesagt, wie denn eine Tasse auszusehen hat. Die Werte in den Variablen sind im Moment noch eine Auflistung von einzelnen Werten, die keiner Eigenschaft einer Tasse zugeordnet sind.

    Und was nun?

    Ganz einfach! Wir machen uns Tassen. Ein bischen Ton, schnell getöpfert und ...

    OK, war ein Scherz. Wir erstellen eine neue Klasse Tasse.

    
             class Tasse {
                     // Erst einmal wieder Platzhalter für die Werte
                     String farbe, henkel, aufdruck;
                     int hoehe, durchmesser;
    
    
    

    Genauso wie wir in der Klasse Kaffeetassen den Variablen den Typ Tasse zugeordnet haben, tun wir es mit unseren neuen Variablen. Nur das wir diesmal den Typ String und den Typ int benutzen. Diese beiden Typen nennt man Datentypen. String ist für Werte vorgesehen die einen Text enthalten, int ist für ganze Zahlen gedacht.

    Auch hier gibt es wieder einen Konstruktor.

    
                     /* Ich beschreibe meine Tasse:
                      * f ist die Farbe und vom Typ String
                      * h ist die Höhe und vom Typ int
                      * d ist der Durchmesser und auch vom Typ int
                      * he ist die Aussage ob die Tasse einen Henkel hat oder nicht und vom Typ String
                      * a ist der Aufdruck und ebenfalls vom Typ String
                      */
    
                     Tasse (String f, int h, int d, String he, String a) {
                             farbe = f;
                             hoehe = h;
                             durchmesser = d;
                             henkel = he;
                             aufdruck = a;
                     }
    
    

    Und wieder sind wir verwirrt. Warum gibt es denn nun diese f,h,d,he,a??? Und wofür sind die wieder gut?

    Was wir gerade gemacht haben ist, wir haben festgelegt in welcher Reihenfolge die einzelnen Werte dem Objekt Tasse übergeben werden müssen.
    Tasse (String f, int h, int d, String he, String a) legt fest, dass die Zuweisung kikisweb = new Tasse("Weiß", 10, 8, "Ja", "KIKISWEB"); die Werte in die richtige Variable einfügt. Werden die Werte in der Zuweisung vertauscht, kikisweb = new Tasse("KIKISWEB, 10, 8, "Ja", ""Weiß"); , würde antatt der Farbe, der Aufdruck in der Variable farbe angezeigt.

    Verwirrt? Probiert es aus, wenn das Programm fertig ist.

    Als letztes müssen wir noch die Methode ausgeben programmieren. Diese Methode benutzen wir in der Klasse Kaffetassen zum ausgeben der Werte auf dem Bildschirm. Zur Erinnerung: kikisweb.ausgeben();. Mit anderen Worten, das Objekt Tasse hat eine Eigenschaft, die ausgeben heißt.

    
                     // Die Methode ausgeben
                     void ausgeben () {
                             System.out.println("Farbe: " + farbe);
                             System.out.println("Höhe: " + hoehe);
                             System.out.println("Durchmesser: " + durchmesser);
                             System.out.println("Henkel: " + henkel);
                             System.out.println("Aufdruck: " + aufdruck);
                             System.out.println();
                     }
    
             // Die Klasse Tasse schließen
             }
    
    

    Das ganze Programm "am Stück" gibt es hier.

    Wer das gerade gelernte in die Tat umsetzen möchte, muss nun wirklich JAVA auf seinem/ihrem Computer installieren.
    Wie das geht steht hier: Entwicklungsumgebung

    Weiter geht es mit Zuweisungen.

    Mit JAVA programmieren

    Als Entwicklungsumgebung benutze ich NetBeans 7.

    JAVA gibt es hier.