1 / 46

Eiffel

2. Gliederung. Entstehungsgeschichte von EiffelAllgemeines zu EiffelBesondere Aspekte von EiffelEinfach- und MehrfachvererbungDynamisches Binden und PolymorphismusSelektiver Export von FeaturesProgramming by ContractFehlerbehandlung und ExceptionsFazit. 3. Gliederung. Entstehungsgeschichte v

moira
Download Presentation

Eiffel

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


    1. Eiffel Ein Vortrag im Rahmen des Seminars “Programmiersprachen”

    2. 2 Gliederung Entstehungsgeschichte von Eiffel Allgemeines zu Eiffel Besondere Aspekte von Eiffel Einfach- und Mehrfachvererbung Dynamisches Binden und Polymorphismus Selektiver Export von Features Programming by Contract Fehlerbehandlung und Exceptions Fazit

    3. 3 Gliederung Entstehungsgeschichte von Eiffel Allgemeines zu Eiffel Besondere Aspekte von Eiffel Einfach- und Mehrfachvererbung Dynamisches Binden und Polymorphismus Selektiver Export von Features Programming by Contract Fehlerbehandlung und Exceptions Fazit

    4. 4 Entstehungsgeschichte Entwickelt 1985 durch Bertrand Meyer und Jean Marc Nerson Namensgeber ist Gustave Eiffel, der Konstrukteur des Eiffelturms Streng objektorientierte Programmiersprache nach Vorbild von Simula Seit 1987 kommerzielle Vermarktung Heute zahlreiche frei verfügbare Eiffel-Compiler im Internet

    5. 5 Gliederung Entstehungsgeschichte von Eiffel Allgemeines zu Eiffel Besondere Aspekte von Eiffel Einfach- und Mehrfachvererbung Dynamisches Binden und Polymorphismus Selektiver Export von Features Programming by Contract Fehlerbehandlung und Exceptions Fazit

    6. 6 Allgemeines Compiler-Sprache Gehört zur Klasse der objektorientierten Sprachen Programm als System miteinander interagierender Klassen Unterstützung von (Mehrfach-) Vererbung Dynamisches Binden Polymorphismus Datenabstraktion / Abstrakte Klassen Compiler-Sprache --> Umwandlung Eiffel-Code in C-Code merkt man bei einigen Compilern nicht mehrCompiler-Sprache --> Umwandlung Eiffel-Code in C-Code merkt man bei einigen Compilern nicht mehr

    7. 7 Allgemeines Fünf Basistypen: INTEGER, REAL, DOUBLE, CHARACTER, BOOLEAN Alle anderen Datentypen müssen als Klassen realisiert werden Automatische Speicherverwaltung Automatische Zuweisung von Speicherbereichen an neu erstellte Objekte Automatische Bereinigung des Speichers mittels Garbage Collector

    8. 8 Klassen Klasse besteht aus sog. Features (Methoden/Funktionen, Variablen und Konstanten) Alle Variablen sind Teil eines Objekts, keine globalen Variablen Auch Hauptprogramm in Form einer Klasse

    9. 9 Gliederung Entstehungsgeschichte von Eiffel Allgemeines zu Eiffel Besondere Aspekte von Eiffel Einfach- und Mehrfachvererbung Dynamisches Binden und Polymorphismus Selektiver Export von Features Programming by Contract Fehlerbehandlung und Exceptions Fazit

    10. 10 Vererbung Kindklasse erbt die Features von Vaterklasse Immer Vererbung aller Features, kein selektives Erben nur einzelner Features Kindklasse ist konform zur Vaterklasse

    11. 11 Mehrfachvererbung Eine Klasse kann in Eiffel beliebig viele Vaterklassen haben Vererbungsgraph hat keine klassische Baumstruktur mehr

    12. 12 Möglichkeiten der Feature-Übernahme Unveränderte Übernahme von geerbten Features Umbenennen von geerbten Features (rename) Redefinition von geerbten Features (redefine) Effecting von geerbten Features Zusammenfügen von geerbten Features (join) undefine von geerbten Features

    13. 13 Umbenennen von Features Feature erhält einen neuen Namen, unter dem es auch weitervererbt werden kann Alter Name des Features kann anderweitig vergeben werden Keine Änderung der Funktionalität

    14. 14 Beispiel rename

    15. 15 Redefinition von Features Änderung von Implementierung Signatur Zusicherungen eines Features Neue Signatur muss konform zur alten sein, d.h. Anzahl Parameter darf sich nicht ändern Neue Typen von Parametern und Rückgabewert müssen konform zu bisherigen Typen sein

    16. 16 Beispiel Redefinition

    17. 17 Effecting Implementieren eines sog. deferred Features Feature wird dadurch zu effektivem Feature Arbeitet nach denselben Regeln wie Redefinition Wird zusammen mit Redefinition unter dem Oberbegriff Redeklaration zusammengefasst

    18. 18 Join Automatisches Zusammenfassen von mehreren geerbten deferred Features zu einem einzigen Feature Features müssen dabei identische Namen und Signaturen haben Zusammenfassen von Features mit unterschiedlichen Signaturen nicht möglich

    19. 19 undefine Zurückversetzen eines effektiven Features in den deffered Zustand Dabei keine Änderung der Signatur des Features

    20. 20 Gliederung Entstehungsgeschichte von Eiffel Allgemeines zu Eiffel Besondere Aspekte von Eiffel Einfach- und Mehrfachvererbung Dynamisches Binden und Polymorphismus Selektiver Export von Features Programming by Contract Fehlerbehandlung und Exceptions Fazit

    21. 21 Statischer und dynamischer Typ Variable besteht Typ, Name und Wert Ist Typ eine Klasse, so besteht Wert aus einem Verweis auf ein Objekt Typ untergliedert sich dann in statischen und dynamischen Typ statischer Typ ist derjenige Typ, der bei Variablendeklarion festgelegt wurde dynamischer Typ ist der Typ desjenigen Objekts, auf das die Variable derzeit referenziert Statischer Typ ist während gesamter Laufzeit fest Dynamischer Typ kann sich während Laufzeit ändern

    22. 22 Polymorphismus Statischer und dynamischer Typ müssen nicht übereinstimmen Variable kann während Laufzeit Objekte unterschiedlicher Typen annehmen Dynamischer Typ muss aber stets konform zu statischem Typ sein

    23. 23 Beispiele Polymorphismus

    24. 24 Dynamisches Binden

    25. 25 Gliederung Entstehungsgeschichte von Eiffel Allgemeines zu Eiffel Besondere Aspekte von Eiffel Einfach- und Mehrfachvererbung Dynamisches Binden und Polymorphismus Selektiver Export von Features Programming by Contract Fehlerbehandlung und Exceptions Fazit

    26. 26 Selektiver Export von Features Häufig sollen Features nicht für beliebige andere Objekte sichtbar sein Features können selektiv nur für Objekte bestimmter Klasse sichtbar gemacht werden Dazu Anpassung des Exportstatus Exportstatus eines Features kann bei dessen Deklaration mittels sog. Exportliste festgelegt werden

    27. 27 Beispiele Exportliste

    28. 28 Änderung des Exportstatus Exportstatus wird an Unterklassen weitervererbt Exportstatus geerbter Features kann in der Unterklasse nachträglich geändert werden

    29. 29 Gliederung Entstehungsgeschichte von Eiffel Allgemeines zu Eiffel Besondere Aspekte von Eiffel Einfach- und Mehrfachvererbung Dynamisches Binden und Polymorphismus Selektiver Export von Features Programming by Contract Fehlerbehandlung und Exceptions Fazit

    30. 30 Programming by Contract Dient der Korrektheit und Robustheit des erstellten Programms Kommunikation zwischen Objekten beruht auf sog. Zusicherungen

    31. 31 Typen von Zusicherungen Vorbedingungen Nachbedingungen Klasseninvarianten Schleifenvarianten Schleifeninvarianten

    32. 32 Vor- und Nachbedingungen

    33. 33 Beispiel Vor- und Nachbedingungen

    34. 34 Klasseninvariante Für gesamtes Objekt gültig (nicht für einzelne Routinen) Muss zu jedem Zeitpunkt erfüllt sein, zu dem von außerhalb auf das Objekt zugegriffen werden kann Gut geeignet für allgemeine Konsistenzbedingungen

    35. 35 Schleifeninvariante Stellt korrekten Ablauf von Schleifen sicher Muss nach Schleifeninitialisierung sowie vor jedem Durchlauf erfüllt sein Nichterfüllen führt zu Abbruch der Schleife und Werfen einer Exception

    36. 36 Schleifenvariante Stellt sicher, dass keine Endlosschleifen auftreten INTEGER-Ausdruck, der zu Beginn der Abarbeitung größer Null sein muss Muss bei jedem Schleifendurchlauf dekrementiert werden Hat Schleifenvariante Null erreicht, so bricht die Schleife ab

    37. 37 Gliederung Entstehungsgeschichte von Eiffel Allgemeines zu Eiffel Besondere Aspekte von Eiffel Einfach- und Mehrfachvererbung Dynamisches Binden und Polymorphismus Selektiver Export von Features Programming by Contract Fehlerbehandlung und Exceptions Fazit

    38. 38 Fehlerbehandlung und Exceptions Bei Auftreten eines Fehlers wird sog. Exception geworfen Ohne spezielle Fehlerbehandlung führt Exception zu Abbruch der betreffenden Routine Ähnlich wie bei Java

    39. 39 Fehlerbehandlung mittels sog. rescue-Block Frei implementierbares Codestück einer Routine Wird nur ausgeführt, wenn in betreffender Routine ein Fehler aufgetreten ist Geeignet z. B. zum erneuten Initialisieren von Variablen oder Sicherstellen von Invarianten Fehlerbehandlung

    40. 40 Organisierte Panik

    41. 41 retry-Anweisung Darf nur innerhalb eines rescue-Blocks stehen Bewirkt einen Neustart der gescheiterten Routine Allerdings keine automatische Neu-Initialisierung der Variablen Vor retry sollte in rescue-Block dafür gesorgt werden, dass Vorbedingungen und Invarianten erfüllt sind

    42. 42 retry-Anweisung

    43. 43 retry-Anweisung

    44. 44 Beispiel retry-Anweisung

    45. 45 Gliederung Entstehungsgeschichte von Eiffel Allgemeines zu Eiffel Besondere Aspekte von Eiffel Einfach- und Mehrfachvererbung Dynamisches Binden und Polymorphismus Selektiver Export von Features Programming by Contract Fehlerbehandlung und Exceptions Fazit

    46. 46 Fazit Mächtige Sprache Dennoch schlanke, leicht erlernbare Syntax Schwerpunkt liegt auf Korrektheit und Robustheit des erstellten Codes Gute Wiederverwendbarkeit und Erweiterbarkeit von bestehendem Code sehr strenge Objektorientierung sehr komplexe Vererbungsbeziehungen durch Mehrfachvererbung

    47. Vielen Dank für Eure Aufmerksamkeit

More Related