viernes, 22 de noviembre de 2013

Ejemplo Abstraccion.

Ejemplos.

 

En esta sección usaremos el lenguaje de programación java para realizar ejemplos de abstracción, polimorfismo, encapsulamiento y herencia.

 

Ejemplo Abstracción.

 

Para este ejemplo se va a trabajar la abstracción de un vehículo, para lo cual se hace el siguiente razonamiento.
  1. Los vehículos pueden ser de varias clases (aéreo, terrestre, acuático e híbridos), por tanto todos los vehículos tienen una clase.
  2. Todos los vehículos tienen una velocidad máxima.
  3. Todos los vehículos mecánicos consumen algún tipo de combustible.
  4. Todos los vehículos pueden llevar un número determinado de pasajeros o carga, para el ejemplo se considera solo el transporte de pasajeros.
Y se podrían seguir poniendo tantas características como se consideren necesarias para conseguir una buena abstracción del objeto. La siguiente es la representación de la abstracción en java solo de los atributos, y un método constructor.
 
    public class Vehiculo {
    String clase;
    int velocidadMax;
    String combustible;
    int numeroPasajeros;

    public Vehiculo(String clase, int velocidadMax, 
    String combustible, int numeroPasajeros) {
        this.clase = clase;
        this.velocidadMax = velocidadMax;
        this.combustible = combustible;
        this.numeroPasajeros = numeroPasajeros;
    }
} 

 

Ejemplo Encapsulamiento.


El encapsulamiento en Java se implementa con las palabras reservadas private o protected, y su función es esconder el estado del objeto. Cabe resaltar que cuando los atributos del objetos son privados se deben implementar interfaces que permitan el acceso a los mismos, estas son llamadas propiedades y se notan setNombreAtributo y getNombreAtributo. Los set se usan para asignar valores a los atributos y los get para retornar el valor del atributo. 


    public class Vehiculo {
    private String clase;
    private int velocidadMax;
    private String combustible;
    private int numeroPasajeros;

    public Vehiculo(String clase, int velocidadMax, 
    String combustible, int numeroPasajeros) {
        this.clase = clase;
        this.velocidadMax = velocidadMax;
        this.combustible = combustible;
        this.numeroPasajeros = numeroPasajeros;
    }

    
    public String getClase() {
        return clase;
    }
    public void setClase(String clase) {
        this.clase = clase;
    }
    public int getVelocidadMax() {
        return velocidadMax;
    }
    public void setVelocidadMax(int velocidadMax) {
        this.velocidadMax = velocidadMax;
    }
    public String getCombustible() {
        return combustible;
    }
    public void setCombustible(String combustible) {
        this.combustible = combustible;
    }
    public int getNumeroPasajeros() {
        return numeroPasajeros;
    }
    public void setNumeroPasajeros(int numeroPasajeros) {
        this.numeroPasajeros = numeroPasajeros;
    }
}

 

Ejemplo Polimorfismo.


Para el ejemplo de polimorfismo se tomara la clase con atributos y se van a agregar dos constructores, dicho polimorfismo se llama sobre carga, se observa cómo dos métodos tienen el mismo nombre pero reciben diferentes parámetros. En este tipo de polimorfismo hay que tener cuidado con la firma del método ya que dos métodos con el mismo nombre no pueden tener la misma firma. 


    public class Vehiculo {
    public class Vehiculo {
    private String clase;
    private int velocidadMax;
    private String combustible;
    private int numeroPasajeros;

    // Constructor lleno
    public Vehiculo(String clase, int velocidadMax, 
            String combustible, int numeroPasajeros) {
        this.clase = clase;
        this.velocidadMax = velocidadMax;
        this.combustible = combustible;
        this.numeroPasajeros = numeroPasajeros;
    }
    
    // Constructor vacio
    public Vehiculo(){}
} 
 

 

Ejemplo Herencia.


Para el ejemplo de herencia vamos a crear la clase automóvil que también es un vehículo, la herencia en java se implementa con la palabra reservada extends y la referencia al constructor del padre.
    

/**********************************
CLASE PADRE
**********************************/

    public class Vehiculo {
    private String clase;
    private int velocidadMax;
    private String combustible;
    private int numeroPasajeros;

    // Constructor lleno
    public Vehiculo(String clase, int velocidadMax, 
            String combustible, int numeroPasajeros) {
        this.clase = clase;
        this.velocidadMax = velocidadMax;
        this.combustible = combustible;
        this.numeroPasajeros = numeroPasajeros;
    }

    public String getClase() {
        return clase;
    }
    public void setClase(String clase) {
        this.clase = clase;
    }
    public int getVelocidadMax() {
        return velocidadMax;
    }
    public void setVelocidadMax(int velocidadMax) {
        this.velocidadMax = velocidadMax;
    }
    public String getCombustible() {
        return combustible;
    }
    public void setCombustible(String combustible) {
        this.combustible = combustible;
    }
    public int getNumeroPasajeros() {
        return numeroPasajeros;
    }
    public void setNumeroPasajeros(int numeroPasajeros) {
        this.numeroPasajeros = numeroPasajeros;
    }
}


/**********************************
CLASE HIJO
**********************************/
    
    public class Automovil extends Vehiculo{
    private int numeroLlantas;
    private int numeroPuertas;
    private String modelo;

    // Constructor que incluye atributos de la super clase o clase padre.
    
    public Automovil(String clase, int velocidadMax, String combustible, 
    int numeroPasajeros, int numeroLlantas, int numeroPuertas, String modelo)
    {
        super(clase,velocidadMax, combustible, numeroPasajeros);
        this.numeroLlantas = numeroLlantas;
        this.numeroPuertas = numeroPuertas;
        this.modelo = modelo;
    }
    public int getNumeroLlantas() {
        return numeroLlantas;
    }
    public void setNumeroLlantas(int numeroLlantas) {
        this.numeroLlantas = numeroLlantas;
    }
    public int getNumeroPuertas() {
        return numeroPuertas;
    }
    public void setNumeroPuertas(int numeroPuertas) {
        this.numeroPuertas = numeroPuertas;
    }
    public String getModelo() {
        return modelo;
    }
    public void setModelo(String modelo) {
        this.modelo = modelo;
    }    
}

No hay comentarios:

Publicar un comentario