Programación orientada a Objetos & JAVA

Introducción a JAVA

  • Partimos de la suposición de que se viene de c++.

  • La sintaxis es parecida.

  • En java TODO son objetos.

  • Declaración de variable: Se irá viendo en los ejemplos.

  • Sentencias de condición (if, else if), al estilo C++, en los ejemplos se muestra.

  • Sentencias de control (while, for, ), al estilo C++, en los ejemplos se muestra.

  • Arrays, se dispone de diferentes objetos que los representan (ArrayList, etc), o se pueden hacer como en C. (se verán ejemplos)

JAVA - Conceptos Clave

  • Package: Un package es una agrupación de clases afines. Equivale al concepto de biblioteca (library) existente en otros lenguajes o sistemas. Físicamente representan una carpeta.

  • Herencia: Se da en OO.

  •  Se ejecuta sobre máquina virtual

  • TODO SON OBJETOS!!!! 

Orientación a objetos

  • Hasta ahora: encapsulamos código en funciones.

  • OO encapsula conceptos en clases: personas,

    trabajadores, vehículos...

  • Una clase define:

    • Variables que describen el concepto: Atributos.

    • Funciones para manipular dicho concepto: Métodos .

Orientación a objetos (Ejemplo)

Orientación a objetos(Acceso)

  • Podemos acceder a los atributos públicos de la siguiente manera:
    import paquete.Vehiculo;
    Vehiculo vi = new Vehiculo();
    vi.numRuedas = 2;
    System.out.println (vi.numRuedas);

  • Podemos acceder a los métodos de igual forma: vi.avanza(); 

Orientación a objetos (visibilidad de los atributos)

Orientación a objetos (Acceso 2)

               public class Vehiculo {
                   protected int numRuedas;
                   private String numCarroceria;
                   public String getNumCarroceria() {
                      return this.numCarroceria;
                   }
public void setNumCarroceria(String carr) { this.numCarroceria = carr;
}
}
Vehiculo veh = new Vehiculo(); veh.setNumCarroceria(“13354a-X”); System.out.println(veh.getNumCarroceria());

Mediante métodos públicos (get/set) accedemos a atributos privados:

Orientación a objetos(métodos)

También podemos definir la visibilidad de los métodos

class Vehiculo{
private String numCarroceria;
public String setNumCarroceria (String numCarroceria){
if (this.checkNumCarroceria(numCarroceria)) return false; else {
this.numCarroceria = numCarroceria; return true;
}
}
private function checkNumCarroceria(String numCarroceria){
return numCarroceria.isEmpty(); }
            }
            Vehiculo veh = new Vehiculo();
            veh.checkNumCarroceria(“23213-ax”); // Error
            veh.setNumCarroceria(“”); // Devolverá false

Orientación a objetos (constructores)

  • Para crear una instancia de la clase y dar valores iniciales a sus atributos
  • Existe en todas las clases (aunque no se defina explícitamente)
  • Se puede  crear una instancia de la clase con valores iniciales.
public Vehiculo(int a, String b) {
    numRuedas = a;
    numCarroceria = b;
}

Vehiculo veh = new vehiculo(4, “1234-ax”); // Vehículo de 4 ruedas

Orientación a Objetos (Herencia)

  • Nos permite reutilizar código
  • Especialización de un concepto
  • La heredera recibe los atributos y métodos del padre (públicos y protegidos)
class coche extends vehiculo {
               protected int numPuertas;
            }
            Class moto extends vehiculo {
               protected String manillar;
            }
            /* Heredan numRuedas, numCarroceria y la función
               avanza() */

Orientación a Objetos (Polimorfismo)

Orientación a objetos (Polimorfismo)

Ejercicio

Java + POO

By Joan Barroso Garrido