Was ist dynamische Schwergängigkeit?

In der Informatik ist Namensschwergängigkeit die Verbindung eines Bezeichners, wie eine Funktion oder ein variabler Name, zu einem Abschnitt des Codes oder der Daten. Im allgemeinsten Drehbuch bekannt statische Schwergängigkeit, abbildende diese an Kompilierzeit. In der dynamischen Schwergängigkeit bekannt der Gegenstand, der durch eine Funktion abgebildet, nicht an Kompilierzeit und kann nur während der Programmlaufzeit festgestellt werden. Aus diesem Grund genannt dynamische Schwergängigkeit auch späte Schwergängigkeit. Obgleich die dynamische Angebotflexibilität, die mit statischer Schwergängigkeit, es nicht vorhanden ist auch, mehr Leistungskosten als statische Schwergängigkeit zur Folge hat.

Dynamische Schwergängigkeit ist zur Polymorphie eng verwandt, die ein Teil objektorientierte Programmierung ist. Polymorphie erlaubt, dass der gleiche Methodenname in den unterschiedlichen Arten eingeführt. Wenn der Code nicht geschrieben, sodass die exakte Methode nicht an Kompilierzeit entschlossen sein kann, dann muss dynamische Schwergängigkeit benutzt werden.

Z.B. konnte eine „Form“ Kategorie eine Methode haben, die „GetArea,“ genannt, weil jede Form einen Bereich hat. Eine „Kreis“ Unterklasse „der Form,“ jedoch, einführen „GetArea“ unterschiedlich zu der Weise ea, die eine „quadratische“ Unterklasse wurde. Folglich wenn ein neuer Gegenstand von der Art „Form verursacht,“ und wenn Code die Methode „GetArea“ auf dieser Form benennt, hat der Compiler keine Weise des Wissens, ob die Form ein Kreis oder ein Quadrat oben sein beendet, und folglich weiß sie nicht, welche GetArea Methode zum zu benennen. Dieses ist ein Beispiel der dynamischen Schwergängigkeit, weil die korrekte GetArea Methode nur an der Laufzeit abgebildet, nachdem das Programm weiß, was ein bisschen Form der Gegenstand ist.

Dynamische Schwergängigkeit erlaubt die Flexibilität der Anwendung der abstrakten Methoden, ohne zu wissen, welche spezifische Implementierung verwendet. Im „Form“ Beispiel konnte der Code, um dynamische Schwergängigkeit durch ausdrücklich using diese Logik zu vermeiden geschrieben werden: Wenn die Form ein Kreis ist, dann die GetArea des Kreises benennen Methode; wenn die Form ein Quadrat ist, die spezifische GetArea Methode für Quadrate sonst benennen. Der Nutzen der dynamischen Schwergängigkeit ist, dass der Code sauberer und haltbarer als die Alternative ist. Im Beispiel der statischen Schwergängigkeit gibt es Codeverdopplung, und der Code muss modernisiert sein, immer wenn ein neuer Typ Form hinzugefügt.

Die Nachteile der dynamischen Schwergängigkeit sind Leistung und Sicherheit. In der statischen Schwergängigkeit weiß der Kompilator genau, welchem Code zu benennen und den Code optimieren kann, um leistungsfähiger zu laufen. Art Sicherheit kann eine Ausgabe sein, weil, in einigen Implementierungen der dynamischen Schwergängigkeit, einer Methode ersucht werden kann um einem Gegenstand, der nicht die Methode stützt. Z.B. konnte die „GetArea“ Methode ersucht werden um einem Gegenstand, der nicht eine Form ist und folglich keine „GetArea“ Methode hat, die einen Laufzeitfehler ergeben könnte. Statische Schwergängigkeit verhindern dieses Drehbuch, indem sie eine Zusammenstellungstörung aufwarf.