460 likes | 705 Vues
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
E N D
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