q1:java-methoden

Dies ist eine alte Version des Dokuments!


Ernsthafte Programme sind in der Praxis viel zu groß, um aus einem Hauptprogramm allein zu bestehen. Man zerlegt deshalb Probleme in kleinere Teile, die von einem Teilprogramm realisiert werden. Mit dieser Modularisierung verfolgt man drei Ziele:

  • Programme werden übersichtlicher sowie leichter erstell- und korrigierbar.
  • Aufgaben, die mehrfach an verschiedenen Stellen des Programmablaufs benötigt werden, können von einem Unterprogramm erledigt werden.
  • Die Entwicklungseffizienz von Programmen wird höher. Schon vorhandene Unter-programme können in neue Programme eingebaut werden und ein umfangreiches Programm kann durch Aufteilung in verschiedene Module von mehreren Entwicklern unabhängig entwickelt werden.

Um diese Ziele zu erreichen, müssen die Unterprogramme Einheiten für sich bilden. Sie sollten nicht ungewollt das Hauptprogramm oder andere Unterprogramme beeinflussen (Seiteneffekte). Weiterhin sollte ein Entwickler, der ein Modul verwenden will, nichts über die interne Realisierung dieser Unterprogramme wissen müssen. Es muss lediglich klar sein, welche Daten das Unterprogramm benötigt und welche Daten das Unterprogramm an den Aufrufenden zurückgibt (Schnittstellen).

Man kann sich das Unterprogramm wie einen Getränkeautomaten vorstellen. Man muss bestimmte Daten an den Automaten übergeben (ein Knopfdruck, ein Geldstück, usw.) und er gibt ein Getränk zurück. Über das Innenleben muss man nichts wissen, zur Benutzung genügt es die Typen und die Reihenfolge der zu übergebenden Daten zu kennen und den Datentyp der zurückkommenden Daten.

Realisiert werden diese Unterprogramme in objektorientierten Sprachen wie JAVA durch selbst erstellte Methoden. Allgemein bezeichnet man in Programmiersprache Unterprogramme auch als Funktionen. Wir wollen als erstes Beispiel eine Methode realisieren, die das Ufo aus dem letzten Kapitel zeichnet. Dies ist sinnvoll, weil das Zeichnen zum Bewegen des Ufos ständig wiederholt werden muss:

//Das ist die ausgelagerte Methode zum Zeichnen des Ufos:
  void zeichneUfo(Graphics g, int xUfo, int yUfo)
  {
     g.drawRect(xUfo,yUfo,30,15);
     g.drawLine(xUfo+15,yUfo-10,xUfo+15,yUfo);
     g.drawLine(xUfo+10,yUfo+15,xUfo+5,yUfo+25);
     g.drawLine(xUfo+20,yUfo+15,xUfo+25,yUfo+25);
  }
//So sieht das eigentliche Programm aus, das die Methode aufruft:
  public void paint(Graphics g)
  {
     int y=100;
     int breite = getWidth();
 
     //Durchlaufe alle x-Koordinaten von 0 bis zur Fensterbreite:
     for(int x=0; x<breite; x++)
     {
        //Zeichne das UFO in roter Farbe:
        g.setColor(Color.red);
        zeichneUfo(g,x,y); //Das ist ein Aufruf der neuen Funktion
 
        //Warteschleife:
        for(int j=1;j<10000000;j++);
 
        //Lösche das Ufo wieder:
        g.setColor(Color.white);
        zeichneUfo(g,x,y); //Das ist ein Aufruf der neuen Methode
     }
  }

Erläuterungen:

  • Das Schlüsselwort void bedeutet, dass die Methode keine Variablenwerte an das Hauptprogramm zurückliefert.
  • zeichneUfo ist der Name der Methode. Damit kann sie in anderen Programmteilen aufgerufen werden.
  • In runden Klammern stehen die Parameter, die bei Aufruf übergeben werden müssen. Dies sind im Wesentlichen die Koordinaten xUfo und yUfo des linken oberen Eckpunktes. Sie sind damit gleichzeitig als Variablen innerhalb der Methode deklariert und erhalten dort als Startwerte die vom Hauptprogramm übergebenen Werte.
  • Die Variablen x und y sind hingegen nur im übergeordneten Programmteil gültig, genau genommen innerhalb des Blockes, der durch geschweifte Klammern abgegrenzt ist.
  • Der Parameter Graphics g ist aus technischen Gründen nötig, darauf soll zunächst nicht näher eingegangen werden.

Aufgaben

  • Teste das Programm und erweitere es dann so, dass die Farbe als Parameter mit übergeben wird:
     void zeichneUfo(Graphics g, int xUfo, int yUfo, Color farbe) 
  • Erweitere das Ufo-Programm wie folgt:
  • Lasse neben dem grünen Ufo von links nach rechts ein blaues Ufo von rechts nach links an einer anderen y-Koordinate fliegen.
  • Lasse das Ufo sich in x- und y-Richtung bewegen.
  • Lasse zwei verschiedenfarbige Ufos sich zufällig auf dem Bildschirm bewegen. Richtig interessant wird die Sache natürlich erst, wenn man die Ufos über die Tastatur oder über die Maus steuern kann. Auch das ist natürlich mit JAVA möglich, nur wollen wir das an dieser Stelle zunächst noch zurückstellen.
  • Es soll eine Methode programmiert werden, die einen Stern mit Mittelpunkt P(x/y) zeichnet. Der Methodenkopf soll wie folgt aussehen:
     void zeichneStern(int x, int y) 

    Zeichne dann 100 Sterne an zufälligen Positionen auf dem Bildschirm.

  • Die Methoden zum Sternzeichnen soll so erweitert werden, dass man die Größe und die Farbe des Sterns übergeben kann. Zeichne erneut 100 Sterne mit zufälliger Größe und Farbe an zufälligen Positionen auf den Schirm.
  • /var/www/infowiki/data/attic/q1/java-methoden.1499755679.txt.gz
  • Zuletzt geändert: 2017/07/11 06:47
  • von admin03