Klonování (programování) - Cloning (programming) - Wikipedia
tento článek potřebuje další citace pro ověření.Srpna 2015) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
v počítačová věda, klonování odkazuje na pořízení přesné kopie souboru objekt, často pod paradigma z instanční programování nebo objektově orientované programování (OOP).
Mělké kopie
Ve většině programovacích jazyků (výjimky zahrnují: Rubín ), primitivní typy jako dvojnásobek
, plovák
, int
, dlouho
, atd., jednoduše ukládají své hodnoty někde do paměti počítače (často zásobník volání ). Pomocí jednoduchého přiřazení můžete zkopírovat obsah proměnné do jiného:
Kopírování primitivních typů v Javě nebo C ++:
int originál = 42;int kopírovat = 0;kopírovat = originál;
Mnoho programovacích jazyků OOP (včetně Jáva, D, ECMAScript, a C# ) využívat odkazy na objekty. Odkazy na objekty, které jsou podobné ukazatelům v jiných jazycích, umožňují obcházet objekty adresa takže není nutné kopírovat celý objekt.
Příklad Java, když „kopírujete“ objekt pomocí jednoduchého přiřazení:
Objekt originál = Nový Objekt();Objekt kopírovat = nula;kopírovat = originál; // nekopíruje objekt, ale pouze jeho referenci
Objekt není duplikován, proměnné „originál“ a „kopie“ ve skutečnosti odkazují na stejný objekt. V C ++ ekvivalentní kód
Objekt* originál = Nový Objekt();Objekt* kopírovat = NULA;kopírovat = originál;
objasňuje, že jde o ukazatel na kopírovaný objekt, nikoli na samotný objekt.
Klonování
Proces skutečného vytvoření jiné přesné repliky objektu namísto pouze jeho reference se nazývá klonování. Ve většině jazyků může jazyk nebo knihovny usnadnit nějaký druh klonování. V Javě je Objekt
třída obsahuje klon ()
metoda, který zkopíruje objekt a vrátí odkaz na tento zkopírovaný objekt. Protože je v Objekt
třídy, všechny třídy definované v Javě budou mít programátor k dispozici metodu klonování (i když pro správné fungování je třeba ji přepsat na každé použité úrovni).
Klonování objektu v Javě:
Objekt originalObj = Nový Objekt();Objekt copyObj = nula;copyObj = originalObj.klon(); // duplikuje objekt a přiřadí nový odkaz 'copyObj'
Objekty C ++ se obecně chovají jako primitivní typy, takže ke kopírování objektu C ++ lze použít '=
„operátor (přiřazení). Pro všechny třídy je k dispozici výchozí operátor přiřazení, ale jeho účinek může být změněn použitím přetížení operátora. Při použití této techniky existuje nebezpečí (viz krájení ). Metoda, jak se vyhnout krájení, může být implementace podobného řešení pro Javu klon ()
metoda pro třídy a používání ukazatelů. (Všimněte si, že tam není žádný vestavěný klon ()
metoda)
Příklad klonování objektů v C ++:
Objekt originalObj;Objekt copyObj(originalObj); // vytvoří kopii originalObj s názvem copyObj
Příklad klonování objektů v C ++ pomocí ukazatelů (aby se zabránilo krájení viz.) [1]):
Objekt* originalObj = Nový Objekt;Objekt* copyObj = nullptr;copyObj = Nový Objekt(*originalObj); // vytvoří kopii originalObj a přiřadí její adresu copyObj
Reference
- ^ Viz Otázky a odpovědi na en.allexperts.com Archivováno 2009-07-18 na Wayback Machine