Vorlesung Programmieren Wintersemester 2006/2007 Dozent Nino Simunic M.A. Computerlinguistik, Campus DU Referenten: Werner Gaulke, Jan Engler 21.12.2006 Überblick Vorlesung, WS 06/07 Programmieren Dozent Nino Simunic M.A. Seite 2 Wiederholung, Vorbereitung & Verschiedenes Fragenkatalog (1) Vorlesung, WS 06/07 Programmieren Dozent Nino Simunic M.A. Seite 3 Wie deklariert man eine Variable x vom Typ int? Beispiel. Was ist der Unterschied zwischen einfachen und komplexen Datentypen? Beispiel. Primitive DT haben keine Methoden oder Attribute. Komplexe DT werden mit new erzeugt Car a = new Car(); Was ist eine Klasse, was ist ein Objekt, wie verhalten sie sich zueinander? Anwendbar auf alle primitive Datentypen. int x = 10; Klassen sind Schablonen Objekte sind Instanzen einer Klasse; Erzeugt durch new Was ist eine Referenz, was ist eine Referenzvariable? Beispiel. Student x = new Student(); Student y=x; Fragenkatalog (2) Vorlesung, WS 06/07 Programmieren Dozent Nino Simunic M.A. Seite 4 Was ist eine Zuweisung, und wie sieht sie aus (Syntax)? Was bedeuten Präzedenz und Assoziativität bei Operatoren? Beispiel. Statische Methoden können ohne Objekt der Klasse verwendet werden Können ohne Objekt programmweit genutzt werden Wie sind Methoden aufgebaut? Beispiel. Wertigkeit der Operatoren bestimmt Auswertungsreihenfolge 3 + 4 * 5 / 6 + i ++ Was ist der Unterschied zwischen statischen Methoden und anderen Methoden einer Klasse? VAR = Ausdruck; modifier Rückgabewert name(Parameter) public String toString() Wie gibt man aus einer Methode einen Wert zurück, und wie verwendet man diesen Wert dann weiter? Rückgabe in der Methode mit return Wert Die aufrufende Stelle erhält den Wert der Rückgabe und dessen Typ Kopf muss Typ des Rückgabewerts definieren Fragenkatalog (3) Vorlesung, WS 06/07 Programmieren Dozent Nino Simunic M.A. Seite 5 Wie ruft man eine Methode auf? Gibt es beim Aufruf Unterschiede zwischen statischen und anderen Methoden? Aufruf: OBJEKTVAR.METHODE Stat. M. werden mit Klassennamen aufgerufen KLASSE.METHODE Wozu braucht man eine main-Methode? Braucht man in jeder Klasse eine main-Methode? Was ist der Unterschied zwischen Klassenvariablen und Instanzvariablen? Einstiegspunkt für Programme, static, hier wird kein Objekt gebraucht Nein Klassenvariablen gelten für alle Instanzen, Instanzvariablen werden für jede Instanz neu erzeugt/belegt z.B. Counter für Studenten (KV), Baujahr von Auto (IV) Was bedeutet Überladung? Beispiel. void myMethod(int x); void myMethod(String x); Was muss man beim Überladen beachten? Methoden überschreiben Vorlesung, WS 06/07 Programmieren Dozent Nino Simunic M.A. Seite 6 public String meineMethode(int x){ return "Zahl" + x; } public String meineMethode(double x){ return "Zahl" + x; } public String meineMethode(int x, int y){ return "Summe" + x + y; } public String meineMethode(double x){ return „Andere Zahl" + x; } Fragenkatalog (4) Vorlesung, WS 06/07 Programmieren Dozent Nino Simunic M.A. Seite 7 Was sind lokale, was sind globale Variablen? Was bedeutet this? Beispiel. Wird automatisch mit new aufgerufen Initialisert ein Objekt einer Klasse Welche Schleifentypen kennst du? S.o., Auflösung von Mehrdeutigkeiten ( Disambiguierung ) von lokalen/globalen Variablen Was ist ein Konstruktor? Global: Klassenvariablen, Lokal: Methodenvariablen Können gleich benannt werden for, while, do while Können Schleifen unterschiedlichen »Typs« äquivalent sein/gemacht werden? Beispiel. Äquivalenz von Schleifen Vorlesung, WS 06/07 Programmieren Dozent Nino Simunic M.A. Seite 8 for (int i = 0; i < 10; i++) { System.out.print(i); } int i = 0; do{ System.out.print(i); i++; }while(i < 10); i=0; while (i < 10) { System.out.print(i); i++; } Fragenkatalog (5) Vorlesung, WS 06/07 Programmieren Dozent Nino Simunic M.A. Seite 9 Was ist der Unterschied zwischen einer Schleife und einer Verzweigung? Was ist der Unterschied zwischen einem Array und einem Vector? Schleife wiederholt Anweisungen Verzweigung teilt Programmfluss auf Array: Größe beim erzeugen festgelegt, Bindung an Typ Vector: Größe dynamisch, Kann alle Typen beinhalten Was bedeutet es, eine Methode zu überschreiben? Was muss man beachten? Beispiel. Signatur der Methoden kann identisch sein Wird oft bei Vererbung angewandt Äquivalenz von Schleifen Vorlesung, WS 06/07 Programmieren Dozent Nino Simunic M.A. Seite 10 class Oberklasse { protected String writeInfo(){ System.out.println(„Info“); } } class Unterklasse extends Oberklasse { protected String writeInfo(){ System.out.println(„neue Info“); } } Fragenkatalog (6) Vorlesung, WS 06/07 Programmieren Dozent Nino Simunic M.A. Seite 11 Was ist Kapselung? Welche Zugriffsrechte gibt es, und was bewirken Sie? public – immer sichtbar protected – nur für vererbte Klassen sichtbar private – nur in der Klasse sichtbar (nichts) - innerhalb des Packages sichtbar (package-private) Welche Klasse ist Oberklasse von allen Klassen? Verbergen von Implementierungsdetails Die Klasse Object Was ist Polymorphie? Beispiel. »Vielgestaltigkeit«, Var. kann unterschiedlichen Datentypen haben/beinhalten. Die Datentypen müssen kompatibel sein. Polymorphie Vorlesung, WS 06/07 Programmieren Dozent Nino Simunic M.A. Seite 12 class Artikel{ protected int preis; Artikel(int preis){ this.preis = preis; } public int getPreis(){ return this.preis; } } class Buch extends Artikel{ String autor; Buch(int preis, String autor){ super(preis); this.autor = autor; }} class DVD extends Artikel{ String titel; DVD(int preis, String titel){ super(preis); this.titel = titel; }} public class Poly { public static void main(String[] args) { Artikel[] warenkorb = new Artikel[10]; warenkorb[0] = new Buch(14, "Dan Brown"); warenkorb[1] = new DVD(19, "Boondock Saints"); //Warenkorbpreis berechnen int korbValue = 0; for(int i =0; i < warenkorb.length; i++){ if(warenkorb[i] != null) korbValue += warenkorb[i].getPreis(); } System.out.println("Warenwert der Artikel: "+ korbValue + "€"); }} Fragenkatalog (7) Vorlesung, WS 06/07 Programmieren Dozent Nino Simunic M.A. Seite 13 Was ist der Unterschied zwischen einem Interface und einer Klasse? Kann eine Klasse mehrere direkte Oberklassen haben? Nein. Warum? Interfaces können nur Konstanten/leere Methoden haben, Klassen dagegen viel mehr. Können Interfaces von Interfaces erben? Neu. Nein. Problematisch bei gleichen Methoden der Oberklassen? Welche gilt? Können Interfaces von Klassen erben? Neu. Interface kann nicht instanziiert werden Interface hat ausschließlich Konstanten und nicht-implementierte Methoden Ja. Beispiel. Kann ein Interface mehrere direkte Oberinterfaces haben? Neu. Ja. Beispiel. Interfaces Vorlesung, WS 06/07 Programmieren Dozent Nino Simunic M.A. Seite 14 public interface HeiligAbend { public String getDatum(); public void beschehrung(); } interface Wochentag{ public String getDatum(); } interface Sonntag implements HeiligAbend, Wochentag{ } Fragenkatalog (8) Vorlesung, WS 06/07 Programmieren Dozent Nino Simunic M.A. Seite 15 Was ist der Unterschied zwischen extends und implements? Was bedeutet final und wie wird es verwendet? Beispiel. Verwendung für Variablen, Methoden, Klassen Nachträgliche Änderung nicht mehr möglich; M. -> keine Überschreibung final int x = 10; Was ist eine abstrakte Methode und wozu braucht man sie? extends erbt die Dinge der Oberklasse Implements implementiert die leeren Methoden eines Interfaces Abstrakte Methode gibt Signatur vor, wird später implementiert. Nützlich, wenn Unterklasse die Methode spezifisch implementieren sollen, der Rest aber gleich ist. Tier –Beispiel: machLaut() Was ist der Unterschied zwischen einer abstrakten Klasse und einem Interface? Abstrakte Klassen können auch normale Methoden und Variablen enthalten. Fragenkatalog (9) Vorlesung, WS 06/07 Programmieren Dozent Nino Simunic M.A. Seite 16 Wofür braucht man Methoden? Nenne drei verschiedene Gründe. Wofür braucht man Vererbung? Beispiel. super. Ruft Variable/Methode der Oberklasse auf super() ruft Konstruktor der Oberklasse auf Wann muss super() explizit implementiert sein? Code-Verdoppelung vermeiden, Wartbarkeit Abbilden von Hierarchien Was ist der Unterschied zwischen/Nutzen von super. und super()? Zerlegung in Teilaufgaben Schnittstellenbildung Code-Verdoppelung vermeiden, Wartbarkeit Aufrufen von Oberklassenkonstruktor mit Parametern Kann eine Klasse mehrere Datentypen haben? Beispiel. Via Interf. und Vererb. Mehrere Datentypen für eine Klasse Vorlesung, WS 06/07 Programmieren Dozent Nino Simunic M.A. Seite 17 abstract class Freuen{ abstract public void betrachteGeschenk(String geschenk); public void echteFreude(){ System.out.println("FREU!"); } public void geheuchelteFreude(){ System.out.println("Socken? Äh freu?"); } } class Montag extends Freuen implements HeiligAbend, Wochentag { public String getDatum() { return "25.12.2006"; } public void Beschehrung() { //Geschenke bekommen betrachteGeschenk("Socken"); } Welche Datentypen besitzt Montag? public void betrachteGeschenk(String geschenk) { If (geschenk.endsWith("Socken")) geheuchelteFreude(); else echteFreude(); } } Fragenkatalog (10) Vorlesung, WS 06/07 Programmieren Dozent Nino Simunic M.A. Seite 18 Nennen Sie ein Beispiel, bei dem das Konzept »Rekursion« eine zentrale Rolle spielt. Wozu braucht man Packages? Strukturierung, Zugriffsrechte unqualifizierte Angaben möglich (statt java.util.Vector via Import nur Vector) Was bewirkt eine import-Anweisung? Mit welcher Anweisung weist man eine Klasse einem Package zu? z.B. package Fahrzeug; über der Klasse zu definieren Was muss für eine Klasse gelten, damit sie auf Events reagieren kann? Verk. Liste Sie muss einen (oder mehrere) Event Listener implementieren (Interfaces) Sie muss die Methoden des Interfaces implementieren Wie erreicht man, dass ein Objekt die Events bekommt, die für das Objekt relevant sind? Das Objekt muss sich beim Event registrieren. (z.B. addActionListener()) Fragenkatalog (11) Vorlesung, WS 06/07 Programmieren Dozent Nino Simunic M.A. Seite 19 Was bedeutet GUI? Was ist Swing, AWT, JFC? awt.window import java.awt.window; Frame neuesFenster = new Frame(„neues Fenster"); wnd.setVisible(true); Was ist ein LayoutManager? Zuständig für Anordnung der GUI Elemente;relative Anordnung z.B. BorderLayout, GridLayout, BoxLayout, GridBagLayout, NullLayout Welche wesentlichen Aspekte bei der GUI-Programmierung gibt es? Kontrollelemente, Fenster, Ereignisverarbeitung, Layout Bibliotheken zur Erzeugung von GUI-Objekten AWT älter, Swing mächtiger Zur den JFC gehören alle GUI API´s Mit welcher Klasse oder welchen Klassen kann man eigenständige GUI-Fenster erzeugen? Graphical User Interface : graphische Benutzerschnittstelle