Inhaltsverzeichnis
Paradigma
Definition
Denkmuster, das das wissenschaftliche Weltbild, die Weltsicht einer Zeit prägt.
Ein Softwareentwicklungsparadigma bestimmt wie etwas modelliert werden kann. Es wirkt lenkend oder einschränkend.
Nicht jedes Paradigma ist für das Verständnis und die Modellierung eines Problems gleichermaßen geeignet
Spezielle Paradigmen
Imperatives Paradigma
- Orientiert sich an der Verarbeitung durch die zu Grunde liegende Rechnerhardware
- Imperativ: Programm beschreibt Berechnungen der gewünschten Lösung
- Programmbefehle lesen Werte aus Variablen aus, führen Berechnungen durch und weisen Variablen Ergebnisse zu
- Sequenzielle Abarbeitung
- Verzweigungs- und Wiederholungskonstrukte
- Operationen sind ohne Zustand → Ergebnis nur von Parametern abhängig
- Typische Sprachen: Basic, Pascal, C
Paradigma der Datenabstraktion
- Verkapselung von Zugriffsoperationen & Daten → Zugriff nur über Zugriffsoperation
- Ein Datenobjektmodul beschreibt ein abstraktes Datenobjekt und legt genau ein Exemplar an
- Sprachen: Modula-2, Ada
- Bei ADTs sind Typdefinition & Variablenvereinbarung getrennt
- zu einem ADT können mehrere Exemplare existieren
- ≡ Klassen der Objektorientierung ohne Vererbung und spätes Binden
- Abstrakte Datenobjekte & ADTs sind Spezialisierungen des Imperativen Paradigmas
generisches Paradigma
- Baut auf parametrischer Polymorphie auf
- Parametrisierung von Typen & Verhalten
- Ein generischer ADT erlaubt Vereinbarungen von Typparametern
- Generische ADTs & Funktionen werden zur Übersetzungszeit instantiiert und unterliegen der Typprüfung des Compilers
- Nicht eigenständig, kann aber mit verschiedenen anderen Paradigmen kombiniert werden
- Sekundäres/nachgeordnetes Paradigma
Objektorientiertes Paradigma
- Wurzelt im ADT-Konzept → Erweitert ADTs um Vererbung & spätes Binden
- Dominierendes und allseits akzeptiertes Paradigma der Softwareentwicklung
- Klasse entspricht weitgehend ADT mit eigenen Regeln
- Abgeleitete Klasse erbt alle Attribute & Operationen der Elternklasse
- Neue Attribute & Operationen können hinzukommen
- Aber: nichts kann wegfallen
- Operationsimplementierungen können überschrieben werden
- Der Typ geerbter Attribute kann nicht redefiniert werden
Aspektorientiertes Paradigma
- Trennung von Fachcode & Aspektcode → Prinzip der Trennung von Belangen (SoC)
- Steigerung von Verständlichkeit, Wartbarkeit und Wiederverwendbarkeit von fachlichem Code und Aspektcode
- „aspect weaver“ fügt fachlichen & Aspektcode gemäß Spezifikation zur Übersetzungs- oder Laufzeit zusammen
- Kein eigenständiges → sekundäres Paradigma
Funktionales Paradigma
- Am Konzept der mathematischen Funktionen orientiert
- Keine Variablen, keine Zuweisung, keine Wiederholungskonstrukte
- Ausführung einer Funktion ergibt stets neuen Wert, der an neuen Bezeichner gebunden werden kann → keine Seiteneffekte
- „atemporale“ Programmierung
- Eine Funktion kann erst aufgerufen werden, wenn alle ihre Eingangsparameter vorhanden sind
- Eine Funktion muss erst aufgerufen werden, wenn ihr Ergebnis benötigt wird
- Vorteile bezüglich Optimierung und Korrektheitsbeweisen
Logisches oder Deklaratives Paradigma
- Repräsentation & Verarbeitung von Wissen getrennt
- Wichtigste Repräsentationsform für Wissen sind Regeln
- Bestehen aus Bedingungen & Aktionen
- Aktionen werden durchgeführt, wenn Bedingungen erfüllt sind
- Aufbereitung in Entscheidungstabellen / -bäumen
- Regeln leiten neues Wissen her → Speicherung in Datenbasis → zusammen mit A-priori-Fakten
- Wissensgewinnung erfolgt mittels Vorwärtsverkettung (Wenn Bedingung erfüllt tritt Regel in kraft (feuert)) oder Rückwärtsverkettung (um Ziel zu beweisen werden Regeln überprüft)
- Typische Sprache: Prolog