Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
techniken:objektorientjava [2016/07/06 15:42] fbonowski [In Java speichern Variablen nur Referenzen auf Objekte] |
techniken:objektorientjava [2016/07/14 14:43] (aktuell) c.jaedicke [Konventionen] |
||
---|---|---|---|
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]] | ||