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
Télécharger la présentation

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 verfgbare 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 Gehrt zur Klasse der objektorientierten Sprachen Programm als System miteinander interagierender Klassen Untersttzung 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 Fnf Basistypen: INTEGER, REAL, DOUBLE, CHARACTER, BOOLEAN Alle anderen Datentypen mssen 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 Mglichkeiten der Feature-bernahme Unvernderte bernahme von geerbten Features Umbenennen von geerbten Features (rename) Redefinition von geerbten Features (redefine) Effecting von geerbten Features Zusammenfgen von geerbten Features (join) undefine von geerbten Features

    13. 13 Umbenennen von Features Feature erhlt einen neuen Namen, unter dem es auch weitervererbt werden kann Alter Name des Features kann anderweitig vergeben werden Keine nderung der Funktionalitt

    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 Rckgabewert mssen 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 mssen dabei identische Namen und Signaturen haben Zusammenfassen von Features mit unterschiedlichen Signaturen nicht mglich

    19. 19 undefine Zurckversetzen 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 whrend gesamter Laufzeit fest Dynamischer Typ kann sich whrend Laufzeit ndern

    22. 22 Polymorphismus Statischer und dynamischer Typ mssen nicht bereinstimmen Variable kann whrend 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 Hufig sollen Features nicht fr beliebige andere Objekte sichtbar sein Features knnen selektiv nur fr 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 nachtrglich gendert 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 Fr gesamtes Objekt gltig (nicht fr einzelne Routinen) Muss zu jedem Zeitpunkt erfllt sein, zu dem von auerhalb auf das Objekt zugegriffen werden kann Gut geeignet fr allgemeine Konsistenzbedingungen

    35. 35 Schleifeninvariante Stellt korrekten Ablauf von Schleifen sicher Muss nach Schleifeninitialisierung sowie vor jedem Durchlauf erfllt sein Nichterfllen fhrt zu Abbruch der Schleife und Werfen einer Exception

    36. 36 Schleifenvariante Stellt sicher, dass keine Endlosschleifen auftreten INTEGER-Ausdruck, der zu Beginn der Abarbeitung grer 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 fhrt Exception zu Abbruch der betreffenden Routine hnlich wie bei Java

    39. 39 Fehlerbehandlung mittels sog. rescue-Block Frei implementierbares Codestck einer Routine Wird nur ausgefhrt, 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 dafr gesorgt werden, dass Vorbedingungen und Invarianten erfllt 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 Mchtige 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 fr Eure Aufmerksamkeit

More Related