Computeranwendung und Programmierung (CuP) VO: Peter Auer (Informationstechnologie) UE: Norbert Seifter (Angewandet Mathematik) Organisatorisches (Vorlesung) • Vorlesungszeiten – Montag 11:15 – 12:45 – Freitag 12:15 – 13:00 (Fragestunde/ Ersatztermin) • Unterlagen – Kurzskriptum, erhältlich in den Übungen – Barnes & Kölling: Java lernen mit BlueJ. – Web-Seite: • Programmbeispiele, Folien, Übungsblätter, Software, Merkblätter. 04.10.2013 CuP - VO 2 Organisatorisches (Übungen) • Aufgeteilt in 16 Gruppen – Hilbertraum (Hauptgebäude) – Computerraum IL+IT (RWZ) • „Repetitorium zu Computeranwendung und Programmierung“ – Tutoren – Freies Üben (Eulerraum im TTZ) • Alles weitere erfahren Sie in den Übungen. 04.10.2013 CuP - VO 3 Inhalt der Lehrveranstaltung • Objektorientiertes Programmieren in Java – Objekte, Klassen, Interaktion zwischen Objekten – Bedingte Anweisungen und Schleifen – Arbeiten mit Listen 04.10.2013 CuP - VO 4 Beispiel eines 1. KNW (a) Schreiben Sie eine Klasse Buch mit dem Konstruktor public Buch(String String autor, String titel, String isbn, int anzahlSeiten, boolean istTaschenbuch, String sprache) . istTaschenbuch hat den Wert true, true wenn das Buch ein Taschenbuch ist, und ansonsten den Wert false. false 04.10.2013 CuP - VO 5 Beispiel eines 1. KNW (b) Schreiben Sie weiters eine Klasse Buecherverzeichnis mit dem Konstruktor public Buecherverzeichnis() , der ein leeres Bücherverzeichnis erzeugt. 04.10.2013 CuP - VO 6 Beispiel eines 1. KNW (c) Implementieren Sie in der Klasse Buecherverzeichnis auch die folgenden Methoden: public void addBuch(Buch einBuch) fügt einBuch dem Bücherverzeichnis hinzu. 04.10.2013 CuP - VO 7 Beispiel eines 1. KNW (d) public int gibAnzahlDeutscherBuecher() liefert die Anzahl der deutschsprachigen Bücher, d.h. jener Bücher, für die sprache den Wert "deutsch" hat. public ArrayList<Buch> getTaschenbuecher() ArrayList liefert eine ArrayList mit den im Bücherverzeichnis vorhandenen Taschenbüchern. 04.10.2013 CuP - VO 8 Objektorientiertes Programmieren (OOP) • Objekte – zentrale Konzept der OOP – Programme laufen an/in Objekten ab • Klassenbeschreibung definiert die Eigenschaften der Objekte (dieser Klasse) – – – – welche Attribute wie werden Objekte erzeugt welche Methoden was bewirkt ein Methodenaufruf 04.10.2013 CuP - VO 9 Syntax und Semantik • Programmsyntax – Gibt die Schreibweise von Programmen in einer bestimmten Programmiersprache an. – In Java wird die korrekte Syntax vom Compiler geprüft. • Programmsemantik – Gibt die Bedeutung eines Programms an. Was macht ein Programm? – Kann durch Ausführen des Programms getestet werden. 04.10.2013 CuP - VO 10 Java: Klassendefinition public class klassenname { attributliste konstruktordefinition methodenliste } 04.10.2013 CuP - VO 11 Attributdefinition private typ attributname; • Ein Typ definieren einen Wertebereich. – 8 Basistypen • int, int double, double boolean, boolean long, long char, char byte, byte short, short float. float – Objekttypen (z.B. String) • durch Angabe eines Klassennamens 04.10.2013 CuP - VO 12 Wichtige Basistypen – ganze Zahl zwischen -231,…,231-1 • int • double – Gleitkommazahl (z.b. -1.23 oder 1.2e-4) • boolean – logischer Wahrheitswert: 04.10.2013 CuP - VO true oder false 13 Typ String • Zeichenkette –"TICKET" –"Computer und Programmieren" –"" – Die Anführungszeichen " sind nicht Teil der Zeichenkette, sondern begrenzen sie, "" bezeichnet den sogenannten Leerstring. • Mit dem Zeichen + können Strings zusammengefügt werden: "Computer" + " " + "und" + " " + "Programmierung" ergibt "Computer und Programmierung" . 04.10.2013 CuP - VO 14 Konstruktordefinition public klassenname(parameterliste) anweisungsliste • Konstruktor – erzeugt die Objekte der Klasse – initialisiert dabei die Attribute 04.10.2013 CuP - VO 15 Methodendefinition public returntyp methodenname(parameterliste) anweisungsblock • Wenn eine Methode einen Rückgabewert liefert, dann gibt returntyp den Typ des zurückgelieferten Werts an. • Für eine Methode ohne Rückgabewert ist der returntyp void. void 04.10.2013 CuP - VO 16 Parameterliste typ parametername,…,typ parametername • Die Parameterliste gibt an, welche Werte an den Konstruktor oder die Methode bei einem Aufruf übergeben werden müssen. • Die Parameterliste kann auch leer sein. 04.10.2013 CuP - VO 17 Anweisungsblock { anweisung1 anweisung2 … } • Im Anweisungsblock eines Konstruktors oder einer Methode werden durch die Anweisungen jene Aktionen definiert, die beim Aufruf ausgeführt werden. 04.10.2013 CuP - VO 18 Anweisungen • Zuweisung attributname = ausdruck; 04.10.2013 CuP - VO 19 Die Objektreferenz this • Mit der Objektreferenz this kann ein Objekt immer sich selbst bezeichnen. – Z.B.: this.titel this • Mit this kann zwischen Attributen und gleichnamigen Parametern unterschieden werden. • Achtung: Gleichnamige Patameter sind eine mögliche Fehlerquelle, wenn auf this vergessen wird! 04.10.2013 CuP - VO 20 Die ArrayList • Stellt eine Liste dar, in die mehrere Objekte gleichen Typs eingetragen werden können. • Eine ArrayList ist selbst wieder ein Objekt. • Die Klasse ArrayList ist nicht automatische verfügtbar (wie z.B. die Klasse String), String sondern muss importiert werden: import java.util.ArrayList; java.util.ArrayList public class MyClass { … } • java.util bezeichnet das Java-Paket, das die Klasse ArrayList enthält. 04.10.2013 CuP - VO 21 Definition einer ArrayList ArrayList<typ> ArrayList • Für eine ArrayList wird auch der Typ der Objekte angegeben, die sie enthalten soll. • Z.B. bezeichnet ArrayList<Buch> ArrayList eine Liste von Buch-Objekten. 04.10.2013 CuP - VO 22 Erzeugen einer ArrayList new ArrayList<typ>() ArrayList • Erzeugt ein ArrayList-Objekt, das Objekte vom angegebenen Typ enthalten kann. • Die erzeugte ArrayList ist zu Beginn leer, enthält also noch keine Objekte. 04.10.2013 CuP - VO 23 Hinzufügen von Elementen zu einer ArrayList public void add(typ objekt) add • Fügt das angegebene Objekt am Ende der Liste hinzu. • Der Typ des Objekts muss mit dem Typ der Objekte übereinstimmen, die in der ArrayList gespeichert werden können. 04.10.2013 CuP - VO 24 Computeranwendung und Programmierung (CuP) VO: Peter Auer (Informationstechnologie) UE: Norbert Seifter (Angewandet Mathematik) Organisatorisches (Vorlesung) • Vorlesungszeiten – Montag 11:15 – 12:45 – Freitag 12:15 – 13:00 (Fragestunde/ Ersatztermin) • Unterlagen – Kurzskriptum, erhältlich in den Übungen – Barnes & Kölling: Java lernen mit BlueJ. – Web-Seite: • Programmbeispiele, Folien, Übungsblätter, Software, Merkblätter. 04.10.2013 CuP - VO 2 Organisatorisches (Übungen) • Aufgeteilt in 16 Gruppen – Hilbertraum (Hauptgebäude) – Computerraum IL+IT (RWZ) • „Repetitorium zu Computeranwendung und Programmierung“ – Tutoren – Freies Üben (Eulerraum im TTZ) • Alles weitere erfahren Sie in den Übungen. 04.10.2013 CuP - VO 3 Inhalt der Lehrveranstaltung • Objektorientiertes Programmieren in Java – Objekte, Klassen, Interaktion zwischen Objekten – Bedingte Anweisungen und Schleifen – Arbeiten mit Listen 04.10.2013 CuP - VO 4 Beispiel eines 1. KNW (a) Schreiben Sie eine Klasse Buch mit dem Konstruktor public Buch(String String autor, String titel, String isbn, int anzahlSeiten, boolean istTaschenbuch, String sprache) . istTaschenbuch hat den Wert true, true wenn das Buch ein Taschenbuch ist, und ansonsten den Wert false. false 04.10.2013 CuP - VO 5 Beispiel eines 1. KNW (b) Schreiben Sie weiters eine Klasse Buecherverzeichnis mit dem Konstruktor public Buecherverzeichnis() , der ein leeres Bücherverzeichnis erzeugt. 04.10.2013 CuP - VO 6 Beispiel eines 1. KNW (c) Implementieren Sie in der Klasse Buecherverzeichnis auch die folgenden Methoden: public void addBuch(Buch einBuch) fügt einBuch dem Bücherverzeichnis hinzu. 04.10.2013 CuP - VO 7 Beispiel eines 1. KNW (d) public int gibAnzahlDeutscherBuecher() liefert die Anzahl der deutschsprachigen Bücher, d.h. jener Bücher, für die sprache den Wert "deutsch" hat. public ArrayList<Buch> getTaschenbuecher() ArrayList liefert eine ArrayList mit den im Bücherverzeichnis vorhandenen Taschenbüchern. 04.10.2013 CuP - VO 8 Objektorientiertes Programmieren (OOP) • Objekte – zentrale Konzept der OOP – Programme laufen an/in Objekten ab • Klassenbeschreibung definiert die Eigenschaften der Objekte (dieser Klasse) – – – – welche Attribute wie werden Objekte erzeugt welche Methoden was bewirkt ein Methodenaufruf 04.10.2013 CuP - VO 9 Syntax und Semantik • Programmsyntax – Gibt die Schreibweise von Programmen in einer bestimmten Programmiersprache an. – In Java wird die korrekte Syntax vom Compiler geprüft. • Programmsemantik – Gibt die Bedeutung eines Programms an. Was macht ein Programm? – Kann durch Ausführen des Programms getestet werden. 04.10.2013 CuP - VO 10 Java: Klassendefinition public class klassenname { attributliste konstruktordefinition methodenliste } 04.10.2013 CuP - VO 11 Attributdefinition private typ attributname; • Ein Typ definieren einen Wertebereich. – 8 Basistypen • int, int double, double boolean, boolean long, long char, char byte, byte short, short float. float – Objekttypen (z.B. String) • durch Angabe eines Klassennamens 04.10.2013 CuP - VO 12 Wichtige Basistypen – ganze Zahl zwischen -231,…,231-1 • int • double – Gleitkommazahl (z.b. -1.23 oder 1.2e-4) • boolean – logischer Wahrheitswert: 04.10.2013 CuP - VO true oder false 13 Typ String • Zeichenkette –"TICKET" –"Computer und Programmieren" –"" – Die Anführungszeichen " sind nicht Teil der Zeichenkette, sondern begrenzen sie, "" bezeichnet den sogenannten Leerstring. • Mit dem Zeichen + können Strings zusammengefügt werden: "Computer" + " " + "und" + " " + "Programmierung" ergibt "Computer und Programmierung" . 04.10.2013 CuP - VO 14 Konstruktordefinition public klassenname(parameterliste) anweisungsliste • Konstruktor – erzeugt die Objekte der Klasse – initialisiert dabei die Attribute 04.10.2013 CuP - VO 15 Methodendefinition public returntyp methodenname(parameterliste) anweisungsblock • Wenn eine Methode einen Rückgabewert liefert, dann gibt returntyp den Typ des zurückgelieferten Werts an. • Für eine Methode ohne Rückgabewert ist der returntyp void. void 04.10.2013 CuP - VO 16 Parameterliste typ parametername,…,typ parametername • Die Parameterliste gibt an, welche Werte an den Konstruktor oder die Methode bei einem Aufruf übergeben werden müssen. • Die Parameterliste kann auch leer sein. 04.10.2013 CuP - VO 17 Anweisungsblock { anweisung1 anweisung2 … } • Im Anweisungsblock eines Konstruktors oder einer Methode werden durch die Anweisungen jene Aktionen definiert, die beim Aufruf ausgeführt werden. 04.10.2013 CuP - VO 18 Anweisungen • Zuweisung attributname = ausdruck; 04.10.2013 CuP - VO 19 Die Objektreferenz this • Mit der Objektreferenz this kann ein Objekt immer sich selbst bezeichnen. – Z.B.: this.titel this • Mit this kann zwischen Attributen und gleichnamigen Parametern unterschieden werden. • Achtung: Gleichnamige Patameter sind eine mögliche Fehlerquelle, wenn auf this vergessen wird! 04.10.2013 CuP - VO 20 Die ArrayList • Stellt eine Liste dar, in die mehrere Objekte gleichen Typs eingetragen werden können. • Eine ArrayList ist selbst wieder ein Objekt. • Die Klasse ArrayList ist nicht automatische verfügtbar (wie z.B. die Klasse String), String sondern muss importiert werden: import java.util.ArrayList; java.util.ArrayList public class MyClass { … } • java.util bezeichnet das Java-Paket, das die Klasse ArrayList enthält. 04.10.2013 CuP - VO 21 Definition einer ArrayList ArrayList<typ> ArrayList • Für eine ArrayList wird auch der Typ der Objekte angegeben, die sie enthalten soll. • Z.B. bezeichnet ArrayList<Buch> ArrayList eine Liste von Buch-Objekten. 04.10.2013 CuP - VO 22 Erzeugen einer ArrayList new ArrayList<typ>() ArrayList • Erzeugt ein ArrayList-Objekt, das Objekte vom angegebenen Typ enthalten kann. • Die erzeugte ArrayList ist zu Beginn leer, enthält also noch keine Objekte. 04.10.2013 CuP - VO 23 Hinzufügen von Elementen zu einer ArrayList public void add(typ objekt) add • Fügt das angegebene Objekt am Ende der Liste hinzu. • Der Typ des Objekts muss mit dem Typ der Objekte übereinstimmen, die in der ArrayList gespeichert werden können. 04.10.2013 CuP - VO 24