SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: eze_ps en Lunes 22 de Noviembre de 2010, 23:57

Título: polimorfismo y encapsulamiento
Publicado por: eze_ps en Lunes 22 de Noviembre de 2010, 23:57
que son?? para que sirven, tienen un ejemplo donde se remarque su uso??
Título: Re: polimorfismo y encapsulamiento
Publicado por: m0skit0 en Martes 23 de Noviembre de 2010, 02:08
Polimorfismo: un mecanismo de herencia en POO, tal que

Código: C++
  1. class Coche {};
  2. class Renault: class Coche {};
  3. class Peugeot: class Coche {};
  4.  
  5. Coche* polimorfo = new Renault();
  6. delete polimorfo;
  7. Coche* polimorfo = new Peugeot();
  8. delete polimorfo;
  9.  
Creo que un caso de uso queda claro con este ejemplo. Te recomiendo que te mires también los métodos virtuales en este contexto.

Encapsulamiento: aislar los atributos de las demás clases. Generalizando, limitar el acceso a los datos a los métodos de la misma clase, haciendo que cada clase siempre ofrezca acceso a sus datos a través de métodos y no directamente. Por ejemplo:

Código: C++
  1. class Coche
  2. {
  3. private:
  4.     int velocidad;
  5. public:
  6.     int obtenerVelocidad();
  7. };
  8.  
  9. int Coche::obtenerVelocidad(void)
  10. {
  11.     return velocidad;
  12. }
  13.  
  14. Coche cochazo;
  15. // El encapsulamiento nos prohibe hacer esto
  16. cout << cochazo.velocidad;
  17. // pero si nos deja hacer esto
  18. cout << cochazo.obtenerVelocidad();
  19.  
Esto es para asegurar de que el acceso a los datos se hace siempre con control de la clase, así nunca terminará con datos en estados corruptos o desconocidos para la clase misma. Esto implica que los atributos deben ser como mínimo protected salvo casos muy especiales.

Para más detalles y formalidades:

Polimorfismo (http://es.wikipedia.org/wiki/Polimorfismo_%28programaci%C3%B3n_orientada_a_objetos%29)
Encapsulamiento (http://es.wikipedia.org/wiki/Encapsulamiento_%28programaci%C3%B3n_orientada_a_objetos%29)

Saludos