promotion image of download ymail app
Promoted

¿Para que sirve la encapsulacion de una clase en c++?

No pregunto que es ni como se implementa, sino cual es su funcion en la practica.

No le encuentro sentido proteger los datos si yo soy el unico que tiene el codigo... quiza me estoy equivocando alguien sabe sobre esto?

1 respuesta

Calificación
  • Anónimo
    hace 3 meses
    Respuesta preferida

    En la práctica tú no eres el único que tiene el código, lo van a tener todos los desarrolladores de software involucrados en el proyecto. Por muy profesionales que sean todos siempre hay que asumir que va a existir un idio.ta malnacido que va a querer modificar un objeto usando las variables públicas que otro descuidado dejó expuestas.

    Quizás tú veas la encapsulación de esta manera:

    class Billetera {

       public:

          Billetera(int m = 0) {

             monedas = m;

          }

          int getMonedas() {

             return monedas;

          }

     

          void setMonedas(int m) {

             monedas = m;

          }

       private:

          int monedas;

    };

    Pero en la práctica usas la encapsulación para hacer programación defensiva:

    class Billetera {

       public:

          Billetera(int m = 0) {

             monedas = m;

          }

          int getMonedas() {

             return monedas;

          }

          void setMonedas(int m) {

             logger::info("Alguien esta modificando las monedas");

             if (m == 0) {

                 logger::warning("Alerta, alguien ha dejado cero monedas");

             }

             if (m < 0) {

                 throw Exception("Número de monedas a depositar inválido");

             }

             monedas = m;

          }

       private:

          int monedas;

    };

    Incluso si eres tú la única persona que posee el código no existe garantía que vayas a acordarte toda la vida de las variables de las que hay que tener cuidado, ni que tengas el tiempo para volver a revisar tu código de hace años, lo mejor es dejar un API seguro, bien diseñado y documentado.

¿Aún tienes preguntas? Pregunta ahora para obtener respuestas.