lunes, 3 de diciembre de 2012

Introducción a P.P.O con JAVA.

-Diferencia entre clase y objeto.

Atributos: son sustantivos que describen el objeto.
Métodos: acciones que puede realizar ese objeto.




En java para crear una instancia de una clase hacemos: new NombreClase();


-Estructura de un programa en JAVA.
class NombreClase{
     tipo static CONSTANTE=.......;
     tipo atributo = ......;

     NombreClase(){ //Constructor
     ...
     }

     NombreClase(tipo param,...){ //Constructor sobrecargado.
     ...
     }

     tipo metodo(tipo param,...){
     ...
     }

     public static void main(String args[]){
     ...
     }
}

-Convención de mayúsculas y minúsculas en JAVA. 

  • Paquete: todas las letras en minúsculas. 
  •  Clase: 1º letra de cada palabra en mayúsculas. 
  •  Métodos: 1º letra en minúscula, mayúsculas la 1º letra de cada palabra. 
  •  Variables: igual que los métodos. 
  •  Constructores: igual que las clases. 
 No es necesario seguir la convención, pero JAVA distingue entre mayúsculas y minúsculas (key sensitive).

 -Paso de parámetros por valor o por referencia. 

  • Por referencia: se pasa un puntero de la variable referenciada (en realidad es una copia de la referencia del objeto). 
  •  Por valor: se pasa una copia del valor del parámetro. En java variables de tipo simple (int,...). 
 En JAVA las variables (simples u objetos) siempre por valor. En objetos copia de su dirección de memoria.

 -Visibilidad. 

+Pública. Visible dentro y fuera de la clase.
-Privada. Sólo dentro.
#Protegido. Sólo dentro y clases derivadas (que heredan).


-Tipos de relaciones entre clases.

  • Asociación: conexión semántica o lógica entre clases, objetos que colaboran entre sí. El tiempo de vida de uno no depende del otro.
  • Agregación: entidad que agrupa elementos, responsables de su manejo. El rombo se coloca hacia la clase que almacén los objetos.
  • Composición: relación estática. El tiempo de vida del objeto está condicionado por el tiempo de vida del que lo incluye.
  • Dependencia. Cuando su instancia depende de otro objeto.

  • Herencia o generalización. Cuando una clase hereda métodos y atributos de su clase padre. Se define en tiempo de compilación (se dice que es estática).

// extends para clases abstractas o concretas.
// implements para heredar de interfaces.
public class Hijo extends Padre{

}


-Conceptos.

  • Polimorfismo: fenómeno por el que, cuando se envía un mensaje a un objeto del que no se sabe su tipo específico se ejecuta el método adecuado de acuerdo con su tipo. Esto se consigue mediante el enlace dinámico (en tiempo de ejecución).
  • Superposición (overriding): cuando en una clase derivada se define una función que ya existe en la clase base.
  • Sobrecarga (overloading): cuando en una clase existen métodos con el mismo nombre pero distinto número de parámetros o devuelven tipos diferentes.
     Nota: la superposición se da entre clases y la sobrecarga dentro de una clase.

  • Clase abstracta. Permite implementar métodos pero no puede ser instanciada.
  • Upcasting y downcasting.


Upcasting (automático)
Mamifero m = new Gato();

Downcasting (manual)
Animal a = new Gato(); //Upcasting
Gato g = (Gato)a; //Downcasting manual. Es necesario indicar el tipo.

¿Qué pasaría si hago downcast de a, si a fue declarada como conejo? ClassCastException.


-F.A.Q
  • ¿El polimorfismo es sólo con herencia?. No, también incluye a las interfaces.
  • ¿Si una clase tiene métodos como private o protected estos se heredan?. Ver apartado visibilidad.
  • ¿Qué es una interfaz de marcado?. Una interfaz que no define métodos.
  • ¿Cuál es la diferencia entre una clase abstracta y una concreta?. Una clase abstracta no puede ser instanciada, sirve de molde para las clases derivadas (las que heredan de otra), mientras que una clase concreta puede ser instanciada.

No hay comentarios:

Publicar un comentario