viernes, 4 de noviembre de 2016

11-Programación Orientada a Objetos en Java (Parte I). Crear Nuestro Primer Objeto

En tutoriales anteriores hemos mencionado muchas veces palabras como objeto, métodos, clases, programación orientada a objetos... y todo ello sin saber aún muy bien que significaba todo esto.
En este tutorial explicaré qué es la programación orientada a objetos y cómo crear nuestro primer objeto. Al mismo tiempo veremos qué son las clases en Java, y de qué se componen los objetos.
Java es un lenguaje de programación orientado a objetos. ¿Qué significa eso de que está orientado a objetos? Pues significa que se programa creando un conjunto de objetos que interactúan entre sí.
Un objeto puede ser cualquier objeto de la vida real, por ejemplo un coche, una persona, una pantalla, un ordenador, un lápiz, una goma, un abrigo... Cada objeto de la vida real se puede crear en Java con un objeto.

Cada objeto que creemos en Java puede contener dos aspectos:

  1. Atributos
  2. Comportamientos

11.1-Atributos

Los atributos que puede tener un objeto son las características que contendrá ese objeto. Los atributos los creamos con las variables.
Por ejemplo un objeto coche puede tener de atributos o características: la marca, color, velocidad máxima, número de marchas....
Todas estas características las crearemos con las variables:


        String marca;

        String color;

        int velocidadMax;

        int numMarchas;

11.2-Métodos o comportamientos

Otro aspecto que pueden tener los objetos son los métodos. Durante los anteriores tutoriales hemos hablado algunas veces de métodos y de cómo se accedían a ellos. Los métodos son comportamientos que un objeto puede hacer. Los métodos ejecutan las instrucciones que se encuentran en su interior cuando estos son llamados.
Siguiendo con el ejemplo de un coche, los comportamientos que podría hacer el objeto coche serían: arrancar, acelerar, frenar...
En el siguiente código se muestran ejemplos de cómo crear estos métodos:


public void arrancar(){

            //Sentencias que queremos que se ejecuten cuando llamemos al método.

        }



public void acelerar(){

            //Sentencias que queremos que se ejecuten cuando llamemos al método.

        }





public void frenar(){

            //Sentencias que queremos que se ejecuten cuando llamemos al método.

        }

Todavía no entenderéis cómo se declara un método, no os preocupéis lo veremos en el siguiente tutorial.


Un breve resumen:

En Java podremos crear objetos de la vida real, estos objetos tendrán una serie de atributos (estos atributos los crearemos con las variables) y de comportamientos (los comportamientos los definiremos con los métodos).

11.3-Crear un objeto

Para crear un objeto en Java primero debemos conocer el papel que juegan las clases. Sí, las famosas clases que llevamos hablando de ellas en casi todos los tutoriales y que hemos estado creando en cada programa que hemos ido haciendo. Por ejemplo a continuación creo una clase de nombre CrearObjetos:

public class CrearObjetos {

}

Pero, ¿Qué es una clase? Una clase es una plantilla de la cual a través de esta plantilla se irán creando los objetos. Por ejemplo, hemos dicho que se pueden crear en Java objetos de la vida real como un coche, y que un objeto en Java podría tener unos atributos (variables) y unos comportamientos (métodos). Pues bien, las clases lo que hacen es servir de plantilla para poder crear objetos del mismo tipo. Siguiendo con el ejemplo del objeto de coche podríamos crear una clase de nombre vehículo y dentro de esta clase definiríamos los atributos y comportamientos que queramos que lleve cada objeto de la clase vehículo.

Los objetos se crean a partir de una clase, debemos de crear una clase para poder crear objetos de esa clase. Vamos a crear la clase vehículos para, a partir de esta, poder crear tantos objetos como queramos:

public class Vehiculo {

    //Dentro de la clase definimos los atributos y los métodos que

    //contendrá esta clase.

    String marca;

    String color;

    int velocidadMax;

    int numMarchas;

  

  

    public void arrancar() {

        //Sentencias que queremos ejecutar si llamamos a este método.

    }

  

    public void acelerar() {

        //Sentencias que queremos ejecutar si llamamos a este método.

    }

  

    public void frenar() {

        //Sentencias que queremos ejecutar si llamamos a este método.

    }

}


Con lo anterior ya tenemos creada nuestra clase Vehículo que nos servirá de plantilla para poder crear objetos a partir de esta plantilla. Esto quiere decir que cuando creemos un objeto de la clase vehículo este objeto automáticamente tendrá los atributos y métodos que hay en la clase, y podemos añadir cuantos atributos y métodos queramos. Vamos a verlo con un ejemplo muy sencillo, crearé un objeto de la clase Vehículo y le asignaremos una marca, color, velocidadMax  y el numMarchas. Para poder crear un objeto debemos de hacerlo dentro del método main que ya hemos explicado. También podremos crear una nueva clase con un método main para crear objetos. Yo voy a crear una nueva clase de nombre Programa para crear el objeto.
Los objetos se crean de la siguiente forma:

  • Se pone el nombre de la clase
  • Seguido se pone el nombre que le demos al objeto
  • Se pone el '='
  • Seguido del '=' se pone new y otra vez el nombre de la clase seguido de paréntesis.

Por ejemplo para crear un objeto de nombre cocheDeportivo de la clase Vehículo sería:

Vehiculo cocheDeportivo = new Vehiculo();


Veámoslo con un ejemplo:

public class Programa {

    //Para crear objetos debemos de crearlos dentro

    //del método main

    public static void main(String[] args) {

        Vehiculo cocheDeportivo = new Vehiculo();

      

        cocheDeportivo.color = "rojo";

        cocheDeportivo.marca = "Renault";

        cocheDeportivo.numMarchas = 6;

        cocheDeportivo.velocidadMax = 210;

    }

}


En el ejemplo anterior creamos el objeto cocheDeportivo de la clase que creamos anteriormente Vehículo. Una vez creado el objeto podremos acceder a las características (variables) y a los métodos. Para acceder a ellos se pone el nombre del objeto seguido del punto ('.') y el nombre de la variable o del método que queramos.
Ahora existe un único objeto que se llama cocheDeportivo con un color rojo, de marca Renault, que tiene 6 marchas y una velocidad máxima de 210.
Pero podemos crear tantos objetos de la clase Vehículo como queramos. Por ejemplo podemos crear otro objeto de nombre cocheFamiliar:

public class Programa {

    //Para crear objetos debemos de crearlos dentro

    //del método main

    public static void main(String[] args) {

        Vehiculo cocheDeportivo = new Vehiculo();

        Vehiculo cocheFamiliar = new Vehiculo();

      

        cocheDeportivo.color = "rojo";

        cocheDeportivo.marca = "Renault";

        cocheDeportivo.numMarchas = 6;

        cocheDeportivo.velocidadMax = 210;

      

        cocheFamiliar.color = "Negro";

        cocheFamiliar.marca = "Audi";

        cocheFamiliar.numMarchas = 5;

        cocheFamiliar.velocidadMax = 180;

        //Llamada a un método

        cocheFamiliar.acelerar();

    }

}


Ahora tenemos dos objetos de la clase Vehículo, un objeto llamado cocheDeportivo y otro objeto llamado cocheFamiliar. Son dos objetos totalmente diferentes y distintos, igual que dos coches distintos de la vida real.
Cuando creamos un objeto de una clase, ese objeto automáticamente tiene todos los atributos y comportamientos que se habían creado en la clase Vehículo. Por lo tanto el objeto cocheDeportivo tendrá, al igual que el objeto cocheFamiliar, los atributos color, marca, numMarchas, velocidadMax y los métodos arrancar, acelerar y frenar.

En el objeto cocheFamiliar también se ha creado una llamada al método acelerar. Cuando se ejecute esa parte del código y llegue a la llamada al método, éste ejecutará todo lo que haya en el interior de ese método, es decir, todas las sentencias que hayamos creado para acelerar.


Vamos a ver cómo con la llamadas a métodos se pueden modificar las características de un objeto. En la clase Vehículo teníamos unos métodos creados pero sin nada en su interior. Vamos a modificar el método acelerar para que modifique un nuevo atributo que crearemos en la clase Vehículo llamado velocidadActual.
Hemos creado en la clase Vehículo otro método llamado obtenerVelocidadActual() que nos devolverá el valor de la nueva variable velocidadActual.
El código de la clase Vehículo quedará así:

public class Vehiculo {

    //Dentro de la clase definimos los atributos y los métodos que

    //contendrá esta clase.

    String marca;

    String color;

    int velocidadMax;

    int numMarchas;

    int velocidadActual;

  

    public void arrancar() {

        //Sentencias que queremos ejecutar si llamamos a este método.

    }

  

    public void acelerar() {

        velocidadActual = velocidadActual +20;

    }

  

    public int obtenerVelocidadActual(){

        return velocidadActual;

    }

  

    public void frenar() {

        //Sentencias que queremos ejecutar si llamamos a este método.

    }

}


El código de la clase Programa quedará así:

public class Programa {

    //Para crear objetos debemos de crearlos dentro

    //del método main

    public static void main(String[] args) {

        Vehiculo cocheDeportivo = new Vehiculo();

        Vehiculo cocheFamiliar = new Vehiculo();

      

        cocheDeportivo.color = "rojo";

        cocheDeportivo.marca = "Renault";

        cocheDeportivo.numMarchas = 6;

        cocheDeportivo.velocidadMax = 210;

      

      

        cocheFamiliar.color = "Negro";

        cocheFamiliar.marca = "Audi";

        cocheFamiliar.numMarchas = 5;

        cocheFamiliar.velocidadMax = 180;

      

        cocheFamiliar.velocidadActual = 10;

        //La velocidad ahora vale 10

        System.out.println(cocheFamiliar.velocidadActual);

        //Llamada a un método. Aumenta la velocidad en 20

        cocheFamiliar.acelerar();

      

        //Llamamos al método para que nos devuelva el valor

        System.out.println(cocheFamiliar.obtenerVelocidadActual());

    }

}


Para ejecutar el programa debemos de ejecutar la clase Programa que es la que contiene el método main.

Otro breve resumen:

  • Para crear objetos primero debemos de crear una clase como plantilla o utilizar una de las clases que nos ofrece Java creadas con anterioridad.
  • Los objetos pueden tener atributos y comportamientos. Los atributos los crearemos con variables y los comportamientos con los métodos.
  • Un objeto se crea así: NombreClase NombreObjeto = new NombreClase();
  • Para acceder a un atributo es: nombreObjeto.nombreVariable
  • Para acceder a un método es nombreObjeto.nombreMétodo;

Ejercicios


Ejercicio 1


Crea una clase de nombre Persona que contenga los siguientes atributos y métodos:
  • Atributo nombre
  • Atributo apellidos
  • Atributo edad
  • Atributo Localidad
  • Atributo telefono.
  • Método obtenerNombre. Devuelve el nombre
  • Método obtenerApellidos. Devuelve los apellidos
  • Método obtenerEdad. Devuelve la edad
  • Método obtenerLocalidad. Devuelve la localidad
  • Método obtenerTelefono. Devuelve el telefono.
  • Método envejecer. Dentro de este método hay que indicar que la edad se envejezca en 1 año.
Crear un objeto de la clase Persona de nombre persona1 en el que rellenéis los atributos como queráis y después que muestre por pantalla los datos de esa persona haciendo la llamada a los métodos.
Luego llamar al método envejecer y volver a mostrar por pantalla todos los datos de esa persona haciendo la llamada a los métodos.

Solución:



Los modificadores indican el grado de abstracción que hacemos de clases, variables, métodos... Estos pueden ser public, private, protected o por defecto, que es cuando no indicamos ningún modificador.
Los atributos llevan los modificadores private. No os preocupéis, veremos los modificadores dentro de poco.

Con esto terminamos nuestro primer contacto con la programación orientada a objetos. Esto sólo es el principio todavía nos queda muchas cosas por ver sobre la programación orientada a objetos.

No hay comentarios:

Publicar un comentario

Related Posts Plugin for WordPress, Blogger...