Grundlagen Objektorientiertes Programmieren (Java) Java folgt gewissen Rechtschreibregeln die Syntax. Diese besagt, dass hinter jeden Befehl ein Semikolon( ; ) stehen muss, damit der Computer weiß, dass der Befehl jetzt zu Ende ist und er zum nächsten gehen kann. Jede Methode (z.b. if ) (Für genaueres siehe Methoden) braucht einen Rückgabetyp (Siehe Methoden) Namen, eine öffnende und schließende runde klammer ( () ) und eine öffnende und schließende geschweifte Klammer ( { ). Was genau in diese Klammer kommt, wird später behandelt. Alles was hinter // steht, wird vom Computer ignoriert. Hier kannst du Notizen schreiben. Java führt den geschriebenen Code innerhalb von Klassen und/oder Methoden (Siehe Startund Fachklasse und Methoden ) immer von unten nach oben aus. Was also zuletzt geschrieben wurde ist aktuell. Ein Beispiel: int test; test = 1; test = 2; System.out.println(zahl); Dieser Code gibt die Zahl 2 aus, da die Variable test zwar zuerst dem Wert 1 zugewiesen wurde, aber gleich darauf durch 2 ersetzt wurde. 2 ist daher neuer und wird ausgegeben, wenn wir dem Computer sagen, er soll den Inhalt der Variable test ausgeben. Kreuze die richtige Schreibweise an! int test int test: int test; Antwort 3 Was wird ausgegeben? Int zahl; String wort; wort = Zahl ; zahl = 5; wort = Java ; //wort = ist blöd ; System.out.println(wort); Java 1
Datentypen Um korrekt mit Variablen arbeiten zu können, müssen wir diese deklarieren (=erstellen) können. Das Problem hierbei ist: der PC ist nicht so schlau wie wir. Wenn wir 1 lesen wissen wir, dass es eine Zahl ist. Wenn wir Baum lesen wissen wir, dass es ein Wort ist. Der PC weis das nicht. Aus diesem Grund geben sagen wir ihm, um was es sich handelt. Dabei gibt es folgende Datentypen: Kurzform Voller Name Deutsch Beispiel ACHTUNG int integer Ganzzahl 2 - double double Kommazahl mit 2 Kein Komma sondern 6.66 Nachkommastellen Punkt String String Zeichenkette (=Wort) Langweilig Immer in Gänsefüßchen boolean boolean Wahr oder falsch true Kleinschreibung Wir schreiben immer die Kurzform vor die Variable. Beispiel: double kommazahl = 2.5; String wort = Gänsefüßchen ; Achtung: einmal Wort, immer Wort! Solltest du der variable wort irgendwann eine zahl zuordnen ( nicht 1 sondern 1 ), dann kannst du damit nicht rechnen. Ordne den werten den richtigen Datentyp zu! Baum true 5 6.66 false Was ergibt folgender Ausdruck? String zahl1 = 1 ; String zahl2 = 2 ; System.out.println(zahl1+zahl2); Baum String true boolean 5 int (integer) 6.66 double false String 12 2
Start- und Fachklasse Startklasse Im Unterricht wird unterschieden zwischen der Start- und der Fachklasse. Die Startklasse, im Unterricht bezeichnet mit Start ist die Klasse, welche folgende Methode beinhaltet: public static void main(string[] args){... Diese gibt es nur ein Mal und beschreibt den Ablauf des Programmes. Was hier steht wird Linie nach Linie von oben nach unten ausgeführt (Siehe Grundlagen). Fachklasse Neben der Startklasse, gibt es auch noch eine (oder mehrere) Fachklasse(n). Diese sind Objekte, d.h. Dinge, die jeweils gleiche Eigenschaften haben z.b. die Klasse Schüler. Jeder Schüler hat ein Geschlecht, ein Alter, einen Namen und ein Gewicht (natürlich noch viel mehr, aber das reicht vorerst). Zu Beginn der Fachklasse solltest du diese Eigenschaften (=Attribute) festlegen. Wichtig hierbei ist, dass du vor jedes Attribut das Wort private schreibst. Damit verhinderst du, dass andere Klassen direkt auf diese zugreifen können. Was in der Fachklasse steht, wird nicht automatisch ausgeführt, sondern nur, wenn es von der Startklasse aufgerufen wird. Mit dem Erstellen der Fachklasse erstellst du auch einen Datentyp, der den Attributen (und Methoden) der Klasse entspricht. Das heißt, dass du neben int, String, double und boolean jetzt auch Schüler als Datentyp hast. Somit weiß der PC, dass die Variable ein Alter, Gewicht, Name und Geschlecht hat. Erstellt wird solch ein Objekt z.b. mit dem Namen s1 mit: Schüler s1 = new Schüler(); Fülle die Lücken auf und kreuze an, was ausgegeben wird. Schüler (1 ) private int alter; 2 double gewicht; private 3 name; private String 4 ; System.out.println( Hallo ) 1. Hallo 2. Langweilig 3. Spannend 4. Beides Start (Startklasse) Public static void 5 (String[] args){ Schüler s1 = 6 Schüler7 ; String wort = Langweilig // wort = Spannend ; System.out.print(wort); 8_ Richtige Antwort: 2. 1 Fachklasse 5 main 2 private 6 new 3 String 7 () 4 geschlecht 8-3
Methoden Da ein Schüler weitaus mehr kann als nur zu existieren, gibt es auch Methoden. Damit kann man den Schüler auch wirklich etwas tun lassen. Die Syntax (=Rechtschreibung) für eine Methode lautet: Vorlage Rückgabewert Name(Eingabewert){ Code Beispiel int zahlpluseins(int zahl){ int pluseins; int = zahl + 1; return zahl; Vor den Rückgabewert lässt sich, wie bei den Variablen, ebenfalls ein private oder das Gegenteil public (=für alle zugänglich) schreiben. Das ist zwar nicht nötig aber empfehlenswert. (Fast alle Methoden sind public) Der Rückgabewert (z.b. int) gibt an, ob diese Methode etwas zurückgibt und wenn ja, welchen Datentyp. Dies ist nützlich, wen du nur einen Wert haben willst (z.b. eine beliebige Zahl +1), aber nicht jedes Mal die Rechnung in die Startklasse schreiben willst, oder wenn du ein Wort in einen Satz einbauen möchtest (vgl. Unterricht). Wenn die Methode nichts zurückgibt, weil sie z.b. nur eine Bildschirmausgabe (system.out.println()) macht, dann ist der Rückgabewert Void. Sollte die Methode jedoch einen Wert zurückgeben, muss sie mit einem return und dem Wert der zurückgegeben werden soll, enden. Der Name ist frei wählbar. Er sollte jedoch mit einem kleinen Buchstaben beginnen und keine Leerzeichen enthalten. Der Eingabewert sagt dem Programm, ob die Methode einen Wert braucht, um zu funktionieren, und wenn ja welchen. Bei unserem Beispiel braucht die Methode einen integer, damit sie diesen um 1 erhöhen kann. Der Name dieser Variable (hier: zahl) ist ebenfalls frei wählbar. Um auf die Methoden zuzugreifen gebt ihr den Namen des Objekts ein (z.b. s1), einen Punkt und dann den Namen der Methode. Wenn ein Wert übergeben werden soll (Eingabewert), dann kommt dieser in die Klammern hinter den Namen der Methode. Wenn nicht, dann werden die Klammern leer gelassen aber sie müssen da sein! Beispiel: s1.zahlpluseins(1); Der zurückgegebene Wert wäre hier 2. Dies kann man auch in Verbindung mit einer Bildschirmausgabe tun: System.out.println( 7 + 1 ist + s1.zahlpluseins(7)); 4
Für einige Methoden, die sehr häufig verwendet werden, wie z.b. die Get und Set Methoden hat Eclipse (das Programm der Schule) bereits einen eigenen Knopf, um diese zu erstellen, sodass ihr nicht alles selbst tippen müsst. 1. Klick auf "Source" in der Menüleiste 2. Klick auf "Generate Getters and Setters" 3.Klick auf "Select All" 4. Klick auf "Ok" und alle get und set Methoden werden generiert Beschrifte! 1. 2. public void hallo(string name){ System.out.println( Hallo + name); Wie greife ich auf die Methode schlafen des Schülers hans zu? Wie lautet die Ausgabe? 3. 1. Rückgabewert 2. Name der Methode 3. Eingabewert hans.schlafen(); Die Klammern müssen da sein! Schüler private int alter = 18; public String sagalter(){ return alter; System.out.println( Ich bin volljährig ); Start Public static void main(string[] args){ Schüler peter = new Schüler(); System.out.println( Ich bin + peter.sagalter()); 1. Ich bin volljährig 2. Ich bin 18 3. Beides 2. 5
If-Else Die if-else Kontrollstruktur ist sehr wichtig, daher sollte man sie auch verstehen. Ihr Aufbau ist folgendermaßen: If(boolean oder Ausdruck mit booleanschen Operatoren){ Code else if(boolean oder Ausdruck mit booleanschen Operatoren){ Code else{ Code Zu Beginn des Codes wird gefragt ob (if) das, das in den klammern steht wahr ist. In den Klammern steht in den seltensten Fällen ein boolean (=wahr oder falsch), sondern fast immer booleansche Operatoren. Diese sind unter anderem: > (größer), < (kleiner), == (gleich),!= (ungleich), >= (größer oder gleich) und <= (kleiner oder gleich). Diese vergleichen die eingegebenen Bedingungen (z.b. 5 < 6) und geben dann einen boolean aus (hier: falsch). Wenn deine Bedingung in falsch (false) resultiert, wird der Code zwischen den geschweiften klammern nicht ausgeführt. Nun kann ein else if hinzugefügt werden, bei dem das selbe nochmal gemacht wird, nur mit anderen Bedingungen, sollte es wahr (true) sein, dann führt es den Code aus. Hierbei ist die Reihenfolge wichtig, denn wenn du überprüfen willst, wie alt jemand ist und dies mit diesem Code tust: If (alter >= 16){ System.out.println( Du kommst rein, musst aber um 24:00 wieder gehen ); else if (alter >= 18){ System.out.println( Du kommst rein ); Dann bekommt auch ein 18+ Jahre alter Mensch gesagt, dass er um 24:00 wieder gehen muss. Vertauscht man die beiden Bedingungen, so wird der erste Block bei unter 18 Jährigen nicht ausgeführt. Als letztes kann ein else block hinzugefügt werden, der ausgeführt wird, wenn keine deiner Bedingungen zutrifft. Hier könnte der Türsteher z.b. schwirr ab sagen. 6
Was wird ausgegeben? If(false){ 1. hallo System.out.println( hallo ); 2. nichts int alter = 7; if(alter > 18){ System.out.println( Willkommen in der Tabledance-Bar! ); else{ 1. Willkommen! System.out.println( Schwirr ab! ); 2. Schwirr ab! 2. 2. int alter = 17; String alkohol; if(alter >= 16){ alkohol = Bier ; break; //Das ist ein Befehl, der sagt, dass der PC aufhören soll weitere //Bedingungen zu prüfen else if(alter >= 18){ 1. Bier alkohol = Vodka ; 2. Vodka 3. Apfelschorle else{ 4. Nichts alkohol = Apfelschorle ; 1. if(3 > 4){ System.out.println( Mathegenie ); 1. Mathegenie else if(4 < 3){ 2. Durchschnitt System.out.println( Durchschnitt ); 3. Besserer Durchschnitt 4. Preis für Teilnahme else if(4!= 3){ 5. Nichts System.out.println( Besserer Durchschnitt ); else{ System.out.println( Bekommt einen Preis für die Teilnahme ) 3. 7
UML Die Unified Modeling Language soll das Modellieren von Fachklassen vereinfachen. Im Grunde ist jedes UML-Diagramm in Java folgendermaßen aufgebaut: Name der Klasse Attribute der Klasse:Datentyp Methoden:Datentyp Ausgabewert Relevante Formatierungen sind: Ein - oder + vor dem Namen bedeutet, dass die Methode / Variable private oder public ist. Eine unterstrichene variable oder Methode bedeutet, dass diese statisch (static) ist. Dies ist allerdings für den Moment nicht relevant. Hinter dem Doppelpunkt steht der Datentyp, der ausgegeben wird, bzw. von dem die variable ist. Wenn es keinen Rückgabewert gibt, so kann entweder void geschrieben werden, oder es wird nichts geschrieben. Bei den Methoden steht in den klammern der Datentyp, der als Eingabewert benötigt wird So können unsere Klassen Schüler und Start folgendermaßen dargestellt werden: private Schüler - alter:int - gewicht:double - name:string - geschlecht:string +zahlpluseins(int):int +sagalter():int + main() Start Rückgabewert Eingabewert public static void main 8