
Bei den Begriffen Polymorphismus, dynamische Typisierung und dynamisches Binden handelt es sich um Eigenschaften, die Objective-C von anderen - auch objektorientierten - Programmiersprachen abhebt und unterscheidet. Nicht erschrecken beim folgenden Absatz: die Teils komplizierten Definitionen werden nach und nach aufgeklärt.
Unter Polymorphie versteht man die Möglichkeit, dass verschiedene Objekten die gleiche Nachricht (Methode) teilen können und gleichzeitig auf diese identische Nachricht (Methode) mit verschiedenen Antworten reagieren können. Der Begriff "dynamisches Binden" beschreibt den Umgang des Compilers mit der Polymorphie. Eine Typisierung dient in Programmiersprachen dazu, dass Objekte korrekt verwendet werden. Das Hauptziel von Typisierungen ist die Vermeidung von Laufzeitfehlern, das sind Fehler die während der Programmausführung auftreten (im engl. run time error). Derartige Fehler werden vom Compiler nicht erkannt, da sie erst während der Ausführung des Programms auftreten (die Division durch Null wäre z.B. eine solcher Fehler, oder falsche Datentypen,...usw). Bei der dynamischen Typisierung wird der Datentyp einer Variable zugeteilt und auch die Reservierung des Speichers im Gegensatz zur statischen Typisierung erst zur Laufzeit festgelegt. Der Begriff Laufzeit beschreibt in der Informatik im Wesentlichen die Zeitspanne, während der ein Programm von einem Rechner ausgeführt wird. Der Datentyp kann zur Laufzeit beliebig oft verändert werden. Etwas salopp übersetzt bedeutet das für Sie, dass Sie Äpfel nicht mit Birnen verwechseln dürfen.
Das Wort Polymorphie bedeutet übersetzt soviel wie Vielgestaltigkeit ("poly" steht für viel und "morphie" für das Aussehen). Ein Begriff der übrigens auch in der Biologie z.B. bei den Genen eingesetzt wird: auch die Gene des Menschen können vielgestaltig (polymorph) sein, was zur Folge hat, dass Menschen verschieden aussehen. In objektorientierten Programmiersprachen wie Objective-C bedeutet Polymorphie, dass verschiedene Objekte auf die gleiche Methode unterschiedlich reagieren können. Stellen Sie sich z.B. wieder vor, dass sie von einer Handyklasse zwei Subklassen abgeleitet haben, von mir aus ein Videohandy und ein MP3-Handy. Beide sollen die Methode "klingeln" besitzen. Die Art und Weise wie Sie diese Methode implementieren können Sie jeweils frei entscheiden, so können Sie z.b. für jedes Handy einen eigenen Klingelton wählen. Wenn Sie nun die Methode "klingeln" z.B. an das Videohandy senden, reagiert dieses mit einem Mozart-Klingelton und wenn sie die Methode "klingeln" an das MP3-Handy senden, ertönt Hardrock als Antwort: beides Mal der selbe Methodenaufruf [klingeln], die Antwort unterscheidet sich, es ist also entscheidend an wen der Methodenaufruf gerichtet ist. Der Sinn dahinter ist, dass Ihnen eine derartige Eigenschaft wie die Polymorphie das Programmieren erleichtert und es gleichzeit übersichtlich macht. Hätten Sie die Möglichkeit der Polymorphie nicht, dann müssten Sie an das Videohandy die Nachricht [klingleMozart] und an das MP3-Handy die Nachricht [klingleHardrock] senden, letztendlich wollen Sie aber bei beiden das selbe auslösen, es soll einfach klingeln! Mag sein, dass Ihnen eine derartige Eigenschaft als selbstverständlich erscheint, sie ist es allerdings nicht, sondern ein Spezifikum von objektorientierten Programmiersprachen und im speziellen von Objective-C.
weiter ---- Objective-C Index ---- Startseite----zurück
EINSTIEG
KAPITEL 1: SCHRITT FÜR SCHRITT ZUM ERSTEN PROGRAMM
KAPITEL 2: OBJEKTE, KLASSEN, INSTANZEN UND METHODEN
KAPITEL 3: DIE VERSCHIEDENEN DATENTYPEN
KAPITEL 4: DIE PROGRAMMSCHLEIFEN
KAPITEL 5: ENTSCHEIDE DICH, ENTWEDER ODER....
KAPITEL 6: UND NOCHMALS KLASSEN
KAPITEL 7: VERERBUNG
KAPITEL 8: POLYMORPHISMUS, DYNASCHISCHE TYPISIERUNG UND DYNAMISCHES BINDEN
KAPITEL 9: NOCH MEHR DATENTYPEN UND VARIABLEN
KAPITEL 10: CATEGORIES, POSING AND PROTOCOL
KAPITEL 11: DER PRÄPROZESSOR