1 - Informatik

Werbung
1. Kapselung
a. zusammenfügen von Daten und Routinen zu einer Einheit
2. Data hiding
a. ist das verstecken von Daten und Implementierungen
3. Datenabstraktion
a. Datenabstraktion = data hiding + Kapselung)
4. Objektkoppulung
a. Abhängigkeit der Objekte voneinander
b. soll schwach sein, also gute Kapselung (wenig sichtbare Mathoden und
Variablen, wenig Nachrichten im laufenden System, wenig Parameter in
Methoden
5. Ersetzbarkeitsprinzip
a. U ist Untertyp von T, wenn eine Instanz von U überall verwendbar ist, wo eine
Instanz von T erwartet wird
6. Refaktorisierung
a. Änderung der Struktur (oft im Anfangsstation sehr billig/nicht aufwendig,
später eher teuer/aufwändig)
7. Kovarianz, Kontravarianz, Invarianz
a. Sind Bedingungen für Untertypbeziehungen, welche der Compiler überprüfen
kann.
b. Kovarianz: Typ eines Elements im Untertyp ist Untertyp des Elementtyps im
Obertyp (Konstantentypen, Ergebnistypen, Ausgangsparametertypen), also (in
Java) die Methoden der Unterklasse mindestens die Parameter akzeptieren
müssen, die die Oberklasse auch akzeptieren würde
c. Kontravarianz: Typ eines Elements im Untertyp ist Obertyp des Elementtyps
im Obertyp (Eingangsparametertypen), also (in Java) zb. die Methoden der
Unterklasse dürfen aber nicht Werte zurückliefern (Rückgabeparameter), die
man mit der Oberklasse nicht vereinbart hatte.
d. Zum überschreiben von Methoden wird Kontravarianz benötigt
(überschreiben: alte Methode wird ersetzt, überladen: alte Methode existiert
paralell)
e. Invarianz: Typ eines Elements im Untertyp ist gleich dem Elementtyp im
Obertyp (Variablentypen, Durchgangsparametertypen), also wenn Kovarianz
und Kontravarianz benötigt wird (lesen und schreiben)
8. Interface
a. Alle Methoden sind abstrakt, enthalten also keine Implementierungen.
b. Variablen dürfen nicht deklariert werden, wohl aber Konstanten, also
mit static final gekennzeichnete Variablen, die mit einem unveränderlichen Wert
initialisiert sind.
c. Alle Methoden sind public Instanzmethoden. Die Schlüsselwörter
static, final, protected und private dürfen in Methodendeklarationen
nicht vorkommen.
d. Interfaces können von mehreren anderen Interfaces erben
(Mehrfachvererbung),
e. aber nicht von Klassen.
f. Auch Klassen können von mehreren Interfaces erben
9. Statische Typsicherheit
a. ist dann gewährleistet, wenn die Argumenttypen kontravariant und die
Ergebnistypen kovariant sind.
10. Zusicherungen (pre- postconditions, invarianten)
a. Precondition (Vorbedingung): vor Methodenaufruf, Client verantwortlich
b. Postcondition (Nachbedingung): vor Rückkehr aus Methodenaufruf, Server
verantwortlich
c. Invariante: vor und nach Ausführung der Methoden, Server verantwortlich
(unveränderte Eigenschaften von Objekten), Ausnahme: schreiben externer
Variablen
11. Arten von Klassen-Beziehungen
a. Untertypenbeziehungen (Subtyping): Vererbung von Code aus Oberklasse ist
irrelevant (zb. mittels Interfaces)
b. Vererbungsbeziehung: Klasse entsteht durch Abänderung anderer Klassen
(Ersetzbarkeit irrelevant) (zb. mittels extends, aber dadurch auch
Untertypenbeziehung)
c. Reale-Welt-Beziehungen: intuitiv klar, ohne Details zu kennen. Oft in
Untertypenbeziehungen weiterentwickelbar, ABER geht oft nicht
12. Generizität
a. für gleich strukturierte Klassen und Methoden
b. Abfangen erwarteter Änderungen
c. manchmal verwendbar, wo Untertypenbeziehungen versagen (Ersetzbarkeit bei
Generizität nicht benötigt)
13. Gebundene Generizität
a. einfache Form zwar elegant und sicher ist, aber für einige
Verwendungszwecke nicht ausrechend (Im Rumpf einer einfachen generischen
Methode ist über den Typ, der den Typenparameter ersetzt, nichts bekannt (A
kann ja alles sein)). Wenn man bestimmte Methoden aufrufen möchte, braucht
man eine Einschränkung (A ist mindestens eine Person). also, A extends
Person = Gebundene Generizität
14. F-Gebunde Generizität
a. Rekursive Verwendung von Generizität
b. unterstützt keine impliziten Untertypbeziehungen. Zum Beispiel besteht
zwischen List<X> und List<Y> keine Untertypbeziehung wenn X und Y
verschieden sind, auch dann nicht, wenn Y von X abgeleitet ist (oder
umgekehrt).
c. Will man Untertypenbeziehung, verwendet man Wildcards ( ? extends Person)
15. Unterschied zwischen Homogene und Heterogene Übersetzung
a. Homogen generische Klasse in eine nichtgenerische Klasse übersetzt,
Typparameter durch Schranke oder Object ersetzt, Typumwandlungen für
Rückgabewerte (immer erfolgreich)
(in Java)
b. Heterogene Übersetzung erzeugt für jede generische Klasse oder Routine mit
anderen Typparametern eigenen übersetzten Code. Daher muss man bei
heterogener Übersetzung keine Schranke angeben, es wird einfach für jede
übersetzte Klasse geprüft, ob die Typen die Vorraussetzungen haben („copy
paste“) .  bessere Laufzeit und auch für einfache Typen wie int und boolean
möglich.(für Templets in C++), aber viele Klassen und schwer simulierbar
16. Decorator pattern
17. Visitor Pattern
a. Simuliert im wesentlichen Multimethoden
18. Virtual Proxy
a. erzeugen Objekte bei Bedarf. Da die Erzeugung eines
Objekts aufwändig sein kann, wird sie so lange verzögert, bis es wirklich
einen Bedarf dafür gibt.
19. Remote Proxies
a. sind Platzhalter für Objekte, die in anderen Namensräumen (zum Beispiel auf
Festplatten oder auf anderen Rechnern) existieren. Nachrichten an die Objekte
werden von den Proxies über komplexere Kommunikationskanäle
weitergeleitet.
20. Multimethode (dynamisches Binden)
a. entsprechen syntaktisch überladenen Methoden, aber Bindung erfolgt an Hand
dynamischer Typen
b. dadurch oft einfachere Programme möglich
c. Existiert nicht in Java, ist aber leicht zu simulieren
d. Durch Visitor Pattern simulierbar
21. Überladen
a. Beim Überladen bezeichnet ein und derselbe Name verschiedene Routinen, die
sich durch die deklarierten Typen ihrer formalen Parameter unterscheiden. Die
deklarierten Typen der übergebenen Argumente entscheiden, welche Routine
ausgeführt wird. (Beispiel „/“ bei int und float, gleiches Prinzip, aber ganz
andere Herangehensweise (Code)
22. Überladen VS Multimethode
23. Proxy Pattern
24. Factory Pattern
25. Iterator
26. Decorator
27.
Herunterladen