viernes, 9 de octubre de 2015

Paradigmas de la POO


1. Abstracción:

 Visión de un problema que extrae la información esencial para un determinado propósito,                   omitiendo los detalles menos significativos. 
 Puede existir diferentes niveles de abstracción. 
 Existe dos tipos: 
          – Funcional 
          – De datos
 Un objeto es una abstracción de la realidad



2. Encapsulamiento


 Es un agrupamiento bajo un mismo nombre de la información y las operaciones que acceden a ella  Materializa la abstracción. Los objetos son encapsulaciones de abstracciones.
 Paquete de información y operaciones.



3. Ocultamiento de la Información
 Principio por el cual solo es accesible el interfaz del objeto. 
 Los métodos no son utilizados por su implementación (contenido), sino por su interfaz (aspecto).  Concepto complementado con el de encapsulamiento.  Objetivo final: Restringir el acceso a los       métodos.
 En java se consigue gracias a los modificadores de acceso. 
 Estos pueden afectar a la clase, a los atributos y/o métodos. 
 Modificadores: 
          – public: Objetos de todas las clases pueden acceder al método con este modificador.
          – protected: Sólo objetos de las clases heredadas y las del paquete. 
          – (defecto): Sólo objetos de las clases del paquete. 
          – private: Sólo objetos de la misma clase. 

4. Herencia
 La herencia permite crear una clase nueva que tenga el mismo comportamiento que otra, y además     extienda o adapte ese comportamiento a unas necesidades específicas. 
 Permite especializar o refinar una clase, y/o generalizar conceptos de otras clase ya existentes. 
 En la especialización, la nueva clase creada tomará o heredará los atributos y métodos de la clase       padre, los cuales se añadirán a los definidos por la propia clase.

   
 
  Ejemplo:
               class Reloj
               {
               //atributos
               static String MARCA; //atributo de clase
               String hora; //Tomamos un tipo
               String para simplificar
               String dia; //idem
               int numSerie;
               //métodos
               ..............
               }  

               class RelojCrono extends Reloj
               {
                //atributos
                int cronoHora;
                int cronoMin;
                int cronSeg;
                //métodos
                ..............
                }

4.1 Herencia Múltiple
 Se da este concepto cuando una clase hereda de varias superclases. La mayoría de los lenguajes no     soportan esta característica.
 Consiste en utilizar un mismo símbolo para fines distintos. 
 Respuesta distinta frente a un mensaje dependiendo de la naturaleza del objeto. 



5. Polimorfismo
  1.  Consiste en utilizar un mismo símbolo para fines distintos. 
  2.  Respuesta distinta frente a un mensaje dependiendo de la naturaleza del objeto.
  3.  Supongamos que tenemos relojes, uno analógico y otro digital. Cada reloj tiene un método para           adelantar una hora. No tiene ningún sentido que si los dos hacen lo mismo (cada uno a su manera),     se tenga que llamar con nombres distintos. Cada vez que invoquemos el método adelantarHora de       cada reloj, cada uno lo hará a su manera.
  4.  Tenemos distintos objetos gráficos (cuadrados, circunferencias, triángulos,...) y todos tienen un            método pintar. Cuando yo lance un mensaje sobre cada objeto invocando el método pintar, cada          uno se pintará a su manera.





No hay comentarios:

Publicar un comentario