Skip to main content

Mi a dinamikus kötés?

A számítógépes tudományban a névkötés az azonosító, például függvény vagy változó név asszociációja a kód vagy az adatok szakaszához.A leggyakoribb forgatókönyvben, a statikus kötésben ezt a leképezést a fordítási időben ismerték.A dinamikus kötés során a függvény által leképezett objektum nem ismert fordításkor, és csak a program futásideje során határozható meg.Ezért a dinamikus kötődést késői kötésnek is nevezik.Noha a dinamikus kötés rugalmasságot kínál, amely nem áll rendelkezésre statikus kötéssel, ez több teljesítményköltséget is magában foglal, mint a statikus kötés.

A dinamikus kötés szorosan kapcsolódik a polimorfizmushoz, amely az objektum-orientált programozás része.A polimorfizmus lehetővé teszi ugyanazon módszernév különböző módon történő megvalósítását.Ha a kódot nem oly módon írják meg, hogy a pontos módszert nem lehet meghatározni a fordítási időben, akkor a dinamikus kötést kell használni.Az alak kör alosztálya azonban eltérően valósítja meg a getarea -t, mint a négyzet alakú alosztály.Ezért, ha egy új objektumot hoznak létre típusú alakból, és ha a kód felhívja a getarea módszert erre az alakra, akkor a fordítónak nincs módja tudni, hogy az alak kör vagy négyzet, és ezért nem fogja tudnimely getarea módszert hívni kell.Ez egy példa a dinamikus kötésre, mivel a helyes getarea módszert csak futási időben térképezik fel, miután a program tudja, milyen formában van az objektum.

A dinamikus kötés lehetővé teszi az absztrakt módszerek használatának rugalmasságát anélkülhasználva lenni.A Shape példában a kódot meg lehet írni, hogy elkerülje a dinamikus kötést e logika kifejezett használatával: ha az alak kör, akkor hívja a körök getarea módszerét;Egyébként, ha az alak négyzet, hívja a négyzetek specifikus getarea módszerét.A dinamikus kötés előnye, hogy a kód tisztább és karbantarthatóbb, mint az alternatíva.A statikus kötési példában a kód duplikációja van, és a kódot bármikor frissíteni kell, amikor új típusú alakot adunk hozzá.

A dinamikus kötés hátrányai a teljesítmény és a biztonság.A statikus kötés során a fordító pontosan tudja, milyen kódot kell hívnia, és optimalizálhatja a kódot a hatékonyabb futtatáshoz.A típusbiztonság problémát jelenthet, mivel a dinamikus kötés bizonyos megvalósításai során egy módszert lehet felhívni egy olyan objektumra, amely nem támogatja a módszert.Például a GetArea módszert olyan objektumra hívhatják, amely nem formájú, ezért nincs GetArea módszer, amely futási idő hibát okozhat.A statikus kötés megakadályozná ezt a forgatókönyvet egy fordítási hiba emelésével