„Egységbe zárás” változatai közötti eltérés

[nem ellenőrzött változat][nem ellenőrzött változat]
Tartalom törölve Tartalom hozzáadva
aNincs szerkesztési összefoglaló
Hibák javítása; hivatalosan a C és a ++ v. a # egybeíratik. Nem 2 pont, csak 1.
1. sor:
Az [[objektumorientált programozás]]ban (OOP) aaz '''egységbe zárás''' az adattagok összevonására utal, a rajtuk műveleteket végrehajtó metódusokkal, az objektum egyes összetevőihez való közvetlen hozzáférés korlátozásának érdekében.<ref name="Rogers01">{{Cite web |author=Rogers |first=Wm. Paul |date=2001-05-18 |url=https://www.infoworld.com/article/2075271/encapsulation-is-not-information-hiding.html |title=Encapsulation is not information hiding |work=[[JavaWorld]] |accessdate=2020-07-20}}</ref> Az egységbe zárást egy strukturált adatobjektum értékeinek vagy állapotának elrejtésére használják egy osztályon belül, megakadályozva a kliensek közvetlen hozzájuk férését.
 
Nyilvánosan elérhető eljárásokat általában az osztályban biztosítanak az állapot absztrakt eléréséhez vagy módosításához. A gyakorlatban legtöbbször az úgynevezett getter és setter metódusokat biztosítanak az értékek közvetett eléréséhez, bár ez nem sérti meg az egységbe zárást, gyakran mégis potenciálisan gyenge [[Objektumorientált programozás|objektumorientált programozási]] (OOP) tervezési gyakorlatnak tekintik.<ref>{{Cite web |url=https://web.archive.org/web/20200729073721/https://www.infoworld.com/article/2073723/why-getter-and-setter-methods-are-evil.html |title=Why Getter and Setter methods are evil |author=Holub |first=Allen |publisher=JavaWorld |date=September 5, 2003 |work=Info World |accessdate=January 17, 2021}}</ref> ([[antiminta]]).
23. sor:
A definíció szerint, hogy az egységbe zárás "felhasználható az adattagok és metódusok elrejtésére", azaz az [[objektum]] belső állapota általában az objektumon kívül rejtve van. Általában csak az objektum saját eljárásai képesek közvetlenül vizsgálni vagy felülírni a mezőket. Az objektum belső felépítésének elrejtése megvédi annak integritását, megakadályozva a felhasználókat abban, hogy érvénytelen vagy inkonzistens állapotba állítsák az elem belső értékeit. Az egységbe zárás feltételezett előnye, hogy csökkentheti a rendszer komplexitását, és ezáltal növeli a robusztusságot, lehetővé téve a fejlesztő számára, hogy korlátozza a szoftverkomponensek közötti kölcsönös függőségeket. 
 
Egyes nyelvek, mint a Smalltalk és a [[Ruby (programozási nyelv)|Ruby]] csak az objektum eljárásain keresztül engedik meg a hozzáférést, de a legtöbb más (pl. [[C++|C ++]], [[C Sharp|C #]], [[Delphi (fejlesztőkörnyezet)|Delphi]] vagy [[Java (programozási nyelv)|Java]]) a programozónak bizonyos mértékű ellenőrzést kínál a rejtett elemek felett, általában olyan kulcsszavak segítségével, mint a <code>public</code> és a <code>private</code>.<ref name="Pierce">{{Hivatkozás/Könyv |last=Pierce |first=Benjamin |authorlink=Benjamin C. Pierce |title=Types and Programming Languages |year=2002 |publisher=MIT Press |isbn=978-0-262-16209-8 |page=266}}</ref> Az ISO C ++ szabvány a <code>protected</code>, a <code>private</code> és a <code>public</code> jelzőt "„hozzáférési hozzáférési specifikációnak "specifikációnak” nevezi, és nem "rejt el semmilyen információt". Az információk elrejtése a fejlécfájlon keresztül összekapcsolt forráskód összeállított változatának elkészítésével valósul meg.
 
Szinte mindig van mód az ilyen védelem felülírására&#x2013; általában a reflexión keresztül (Ruby, Java, C # stb.). Néha olyan mechanizmusokkal, mint a név meghívása ([[Python (programozási nyelv)|Python]]), vagy speciális kulcsszóhasználattal, mint a <code>friend</code> a C++ -ban.
 
=== Példák ===
 
==== Adatmezők hozzáférésének korlátozása ====
Az olyan nyelvek, mint a [[C++|C ++]], [[C Sharp|C #]], [[Java (programozási nyelv)|Java]], [[PHP]], [[Swift (programozási nyelv)|Swift]] és [[Delphi (fejlesztőkörnyezet)|Delphi, lehetőséget]] kínálnak az adatmezőkhöz való hozzáférés korlátozására.
 
Az alábbiakban bemutatunk egy példát [[C Sharp|C #]] -ban, amely bemutatja, hogyan lehet korlátozni az adatmezőhöz való hozzáférést egy <code>private</code> kulcsszó használatával:<syntaxhighlight lang="csharp">
class Program
{
69. sor:
}
}
</syntaxhighlight>Az egységbe zárás nem objektum-orientált nyelveken is lehetséges.. [[C (programozási nyelv)|C-]] ben például egy struktúra deklarálható a nyilvános API-ban a fejlécfájlon keresztül, azon függvények számára, amelyek olyan mezőket működtetnek, amelynek adattagjai nem elérhetőek az API kliensei számára, az <code>extern</code> kulcsszóval.<ref>{{Hivatkozás/Könyv |last=King |first=K. N. |title=C Programming: A Modern Approach |url=https://www.stormingrobots.com/prod/tutorial/pdf/kingBook-ch1to10.pdf |accessdate=1 November 2019 |edition=2nd |date=2008 |publisher=W. W. Norton & Company |isbn=978-0393979503 |page=464}}</ref> <ref>King, Kim N. ''C programming: a modern approach''. WW Norton & Company, 2008. Ch. 18, p. 464, {{ISBN|0393979504}}</ref><syntaxhighlight lang="c">
// Header file "api.h"