Prüfungsvorbereitung FIAW
IT Bildungshaus
https://slides.com/neusta/oop-uml/
There are no variables in Haskell! Variables may be reassigned. What you have in functions or let-bindings is nothing but an immutable function argument, a value that is bound to a name!
Oder genauer: In funktionalen Programmiersprachen sind Variablen Namen für feste Werte. Währenddessen sind in imperativen Programmiersprachen Variablen Speicherstellen im Heap oder Stack, die (meist) änderbar sind.
Kapselung:
Klassen fassen Attribute und Operationen zusammen.
Objekte aus Klassen:
Klassen (Class) trennen die generelle Beschreibung der Struktur und des Verhaltens von den tatsächlich instanziierten Objekten (Exemplar, Object, Instance).
Objekt-Identität:
Auch von der gleichen Klasse instanziierte und die gleichen Attributwerte enthaltenden Objekte sind unterscheidbare individuelle Objekte.
Kohärenz (Single Responsibility Principle):
Jede Klasse sollte möglichst nur genau einen sachlogischen Aspekt widerspiegeln und dafür verantwortlich sein.
Vererbung, Spezialisierung:
Klassen können hierarchisch strukturiert werden und Eigenschaften an Unterklassen vererben (Inheritance). Entsprechend einer Spezialisierung erben Unterklassen alle Eigenschaften der Oberklasse und fügen weitere Eigenschaften hinzu. Unterklassen können die geerbten Eigenschaften der Oberklasse überschreiben und erweitern, jedoch nicht eliminieren oder unterdrücken.
Substitution (Liskov'sche Substitution Principle):
Objekte von Unterklassen können jederzeit anstelle von Objekten ihrer Oberklasse eingesetzt werden.
Statische Polymorphie, Überladen:
Es können mehrere gleichnamige Operationen (Methoden) innerhalb einer Klasse definiert werden, wenn sich deren Signatur unterscheidet, also wenn die verwendeten Methodenparameter von unterschiedlichen Typen sind.
Dynamische Polymorphie, Überschreiben (VMT):
Wird eine Methode in mehreren von der gleichen Vorfahrenklasse abgeleiteten Klassen überschrieben und unterschiedlich implementiert und auf diese Methoden über eine Variable vom Typ der Vorfahrenklasse zugegriffen, nennt man das dynamische Polymorphie.
Persistenz, Transienz:
Persistente Objekte sind serialisierbar und werden langfristig gespeichert (z.B. im Dateisystem oder in einer Datenbank).
Transiente Objekte werden nur vorübergehend benötigt und nicht gespeichert und gehen bei Programmende verloren.
Stereotyp:
Stereotypen erweitern vorhandene Modellelemente zu neuen Modellelementen des UML-Metamodells. Sie definieren oft Verwendungszusammenhänge.
+ public - private # protected
Assoziation
Die Objekte haben eine Verbindung miteinander. Ein Objekt benutzt das andere um seine Aufgabe zu verrichten.
Beispiel: Ein Warenkorb nutzt den Calculation-Service um sich zu berechnen.
Aggregation
Es gibt eine Ganzes-/Teilbeziehung in der beide Teile auch nach der "Trennung" noch unabhängig voneinander leben können.
Beispiel: Ehe. Nach der Scheidung werden beide noch weiterleben.
Komposition
Es gibt eine Ganzes-/Teilbeziehung in der beide Teile auch nach der "Trennung" nicht unabhängig voneinander leben können.
Beispiel: Person - Adresse.