Zapouzdření pole - Field encapsulation
![]() | tento článek ne uvést žádný Zdroje.Prosince 2009) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
v programování, zapouzdření pole zahrnuje poskytování metody které lze použít ke čtení nebo zápisu do pole místo přímého přístupu do pole. Někdy tyto přístupové metody jsou nazývány getX a setX (kde X je název pole), které se také nazývají mutační metody. Obvykle mají přístupové metody veřejnou viditelnost, zatímco je zadáváno pole, které je zapouzdřeno soukromé viditelnost - to umožňuje programátorovi omezit, jaké akce může provádět jiný uživatel kódu. Porovnejte následující Jáva třída ve kterém název pole má ne byly zapouzdřeny:
veřejnost třída NormalFieldClass { veřejnost Tětiva název; veřejnost statický prázdnota hlavní(Tětiva[] args) { NormalFieldClass příklad1 = Nový NormalFieldClass(); příklad1.název = "moje jméno"; Systém.ven.tisk("Jmenuji se " + příklad1.název); }}
se stejným příkladem pomocí zapouzdření:
veřejnost třída EncapsulatedFieldClass { soukromé Tětiva název; veřejnost Tětiva getName() { vrátit se název; } veřejnost prázdnota setName(Tětiva nové jméno) { název = nové jméno; } veřejnost statický prázdnota hlavní(Tětiva[] args) { EncapsulatedFieldClass příklad1 = Nový EncapsulatedFieldClass(); příklad1.setName("moje jméno"); Systém.ven.tisk("Jmenuji se " + příklad1.getName()); }}
V prvním příkladu může uživatel volně používat veřejnost název proměnná však uznají za vhodné - ve druhé si však spisovatel třídy ponechává kontrolu nad tím, jak soukromá název proměnná se čte a zapisuje pouze povolením přístupu do pole prostřednictvím jeho proměnné getName a setName metody.
Výhody
- Formát interního úložiště dat je skrytý; v příkladu by očekávání použití omezených znakových sad mohlo umožnit kompresi dat pomocí překódování (např. osmibitových znaků do šestibitového kódu). Pokus o kódování znaků mimo rozsah očekávaných dat by pak mohl být zpracován vržením chyby do souboru soubor rutina.
- Obecně platí, že dostat a soubor metody mohou být vyráběny ve dvou verzích - efektivní metoda, která předpokládá, že volající dodává vhodná data a že data byla správně uložena, a ladění verze, která, i když je pomalejší, provádí kontroly platnosti přijatých a doručených dat. Taková detekce je užitečná, když jsou nově vytvořeny nebo upraveny rutiny (volání nebo volání) nebo interní formáty úložiště.
- Umístění uložených dat v rámci větších struktur může být skryto, což umožňuje provádět v tomto úložišti změny, aniž by bylo nutné měnit kód odkazující na data. To také snižuje pravděpodobnost neočekávaného vedlejší efekty z těchto změn. To je zvláště výhodné, když jsou přístupové systémy součástí operační systém (OS), případ, kdy volající (aplikační) kód nemusí být vývojářům OS k dispozici.
Nevýhody
Přístup k podprogramu zahrnuje další režijní náklady, které nejsou k dispozici při přímém přístupu k datům. I když to vzhledem k široké dostupnosti rychlých procesorů pro všeobecné účely začíná být méně znepokojující, při kódování některých může zůstat důležité výpočet v reálném čase systémy a systémy využívající relativně pomalé a jednoduché vestavěné procesory. V některých jazycích, jako je C ++, jsou obvykle metody getter / setter vložené funkce, takže při provádění vložení vypadá kód stejně jako přímý přístup k poli.