OOP und UML

Prüfungsvorbereitung FIAW 

IT Bildungshaus

https://slides.com/neusta/oop-uml/

Funktional

  • Rekursion
  • Listenoperationen
  • Nicht "wie" steht im Vordergrund sondern "was".
  • Lisp, Scala, Haskel
  • Schrittweises fortschreiten der Befehle.
  • Kontrollstrukturen
  • C, C#, Pascal, Java

Imperativ

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.

Unified Modeling Language

  • Enstanden in den 90er Jahren
  • Erfunden von den drei Amigos: Grade Booch, Ivar Jacobson und James Rumbaugh
  • Grundlegend überarbeitet in 2005 (UML 2)

Sieben Strukturdiagramme

  1. Klassendiagramm
  2. Kompositionsstrukturdiagramm
  3. Komponentendiagramm
  4. Verteilungsdiagramm
  5. Objektdiagramm
  6. Paketdiagramm
  7. Profildiagramm

Sieben Verhaltensdiagramme

  1. Aktivitätendiagramm
  2. Anwendungsfalldiagramm
  3. Interaktionsübersichtsdiagramm
  4. Kommunikationsdiagramm
  5. Sequenzdiagramm
  6. Zeitverlaufsdiagramm
  7. Zustandsdiagramm

Anwendungsfall Diagramm

Klassendiagramm

 

+ public
- private
# protected

 

Assoziation

Aggregation

Komposition

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.

Sequence Diagram

 

Alternativen

Aktivitätendiagramm

Zustandsdiagramm

ENDE