CoboCards App FAQ & Wishes Feedback
Language: English Language
Sign up for free  Login

Get these flashcards, study & pass exams. For free! Even on iPhone/Android!

Enter your e-mail address and import flashcard set for free.  
Go!
All main topics / Informatik / Java

Java (135 Cards)

Say thanks
116
Cardlink
0
Was bedeutet "Program to Interfaces" ?
Programmiere an eine Schnittstellen, nicht an eine Implementierung!

Programmteile (Modul) sollten nur die Schnittstellen voneinander kennen , nicht die Implementierung

"Baukastenprinzip"



Analogie:
USB-Schnittstelle an Computer
- alles mögliche kann angeschlossen werden
( Stcik. Drucker, Maus...)

- dem PC ist das egal
---> lose Kopplung

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
Tags: Interfaces und Polymorphismus, VL08
Source:
117
Cardlink
0
Wieso ist eine enge Kopplung schlecht ?
- Software ist nie "fertig"
- Anforderungen können sich jeder Zeit ändern
- Software wird ständig erweitert/ verändert
- Enge Kopplung zwischen Klassen erschwert Erweiterbarkeit/ Veränderbarkeit
- kleine Änderung kann aufgrund enger Kopplung ganze Systeme lahm legen

     "Domino-Effekt"
- Lose Kopplung wünschenswert

-> Interfaces
Tags: Interfaces und Polymorphismus, VL08
Source:
118
Cardlink
0
Was ist eine Kopplung?
Grad der Abhängigkeit zwischen Teilen eines Programms
Tags: Interfaces und Polymorphismus, VL08
Source:
119
Cardlink
0
Was ist eine Vererbung mit "extends"
entspricht einer engen Kopplung

- Klassen nehmen in vielen Details Bezug aufeinander

Problem: Änderungen an Basisklasse können Funktionalität von Subklasse beeinträchtigen.
Tags: Interfaces und Polymorphismus, VL08
Source:
120
Cardlink
0
Was ist eine Vererbung mit  "implements" ?
- Klassen innerhalb einer Anwendung (fast) unabhängig voneinander
- Verzicht auf vererbte Funktionalität ermöglicht flexiblen Programmentwurf
- Implementierungen sind gezwungen, Interface-Methoden zu überschreiben, bleiben dabei aber austauschbar
- immer zu bevorzugen !!!
Tags: Interfaces und Polymorphismus, VL08
Source:
121
Cardlink
0
Welche Schwächen hat die Vererbung mit "extends"?
Objekte können oft mehr als einer Kategorie zugeordnet werden. Das ist mit extends nicht möglich, weil jede Klasse maximal eine Superklasse hat.

Tags: Interfaces und Polymorphismus, VL08
Source:
122
Cardlink
0
Soll "extends" ganz gemieden werden ?
NEIN

Implementierungsvererbung mit bedacht einsetzen!
- bei wahrer Spezialisierung einer Klasse
- Wenn Programm nicht erweiterbar sein soll
- Wenn große Coderedundanzen vorhanden
Tags: Interfaces und Polymorphismus, VL08
Source:
123
Cardlink
0
Was sind Interfaces ?
zusätzliche Sprachfeature in Java
- "Klasse " ohne Daten und Implementierung

Sammlung abstrakter Methoden und (ggf.) Konstanten

enthält Keine Konstruktoren
-> keine Objekterzeugung möglich
Tags: Interfaces und Polymorphismus, VL08
Source:
124
Cardlink
0
Was sind die Eigenschaften von Interfaces?
Realisierung loser Kopplung

beinhalten ausschließlich öffentliche , abstrakte Methoden sowie Konstanten

können sich gegenseitig erweitern (extends)

können nicht erzeugt werden

Klassen können beliebig viele Interfaces implementieren
Tags: Interfaces und Polymorphismus, VL08
Source:
125
Cardlink
0
Wie werden Interfaces deklariert?
mit Schlüsselwort interface statt class

Konvention: Interface-Bezeichner beginnen immer mit Großem   "I" gefolgt von weiterem Großbuchstaben

Methoden sind implizit abstrakt und öffentlich
( public abstract)
- Modifizierer können weggelassen werden
- deklariert nur Kopf einer Methode ohne Rumpf
- Am Ende abgeschlossen durch Semikolon


Interface für strombetriebene Geräte:
public interface IStrombetrieben{
   
<RÜCKGABETYP><BEZEICHNER> ( <PARAMETER>);
      void einschlaten (int spannung);
      void ausschalten();
}
Tags: Interfaces und Polymorphismus, VL08
Source:
126
Cardlink
0
Wie werden Interfaces implementiert?
mit Schlüsselwort "implements"

Beispiel:

Mixer hat (mind) selbe Schnittstelle wie IStrombetrieben

public class Mixer implements IStrombetrieben{
     private boolean istAn = false;
     private static final int
          MAXIMALE_SPANNUNG = 240;

     public void einschlaten(int spannung){
          if(spannung <= MAXIMALE_SPANNUNG) {
               this.istAn = true;
          }
     }
    
     public void ausschalten(){
          this. istAn = false;
     }
}

Tags: Interfaces und Polymorphismus, VL08
Source:
127
Cardlink
0
Was ist bei der Nutzung von Interfaces zu beachten?
Interface kann als Vertrag betrachtet werden.

Interface-Entwickler legt einzuschaltende Schnittstelle fest

Interface-Nutzer ist verpflichtet, alle Methoden des Interfaces zu implementieren
- falls nicht, gibt Compiler Fehlermeldung aus
- Interface-Entwickler kann sich frühzeitig auf Schnittstelle verlassen -> Polymorphismus
Tags: Interfaces und Polymorphismus, VL08
Source:
128
Cardlink
0
Was ist Polymorphismus?
Objekt kann zu Laufzeit Verhalten ändern

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)
Tags: Interfaces und Polymorphismus, VL08
Source:
129
Cardlink
0
Was bedeutet "Überladen von Methoden"?
- Methoden eines Objektes tragen gleichen Namen und gleichen Rückgabetyp
- müssen unterschiedliche Parameterliste haben
- Methoden befinden sich in gleicher Klasse oder Subklasse.
- Methodensignatur unterscheidet sich lediglich in Parameterliste
-Compiler vergleicht bei Aufruf übergebene Parameter mit Methodensignatur und wählt die am besten passende Methode
- Methoden können beliebig oft überladen werden
-GraphicIO setzt stark auf Überladen von Methoden!
=> Gute Quelle!

Beispiel für unterschiedliche Parameteranzahl:



Beispiel für unterschiedliche Parametertypen:

public void print(int intValue) {
     ...
}

public void print(String stringValue) {
    
...
}

public void printTest(){
     print(137);                    wählt erste "print"-Methode
     print("TEST");             
wählt zweite "print"-Methode
}
Tags: Interfaces und Polymorphismus, VL08
Source:
130
Cardlink
0
Was ist dynamischer Polymorphismus?
Polymorphismus im engeren Sinn

beruht auf 3 Prinzipien
- Überschreiben von Methoden
- Substitutionsprinzip
- späte Bindung/ dynamische Bindung
Tags: Interfaces und Polymorphismus, VL08
Source:
131
Cardlink
0
Was bedeutet "Überschreiben von Methoden"?
- Subklasse erbt Methoden der Superklasse
-Methode, welche in Superklasse definiert ist, wird in Subklasse überschrieben
- komplett gleiche Signatur (Name und Parameterliste), nur Rumpf wird geändert
- Subklasse blendet geerbtes Verhalten aus.

Verhalten kann so genauer an Subklasse angepasst werden.

Ausnahme :
Methoden nicht überschreibbar, wenn sie mit private, final, oder static definiert wurden.
Tags: Interfaces und Polymorphismus, VL08
Source:
132
Cardlink
0
Was ist das Substitutionsprinzip?
Objekttypen:
polymorphe Referenzen - können potentiell verschiedene Typen annehmen .
- den deklarierten Typ und alle seine Subtypen

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


Erlaubt, weil Subklasse das Verhalten der Superklasse erbt!
Tags: Interfaces und Polymorphismus, VL08
Source:
133
Cardlink
0
Wie unterscheiden sich statischer Typ und Laufzeittyp?
‐ statischer Typ legt Zugriffsmöglichkeiten auf Methoden fest

‐ 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

‐ Kugel ist statischer Typ und Laufzeittyp

Figur andereKugel; statischer Typ ist Figur andereKugel
= new Kugel(); Laufzeittyp ist Kugel
andereKugel.rolle(); NEIN! Figur kennt "rolle" nicht!
Tags: Interfaces und Polymorphismus, VL08
Source:
134
Cardlink
0
Wie verläuft die dynamische Methodensuche?
Aufruf der Methode eines Objekts stößt Methodensuche an

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.
Tags: Interfaces und Polymorphismus, VL08
Source:
135
Cardlink
0
Welche Vorteile hat Polymorphismus?
Bessere Abbildung der Wirklichkeit:
ermöglicht variable Anpassung des Verhaltens von Methoden an Kontext

ermöglicht hohe Wiederverwendbarkeit

lose Kopplung

Austausch von Objekten führt zu Verhaltensänderung
- ein und derselbe Code kann unterschiedliche Aufgaben abarbeiten
- für Entwurfsmuster sehr wichtig
Tags: Interfaces und Polymorphismus, VL08
Source:
Flashcard set info:
Author: P-H-I-L
Main topic: Informatik
Topic: Java
Published: 13.04.2010
 
Card tags:
All cards (135)
Einführung in die OOP (13)
Felder (6)
Generalisierung und Vererbung (11)
Interfaces und Polymorphismus (20)
Programmelemente (26)
Terminologie (8)
VL 03 Kontrollstrukturen (9)
VL 03 Kontrollstrukturen S. 5 (1)
VL 05 (15)
VL 06 Einführung in die OOP (2)
VL 07 (11)
VL 09 GUI Event-Handling (6)
VL Programmelemente (2)
VL03 Kontrollstrukturen (1)
VL04 (6)
VL08 (20)
VL09 GUI (2)
Report abuse

Cancel
Email

Password

Login    

Forgot password?
Deutsch  English