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
- Klassendiagramm
- Kompositionsstrukturdiagramm
- Komponentendiagramm
- Verteilungsdiagramm
- Objektdiagramm
- Paketdiagramm
- Profildiagramm
Sieben Verhaltensdiagramme
- Aktivitätendiagramm
- Anwendungsfalldiagramm
- Interaktionsübersichtsdiagramm
- Kommunikationsdiagramm
- Sequenzdiagramm
- Zeitverlaufsdiagramm
- 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
OOP und UML
By neusta Coaching-Team
OOP und UML
- 909