Enkapsulacija (programiranje)
U objektno orijentiranom programiranju, enkapsulacija ili čahurenje označava grupisanje podataka sa metodama koje radi s tim podacima, ili restrikciju direktnog pristupa nekim komponentama objekta. Enkapsulacija se koristi za skrivanje vrijednosti ili stanja struktuiranog podatkovnog objekta unutar klase, sprečavajući direktan pristup njima od strane klijenta u smislu otkrivanja detalja skrivene implementacije ili narušavanja stanja nepromjenjivosti koju održavaju druge metode. Javno dostupne metode se generalno daju u klasi za pristup ili izmjenu stanja na apstraktniji način. U praksi se ponekad zadaju tzv. getteri i setteri za pristup vrijednostima indirektno, ali, iako ne neophodno krše apstraktnu enkapsulaciju, često se smatraju putokazom potencijalno slabe dizajnerske prakse u objektno orijentiranom programiranju (antiobrazac). Ovaj mehanizam nije unikatan samo za OOP. Implementacije apstraktnih tipova podataka, npr. modula, nudi sličan oblik enkapsulacije. Sličnost je objašnjena od teoretičara programskih jezika u terminima egzistencijalnih tipova.