Clases y funciones I
Java es un lenguaje de programación orientado a objetos, donde los objetos tiene una clase y esta define generalmente sus atributos y funciones.
En otras palabras, una clase es un concepto abstracto y luego crearemos pequeños objetos de esa clase, con sus atributos y funciones.
Un atributo es una variable que da información sobre la clase, por ejemplo, un coche tiene ruedas.
En este ejemplo vemos la clase coche y dos características que definimos en variables : el número de ruedas y la marca.
Ahora que tenemos creada la clase coche, siendo coche algo genérico, podemos crear diferentes coches:
Lo que hacemos en ese código, es crear un objeto llamado cocheRojo, que es de la clase coche.
Como la clase coche tenía dos atributos definidos, todo objeto de coche (llamados instancias) los tendrá.
Una vez tenemos la clase definida, podemos interactuar con sus atributos y funciones, por ejemplo, usemos la función println, de la librería del sistema, para mostrar por consola los atributos del objeto que hemos creado.
Lo que hacemos es llamar a la marca y al número de ruedas (numRuedas) del objeto y mostrarlo. El resultado es el siguiente.
Lo mismo sucede si hacemos llamadas a funciones en vez de a objetos, pero antes debemos analizar qué es una función:
Una función (o método) es un fragmento modular de código que permite la ejecución (iterativa o recurrente, de ser necesario) de unas órdenes.
Por hacer una analogía sencilla, el objeto coche tendrá como posibles funciones acelerar, arrancar…etc.
Un ejemplo muy sencillo, vamos a crear un nuevo atributo de coche que sea velocidad (0 estando parado), y posteriormente, con una función, haremos que la velocidad aumente.
Recordemos primero cómo era nuestra clase coche:
Aquí vemos que un coche tiene tres atributos, numRuedas, marca y velocidad (al no darle un valor a velocidad, su valor inicial es cero)
el «public coche» es una función, ese tipo de función de conoce como «constructor» y es la que se llama para crear el objeto (coche cochecito = new coche() ).
También es posible crear constructores a los que les pasemos atributos para que ya queden definidos, por ejemplo:
Y para crear un objeto de tipo coche, al que queramos darle directamente otro numRuedas, sencillamente debemos indicarlo como parámetro, entre paréntesis, la función espera un entero:
De este modo tenemos un coche (cocheRojo) con 4 ruedas y un coche (cochecito) con 3 ruedas.
La estructura de un método normal incluye algunos datos más, como por ejemplo, el tipo de dato que va a devolver la función, puede devolver un entero, una cadena de texto, un número en coma flotante…o un objeto creado por nosotros.
Cuando no deseamos que la función devuelva nada, lo especificamos con «void».
A continuación un ejemplo de una función que devuelve un entero y una que no devuelve nada:
En este ejemplo, la función «saludo» recibe un nombre, lo usará posteriormente para enviar por consola un mensaje que salude a ese nombre. Como se puede apreciar, podemos concatenar datos en un printf, para ello usamos «+», en este caso hemos concatenado una cadena de texto con una variable.
El segundo método, suma, recibe dos variables de tipo entero y devuelve el resultado, que es otro número de tipo entero.