lunes, 14 de febrero de 2011

C2, 05/02/11: Bloque I.5: Clases


  • Introducción

  • Java es un lenguaje de programación orientado a objetos.


    Un objeto encapsula:

    1. atributos

    2. métodos


    En la programación orientada a objetos estos colaboran entre sí para alcanzar un objetivo


    La colaboración se establece mediante el paso de mensajes (llamadas a métodos).




  1. Definición de una clase


  2. public class Punto{ //"public" es el modificador de acceso; "Punto" es el nombre de la clase
    private float x;//Atributos
    private float y;//Atributos

    public Punto(){ //método (en este caso es el constructor)
    x=0.0f;
    y=0.0f;
    }
    //...

    public float getX(){//método
    return x;
    }


  3. Atributos. Atributos estáticos


  4. public class Punt{
    private float x; // Modificador de acceso; Tipo; Nombre
    private float y; // Modificador de acceso; Tipo; Nombre
    //...
    }

    Modificadores pueden ser de tipo:


    • private --> Ámbito: La clase

    • ""--> Ámbito --> El paquete

    • protected --> Ámbito: La clase e hijas

    • public --> Ámbito: El resto de clases




    class UnaClase{
    private static int nInstancias = 0; // Atributo de clase
    public static final float E = 2.8182f; // Constante; Normalmente utilizamos "final" para variables que no van a ser modificadas en un futuro --> constantes.
    }
    //...
    UnaClase.E;
    new UnaClase().E;


  5. Métodos. Métodos estáticos


  6. public class Punto{
    //...
    public Punto(){ //Modificador de acceso; Nombre; Lista de argumentos (en este caso no hay)
    x=0.0f;
    y=0.0f;
    }

    public float getX(){//Modificador de acceso; Tipo de retorno; Nombre; Lista de argumentos (en este caso no hay)
    return x;
    }
    public void setX (float x){ //Modificador de acceso; Nombre; Lista de argumentos
    this.x=x;
    }
    }


    Class UnaClase{
    private static int nInstancias =0;
    public static float E = 2.8182f;
    private int entero;
    public UnaClase(){
    nInstancias++;
    }

    public static int cuantasInstancias(){
    return nInstancias; //No hay problema
    }

    private static void intentaAcceso(){
    entero = 0; // Error
    }


  7. Creación de Objetos


  8. public class Punto{

    public Punto(){ //constructor por defecto
    x=0.0f;
    y=0.0f;
    }

    public Punto(float x, float y){ //constructor con parámetros
    this.x = x; //"this" se refiere a "este objeto"
    this.y = y;
    }
    }


    public class bloqueStatic{
    static double tablaSeno[] = new double[360];
    static{
    for(int i=0; i=360; i++)
    tablaSeno[i] = Math.sin(Math.PI*i/180.0);
    }
    public static void main (String args[]){
    for(int i=0; i<360; i++)
    System.out.println("Angulo: "+i+" Seno= "+tablaSeno[i]);
    }
    }


  9. Paso por valor y por referencia


  10. public class pasoPorReferencia{
    private static void cambiaReferencia(Punto puntoLocal){
    puntoLocal = nre Punto(1.0f, 2.0f);
    System.out.println("Estoy dentro del método.");
    puntoLocal.print();
    }
    public static void main(String args[]){
    Punto unPunto = nre Punto();
    System.out.println("Estoy fuera del método.");
    unPunto.print();
    cambiaReferencia(unPunto);
    System.out.println("Estoy fuera del método.");
    unPunto.print();
    }
    }


  11. Sobrecarga de métodos


  12. public class Punto { //Esta clase tiene métodos con el mismo nombre pero con distintos argumentos. El tipo del valor devuelto no sirve para distinguir.

    public Punto() {
    x = 0.0f;
    y = 0.0f;
    }
    public Punto(float x, float y) {
    this.x = x;
    this.y = y;
    }
    //…
    }


  13. Finalización

Antes de que el recolector de basura elimine un objeto de memoria, siempre se llama a su método "finalize".
La utilidad puede ser, por ejemplo, cerrar un fichero que el objeto mantenga abierto; o cerrar una conexión mediante un socket; o detener los posibles hilos (threads) que se mantengan activos...

No hay comentarios:

Publicar un comentario