martes, 10 de marzo de 2026

Sesión 4 (Materiales y Vídeos)

- Comentarios (JavaDoc) 

- Documentar un proyecto es algo fundamental de cara a su futuro mantenimiento. Cuando  programamos una clase, debemos generar documentación lo suficientemente detallada sobre ella como para que otros programadores sean capaces de usarla sólo con su interfaz.  Sin necesidad de leer o estudiar su implementación.
Javadoc es una utilidad de Oracle para la generación de documentación de APIs en formato HTML y otros formatos a partir de código fuente Java.
BlueJ también utiliza javadoc y permite la generación automática de documentación, y visionarla bien de forma completa para todas las clases de un proyecto, o bien de forma particular para una de las clases de un proyecto.
Recomendación al documentar una clase:
 a) Nombre de la clase, descripción general, número de versión, nombre de autores.
 b) Documentación de cada constructor o método.
 c) En BlueJ disponemos de la opción del menú Tools --> Project Documentation, que nos abre la documentación del proyecto en un navegador web. Para ver la documentación de una clase específica en BlueJ, debemos abrir la ventana de código, y en la parte superior derecha cambiar la pestaña que pone “Source code” por la opción “Documentation”. Además de documentar las clases, todo proyecto debería tener un archivo Leeme o Readme. En BlueJ podemos acceder al readme.txt de proyecto haciendo doble click en el icono que representa una hoja en la parte superior izquierda del diagrama de clases. En el readme.txt sería adecuado incluir al menos: título del proyecto, descripción, versión, cómo arrancar el proyecto, autores e instrucciones para los usuarios. 

Para que javadoc sea capaz de generar documentación automáticamente han de seguirse estas reglas:

a) La documentación para javadoc ha de incluirse entre símbolos de comentario que han de empezar con una barra y doble asterisco, y terminar con un asterisco y barra simple.

/**

 * Esto es un comentario para javadoc 

 */

 

b) La ubicación le define a javadoc qué representa el comentario: si está incluido justo antes de la declaración de clase se considerará un comentario de clase, y si está incluido justo antes de la signatura de un constructor o método se considerará un comentario de ese constructor o método.

c) Para alimentar javadoc se usan ciertas palabras reservadas (tags) precedidas por el carácter "@", dentro de los símbolos de comentario javadoc. Si no existe al menos una línea que comience con @ no se reconocerá el comentario para la documentación de la clase.

Ejemplo de palabras reservadas:

   @author (Nombre autor/es)

   @param (Nombre de parámetro y descripción)

   @return (Descripción del valor de retorno)

   @versión (Número de versión)

Las etiquetas @author y @version se usan para documentar clases e interfaces. Por tanto no son válidas en cabecera de constructores ni métodos. La etiqueta @param se usa para documentar constructores y métodos. La etiqueta @return se usa solo en métodos de tipo función.

 


- Diferentes ficheros que se generan. 
Los archivos .java contienen el código fuente (entendible por humanos) que en un momento dado podemos modificar con un editor de textos y suelen encontrarse en carpetas de nombre src (source). Los archivos .class contienen el bytecode (no entendible por humanos pero sí por la máquina virtual Java) y suelen encontrarse en carpetas de nombre bin (binary).
La organización de los archivos en carpetas y la presencia de otros adicionales depende del entorno de desarrollo que utilicemos. Además, Java introduce un esquema organizativo a través de paquetes (packages) que comentaremos más adelante.
Para trabajar con proyectos en la mayoría de entornos, incluido BlueJ, debemos tenerlos en un soporte grabable accesible (por ejemplo en una carpeta de nuestro disco duro). No es válido por tanto un cd, dvd, unidad remota restringida o carpeta del disco duro con restricciones. El motivo es que los entornos de desarrollo trabajan grabando información en la carpeta del proyecto que se encuentre activo. Por tanto un soporte no escribible no es adecuado. Si queremos trabajar con un proyecto contenido en un cd o dvd, primero lo copiaremos a nuestro disco duro y después lo abriremos para trabajar con él.
Vamos a crear nuestro primer proyecto. Para ello conviene crear primero una carpeta donde ir almacenando los proyectos que vayamos creando. Hazlo en la ruta que te parezca más adecuada.
los archivos de los que consta nuestro proyecto:
· Ejemplo.java: el código fuente en lenguaje Java.
· Ejemplo.class: el bytecode o código máquina para la máquina virtual Java.
· Otros archivos: archivos creados por BlueJ a los que de momento no vamos a prestar atención.
Pulsa ahora sobre el icono del archivo Ejemplo.java y con el botón derecho del ratón elige “Abrir” para verlo con un editor de texto como el bloc de notas. Al abrirse el archivo podrás ver el código fuente (e incluso podríamos cambiarlo desde aquí si quisiéramos). Cierra el editor y trata de repetir el proceso con el icono del archivo Ejemplo.class. El resultado será que Windows te indica que no sabe cómo abrir ese archivo, o, si logras abrirlo, que te aparezcan una serie de caracteres “raros”. Esto concuerda con lo que habíamos dicho: el código fuente está constituido por texto y podemos verlo y editarlo. El bytecode es un tipo de código máquina, por tanto no podemos editarlo directamente porque no es comprensible para nosotros.
Ya hemos visto que el archivo Pieza.java contiene un código. Esa es la razón por la que nos ha sido posible compilar anteriormente usando BlueJ. Vuelve a BlueJ y para acceder al código que se encuentra en la clase hacemos doble click en el icono, con lo cual se nos abrirá la ventana del editor de BlueJ.

Vídeo de Diferentes Ficheros que se generan. 


- Compilación desde el CMD. 

Las aplicaciones a los usuarios finales, son ejecutadas de diferentes maneras.  Las aplicaciones tienen un solo punto de comienzo.  
En Java cuando se inicia un programa Java, el nombre de la clase se especifica como un parámetro del comando inicio.

Ejemplo java Pieza

El comando java inicia la máquina virtual de Java y luego buscará un método main que tenga la siguiente sintaxis:

    public static void main(String[ ] args)

Para compilar el código fuente Java se usa el compilador de Java, el compilador de Java es un programa que a partir del código fuente genera archivos de bytecode, el programa y comando del compilador de Java es javac.

Con el parámetro -classpath se indica la ubicación de las librerías o dependencias que requiriere el código fuente, con el parámetro -sourcepath el directorio raíz de los archivos de código fuente, el parámetro -source indica la versión del lenguaje del código fuente, -target la versión de la máquina virtual del bytecode que generará el compilador y con el parámetro -d el directorio donde generan los archivos class con el bytecode.

1
2
3
#!/usr/bin/env bash
javac -classpath "libraries/*" -sourcepath src/main/java -source 1.8 -target 1.8 -d target/classes 
cp -r src/main/resources/* target/classes


Una vez generados los archivos de bytecode a partir de la compilación del código fuente su ejecución se realiza con el comando java donde hay que indicar las ubicaciones del los archivos class y las librerías jar necesarias que necesiten, la clase principal con el punto de entrada del programa que contenga un método public static void main(String[] args) y los parámetros del programa que se reciben en el parámetro args del método main. En la ejecución del programa la máquina virtual de Java interpreta el bytecode que consiste en traducir a código máquina ejecutable por el procesador del sistema anfitrión.

La compilación e interpretación de este pequeño programa Java. Lo haremos usando la ventana consola del DOS. Para visualizar esta ventana debemos proceder así: Inicio -> Todos los programas -> Accesorios -> Símbolo del sistema. Sobre la ventana consola escribiremos el comando “cd [Dirección donde tenemos los ficheros]” y pulsaremos enter.
Esto nos traslada a la carpeta donde se ubica nuestro archivo (“Pieza.java”).  A continuación daremos la instrucción para que se realice el proceso de compilación del programa, para lo que escribiremos “javac Pieza.java”, donde “javac” es el nombre del compilador (javac.exe) que transformará el programa que hemos escrito nosotros en lenguaje Java al lenguaje de la máquina virtual Java (bytecode), dando como resultado un nuevo archivo “Pieza.class” que se creará en este mismo directorio. Si te aparece un mensaje de error revisa todos los pasos anteriores que hemos explicado, pues es posible que no se hayan creado las variables de entorno o que el archivo no esté bien ubicado, etc. Para comprobar si se ha creado el archivo escribiremos en la ventana consola el comando “dir”. Comprobaremos que nos aparecen dos archivos: Pieza.class (bytecode creado por el compilador) y Pieza.java (código fuente creado por nosotros).
Finalmente, vamos a pedirle al intérprete que ejecute el programa, es decir, que transforme el código de la máquina virtual Java en código máquina interpretable por nuestro ordenador y lo ejecute. Para ello escribiremos en la ventana consola: java Pieza.

Vídeo de Compilación desde el CMD. 

Nota: Configurar la Variable Java HOME

JAVA_HOME, es una variable de entorno del sistema que informa al sistema operativo sobre la ruta donde se encuentra instalado Java. Seguiremos la siguiente secuencia de pasos para configurar esta variable:

Abrimos el explorador de Windows o pulsamos sobre “Mi Pc”. Pulsamos sobre Equipo y con botón derecho del ratón o buscando el icono -> Propiedades -> Configuración avanzada / Cambiar configuración -> Opciones avanzadas -> Variables de entorno -> Nueva (Variables del sistema).

Pueden exisitir diferencias dependiendo de la versión del Sistema Operativo instalado.

- Activídad 4 

Fecha tope el día 16 de marzo de 2026 a las 23:59 horas.

Por correo electrónico a: luis.vazquez@lugo.uned.es

Aprovechando el trabajo realizado en la actividad 3, vamos a añadirle el método main() para su funcionamiento desde el CMD del ordenador, independientemente del entorno BlueJ.

Ejercicio de Programación Java Pieza de Repuesto.

Supongamos que vamos a programar una aplicación básica para una empresa de recambios del automóvil.

Esta aplicación necesitará controlas las características que definen una PIEZA y que vendrán dada por la clase PIEZA.

La clase Pieza tiene las siguientes propiedades:
"Nombre": Cadena de texto que indica el nombre de la Pieza.
"Marca": Cadena de texto que indica la marca de vehículos para el que vale. (suponemos que solo sirve para una marca).
"Precio": Número con decimales que indica el precio en Euros.

Constructor programe un constructor que reciba como parámetro un nombre, marca y precio y los asigne a cada propiedad.

- Métodos get y set
Programe métodos set y get para cada propiedad.

- Método toString Programe el método toString de forma que devuelva una cadena con todas las características de la pieza. 

- Método Main().  Para probar las diferentes funcionalidades programadas anteriormente desde el CMD de Windows.


Ejemplo de Código Java para Actividad 4

En el asunto del correo indicar: Actividad 4 y Nombre y Apellidos

Adjuntar los ficheros.java creados para resolver el problema planteado "Fichero.java"



Breve Manual de MS-DOS
Cambiar de unidad

El símbolo C:\> indica que la unidad activa es la C:, es decir, el disco duro, y que el DOS esta preparado para recibir órdenes que damos desde el teclado.

Podemos cambiar de unidad por defecto (la C:) a otra simplemente escribiendo su letra seguida de dos puntos. Para los que no recuerdan que es eso de las letras y las unidades, les puedo refrescar la memoria diciéndoles que cada unidad de disco del ordenador tiene asignada una letra diferente (de la A a la Z). La C: para el primer disco duro, si tenemos otro, este hereda la letra D:

Visualizar el contenido de una unidad de disco

De la misma forma que un libro o revista tiene un índice, los discos también tienen, evidentemente de una forma diferente, pero con la misma finalidad, informar de un vistazo el contenido del mismo.

La función es sencilla, utiliza DIR para listar archivos.

NOTA: Sitúate en la unidad de la que quieres ver su listado de archivos.

Ejemplo: Visualizar el contenido de un disco

Escribe DIR

Pulsa Intro

Aparecerá un listado de archivos y carpetas, que contienen archivos en su interior, tamaño expresado en bytes, fecha, hora de última actualización (o edición), de la unidad a la que le hemos hecho el DIR.

Si el listado es muy largo (hay muchos archivos), veremos como la pantalla va muy rápida y no nos da tiempo a leerlo todo. Para remediar esto escribe el DIR seguido de /P.

Limpiar la pantalla

Ejemplo: Limpiar la pantalla de caracteres

Escribe CLS

Pulsa Intro

Ahora solo queda el identificador del DOS, a la parte superior izquierda de la pantalla.

Cambiar de directorio

Para cambiar de un directorio a otro emplead la función CD.

Ejemplo: Cambio de directorio

Escribe CD APUNTES

Pulsa INTRO

Ahora veréis a la pantalla C:\APUNTES>, esto significa que estamos dentro del directorio y, por lo tanto, ya podemos trabajar.

 

martes, 3 de marzo de 2026

Sesión 3 (Materiales y vídeos)

 - Editando una clase.

Ya tenemos varias clases creadas en nuestro entorno de desarrollo. Pero el código existente es un código de ejemplo que, aunque nos puede ser útil en algún momento. Vamos a escribir nuestro código partiendo de cero.

Por ello, abrimos el editor y borramos todo el código existente dejando el editor sin contenido. A continuación escribiremos lo siguiente:

/* Ejemplo - Curso de Iniciación a Java */

public class Ejemplo {
        public static void main(String[ ] arg) {
            System.out.println("Hola java");
        }
    }

 

 

Seguidamente hacemos AutoLayout, compilamos el código y cerramos el editor. En la ventana principal de BlueJ veremos el icono de la clase Ejemplo. Nos situamos sobre él y pulsamos el botón derecho

               

 

 

En el menú desplegable, elegimos la opción void main (String[ ] arg). Pulsamos OK y nos aparece la ventana de consola de BlueJ. En la ventana de consola nos muestra el mensajes de texto.

 

Nota: Independientemente del IDE (BlueJ, Eclipse, NetBeans, etc.) que usemos, los procesos que “en el fondo” tienen lugar son los mismos. La gestión se podrá hacer en un tipo de ventana u otra, y pulsando unos botones u otros, pero lo que realmente permite que estos entornos den lugar a resultados es el sistema Java (destacando compilador y máquina virtual) que se encuentra en nuestro ordenador.

 

Otro concepto que vamos a introducir ahora es el de bloque. Vamos a denominar bloque al código comprendido dentro de los símbolos { y }. Por lo tanto en el programa anterior podríamos distinguir dos bloques. En ocasiones indicaremos junto al símbolo de cierre del bloque algún comentario que nos permita saber a qué bloque cierra ese símbolo. Esto no es necesario ni obligado, pero cuando los programas son largos nos puede ayudar. Ejemplo:

/* Ejemplo - Curso de iniciación a Java */

public class Ejemplo {

        public static void main(String [ ] arg) {

                        System.out.println("Hola Java"); 

                } //Cierre del main

} //Cierre de la clase

 

TIPOS DE DATOS (VARIABLES) EN JAVA.

Los primeros lenguajes de programación no usaban objetos, solo variables. Una variable podríamos decir que es un espacio de la memoria del ordenador a la que asignamos un contenido que puede ser un valor numérico (sólo números, con su valor de cálculo) o de tipo carácter o cadena de caracteres (valor alfanumérico que constará sólo de texto o de texto mezclado con números).

Como ejemplo podemos definir una variable a que contenga 32 y esto lo escribimos como a = 32. Posteriormente podemos cambiar el valor de a y hacer a = 78. O hacer “a” equivalente al valor de otra variable “b” así: a = b.

Dado que antes hemos dicho que un objeto también ocupa un espacio de memoria: ¿en qué se parecen y en qué se diferencia un objeto de una variable? Consideraremos que las variables son entidades elementales: un número, un carácter, un valor verdadero o falso… mientras que los objetos son entidades complejas que pueden estar formadas por la agrupación de muchas variables y métodos. Pero ambas cosas ocupan lo mismo: un espacio de memoria (que puede ser más o menos grande).

En Java diferenciamos dos tipos de datos: por un lado, los tipos primitivos, que se corresponden con los tipos de variables en lenguajes como C y que son los datos elementales que hemos citado. Por otro lado, los tipos objeto (que normalmente incluyen métodos).

Veamos los tipos de datos en Java sobre un esquema de síntesis:

Este esquema no es necesario aprendérselo de memoria en todos sus detalles, aunque sí lo iremos memorizando poco a poco a medida que lo utilicemos, por lo menos hasta tener en nuestra cabeza los nombres de todos los tipos primitivos y envoltorio y sus características (si son objetos o no y su rango aproximado). A continuación mostramos el mismo esquema en formato de tabla:

TIPOS DE DATOS EN JAVA

 

NOMBRE

TIPO

OCUPA

RANGO APROXIMADO

TIPOS PRIMITIVOS

(sin métodos; no son objetos; no necesitan una invocación para ser creados)

byte

Entero

1 byte

-128 a 127

short

Entero

2 bytes

-32768 a 32767

int

Entero

4 bytes

2*109

long

Entero

8 bytes

Muy grande

float

Decimal simple

4 bytes

Muy grande

double

Decimal doble

8 bytes

Muy grande

char

Carácter simple

2 bytes

---

boolean

Valor true o false

1 byte

---

     

TIPOS OBJETO

(con métodos, necesitan una invocación para ser creados)

Tipos de la biblioteca estándar de Java

String (cadenas de texto)

Muchos otros (p.ej. Scanner, TreeSet, ArrayList…)

Tipos definidos por el programador / usuario

Cualquiera que se nos ocurra, por ejemplo Taxi, Autobus, Tranvia

arrays

Serie de elementos o formación tipo vector o matriz. Lo consideraremos un objeto especial que carece de métodos.

Tipos envoltorio o wrapper (Equivalentes a los tipos primitivos pero como objetos.)

Byte

Short

Integer

Long

Float

Double

Character

Boolean

Vamos a comentar distintas cuestiones:

1. Un objeto es una cosa distinta a un tipo primitivo, aunque “porten” la misma información. Tener siempre presente que los objetos en Java tienen un tipo de tratamiento y los tipos primitivos, otro. Que en un momento dado contengan la misma información no significa en ningún caso que sean lo mismo. Iremos viendo las diferencias entre ambos poco a poco. De momento, recuerda que el tipo primitivo es algo elemental y el objeto algo complejo. Supón una cesta de manzanas en la calle: algo elemental. Supón una cesta de manzanas dentro de una nave espacial (considerando el conjunto nave + cesta): algo complejo. La información que portan puede ser la misma, pero no son lo mismo.

2. ¿Para qué tener esa aparente duplicidad entre tipos primitivos y tipos envoltorio? Esto es una cuestión que atañe a la concepción del lenguaje de programación. Tener en cuenta una cosa: un tipo primitivo es un dato elemental y carece de métodos, mientras que un objeto es una entidad compleja y dispone de métodos. Por otro lado, de acuerdo con la especificación de Java, es posible que necesitemos utilizar dentro de un programa un objeto que “porte” como contenido un número entero. Desde el momento en que sea necesario un objeto habremos de pensar en un envoltorio, por ejemplo Integer. Inicialmente nos puede costar un poco distinguir cuándo usar un tipo primitivo y cuándo un envoltorio en situaciones en las que ambos sean válidos. Seguiremos esta regla: usaremos por norma general tipos primitivos. Cuando para la estructura de datos o el proceso a realizar sea necesario un objeto, usaremos un envoltorio.

3. Los nombres de tipos primitivos y envoltorio se parecen mucho. En realidad, excepto entre int e Integer y char y Character, la diferencia se limita a que en un caso la inicial es minúscula (por ejemplo double) y en el otro es mayúscula (Double). Esa similitud puede confundirnos inicialmente, pero hemos de tener muy claro qué es cada tipo y cuándo utilizar cada tipo.

4. Una cadena de caracteres es un objeto. El tipo String en Java nos permite crear objetos que contienen texto (palabras, frases, etc.). El texto debe ir siempre entre comillas. Muchas veces se cree erróneamente que el tipo String es un tipo primitivo por analogía con otros lenguajes donde String funciona como una variable elemental. En Java no es así.

5. Hay distintos tipos primitivos enteros. ¿Cuál usar? Por norma general usaremos el tipo int. Para casos en los que el entero pueda ser muy grande usaremos el tipo long. Los tipos byte y short los usaremos cuando tengamos un mayor dominio del lenguaje.

6. ¿Cuántos tipos de la biblioteca estándar de Java hay? Cientos o miles. Es imposible conocerlos todos.

7. ¿Un array es un objeto? Los arrays los consideraremos objetos especiales, los únicos objetos en Java que carecen de métodos.

DECLARACIÓN E INICIALIZACIÓN DE VARIABLES EN JAVA.

Nos valdremos primeramente de algunos tipos primitivos usados habitualmente como son int (entero), String (cadena de caracteres), boolean (valor booleano verdadero o falso), float (decimal simple), etc.


/* Ejemplo - Curso de Iniciación a a Java  */

public class Ejemplo2 {

private int precio; /* Las instrucciones y declaraciones finalizan con */

private int importe_acumulado;

private String profesor;

private String aula;

private int capacidad;

private boolean funciona;

private boolean esVisible;

private float diametro;

private float peso;

private short edad;

private long masa;

private char letra1;

//Cierre de la clase

 

Hemos declarado variables de tipo primitivo u objeto usando la sintaxis private tipoElegido nombreVariable;

La palabra clave private es un indicador de en qué ámbito del programa va a estar disponible la variable. Supón que el programa es un edificio con gente trabajando y que hay elementos en el edificio, por ejemplo una impresora, que pueden tener un uso: individual para una persona, colectivo para un grupo de personas, colectivo para todas las personas de una planta, colectivo para todas las personas de un departamento aunque estén en varias plantas, o colectivo para todo el edificio. Pues bien, las variables en Java van a quedar disponibles para su uso en ciertas partes del programa según especifiquemos con las palabras clave public, private, protected, package, etc. Lo veremos más adelante, ahora simplemente nos interesa ver cómo declarar variables y usaremos de forma preferente la palabra clave private.

El hecho de declarar una variable implica que se reserva un espacio de memoria para ella, pero no que ese espacio de memoria esté ocupado aunque pueda tener un contenido por defecto. Ten en cuenta que en Java no puedes aplicar algunas normas que rigen en otros lenguajes, como que al declarar una variable entera ésta contendrá por defecto el valor cero. En Java esta situación puede dar lugar a errores de compilación: una variable entera no debemos suponer que contenga nada. Para que contenga algo debemos asignarle un contenido. Veamos ejemplos de asignación de contenido:

/* Ejemplo - Curso de Iniciación a Java */

Precio = 42; /* Entero tipo int. Un número sin punto decimal se interpreta normalmente como int. */

importe_acumulado = 210; // Entero tipo int

profesor = “Ernesto Juárez Pérez”; // Tipo String

aula = “A-44”; // Tipo String

capacidad = 1500; // Entero tipo int

funciona = true; // Tipo boolean

esVisible = false; // Tipo boolean

diametro = 34.25f; // Tipo float. Una f o F final indica que es float.

peso = 88.77; /* Tipo double. Un número con punto decimal se interpreta normalmente como double. */

edad = 19; // Entero tipo short

masa = 178823411L; // Entero tipo long. Una l o L final indica que es long.

letra1 = ‘h’; // Tipo char (carácter). Se escribe entre comillas simples.

 Hemos planteado la declaración de variables en primer lugar y la asignación de contenido en segundo lugar y por separado porque será una forma habitual de trabajar en Java.

Esto no significa que en determinadas ocasiones no podamos declarar e inicializar (asignar contenido) simultáneamente. Por ejemplo: int edad = 19; será una expresión válida y que utilizaremos en determinadas ocasiones, según iremos viendo.

La inicialización es un paso importante de cara a permitir un uso seguro de una variable. Es tan importante, que en general plantearemos que se haga como paso previo a cualquier otra cosa. Por ejemplo, si pensamos utilizar una variable denominada precio lo primero que haremos será establecer un valor de precio o, si no lo conocemos o lo vamos a establecer más adelante, estableceremos explícitamente un valor por defecto: por ejemplo precio = - 99; ó precio = 0;. Utilizar una variable sin haberla inicializado es una práctica no recomendada en Java (mal estilo de programación) que puede dar lugar a errores o al malfuncionamiento de los programas.

   Vídeo de Clases

- Paso de parámetros. 

 MÉTODOS PROCEDIMIENTO (VOID) Y FUNCIÓN (RETURN)

Creemos una clase taxi, de la cual creamos varios objetos. en la parte inferior izquierda de la pantalla del entorno de desarrollo. Si pulsamos con botón derecho del ratón sobre ellos se nos despliegan los métodos (operaciones) disponibles para cada objeto.

 

Pulsa sobre el taxi1 y elige la opción String getDistrito.

 

La ejecución de un método se denomina habitualmente “invocación” del método o “llamada” al método. Los métodos disponibles los define la clase, pero se invocan sobre cada objeto en particular. Al invocar el método getDistrito() se nos abre una ventana de BlueJ denominada Method Result donde nos indica: returned String “Desconocido”. Le hemos pedido al objeto que nos diga cuál es su distrito y nos devuelve “Desconocido”. La razón para ello es que en el constructor de la clase incluimos una línea de inicialización de distrito para todo objeto de tipo Taxi con el valor “Desconocido”. Si en vez de ese valor hubiésemos establecido otro, ese sería el que ahora obtendríamos.

Cierra esa ventana y repite el proceso eligiendo ahora la opción void setDistrito (String valorDistrito). En el recuadro donde solicita el distrito escribe “Oeste”. No olvides incluir las comillas obligadas por tratarse de un String. Seguidamente, vuelve a invocar el método getDistrito y comprueba el resultado obtenido.

 Los métodos que hemos definido en la clase Taxi podemos clasificarlos de la siguiente manera:

a) Métodos tipo función: son métodos que nos devuelven algo. Un método es tipo función si comienza con un tipo (no consideramos ahora la palabra clave public). Por ejemplo String getDistrito() comienza con el tipo String lo que significa que nos devuelve una cadena de caracteres, mientras que int getTipoMotor() comienza con el tipo int lo que significa que nos devuelve un entero. Tener en cuenta que un método tipo función devuelve solo un dato u objeto como resultado, no varios. La devolución del resultado se expresa con la palabra clave return seguida del dato u objeto a devolver, por ejemplo return tipoMotor;.  La sentencia return implica que termina la ejecución del código en el método y estará típicamente en la línea final. De existir una línea por detrás de una sentencia return, nunca llegaría a ejecutarse (tendremos que matizar esto porque el uso de condicionales nos permitirá tener más de un return en un método). De forma genérica:

/* Ejemplo - Curso de Iniciación a Java */

//Comentario descriptivo de qué hace el método

        public tipoValorDevuelto nombreDelMétodo (tipo parámetro1, tipo parámetro2…) {

Código del método

return ResultadoQueDevuelveElMétodo;

}

 b) Métodos tipo procedimiento: son métodos que realizan ciertas operaciones sin devolver un valor u objeto concreto. Un método es tipo procedimiento si comienza con la palabra clave void (que traducido del inglés viene siendo “vacío” o “nulo”). En estos casos podemos decir que el tipo de retorno es void. De forma genérica:

/* Ejemplo - Curso de Iniciación a Java */

//Comentario descriptivo de qué hace el método

        public void nombreDelMétodo (tipo parámetro1, tipo parámetro2…) {    

Código del método

}

En general un método con tipo de retorno void no llevará sentencia return, aunque en Java se permite que un método de este tipo incluya la sentencia return;. Si ocurre esto, la sentencia da lugar a que el método finalice en ese punto sin ejecutar ninguna línea más de código. Solo tiene sentido su uso asociado a que se cumplan ciertas condiciones.

 ¿Puede un método ser al mismo tiempo función y procedimiento? Formalmente debemos evitarlo. Podríamos tratar de agrupar operaciones, pero es una situación que trataremos de evitar. Nos plantearemos como objetivo que todo método tipo función se centre en devolvernos aquello que nos interesa sin realizar otros procesos. Igualmente buscaremos que todo procedimiento realice un proceso concreto y no varios. Cada método debe realizar una tarea concreta, específica y bien definida. Un método no debe ocuparse de dos tareas.




- Errores de Compilación (parte 2) 
  • El nombre de la Clase pública no coincide con el nombre del archivo
    Cada archivo .java puede contener sólo una Clase pública.
  • Una Clase no está en el directorio correcto
    Este error de sintaxis ocurre si el comando javac no puede encontrar un archivo .java en el directorio esperado. 
  • Usando equals contra la asignación ( == versus = )
    En Java este error puede ser incluso un error de lógica o sintaxis. Para comparar 2 referencias para igualarlas se usa el operador == (el operador de igualdad). Para asignar el valor de la derecha a la variable de la izquierda se usa el operador = (operador de asignación). 
  • Error en mayúsculas y minúsculas.
    Java es un lenguaje case sensitive, esto es que debemos respetar las mayúsculas y minúsculas. (miVariable no es igual a mivariable).
  • Olvidar que los índices en Java empiezan en 0.
    Los índices de los arrays de Java y las listas empiezan en 0.
  • NullPointerException
    El NullPointerException, la maldición de los programadores en Java. Los NullPointerExceptions son errores de lógica causados cuando un programa intenta acceder a métodos o atributos en una referencia que está nula.

- Activídad 3 

Fecha tope el día 16 de marzo de 2026 a las 23:59 horas.

Por correo electrónico a: luis.vazquez@lugo.uned.es


Ejercicio de Programación Java Pieza de Repuesto.

Supongamos que vamos a programar una aplicación básica para una empresa de recambios del automóvil.

Esta aplicación necesitará controlas las características que definen una PIEZA y que vendrán dada por la clase PIEZA.

La clase Pieza tiene las siguientes propiedades:
"Nombre": Cadena de texto que indica el nombre de la Pieza.
"Marca": Cadena de texto que indica la marca de vehículos para el que vale. (suponemos que solo sirve para una marca).
"Precio": Número con decimales que indica el precio en Euros.

Constructor programe un constructor que reciba como parámetro un nombre, marca y precio y los asigne a cada propiedad.

- Métodos get y set
Programe métodos set y get para cada propiedad.

- Método toString Programe el método toString de forma que devuelva una cadena con todas las características de la pieza. 

NOTA. Pruebe los diferentes métodos de la clase, realizando diferentes pruebas.

Ejemplo de Código Java para Actividad 3

En el asunto del correo indicar: Actividad 3 y Nombre y Apellidos

Adjuntar los ficheros.java creados para resolver el problema planteado "Fichero.java"



Próxima Sesión Martes día 10 de marzo a las 18 horas.

Sesión Online en directo día 11 de marzo de 2026 a las 19:30 horas.  (No es obligatoria) Para resolución de dudas.

martes, 24 de febrero de 2026

Sesión 2 (Materiales y Videos)

El objetivo de esta sesión, es la de ver que es un proyecto en BlueJ, que son los objetos y cuales son los errores de compilación más habituales y como se pueden solucionar.

- Aclaraciones de la sesión 1.  (Tiempo estimado 10 minutos)

¿Qué sucede si tenemos un ordenador con arquitectura de 32 bits?

Actualmente Java solo da soporte para 64 bits.

Con lo cual si tenemos un sistema de 32 bits o el explorador es de 32 bits, debemos de instalar una versión anterior que soporte 32 bits.

La podemos descargar desde páginas externas a la empresa Oracle, ejemplo:

 Puedes descargar el Java de 32 bits de esta dirección web:

Y tenemos que instalar una versión de BlueJ que funcione en 32 bits.

Para 32 bits, en BlueJ descargarte la versión 4.1.4.

         La tienes en este enlace https://www.bluej.org/versions.html  (Bajar en la página y seleccionar el sistema operativo del equipo)

Video de Aclaraciones de la sesión 1

- Proyecto. (Tiempo estimado 40 minutos)

Información de Proyecto

Pasos para crear un nuevo proyecto.

1.- Crear un nuevo proyecto en BlueJ, simplemente al iniciar BlueJ, en el menú superior, pulsamos en Proyecto -> Nuevo

2.- Pulsar sobre “Nuevo“, nos aparecerá un cuadro de dialogo, donde podremos seleccionar donde queremos guardar el proyecto  y como lo queremos llamar (poner un nombre)

3.- Pulsar en “Crear“, ya podremos trabajar con el nuevo Proyecto.

Archivos de los que consta nuestro proyecto:
- Ejemplo.java: el código fuente en lenguaje java.
- Ejemplo.class: el bytecode o código máquina para la máquina virtual Java.
- Otros archivos: archivos creados por BlueJ (que no es necesario de momento entender su funcionamiento, son propios del entorno BlueJ


- Objetos. (Tiempo estimado 60 minutos)

Tipos de Clases en Java.

Podemos pensar en objetos como una pera o un lápiz y podemos distinguir clases de cosas: por ejemplo clases de vehículos.
En programación el término objeto y el término clase no guardan una correlación exacta con el significado de estas palabras en la vida diaria.
No tratéis de buscar siempre equivalencias entre objetos y clases en programación con objetos y clases de la vida diaria porque esa correspondencia exacta no existe y te llevará a confusión.
Escribir un programa en un lenguaje orientado a objetos tratamos de modelar un problema del mundo real pensando en objetos que forman parte del problema y que se relacionan entre sí.
Definición de objeto y clase, genérica.
Objeto: entidad existente en la memoria del ordenador que tiene unas propiedades (atributos o datos sobre sí mismo almacenados por el objeto) y unas operaciones disponibles específicas (métodos).
Clase: abstracción que define un tipo de objeto especificando qué propiedades (atributos) y operaciones disponibles va a tener.

Ejemplo Vehículos (Clase Principal)
               - Tracción animal. (Subclase) (Objetos: Cada animal concreto)
               - Ciclomotor. (Subclase) Objetos (Varios ciclomotores con su nº de chasis).
               - Motocicleta. (Subclase) Objetos (Varios motocicletas con su matrícula concreta)
               - Coche. (Subclase) Objetos (Varios objetos, cada coche con su matrícula concreta)
               - Camión. (Subclase) Objetos (Varios camiones con su matrícula concreta).

Nota:
        Convenio que se suele seguir en programación, para nombrar las clases y los objetos:
        - Clases: Nombre que comience en mayúscula.
        - Objetos: Nombre que comience en minúscula.

El uso de extends e implements nos va a llevar a ver el Polimorfismo y la Herencia Múltiple que se puede simular en Java, en este curso inicial simplemente lo vemos para realizar el diseño del Diagrama de Clases.


- Errores de Compilación (parte 1) (Tiempo estimado 20 minutos)
- Errores más habituales:
      - Faltan llaves de apertura o cierre.
      - Falta el punto y coma ";" al final de una instrucción.
      - Al realizar comentarios de línea con "//" le damos a ENTER y deja de ser un comentario.
      - Olvidarnos de cerrar los comentarios abiertos con /* se cierran con */
      - Confundir una una O (mayúscula con un cero) con un 0 (cero).
      - Intentar usar clase definida como privada, intentar realizar un acceso público.
      - Dejar sin cerrar algún corchete.
      - Dejar sin cerrar algún paréntesis.
      - Repetir nombre de variables, aunque sean de distinto tipo.
      - Utilizar una variable local en vez de una variable global.


Actividad a entregar de esta sesión.   (Tiempo estimado 20 minutos)

Fecha tope el día 16 de marzo de 2026 a las 23:59 horas.

Por correo electrónico a: luis.vazquez@lugo.uned.es

Actividad a realizar:  (Consiste en Diseño de Clases y Subclases)

- Crear una clase principal denominada PIEZA.

- Crear tres subclases de PIEZA, que son PiezaImportada, Almacen y Color (de tipo enumerado)

- Crear dentro del mismo diagrama otra clase principal, denominada ORIGEN (de tipo enumerado).

- Enlazar la subclase PiezcaImportada como subclase de ORIGEN (con "implements")

- Crear dentro del mismo diagrama otra clase Principal, denominada ENTREGA

- Enlazar la subclase Almacen como subclase de ENTREGA (con "implements")

En el asunto del correo indicar: Actividad 2 y Nombre y Apellidos

Adjuntar el "FICHERO DEL PROYECTO DE BLUEJ"

Nota: Si intentáis compilar este código os va a dar error.  Lo que busco con esta actividad es generar el Diagrama de Clases.  (Ya que hay Polimorfismo y Herencia, que con lo que llevamos visto de Java no vamos arreglarlo para intentar tener claro los conceptos básicos, de Clase, Subclase y Objeto)


Próxima Sesión

Próxima sesión disponible el día 3 de marzo de 2026 a las 18 horas.


Sesión 4 (Materiales y Vídeos)

- Comentarios (JavaDoc)  - Documentar un proyecto es algo fundamental de cara a su futuro mantenimiento. Cuando  programamos una clase, debe...