Empezamos con la POO Programación Orientada a Objetos un tema que requiere cierta abstracción para poder enterder todos los conceptos al 100%.

Bien vamos a empezar con la abstracción e imagemos que tenemos un realizar una liga con varios equipo de fútbol en Java (podría ser cualquier otra cosa pero en este caso es un equipo de fútbol).

¿Que es una clase en Java?

Una vez sabemos que tenemos que crear un equipo de fútbol, necesitamos trabajar con clases. Las clases en Java nos sirven para hacer el molde/plantilla donde detallaremos las caracteristicas/propiedad y los métodos/comportamientos para posteriormente y gracias a dichas clases poder crear objetos.

Como supongo que lo de caracteristicas o propiedades y métodos no os ha quedado claro vamos a desmenuzarlo un poco más para facilitaros la digestión de estos conceptos.

¿Que contiene una clase en Java?

Un clase contiene:

    • Caracteristicas/propiedades/atributos: (son lo mismo pero con tres nombres dintitos) nos permiten crear datos para poder definir por ejemplo el nombre que tendrá el objeto, su altura, su posición en el caso del equipo de fútbol. Eso sí, el valor no se guardará en la clase como normal general a excepción de que sea común a todos los objetos. Sino que dicho valor se definirá en el objeto. Por decirlo así, la clase es la estrutura dodne definimos los tipos de datos y los nombres de las variables que definiremos en el objeto una vez instanciemos la clase.

  • Métodos o comportamientos: definien que puede hacer cada objeto. En el caso de un jugador de fútbol: correr, saltar, chutar…

Se suele decir método y no una función ya que aunque pueden parecer lo mismo el método se caracteriza por estar dentro de un objeto y la función no está dentro de ningún objeto.

Ejemplo de clase en Java. Creando nuestra primera clase:

Vamos a ver un ejemplo de una clase. Primeramente vamos a crear un nuevo proyecto con File > New Project con el nombre de ClasesYObjetos.

Y dentro del proyecto, creamos una nueva clase con File > New > Class

Con el nombre de Futbolista

Y nos quedará por tanto, el proyecto de la siguiente manera:

Añadiendole propiedades y métodos (contenido) a la clase

Bien una vez creada la clase, vamos a añadirle la información que queremos que tengan los fútbolistas. En este caso:

  • Propiedades o caracteristicas: nombreCompleto (String), altura (int), peso (int), pais (int), fechaNacimiento (String), dorsal (int) y posicion (String).
  • Métodos o comportamientos: uno que se llamé correr que diga “Corriendo va… (nombre del jugador)”  y otro que se llamé chutar que diga “Chuta y… ¡Gol!”.

¿Que es un objeto en Java?

El concepto de crear un objeto con una clase recibe el nombre de instanciar bueno en este caso instanciación. Por lo tanto, instanciar es crear un objeto (en este caso en concreto un jugador) a partir de una clase.


Instanciando clases en Java

Instanciar al primer jugador = crear objetos a partir de una clase

En este caso, en particular, tenemos dos archivos.java uno es el Main en el que vamos a realizar la instaciación y otro es el Jugador.java que tiene la clase Jugador.

Aunque también lo podríamos tener todo junto en el main. Las desventanjas de esta forma es una peor estructura en la organización de nuestro proyecto y por lo tanto siempre que tendremos las clases seperadas del Main (de la entrada a nuestro programa).

Creamos un objeto de tipo Jugador y se le asigna como nombre la variable Messi. Y mediante a new realizamos la invocación por eso se llama al proceso de crear un objeto invocar. Y al new lo acompañará la clase a ejecutar en este caso Jugador().

Accediendo a los valores por defecto de las caracteristicas de los objetos

Para acceder a los valores por defecto de las caracteristicas de los objetos, previamente necesitamos haber instanciado la clase para crear con ello un objeto.

Una vez creado el objeto y poniendo como por ejemplo el ejemplo que estamos realizando el nombre (en este caso Messi) se guarda en una variable y si escribimos en la consola Messi. podemos comprobar que tenemos todas las propiedades y métodos que hemos definido en la clase.

Antes de nada quiero avisar que si alguno de vosotros sabe de programación orientada a objetos posiblemente este pensando que esta no es la la mejor forma de llamar a los objetos. Y está en lo correcto, la forma correcta es con encapsulación lo veremos más adelante. Ya que ahora mismo, está es la mejor forma por el momento de empezar a ver para el potencial y la utilidad que tiene todo lo anterior (al menos por el momento). Y que le da sentido a trabajar con clases y objetos.

Para mostrar los valores como siempre hacemos un System.out.println.

Valores por defecto de las clases en Java:

Los valores por defecto dependerán del tipo de dato que definamos. Aquí los listamos para que os suenen:

  • Integer (int): 0
  • Byte: 0
  • Short: 0
  • Long: 0
  • Double: 0.0
  • Float: 0.0
  • Char \u0000
  • Boolean: false
  • Cadena de texto (String):null (que significa vacío).

Inicializando los valores de una clase en Java:

Como hemos visto, los valores por defecto por ejemplo de los Strings, son null y por ejemplo podemos querer que estos aparezcan como una cadena de texto vacía (“”). Los podemos inicializar en la clase y de está manera, se mostrarán como una cadena de texto vacía (“”) en vez de null.  Eso sí, es muy importante saber que solo podemos asignarle “” a los tipos de datos que pertenecen al grupo de las cadenas de texto (char, string). A los que pertenecen al grupo de los númericos, les podemos dar un valor diferente a 0 por ejemplo también. Además de establecer un valor por defecto para por ejemplo posicion y que sea no definida.

Como tenemos creado el jugador Messi, si ahora ejecutamos, al realizar la instancia de la clase para crear el objeto nos cogerá los valores que hemos establecido por defecto para todos los atributos de la clase.

Asignando valores a los objetos:

Bien ahora vamos a asignar (establecer un valor a una variable) con la información de todas las caracteristicas que hemos definido en la clase anteriormente y de nuestro jugador. Para ello, escribimos:

nombre del objeto = valor;

Sobretodo es importante asignar el valor antes de imprimir el valor (en el System.out.println) ya que sino como es programación estructurada y esto implicaque ejecuta sentencia a sentencia en el orden correspondiente.