Beruflich Dokumente
Kultur Dokumente
- Tritt das Event ein, informiert das Fenstersystem zuerst die Komponente (z.B. Button)
‐ die Komponente informiert anschließend alle ihre angemeldeten Listener
Eine weitere Aufgabe ist das der Listener bei einer Komponente z.b. Button angemeldet werden muss.
Die Komponenten informieren alle angemeldeten Listener, wenn Event auftritt.
27 Wie ist der Weg vom Programm zur Ausführung (unter Verwendung von Java)?
1. Programmierung
-> Java Code
2. Übersetzung durch Compiler
-> Bytecode
3. Interpretation durch Interpreter
-> Ausführung
33 Was bezeichnen NAMEN in einem Programm? Woraus bestehen sie? Was ist bei der Namensvergabe zu beachten?
- bezeichnen "Dinge", z.B. Variablen, Methoden, Typen
- bestehen aus Buchstaben, Ziffern, '_' und '$'
- zu beachten:
- Erster Buchstabe muss Zeichen, Buchstabe, '_' oder '$' sein
- case-sensitive (Groß-/Kleinschreibung beachten!)
37 Was ist die Aufgabe der Typ-Deklaration und welche Arten von Typen gibt es?
Legt fest, von welcher Art die Daten sein können, die eine Variable annimmt.
41 Was ist bei der Wahl eines Bezeichners für eine Variable zu beachten?
- beliebiger, eindeutiger Name
- kein Java-Schlüsselwort verwenden
- Kann $, _ und Ziffern enthalten, sollte aber vermieden werden
- Immer mit einem Buchstaben beginnen
- Aufbau:
- macht Variable im Programm bekannt
47 Von welchen Operatoren-Arten spricht man abhängig von der Anzahl der Operanden?
- unäre (Bsp.: Vorzeichenoperatoren)
- binäre (0, 1)
- ternäre (if, then, else)
48 Welche arithmetischen Operatoren gibt es?
49 Von welchem Datentyp sind Operanden und Ergebnis bei arithmetischen Operationen?
Operanden:
- entweder numerisch
(byte, short, int, long, float, double)
- oder (Ausnahmefall) char
Ergebisse:
- immer numerisch
(double, float, long, int)
Beispiel:
int summe = 3 + 4; / / 3 + 4 wird berechnet und summe zugewiesen
int produt = summer * summe; / /operanden sind diesmal Variablen
ACHTUNG: Modulo-Rechnung und Division können dasselbe Ergebnis erzielen, sind aber grundlegend verschieden!
int zaehler = 0;
zaehler = zahler + 1; is das selbe wie zaehler++
- binäre Operatoren
- Kurzschreibweise
- Operatoren sind
- numerisch
- char
- Objektreferenzen (nur einfache Zuweisung!)
- durch Prioritäten:
57 Welche Arten von Typumwandlungen gibt es? Wie unterscheiden sie sich?
Implizite Typumwandlung
Werte kleineren Typs werden an Werte größeren Typs übergeben
-> automatische Konvertierung durch Java
Explizite Typumwandlung
- Konversion von Werten größeren Typs in kleineren Typ wird erzwungen.
- Kann zu Informationsverlust führen.
60 Wie heißt der Teil einer Methode, die auszuführende Anweisungen beinhaltet?
Die Anweisungen, die in einer Methode ausgeführt werden sollen, stehen im sog. Rumpf.
62 Was sind die wichtigsten Dinge, die man über MAIN-METHODEN wissen sollte?
- JVM startet ein Programm immer in der main-Methode
- main-Methode ist eine Ausnahme, da sie von der JVM aufgerufen wird
- Signatur (Aufbau) ist entscheidend, damit die JVM die Methode findet!
65 Welche zwei Arten von Kontrollstrukturen gibt es und was unterscheidet sie?
Verzweigungen
welche Programmstrukturen werden ausgeführt ( "wenn-sonst")
Schleifen
Anweisungen werden wiederholt abgearbeitet ("solange-bis")
66 Welche zwei Arten von Verzweigungsanweisungen gibt es in Java und was unterscheidet sie?
if- Anweisung :
mächtiger als switch-case
switch-case- Anweisung:
performanter, in bestimmten Fällen eleganter
67 Aus welchen Elementen besteht eine if-Anweisung? Welche ergänzenden Konstrukte sind möglich?
if( <Bedingung> ) {
<Anweisung>
}
Beispiel:
if( Kamin.temperatur <100) {
brennholz = neuesBrennholz();
Kamin.nachlegen(brennholz);
Kamin.Luftzufuhr.oeffnen();
}
if -Anweisung kann weitere Alternativzweige besitzen
else-if-Schlüsselwörter leiten weiteren Zweig ein
Fälle müssen mit break ( Schlüsselwort) explizit beendet werden, ansonsten werden alle nachfolgenden Fälle mit
abgearbeitet.
Andersrum ist es jedoch nicht möglich, da eine if-Anweisung zu kompiliziert und verschachtelt agieren kann um sie auf
eine "einfache" switch-case-Anweisung runter zu brechen.
Anweisungen werden solange wiederhoilt, bis eine bestimmte Bedingung nicht mehr erfüllt ist
Alle Schleifen müssen eine Bedingung enthalten!
Beispiel:
auflisten von Zahlen von 1 bis 100
74 Aus welchen 3 Elementen besteht die while-Schleife? Wie läuft die Schleife ab?
while ( <Bedingung> ) {
<Anweisung>
}
Anweisung
Was soll gemacht werden, wenn Bedingung zutrifft?
in geschweiften Klammern als Block gekennzeichnet
Anweisung
Was soll gemacht werden, wenn Bedingung zutrifft?
in geschweiften Klammern als Block gekennzeichnet
Schleifenabbruch mit break sollte möglichst vermieden werden, stattdessen lieber geeignete Abbruchsbedingungen
Referenzdatentypen
◦Felder
◦Klassen
->ermöglichen es, neue, komplexere Typen zu definieren
Variable eines Referenztyps,enthält Verweis auf ein Objekt.
• Definition
‐Werttypen haben feste Größe -> Definition erledigt Compiler
◦z.B.: int -> 4 Byte
‐Referenztypen müssen explizit mit new-Operator definiert werden!
◦Ausnahme: Direkte Feldinitialisierung!
82 Was ist die Kurzschreibweise für eine Schleife, die ein komplettes Array durchlaufen soll?
for (int zahl : lottoZahlen) {
...
}
83 Was sind die Unterschiede zwischen flacher Kopie und tiefer Kopie?
Flache Kopie:
•Zuweisungsoperator (=) kopiert lediglich Verweis auf Feld, nicht den Inhalt
•Beispiel:
char[] film = { 'a', 'v', 'a', 't', 'a', 'r'};
char[] spiel = film;
•Beide Referenzvariablen (film und spiel) verweisen auf selbes Objekt und den selben Speicherbereich
•Änderungen am Feld über eine Referenz beeinflussen Inhalt für beide Referenzen!
Tiefe Kopie:
•Um eine "echte" Kopie zu erstellen, muss elementweise kopiert werden.
•Dazu muss mit new-Operator neuer Speicherbereich reserviert werden!
•Änderungen an Original haben keine Auswirkungen auf Kopie.
•Beispiel:
char[] film = { 'a', 'v', 'a', 't', 'a', 'r'};
char[] spiel = new char[6];
entspricht:
boolean konjunktion= new boolean[4][3];
UML ist eine formale Beschreibungssprache zur Spezifikation, Visualisierung, Konstruktion und Dokumentation von
Modellen für Softwaresysteme.
Vererbung ist eine Beziehung zwischen generellen und speziellen Klassen. Dabei zeigt der Pfeil von der Subklasse auf die
Klasse.
93 Was ist ein Objekt? Und was ist der Unterschied zu Klassen?
•Klasse gibt mögliche Daten und Verhalten vor
‐beschreibt statische Struktur einer "Sache"
‐statische Struktur ist Referenzdatentyp!
Die Besonderheit bei Standardkonstruktoren ist, dass sie leere Parameterlisten enthalten.
Außerdem erzeigt ein Konstruktur ein neues Objekt und der Konstruktor kann überladen werden (mehrere
Konstruktoren in einer Klasse)
Lesbarkeit - trotz Auslagerung von Codeteilen in Superlassen ist Verteilung durch klare Beziehungen nachvollziehbar
Spezialisierung
vom Allgemeinen zum Besonderen
- neue Subklassen erzeugen
- von Superlasse erben lassen
- Schlüsselwort implements
=> lediglich Schnittstellenvererbung
108 Wie funktioniert die Vererbung mit "extends"?
Subklasse erbt konkrete Implementierung der Superklasse
Jede Klasse hat maximal eine Superklasse (Einfachvererbung), kann aber beliebig viele Subklassen haben
Syntax
Neu deklarierte Klasse erweitert durch Schlüsselwort extends andere Klassen und erbt von ihr
Beispiel
public class Banane extends Obst{
//...
}
109 Was wird mit extends vererbt? Gibt die verschiedenen Sichtbarkeiten an!
Subklasse hat Zugriff auf alle öffentlichen und geschützten Member
Beispiel:
public class Lebensmittel {
// Klasse erbt von Object, da keine explizite extends-Anweisung
}
Syntax:
public final class SecuritySystem{
}
viel Fehlerpotential
- falscher Featureeinsatz
- kaum Schutz vor Fehlverwendung
115 Was sind abstrakte Klassen und welche Eigenschaften haben sie?
Generalisierungen führen oft zu Klassen, die nie selbst initialisiert werden.
Abstrakte Klassen
- können nicht erzeugt werden
- können abstrakte Methoden beinhalten
- können konkrete Methoden beinhalten
Abstrakte Methoden
- haben keinen Rumpf
- müssen in Subklasse implementiert werden
- spielen bei Polymorphismus noch eine große Rolle
- können nicht in konkreten Klassen definiert werden
Analogie:
USB-Schnittstelle an Computer
- alles mögliche kann angeschlossen werden
( Stcik. Drucker, Maus...)
Gegenbeispiel:
Mikrofon-Eingang
- hier kann auch Lautsprecher angeschlossen werden -> Schnittstelle passt !
- Lautsprecher realisiert Schnittstelle "Aufnahme" aber nicht!
- so kann nichts aufgenommen werden !
Modul Computer ist von Implementierung des angeschlossenen Gerätes (Mikrofon) abhängig
=> Enge Kopplung
Konvention: Interface-Bezeichner beginnen immer mit Großem "I" gefolgt von weiterem Großbuchstaben
Beispiel:
Wir unterscheiden:
Überladen von Methoden (statischer Polymorphismus) z.B.
- beim Überladen von Konstruktoren (VL05)
- Überladene Funktionen in java-API oder GraphicIO
Überschreiben von Methoden (dynamischer Polymorphismus)
Ausnahme :
Methoden nicht überschreibbar, wenn sie mit private, final, oder static definiert wurden.
Objekt von Typ kann also zur Laufzeit substituiert (ersetzt) werden
- Figur kann Kreis, Rechteck, Dreieck oder Kugel sein
- Figur kann sich also entsprechend unterschiedlich verhalten
‐ Methode einer Klasse kann nur von Objekt mit statischem Typ dieser Klasse aufgerufen werden
Beispiel
Kugel kugel; Deklaration legt statischen Typ fest
kugel = new Kugel() ; Definition legt Laufzeittyp fest
Fall1
Klasse des Objektes hat KEINE Superklasse -> in Klassendefinition des Objekts beschriebene Methode wird ausgeführt.
Fall 2
Klasse des Objekts hat Superklasse
a) Klasse des Objekts hat gewünschte Methode überschrieben
-> überschriebene Methode (und nur diese!) wird aufgerufen
b) Klasse des Objekts hat gewünschte Methode NICHT überschrieben -> Methodensuche wird bei Superklasse
fortgeführt, usw.