Vorlesung Programmieren

Werbung
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
Herunterladen