Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Podríamos hablar mucho más de Java, de todas sus versiones o
características, pero como se trata de aprender a programar en Java,
vamos a ir al grano y vamos a aprender a escribir código y crear
nuestras propias aplicaciones.
Primer Programa
Vamos a dar ya los primeros pasos en programación propiamente dicha.
Hay que aclarar que el texto grisaceo, no se ejecuta, eso no lo
interpreta Java como código a ejecutar, son comentarios orientativos
para nosotros. (Se explicará bien en la siguiente lección).
package aulafacil; => Nos aparece por defecto, hay que dejarla tal cual.
System.out.println no es más que una función del sistema, que escribe por
consola lo que pongamos entre comillas, como es el caso del ejemplo.
Esto es, en general, todo lo que hay que explicar de este programa.
Comentarios
Los comentarios son muy importantes en programación.
Partiendo del programa que tenemos hecho de "hola mundo",
eliminemos todo el código que está con letra gris (comentarios), así
veremos como no cambia nada...Puesto que eso no se ejecuta.
Quedaría así:
Los tipos de datos que más vamos a usar son los siguientes:
En ellas será donde almacenemos todos los datos con los que vamos a
trabajar.
int num;
num = 3;
Operadores Aritméticos
El lenguaje Java soporta varios operadores aritméticos para los números
enteros y en coma flotante.
Se incluye + (suma), - (resta), * (multiplicación), / (división),
y % (módulo, es decir, resto de una división entera).
Operador Uso Descripción
+ op1 + op2 Suma op1 y op2
- op1 - op2 Resta op2 de op1
* op1 * op2 Multiplica op1 por op2
/ op1 / op2 Divide op1 entre op2
% op1 % op2 Calcula el resto de dividir op1 entre op2
¡Ánimo!
Solución al Ejercicio° 1
¿Has sido capaz de crear el programa por ti mismo? ¡Muy bien! Aquí
tenemos la solución...
Y ahora, debajo de todo esto, tenemos que hacer las operaciones con
esas 2 variables, así:
Como véis, la variable "resultado" va cambiando de valor, o sea, su
valor se va machacando.
Realmente, Scanner es una clase, y se está creando un objeto de dicha
clase.
Hay que dejar claro, que si la variable fuese por ejemplo tipo "double",
entonces esta línea debería escribirse así: num=leer.nextDouble(); Para
que lea un valor tipo Double.
Os animo a realizar el ejercicio anterior, pero que esta vez los valores se
introduzcan por teclado, en vez de utilizar los valores preestablecidos
del 20 y el 10. Modificando un par de líneas se puede hacer.
¡A practicar!
Funciones
Las funciones, como su propio nombre indica, se encargarán de hacer
una "función" concreta de nuestro programa.
El sistema ya tiene muchas funciones establecidas, pero tu mismo
también puedes crear funciones.
Vamos a suponer, que queremos mostrar el "Hola Mundo" cada vez que
queramos y de forma fácil, podemos hacer lo siguiente:
De esta forma, cada vez que quisieramos escribir el "Hola Mundo", nos
bastaría con llamar a la función, y no lo tendríamos que hacer varias
veces. Esa es la idea de las funciones.
Hay más tipos de funciones
Fijaos que dentro de la función la variable se llama "numero", pero
contiene el valor de "num". Esto se entenderá en la siguiente lección, el
ámbito de las variables.
El último tipo de función que nos falta por ver son las que reciben datos
y devuelven un dato.
Vamos a realizar una función que sume dos variables pasadas por
parámetro.
En la creación de la función, hemos cambiado el void por int...Void
significaba que no devolvía ningún valor, y como esta vez devuelve un
número entero, ponemos int.
Para devolver el valor, tenemos que utilizar la palabra return, como veis
en la función.
Las variables locales como veis, solo se pueden utilizar en el ámbito en
el que las creamos.
Ahí va:
Pregunta 1: n vale 2
Pregunta 2: n vale 10
Cadena de caracteres
Las cadenas de caracteres son un tipo de dato muy utilizado. Para crear
una cadena, lo haremos a través de la clase String que nos ofrece Java.
Como he dicho antes, los "String" es una clase de Java, por ello cuando
yo creo una variable de este tipo, tenemos dentro de esta variable, una
serie de métodos que nos ofrecerán información de esta variable.
cadena
Nos aparece una lista con todos los métodos de esta cadena. En este
ejemplo, he escogido la de "length", la cual devuelve un entero (la
longitud de la cadena), el método funciona como una función.
Ese método lo que hace es reemplazar todas las letras 'o' que haya en la
cadena por la letra 'a'.
Este programa solo muestra algo por pantalla, si el valor que has
introducido es menor o igual que 5.
if (condición)
{
instrucciones...
}
Esos son los distintos operadores que se pueden utilizar para comparar.
Para eso está el "else", que significa "si no...". Vamos a añadirle al
programa ese "else".
Sentencias If (2)
Aún queda algo por ver de las sentencias IF. Más concretamente en la
parte de la condición del IF.
Pues ahora vamos a ver como poner condiciones más particulares por
decirlo así.
Podemos poner más de una condición. Esto se lleva a cabo con los
operadores condicionales.
Operado
Uso Devuelve verdadero si...
r
op1 y op2 son ambos verdaderos,
&& op1 && op2
condicionalmente evalúa op2
op1 o op2 son verdaderos, condicionalmente
|| op1 || op2
evalúa op2
! ! op op es falso
n <= 5 || n >= 2
Switch
También existen ocasiones o programas donde se exige evaluar muchas
condiciones a la vez, en estos casos, o se usan una condición compuesta
muy grande o se debe intentar convertir el problema a uno que se
pueda resolver usando la instrucción switch();
Esta instrucción es muy útil por ejemplo si vamos a hacer un menú. Por
ejemplo:
case 1:
Bucles -While
La sentencia "While" existe en la mayoría de lenguajes de programación,
y es algo que hay que saber si o si para el aprendizaje de la
programación.
n comienza inicializada en 0.
Bucles - For
Como bien indica el título de esta lección, las sentencias For, también
son bucles. Este tipo de bucles tiene particularidades con respecto al
While. Vamos a ver su funcionamiento:
Buscar
Ejercicio (nº 2)
Para que vayas aprendiendo más rápidamente, te proponemos un
ejercicio más complejo que el anterior y que utilice los nuevos conceptos
aprendidos:
Es decir, la primera tiene que ser una función que haga todo el proceso,
y la segunda igual, una función que haga la comprobación de si eres o
no mayor de edad.
¡Ánimo!
Voy a mostrar primero las dos funciones, y luego el menú (que se crea
en el "main") como ya sabréis.
Lo ideal sería que cuando termine de hacer dicha función, nos lleve de
nuevo al menú a elegir opción de nuevo ¿no?
int[] numeros;
Eso si, ahora hay que darle un índice, para saber de cuántos elementos
se compone el Array.
Luego se muestran por consola con el System.out.println, como
siempre.
Pero ¿qué problema hay en todo eso? Pues que imagina que tenemos un
Array de 200 elementos...¿No sería un poco engorroso mostrar los
elementos? Costaría mucho trabajo además.
Pues bien, la solución es utilizar un bucle For, para los Arrays son
ideales.
Veamos como mostrar todos los elementos del Array de forma fácil.
¿Como se podría comprobar esto? Pues mostrando por consola todos los
valores del Array. Para ello, necesitamos de nuevo hacer los dos For
anidados.
Debajo de todo este código, escribimos estos dos bucles para mostrar el
Array multidimensional.
Arrays Multidimensionales
Como su propio nombre indica, son Arrays de más de una dimensión.
Vamos a ver los de 2 dimensiones.
¿Como se podría comprobar esto? Pues mostrando por consola todos los
valores del Array. Para ello, necesitamos de nuevo hacer los dos For
anidados.
Debajo de todo este código, escribimos estos dos bucles para mostrar el
Array multidimensional.
Programación orientada a objetos (POO)
Hasta ahora todo lo que hemos visto, son cosas generales de lenguajes
de programación.
Por ejemplo:
Atributos de la Clase
Los atributos de una Clase son aquellas variables que compartirán todos
los objetos que creemos de esta Clase.
Para no alargarlo mucho, creamos solo 3 variables (pueden ser las que
creamos convenientes), depende del problema en cuestión.
Lo que pasa que al ser variables de una Clase (atributos) tienen una
peculiaridad. Si os fijáis le hemos delante la palabra private.
Esto es para que los atributos de esta Clase sean "privados". Eso
significa que no se pueden modificar desde otras Clases, solo desde la
Clase propia. (Ya veremos como hacerlo a través de MÉTODOS).
Generalmente siempre se ponen las variables privadas
Constructor
El constructor siempre tiene el mismo nombre que la Clase y se utiliza
para construir objetos de esa Clase.
Si os dáis cuenta es muy parecido a una función. Lo que pasa que el
constructor no tiene valor de retorno, no es necesario.
Es decir, cada que vez queramos crear un nuevo Coche, por parámetro
hay que pasarle la marca, color, y km, para que se asignen esos valores
a los atributos de la Clase.
Métodos
Los métodos son como una Función (visto anteriormente en la lección
13).
Lo que pasa que los métodos están dentro de una clase, es decir, que
son funciones que solo utilizan los objetos de esta Clase, en este caso,
los coches que creemos.
En esta Clase Coche, vamos a crear solo 3, que son los siguientes:
o Método para añadir más Km al coche.
o Método para saber cuántos Km lleva recorrido el coche.
o Método para saber de qué color es el coche.
Objetos
Pues bien, ya hemos terminado de programar nuestra Clase Coche.
Ahora, vamos a darle utilidad a dicha Clase.
Es decir, que todos los Objetos que creemos del tipo "Clase Coche", van
a tener las mismas variables y métodos, porque como ya hemos visto,
todos comparten esa 'plantilla', por llamarlo de alguna manera.
Fijaros en los parámetros con los datos del Coche...¿Qué son esos
parámetros?
Esos parámetros son los que nos pide el Constructor de la Clase. En este
caso era así:
Para el paso por parámetro: Los valores que sean tipo String se pasan
entre comillas, y los númericos sin comillas, como vemos en el ejemplo.
Cada vez que queramos crear un Objeto Coche, tenemos que darle esos
valores (Hay que ceñirse al Constructor). Más adelante veremos como
crear diferentes Constructores de una Clase.
Ahora bien, si escribimos por ejemplo: c1. nos aparecerán todos los
métodos que pertenecen a esa Clase Coche. Se ve el ejemplo con esta
imagen:
Los 3 primeros que están en negrita vemos que son los métodos que
creamos para dicha Clase.
El resultado es el siguiente:
Ejercicio (nº 3)
De nuevo llegamos a la realización de otro ejercicio. En este caso se
trata de construir una nueva Clase, pero lo vais a tener que hacer desde
0 vosotros mismos.
Y eso es todo. Seguro que puedes llevarlo a cabo. Ya sabes que
cuando termines el ejercicio, puedes comprobar la solución en la
siguiente lección.
La verdad que era muy similar a la otra Clase que ya habíamos creado
anteriormente (Clase Coche), así que imagino que lo habréis llevado a
cabo sin muchos problemas.
Packages e imports
Los Packages son un agrupamiento de clases con características
comunes.
Todas las Clases que tenemos creadas en este proyecto "AulaFacil",
pertenecen al package de "aulafacil", como bien nos indican al principio
de cada archivo.
import vehiculo.Bici
Herencia de Clases
En esta lección vamos a aprender a crear Clases heredadas. Este es un
tema avanzado, pero vamos a verlo por encima para que conozcáis su
existencia.
Una Clase heredada no es más que una Clase que hereda de otra, y que
al heredar, se constituye de todos los atributos y métodos de la misma.
Lo añadimos arriba del otro constructor. Ahora esta Clase Coche tiene 2
constructores.
Creemos la clase Coche_Carreras.
Esta nueva Clase solo tiene un constructor, que paso a explicar ahora
como funciona.
Si te fijas el this. solo se pone cuando las variables que tengo que
asignar TAMBIÉN pertenecen a la Clase Coche.
¿Por qué? Muy sencillo, porque esas variables también existen en la otra
Clase, entonces hay que indicarle al programa CUAL es la variable que
estoy asignando, si la de la Clase Coche, o la de la Clase
Coche_Carreras.
Sirven para hacer referencia a una Clase u otra, como ya hemos visto
por encima en la lección anterior, con la palabra this.
Todas las Clases que hereden a la Clase Coche, serán sus SubClases...Y
las Clases heredadas tendrán como SuperClase a la Clase Coche.
Para ver mejor todo este tema, vamos a crear un nuevo Método en
la Clase Coche_Carreras:
Una vez hecho esto, vamos a ver para qué sirven estas dos palabras
"this" y "super". Primero hay que dejar claro que son términos que se
utilizan en el constructor de una Clase.
Nos aparece la siguiente ventana con las opciones que podemos utilizar.
Como observaréis, no aparece ni la variable String "competicion" y
tampoco aparece el nuevo método que hemos creado en esta Clase.
¿Por qué?
Este método lo que hará es cambiar el color y marca del coche. Pero
claro, ¿qué ocurre si solo queremos cambiar la marca, por ejemplo?
Clase Moto
Clase Bici
Clase Persona
Esas son las Clases sobre las que trabajaremos el último ejercicio.
Vamos a montar una estructura un poco más compleja.
Empezaremos por darle forma a las Clases Moto y Bici, que estaban
vacías:
Clase Bici: La Clase Bici será similar a la Clase Moto, tendrá los
siguientes datos. Como atributos tendrá el Modelo (String) y el precio
(double). Solo tendrá un constructor, el cual recibirá por parámetros el
modelo y el precio de la bici.
Clase Persona: Las modificaciones de esta Clase son las siguientes.
Añadirle 2 atributos más de los que tiene, que son un Objeto tipo Bici y
otro tipo Moto. (Solo crearlos, sin hacerle el "new...".
Tiene un solo constructor esta Clase. Le vamos a añadir dos más. Uno
para crear a una persona con Moto y otra con Bici.
Para una persona con Bici, la cabecera será la siguiente: public Persona
(String nom, int e, String modelo_bici, double precio)
Y para una persona con Moto: public Persona (String nom, int e, String
marca_moto, int cilindrada)
Para acabar con la Clase Persona, hay que añadirle dos métodos, uno
para Obtener el Objeto Bici y otro para Obtener el Objeto Moto.
Clase Moto
Muy sencillita y similar a las Clases que hemos ido viendo durante el
curso.
Clase Bici
Vamos a ir viendo poco a poco las líneas que hay que añadirle, tal y
como nos indica el enunciado del ejercicio.
Y como atributo se le añade una variable tipo Bici y otra tipo Moto. Solo
se declaran, no se crean.
Se crearán dentro del constructor que nos indique que la Persona tiene
Moto o Bici.
Se crean los dos constructores que se pedían: Uno con los datos de la
Bici y otro con los datos de la Moto (aparte de los datos de la persona,
claro).
Aquí es donde se crean los Objetos de la Moto o Bici, según el
constructor que se llame.
Clase Persona:
Esta es la estructura que pedía el ejercicio. Pero para comprobar su
correcto funcionamiento, vamos a realizar un programa de prueba.
Crearé una Persona de cada tipo, una que no tenga vehículo, otra que
tenga moto, y otra que tenga bici, y mostraremos sus datos.
Aulafacil.java: Muestra por consola los datos de cada Persona