Benutzer-Werkzeuge

Webseiten-Werkzeuge


techniken:objektorientjava

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
techniken:objektorientjava [2016/07/06 15:40]
fbonowski [In Java speichern Variablen nur Referenzen auf Objekte]
techniken:objektorientjava [2016/07/14 14:43] (aktuell)
c.jaedicke [Konventionen]
Zeile 111: Zeile 111:
   * Veränderungen des Objektes über die eine Variable wirken sich dementsprechend auf das aus, was über die andere Referenzvariable ausgelesen werden kann.   * Veränderungen des Objektes über die eine Variable wirken sich dementsprechend auf das aus, was über die andere Referenzvariable ausgelesen werden kann.
  
-Hier ein Beispiel, welches das unterschiedliche Verhalten von +Hier ein Beispiel, welches das unterschiedliche Verhalten von Variablen mit primitiven und Klassentypen:​
 <code Java> <code Java>
 //Primitive Variablen enthalten einen Wert, der bei Zuweisungen kopiert wird: //Primitive Variablen enthalten einen Wert, der bei Zuweisungen kopiert wird:
Zeile 140: Zeile 140:
  
 ===== Ein fertiges Programm ===== ===== Ein fertiges Programm =====
 +Zum Abschluss nochmal ein kleines Programm, in dem alles, was bisher passiert ist, angewandt wird:
  
 <code Java> <code Java>
 class Robot { // Deklaration der Klasse Robot class Robot { // Deklaration der Klasse Robot
-  +  float posX = 100;     //Die x-Position des Roboters in Pixel 
-  ​int dRobot ​50   //Der Durchmesser ​des Roboters in Pixel +  ​float posY 100    ​//Die y-Position ​des Roboters in Pixel 
-  float direction = PI;  //Die Richtung in die der Roboter schaut ​ +  float direction= PI;  //Die Richtung in die der Roboter schaut, in Bogenmaß, gegen den Uhrzeigersinn,​ relativ zur X-Achse. 
-                      //(PI (links)da der Winkel ​in Bogenmaß ​angegeben wird) +                        // (PI  => der Roboter schaut nach links)
-  float posX = 100;   //Die x-Position des Roboters in Pixel +
-  float posY 100;   //Die y-Position des Roboters in Pixel+
    
   //Diese Methode zeichnet einen Roboter ​   //Diese Methode zeichnet einen Roboter ​
   //an seiner aktuellen Position und Ausrichtung.   //an seiner aktuellen Position und Ausrichtung.
   void drawRobot(){ //"​void"​ bedeutet dass es keinen Rückgabewert gibt   void drawRobot(){ //"​void"​ bedeutet dass es keinen Rückgabewert gibt
-    ​// Zeichne einen Kreis an der Position des Roboters. +    ellipse(posX,​posY,​20,20); // Zeichne ​einen Kreis an der Position ​des Roboters. 
-    ​ellipse(posX,​posY,​dRobot,dRobot); +    line(posX,​posY,​posX+cos(direction)*50,​ posY+sin(direction)*50);​// Zeichne eine Linie welche die Orientierung des Roboters angibt.
-    ​// Zeichne ​eine Linie welche die Orientierung ​des Roboters ​angibt+
-    line(posX,​posY,​posX+cos(direction)*50,​ posY+sin(direction)*50);​+
   }   }
    
Zeile 165: Zeile 161:
     posY = posY+sin(direction)*distance;​ // zugegriffen werden. (Sie sind im Objekt quasi "​lokal"​)     posY = posY+sin(direction)*distance;​ // zugegriffen werden. (Sie sind im Objekt quasi "​lokal"​)
   }   }
-  
-  //Diese Methode dreht den Roboter um einen gewissen Winkel ​ 
-  //welcher von "​winkelaenderung"​ vorgegeben wird. 
-  // Die Methode bekommt einen Übergabeparameter vom Typ "​float"​. 
-  void turnRobot(float angle){ ​ 
-    this. direction += angle; 
-  } 
-  
 } }
 +
 +Robot myRobot; // deklariere eine Referenz auf einen Roboter (sie verweist in diesem Moment ins Leere)
 +
 +
 +// Das Processing "​setup"​
 +void setup(){
 +  myRobot=new Robot();
 +}
 +
 +
 +// Das Processing "​setup"​
 +void draw(){
 +  background(235); ​      // Male den Hintergrund des Fensters neu an...
 +  myRobot.drawRobot(); ​  // Zeichne in das nun leere Fenster den Roboter
 +  myRobot.moveRobot(); ​  // Diese Funktion bewegt den Roboter ein wenig.
 +  myRobot.direction+=PI/​200;​ // drehe den Roboter ein Stück gegen den Uhrzeigersinn
 +}
 +
 </​code>​ </​code>​
 +
 +===== Konventionen =====
 +
 +
 +Bei der Benennung von Methoden sollte man sich an zwei grundsätzliche Konventionen halten: ​
 +  - Der Name der Methode fängt mit einem kleinen Buchstaben an und Namen welche mehrere Worte beinhalten fangen beim zweiten Wort mit einem Großbuchstaben an. 
 +  - Der Name sollte beschreiben wie die Methode mit dem Objekt interagiert.
 +
 +Unsere Klasse bekommt zwei weitere Methoden, eine um den Roboter an seiner aktuellen Position zu zeichnen und eine um den Roboter um einen gewissen Winkel zu drehen.
  
 ===== Tabs  in Processing ===== ===== Tabs  in Processing =====
Zeile 182: Zeile 197:
  
 In diesem neuen Tab speichert ihr eure Klasse. In diesem neuen Tab speichert ihr eure Klasse.
 +===== Das ist noch nicht alles... =====
 +Mit dem, was bis hierhin besprochen wurde, könnt ihr schonmal einigermaßen Ordunung in euer Programm bringen und die von einer Library bereitgestellen Klassen benutzen.
 +
 +Für ein vollständiges Verständnis von Objektorientierung in Java fehlen noch:
 +
 +  * Zugriffssteuerung auf Memberfunktionen und Variablen durch **//​private,​ public, protected//​**
 +  * Vererbung
  
 +Eure Programme werden besser lesbar, wenn ihr die folgenden "​Style-Konventionen"​ einhaltet:
 +[[http://​www.oracle.com/​technetwork/​java/​codeconventions-135099.html]]
  
  
  
techniken/objektorientjava.1467812415.txt.gz · Zuletzt geändert: 2016/07/06 15:40 von fbonowski