Klíčový rozdíl – včasná a pozdní vazba
Early Binding a Late Binding jsou dva pojmy související s polymorfismem. K Early Binding dochází v době kompilace, zatímco k Late Binding dochází za běhu. Klíčový rozdíl mezi včasným a pozdním vázáním spočívá v tom, že Early Binding používá informace o třídě k vyřešení volání metody, zatímco Late Binding používá objekt k vyřešení volání metody.
Programovací jazyky jako Java podporují objektově orientované programování (OOP). Je to paradigma, které umožňuje konstrukci programu nebo softwaru pomocí objektů. V softwaru je více objektů. Tyto objekty jsou vzájemně propojeny a předávají zprávy pomocí metod. Každý objekt má vlastnosti a chování. Charakteristiky jsou popsány vlastnostmi nebo atributy. Chování je popsáno pomocí metod. Objekt Student může mít vlastnosti jako jméno, věk a jsou reprezentovány vlastnostmi. Objekt Student může mít chování, jako je studium a čtení, a jsou reprezentovány metodami. Jedním z hlavních pilířů OOP je polymorfismus. Umožňuje objektu chovat se více způsoby. Early Binding a Late Binding jsou dva koncepty v polymorfismu. Metody přetížení jsou spojeny pomocí časné vazby. Přepsané metody jsou spojeny pomocí pozdní vazby.
Co je to Early Binding?
V Early Binding se informace o třídě používají k vyřešení volání metody. Časná vazba nastává v době kompilace. Je také známá jako statická vazba. V tomto procesu k vazbě dojde před skutečným spuštěním programu. Metody přetížení jsou spojeny pomocí časné vazby. Viz níže uvedený program.
Obrázek 01: Třída výpočtu
Obrázek 02: Hlavní program pro včasnou vazbu
Podle výše uvedeného programu obsahuje třída Calculation metodu sčítání, která přijímá dvě celočíselné hodnoty, a další metodu sčítání, která přijímá dvě hodnoty typu double. V hlavním programu se vytvoří objekt typu Výpočet. Při předávání dvou celých čísel metodě add vyvolá metodu add, která přijímá dvě celá čísla. Při předávání dvou dvojitých hodnot metodě add vyvolá metodu odpovídající dvěma hodnotám double. K tomuto procesu vazby dochází v době kompilace. Všechny požadované informace jsou známy před spuštěním, takže to zvyšuje efektivitu programu a rychlost provádění.
Co je Late Binding?
V Late Binding se objekt používá k vyřešení volání metody. Pozdní vazba nastává za běhu. Je také známá jako dynamická vazba. V tomto procesu k vazbě dochází při provádění programu. Přepsané metody jsou spojeny pomocí pozdní vazby. Viz níže uvedený program.
Obrázek 03: Třída tvaru
Obrázek 04: Kruhová třída
Obrázek 05: Třída trojúhelníku
Obrázek 06: Hlavní program pro pozdní vázání
Podle výše uvedeného programu má třída Shape metodu kreslení. Class Circle a class Triangle třída rozšiřuje třídu Shape. Tyto dvě třídy tedy mohou dědit atributy a metody třídy Shape. Třída Shape je základní třída. Třídy Circle a Triangle jsou odvozené třídy. Třída Circle a třída Triangle mají také metodu kreslení s vlastními implementacemi. Metoda kreslení ve třídě Shape je tedy přepsána metodami kreslení odvozených tříd.
V hlavním programu je vytvořena referenční proměnná s typu Shape. Při kompilaci bude kompilátor odkazovat pouze na metodu kreslení základní třídy. Za běhu se provedou různé metody kreslení. Nejprve bude s ukazovat na objekt typu Shape. Je tedy vyvolána metoda draw třídy Shape. Potom bude s ukazovat na objekt typu Circle a vyvolá metodu draw třídy Circle. Nakonec s ukáže na objekt typu Triangle a vyvolá metodu draw ve třídě Triangle. Metody jsou volány v závislosti na objektech. Objekt se proto používá k vyřešení volání metody v Late Binding. Informace potřebné pro vazbu jsou poskytovány za běhu, takže rychlost provádění je ve srovnání s předčasnou vazbou pomalejší.
Jaká je podobnost mezi časným a pozdním vázáním?
Early Binding i Late Binding souvisí s polymorfismem, který je pilířem OOP
Jaký je rozdíl mezi včasnou a pozdní vazbou?
Včasná vazba vs pozdní vazba |
|
Proces použití informací o třídě k vyřešení volání metody, ke kterému dochází v době kompilace, se nazývá Early Binding. | Proces použití objektu k vyřešení volání metody, ke kterému dochází za běhu, se nazývá Late Binding. |
Doba vázání | |
Včasné svázání probíhá v době kompilace. | Pozdní vazba probíhá za běhu. |
Funkčnost | |
Early Binding používá informace o třídě k vyřešení volání metody. | Late Binding používá objekt k vyřešení volání metody. |
Synonyma | |
Včasná vazba je také známá jako statická vazba.. | Pozdní vazba je také známá jako dynamická vazba. |
Výskyt | |
Metody přetížení jsou spojeny pomocí včasné vazby. | Přepsané metody jsou spojeny pomocí pozdní vazby. |
Rychlost provedení | |
Rychlost provádění je rychlejší při včasné vazbě. | Rychlost provádění je při pozdním vázání nižší. |
Shrnutí – Včasná vs. pozdní vazba
OOP se běžně používá pro vývoj softwaru. Jedním z hlavních pilířů OOP je polymorfismus. S tím souvisí Early Binding a Late Binding. Časná vazba nastává v době kompilace, zatímco pozdní vazba nastává za běhu. Při přetížení metody dochází ke spojování pomocí časné vazby. Při přepisování metody se spojení provádí pomocí pozdní vazby. Rozdíl mezi včasnou a pozdní vazbou je v tom, že časná vazba používá informace o třídě k vyřešení volání metody, zatímco pozdní vazba používá objekt k vyřešení volání metody.