Java_bas
Java_bas
www.learning.es
Para uso exclusivo de los alumnos de LEARNING & TRAINING CLOUD, S.L.
Clases, Mensajes y Métodos
En la programación orientada a objetos (POO) tenemos que diferenciar entre dos conceptos
estrechamente relacionados: la clase y el objeto.
Una clase define la forma y comportamiento de un objeto. Una clase es una plantilla para un objeto.
Define la estructura de un objeto y su interfaz funcional, en forma de métodos y propiedades.
Cuando se ejecuta un programa en Java, el sistema utiliza definiciones de clase para crear instancias
de las clases, que son los objetos reales. Los términos instancia y objeto se utilizan de manera
indistinta.
public class Coche
{
DECLARACION DE METODOS Y PROPIEDADES
}
De este modo se definiría una clase de nombre Coche cuyas propiedades y métodos son definidos en
su interior. Las características y acciones de una clase son las propiedades y métodos declarados en
su interior y de los que van a disponer todos los objetos o instancias de la misma.
Las propiedades o miembros del objeto coche, definirían todos los datos que podemos recuperar o
utilizar en un objeto. Son variables definidas dentro del objeto y que nos permiten luego “utilizar”
dichas variables en nuestro programa.
public class Coche
{
public int velocidad;
public int numeropuertas;
}
Los métodos son las acciones que un objeto nos permitiría realizar sobre él. Existen dos tipos de
métodos que posteriormente aprenderemos en profundidad, métodos que devuelven valor y
métodos de acción.
Los métodos de acción son métodos que no devuelven ningún tipo de información, son un conjunto
de acciones, y se definen con la palabra clave void.
Los métodos que devuelven valor (también llamados funciones), son métodos que realizan una serie
de acciones y que devuelven un valor cómo resultado de dichas acciones.
Un ejemplo de ello sería:
public class Coche
{
public int velocidad;
public int numeropuertas;
public void arrancarCoche()
{
ARRANCAR EL COCHE Y NO DEVUELVE NADA
}
public int acelerarCoche()
{
DEVOLVER VELOCIDAD ACTUAL
}
}
Cuando utilizamos el método acelerarCoche() es conveniente saber la velocidad a la que hemos
acelerado, por lo que devolveríamos información sobre el objeto.
El método arrancarCoche() no devuelve ningún valor porque es una acción de la que no
necesitamos saber ningún tipo de información.
www.learning.es
Para uso exclusivo de los alumnos de LEARNING & TRAINING CLOUD, S.L.
Un objeto es una variable que utiliza las características y acciones de un objeto. Dependiendo de la
clase de la variable, tendrá unas características u otras. A estas variables se las conoce como
referencias a objeto.
Si quisiéramos utilizar un objeto de la clase Coche, primero habría que “crearla”, o mejor dicho,
instanciar un objeto de la clase PrimeraClaseJava. Para ésta creación de un objeto se utiliza el
constructor de una clase.
Las clases pueden implementar un método especial llamado constructor. Un constructor es un
método que inicia un objeto inmediatamente después de su creación. De esta forma nos evitamos el
tener que iniciar las variables explícitamente para su iniciación.
El constructor tiene exactamente el mismo nombre de la clase que lo implementa; no puede haber
ningún otro método que comparta su nombre con el de su clase. Una vez definido, se llamará
automáticamente al constructor al crear o instanciar un objeto de esa clase (al utilizar el operador
new).
El constructor no devuelve nada, es una acción. Su misión es iniciar o construir todo estado interno
de un objeto (sus propiedades), haciendo que el objeto sea utilizable inmediatamente; reservando
memoria para sus propiedades, iniciando sus valores, etc.
Ejemplo:
public class Coche
{
public Coche()
{
velocidad = 0;
numeropuertas = 5;
}
public int velocidad;
public int numeropuertas;
public void arrancarCoche()
{
velocidad = 0;
}
public int acelerarCoche()
{
velocidad = velocidad + 10;
}
}
Lo que acabamos de crear es una clase para la que todos sus objetos creados tendrán 5 puertas.
El operador new crea una instancia de una clase (un objeto) y devuelve una referencia a ese objeto.
Por ejemplo:
Coche objetocoche1 = new Coche();
De ésta forma, el objeto es nuestra variable llamada objetocoche1 y sabemos que tiene 5 puertas
porque hemos “construido” la clase Coche de esa forma.
Si utilizásemos el objetocoche1 para averiguar el número de puertas, siempre nos devolvería el
número 5.
mostrar objetocoche1.numeropuertas dicha instrucción siempre mostraría 5
También podemos cambiar las características de nuestro objeto de la clase Coche y establecer un
número de puertas diferente:
objetocoche1.numeropuertas = 3;
mostrar objetocoche1.numeropuertas dicha instrucción ahora mostraría 3
www.learning.es
Para uso exclusivo de los alumnos de LEARNING & TRAINING CLOUD, S.L.
Podemos crearnos otros objetos de la clase utilizando otras instancias de objeto, de esa forma, se
crean objetos con las mismas características, pero diferentes entre sí.
Coche objetocoche1 = new Coche();
Coche objetocoche2 = new Coche();
objetocoche1.numeropuertas = 3;
mostrar objetocoche1.numeropuertas dicha instrucción ahora mostraría 3
mostrar objetocoche2.numeropuertas dicha instrucción siempre mostraría 5
Como podemos comprobar, los dos objetos pertenecen a la misma clase y tienen las mismas
propiedades y métodos, pero son diferentes entre sí. Aunque no hubiésemos cambiado el atributo
numeropuertas, seguirían siendo objetos diferentes, con las mismas características y métodos.
Llevado al concepto de la vida real, sería como sacar dos coches iguales de la fábrica, tienen los
mismos atributos, color, cilindrada, modelo, pero cada uno es diferente y cada uno se utilizará de
una forma diferente.
Actividades
“Recuerde que para un seguimiento óptimo de la unidad es imprescindible realizar
las actividades que encontrará en la unidad correspondiente de la plataforma
eLearning”.
www.learning.es
Para uso exclusivo de los alumnos de LEARNING & TRAINING CLOUD, S.L.
Unidad 2. Analizando un problema y
diseñando una solución
Introducción
Dentro de cualquier lógica en un programa podemos encontrarnos con diferentes formas de plantear
una solución.
Con la tecnología Java, existen una serie de características que nos pueden ayudar a simplificar el
problema. La programación orientada a objetos permite simplificar la estructura de elementos en
una aplicación, implementando los diferentes tipos de soluciones y llegando a un nivel mucho más
óptimo en el momento de construir el análisis que nos llevará a completar la aplicación.
Objetivos
Conocer los objetivos de las aplicaciones Java.
Introducir al usuario en la programación orientada a objetos, mostrando sus características y
cómo pueden ayudarnos a solucionar un problema lógico dentro del lenguaje Java.
Herencia
Es una de las principales ventajas de la POO. Esta característica permite definir clases descendentes
a partir de otras, de forma que la nueva clase (la clase descendente) hereda de la clase antecesora
todas sus propiedades y métodos.
La nueva clase puede definir nuevas propiedades y métodos, además puede redefinir propiedades y
métodos ya existentes. Es la forma natural de definir objetos en la vida real.
Si nos posicionamos en el ejemplo de la clase Coche, podremos visualizar las ventajas de utilizar
herencia. En la vida real, todo coche tiene las mismas características: ruedas, puertas, asientos,
www.learning.es
Para uso exclusivo de los alumnos de LEARNING & TRAINING CLOUD, S.L.
velocidad, marchas, cilindradas. También todo coche tiene las mismas acciones: arrancar, frenar,
acelerar, girar, cambiar marchas, etc.
Hasta ahí podemos definir cualquier vehículo que podamos pensar. Tenemos un coche “base” o
inicial, pero existen multiples tipos de coche, todo terrenos, utilitarios, deportivos, formula 1, etc.
Para crearnos un 4X4, debemos utilizar las mismas características de un coche y cambiarlo o
implementarlo para adaptarlo al nuevo tipo de vehículo. Los ingenieros que vayan a diseñar el 4X4
no vuelven a investigar la creación de un coche desde cero, pensando en cómo arrancar o frenar,
sino que utilizan la tecnología ya creada del coche para “mejorarlo”, utilizando todo lo que tiene un
coche y añadiendo características a su nuevo objeto. No comienzan desde cero, sino que ya tienen
una base desde la que trabajar. Ese es el concepto de Herencia en POO.
Vemos el concepto desde el ejemplo anterior de la clase Coche, incluyendo una propiedad llamada
velocidadmaxima:
public class Coche
{
public Coche()
{
velocidad = 0;
numeropuertas = 5;
velocidadmaxima = 180;
}
public int velocidad;
public int velocidadmaxima;
public int numeropuertas;
public void arrancarCoche()
{
velocidad = 0;
}
public int acelerarCoche()
{
velocidad = velocidad + 10;
}
}
En el constructor de la clase hemos definido que la nueva propiedad velocidadmaxima será de
180, de forma que cualquier Coche podrá acelerar, arrancar, mostrar la velocidad o un número de
puertas.
Si deseamos crearnos un deportivo, podemos afirmar correctamente que un deportivo es un Coche,
por lo que no tenemos que volver a definir las características del coche ni tenemos que volver a
escribir sus métodos. Bastaría con comenzar desde nuestra clase Coche y mejorarlo:
public class Deportivo: Coche
{
public int numeromarchas;
public Deportivo ()
{
numeromarchas = 7;
velocidadmaxima = 270;
}
}
Los dos puntos a continuación del nombre de la clase indican que la clase Deportivo hereda de la
clase Coche, lo que quiere decir que un deportivo tendrá las mismas características que un coche,
pero con una velocidad máxima superior. Además nos hemos creado una propiedad que indica que
un Deportivo contiene siete marchas.
Con todo éste concepto lo que podemos afirmar que un Deportivo es un Coche, pero mejorado.
www.learning.es
Para uso exclusivo de los alumnos de LEARNING & TRAINING CLOUD, S.L.