- Was ist ein Komponent?
- Software Building Block
- Betrachtet als Black Box
- Kann man deployen, und mit anderen Komponenten kombinieren
- Nur die Interfaces und Resource Demand sind wichtig, nicht die innere Struktur
- Was ist ein Interface von einem Komponent?
- Provides-Interface: Beschreibung der Services, die das Komponent bereitstellt (Lolipop)
- Requires-Interface: Beschreibung der Services, die das Komponent benoetigt (Halbkreis)
- Welche Vorteile bringen die Komponenten?
- Encapsulation
- Reuse
- Efficiency
- Engineering Approach
- Abhaengigkeit zeigt nach aussen. Was kann man dagegen machen?
- Dependency Inversion, Dependency Injection
- Beispiel von Dependency Inversion geben
- Ziel: untere Schichten sollen nichts ueber oberen Schichten kennen, keine Abhaengigktein von unten nach oben. UI muss Modell kennen, aber Modell darf nicht ueber UI wissen.
- Observer Pattent
- Lower layers triggern Update von upper Layers
- Aenderungen in Modell → Triggern die Abfragen von View → View fragt das neue Zustand von Modell nach
- Wann ist ein Interface gut und schlecht?
- Gute Interfaces: Usability, Documentation, Standards, Konsistenz
- Schlechte Interfaces: schlechte/nicht-standarte Error Handling, schwammige Beschreibung, schlecte Usability, Inflexibility
- Welches Design Pattern versursacht wenn unterschiedliche Methoden aus unterschiedlichen Kontexten im Interface sind?:
Komponenten vs Objekte
- Was ist der Unterschied zwischen komponentenbasierter Softwareentwicklung und der objektorientieren Softwareentwicklung?
- Bei komponentenbasierter Softwareentwicklung kann man alle Komponenten als Black Boxes betrachten, und das System nur anhand den Intefaces von Komponenten bauen
- Bei objektorientieren Softwareentwicklung muss man oft die Internals von Objekten verstehen. Insbesondere wenn Vererbung in Spiel kommt.
- Black Box Prinzip erklaeren
- Man kann Komponent verwenden, ohne seine Internals zu verstehen.
- Man kann nur anhand den Signaturen die Komponenten benutzen und zusammenbauen
- Warum koennen die Klassen keinen Komponenten werden?
- Vererbung (inheritance) verletzt Black Box Prinzip von Komponenten
- Warum Vererbung verletzt Black Box Prinzip?
- class B extends A und macht Override von einer Methode.
- Dann muss man auch die Internals von A verstehen, um die Funktion von B zu sinnvol zu benutzen.
- Sonst kann es passieren, dass diese Methode wurde in Standard-Methoden von A benutzt, oder Zustand aendert usw.
- Waere das noch ein Problem, wenn die Unterklasse keine Methoden der Oberklasse ueberschreiben koennte?
- Problem waere in Prinzip nicht merh da