En este artículo hablaré sobre programación orientada a objetos (POO) específicamente del término Encapsulamiento (Encapsulation).
En el artículo anterior hablé un poco sobre conceptos básicos que también están relacionados con la programación orientada objetos y que nos servirán al lo largo de estos artículos cuyo tema principal es la “Estructura de Datos”.
Quiero comparar este término con un cápsula o píldora, a lo largo del artículo irás comprendiendo porqué.

Programación Orientada a Objetos (POO)
La POO se desarrolla alrededor del concepto de un objeto. Un objeto es un elemento que puede ser del mundo real o no, tiene atributos o características y tiene funciones.
Un buen ejemplo de objeto es un carro. Un carro tiene atributos como color, modelo, año, etc. Y también tiene funciones (acciones) como encender, parar, acelerar, etc.
Un objeto es una instancia de una clase o una entidad creada a partir de la declaración de un clase. En una clase se definen los atributos y funciones de un objeto. Las funciones de una clase son llamadas métodos.
Encapsulamiento
Entonces el encapsulamiento engloba todo lo que se refiere a una clase con sus atributos o variables, campos y funciones o métodos definidos.

Los objetos hacen que la conexión entre los datos y métodos tenga claridad y sentido.
Modificadores de acceso
Los modificadores de acceso o access modifiers son características de acceso que se asignan a las variables o métodos para definir cómo pueden ser usadas dentro y/o fuera de un programa.
public
– puede ser usado por cualquier objeto protected
– solo accesible desde la clase y clases que heredan (veremos el concepto de herencia en el próximo artículo)private
– solo accesible desde la clase
💡 La encapsulación garantiza la integridad de los datos porque nos permite definir cómo los atributos pueden ser accedidos o modificados.
Como indicaba al prinipio del artículo el encapsulamiento se asemeja a una cápsula, este objeto guarda dentro pequeñas porciones de otros componentes que están protegidos por una capa soluble que evita que su contenido se salga de sus sitio.
Ejemplo 1: Clase
En este trozo de código hemos creado una clase con 2 atributos: marca y color, estos atributos están definidos como públicos. también hay 2 métodos uno para asignar el valor de la marca y otro para obtener el valor de la marca.
<?php /* Ejemplo de una clase */ class Carro { // Atributos - Variables public $marca; public $color; // Metodos - Funciones function set_marca($marca) { $this->marca = $marca; } function get_marca() { $this->marca; } } ?>
Ejemplo 2: Objeto
Este ejemplo es continuación del anterior, aquí creamos dos objetos que tendran acceso a los atributos y métodos de clase que definimos antes.
<?php /* Declaracion de un objeto - instanciar una clase */ $audi = new Carro(); $bmw = new Carro(); $audi->set_marca("Audi"); $bmw->set_marca("BMW"); echo $audi->get_marca(); echo "<br>"; echo $bmw->get_marca(); /** * Resultado: * Audi * BMW */