sábado, 1 de octubre de 2011

Presentación Lenguaje OO

Lenguaje Orientado a Objetos (Presentación)

La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos y sus interacciones, para diseñar aplicaciones y programas informáticos. Está basado en varias técnicas, incluyendo herencia, abstracción, polimorfismo y encapsulamiento.

Lenguaje Elegido

Para instalarlo en ubuntu en terminal es con el siguiente comando:

sudo apt-get install openjdk-6-jdk

Clases
Es una agrupación de datos (variables o campos) y de funciones (métodos) que operan sobre esos datos declarados, en el o en otra clase via herencia, interfaces u objetos.

Atributos
Los atributos o características de una Clase pueden ser de tres tipos, los que definen el grado de comunicación y visibilidad de ellos con el entorno

Métodos
Los métodos u operaciones de una clase son la forma en como ésta interactúa con su entorno

Los métodos y atributos pueden tener tres tipos de visibilidades (osea forma de accesarlos):
  • public: Indica que serán visible tanto dentro como fuera de la clase, es decir, es accsesible desde todos lados.
  • private: Indica que sólo será accesible desde dentro de la clase (sólo los métodos de esa clase lo pueden utilizar).
  • protected: Indica que el método no será accesible desde fuera de la clase, pero si podrá ser accesado por métodos de la clase además de métodos de las subclases que se deriven (herencia y interfaces).
  • package: No se le declara nada solo si es int, float, etc. Solo pueden acceder a ellas la misma clase o clases que se encuentren declarados en el mismo paquete.
    Herencia:
    La herencia es el mecanismo fundamental de relación entre clases en la orientación a objetos.En la orientación a objetos, se consideran dos tipos de herencia, simple y múltiple.
    En Java sólo se dispone de herencia simple, para una mayor sencillez del lenguaje, para poder compensar el no uso cierta manera la inexistencia de herencia múltiple se utiliza un concepto denominado interface.

    public class Padre 
    {
     // Atributos
     private int numeroFavorito, nacidoHace, dineroDisponible;
    
     // Métodos
     public int getApuesta() 
     {
      return numeroFavorito;
     }
    
     protected int getEdad() 
     {
      return nacidoHace;
     }
    
     private int getSaldo() 
     {
      return dineroDisponible;
     }
    
     class Hija extends Padre 
     {
      // Cosas
     }//Fin de la clase Hija
    }//Fin de la Clase Padre
    

    Polimorfismo
    Se refiere a la capacidad para que varias clases derivadas de una antecesora utilicen un mismo método de forma diferente

    public class Instrumento 
    {
     public void tocar() 
     {
      System.out.println("Instrumento.tocar()");
     }
     public String tipo() 
     {
      return "Instrumento";
     }
    
     class Guitarra extends Instrumento 
     {
      public void tocar() 
      {
       System.out.println("Guitarra.tocar()");
      }
    
      public String tipo()
      { 
       return "Guitarra"; 
      }
     } 
     
     class Piano extends Instrumento
     {
      public void tocar() 
      {
       System.out.println("Piano.tocar()");
      }
    
      public String tipo()
      { 
       return "Piano";
      }
     }
    }//Fin de la Clase
    

    Abstracto
    Un método abstracto es un método declarado en una clase para el cual esa clase no proporciona la implementación (el código). Una clase abstracta es una clase que tiene al menos un método abstracto. Una clase que extiende a una clase abstracta debe implementar los métodos abstractos (escribir el código) o bien volverlos a declarar como abstractos, con lo que ella misma se convierte también en clase abstracta.

    abstract class FiguraGeometrica {
        . . .
        abstract void dibujar();
        . . .
    }
    
    class Circulo extends FiguraGeometrica {
        . . .
        void dibujar() {
            // codigo para dibujar Circulo
            . . .
        }
    }
    


    Interface
    es una colección de métodos abstractos y propiedades. En ellas se especifica qué se debe hacer pero no su implementación. Para llamarla se utiliza el implements.

    interface Nave {
            //public static final int VIDA = 100; por definición todos los atributos de una interface son públicos y estáticos
            // por ese motivo es redundante aunque si se escribe no genera ningún tipo de error
     
            final int VIDA = 100;
     
            public abstract void moverPosicion (int x, int y);
            public abstract void disparar();
            .....
        }
    
        public class NaveJugador implements Nave {
            public void moverPosicion (int x, int y){
                //Implementación del método
            }
     
            public void disparar(){
                //Implementación del método
            }
     
            .....
        }
    

    Diferencia entre Interfaz y una Clase Abstracta
    La clase abstracta puede ser llamada solamente con herencia, por lo tanto solo se puede usar una clase Abstracta; en la Interfaz de utiliza la variable implements por lo tanto se pueden declarar varios implements en una misma clase.

    class MiApplet extends Applet implements Runnable{
    //...
    //define la función run del interface 
     public void run(){
      //...
     }
    //redefine paint de la clase base Applet
     public void paint(Graphics g){
      //...
     }
    //define otras funciones miembro
    }
    
    Bibliografías