Logo Studenta

JavaModulo2-2

¡Este material tiene más páginas!

Vista previa del material en texto

Profesional en Plataforma 
Módulo 2: Java Programming Language
 
Profesional en Plataforma 
Java 
 
Módulo 2: Java Programming Language
Profesional en Plataforma 
Módulo 2: Java Programming Language 
 
 © 
Módulo 2: Java Programming Language
 
Unidad 1. Introducción
Unidad 2. Programación orientada a 
Unidad 3. Identificadores, palabras y tipos
Unidad 4. Expresiones y control de flujo
Unidad 5. Arreglos
Unidad 6. Diseño de clases
Unidad 7. Características avanzadas de clases
Unidad 8. Excepciones y Aserciones
Unidad 9. Colecciones y 
Unidad 10. Fundamentos de Entrada y salida
Unidad 11. Consola de entrada y salida y ficheros de entrada y 
salida 
Unidad 12. Construcción de interfaces de usuario Java 
mediante APIs
Unidad 13. Manejando eventos
Unidad 14. Aplicaciones basadas en GUI
Unidad 15. Hilos 
Unidad 16. Redes 
 
 
 
 
 
 
 
 Para uso exclusivo de los alumnos de CETICSA S.L.
Contenido 
Módulo 2: Java Programming Language 
Introducción 
Programación orientada a objetos 
Identificadores, palabras y tipos 
Expresiones y control de flujo 
rreglos 
Diseño de clases 
Características avanzadas de clases
Excepciones y Aserciones 
Colecciones y generalidades de infraestructura
Fundamentos de Entrada y salida 
Consola de entrada y salida y ficheros de entrada y 
Construcción de interfaces de usuario Java 
mediante APIs 
Manejando eventos 
licaciones basadas en GUI 
 www.ceticsa.es 
Para uso exclusivo de los alumnos de CETICSA S.L. 
P
á
g
in
a
3
 
 
 
generalidades de infraestructura 
Consola de entrada y salida y ficheros de entrada y 
Construcción de interfaces de usuario Java 
 
 © 
Unidad 1 : Introducción 
 
Sun Microsystems es la empresa que ha inventado el lenguaje Java, en un intento de resolver 
simultáneamente todos los problemas que se planteaban a los desarrolladores de software por la 
proliferación de arquitecturas incompatibles en los siguientes aspect
- Diferentes máquinas desde el punto de vista del hardware.
- Diferentes sistemas operativos.
- Diferentes sistemas de ventanas que funcionan sobre una misma máquina.
Estos problemas se han agravado aún más con la expansión de Internet en la cual deben 
comunicarse plataformas heterogéneas, y dónde las aplicaciones distribuidas son el corazón del 
sistema. 
El éxito de Java reside en su arquitectura y las características que esta arquitectura le confiere.
 
 
Introducción 
En la arquitectura de Java es dónde se encuentra la solución al problema planteado en la 
introducción. El siguiente dibujo intenta resumir dicha arquitectura: 
- Los programas se compilan a un fichero (*.class) intermedio, en un lenguaje creado por Sun 
(bytecodes). Este fichero luego es interpretado por una máquina virtual java (JVM). Por tanto, 
java es compilable-interpretable. 
 
 Para uso exclusivo de los alumnos de CETICSA S.L.
Unidad 1 : Introducción 
Sun Microsystems es la empresa que ha inventado el lenguaje Java, en un intento de resolver 
simultáneamente todos los problemas que se planteaban a los desarrolladores de software por la 
proliferación de arquitecturas incompatibles en los siguientes aspectos: 
Diferentes máquinas desde el punto de vista del hardware. 
Diferentes sistemas operativos. 
Diferentes sistemas de ventanas que funcionan sobre una misma máquina.
Estos problemas se han agravado aún más con la expansión de Internet en la cual deben 
nicarse plataformas heterogéneas, y dónde las aplicaciones distribuidas son el corazón del 
El éxito de Java reside en su arquitectura y las características que esta arquitectura le confiere.
Arquitectura de Java 
En la arquitectura de Java es dónde se encuentra la solución al problema planteado en la 
El siguiente dibujo intenta resumir dicha arquitectura: 
Los programas se compilan a un fichero (*.class) intermedio, en un lenguaje creado por Sun 
tecodes). Este fichero luego es interpretado por una máquina virtual java (JVM). Por tanto, 
interpretable. 
 www.ceticsa.es 
Para uso exclusivo de los alumnos de CETICSA S.L. 
P
á
g
in
a
4
 
Unidad 1 : Introducción 
Sun Microsystems es la empresa que ha inventado el lenguaje Java, en un intento de resolver 
simultáneamente todos los problemas que se planteaban a los desarrolladores de software por la 
Diferentes sistemas de ventanas que funcionan sobre una misma máquina. 
Estos problemas se han agravado aún más con la expansión de Internet en la cual deben 
nicarse plataformas heterogéneas, y dónde las aplicaciones distribuidas son el corazón del 
El éxito de Java reside en su arquitectura y las características que esta arquitectura le confiere. 
Arquitectura de Java 
En la arquitectura de Java es dónde se encuentra la solución al problema planteado en la 
 
Los programas se compilan a un fichero (*.class) intermedio, en un lenguaje creado por Sun 
tecodes). Este fichero luego es interpretado por una máquina virtual java (JVM). Por tanto, 
 
 © 
 
La Especificación de la Máquina Virtual Java la define como: 
Una máquina imaginaria implementad
código para la máquina virtual Java se almacena en archivos .class, cada uno de los cuales contiene, 
al menos, el código para una clase pública.
La especificación de la máquina virtual java propo
que se compila toda la tecnología java. Esta especificación permite al software en java ser 
independiente de la plataforma ya que la compilación se hace para una máquina genérica conocida 
como la máquina virtual java (JVM). Esta puede ser emulada por software para poder ser ejecutada 
en los diferentes sistemas informáticos existentes, o bien ser implementada en hardware. 
A partir del código fuente el compilador genera bytecodes. Estos bytecodes son instrucci
código máquina para la JVM. Cada intérprete de java tiene una implementación de la JVM. 
La especificación de la JVM proporciona definiciones muy concretas para la implementación de:
- Conjunto de instrucciones (equivalente al de la CPU).
- Registros del sistema. 
- Formato de los archivos de clase.
- Pila. 
- Garbage-collected heap. 
- Área de memoria. 
 
Gran parte de los lenguajes de programación permiten la reserva de memoria en tiempo de 
ejecución. El proceso de reserva de memoria varía se
involucra el retorno de un puntero al inicio del bloque de memoria reservado. 
Una vez la memoria reservada deja de necesitarse (el puntero que la referencia esta "out of scope"), 
el programa o el entorno de ejecución debería liberar esa memoria. 
En C, C++, y otros lenguajes, el programador es responsable de la gestión de la liberación de 
memoria. Esta es una tarea complicada a veces porque no siempre se sabe a priori cuando se puede 
liberar la memoria. Los programas que no liberan la memoria utili
ejecución cuando ya no queda memoria disponible en el sistema. Se dice que estos programas 
tienen fugas de memoria ("memory
Java libera al programador de la responsabilidad de liberar la menoria. El lenguaje java pr
una hebra de ejecución, o proceso en paralelo, a nivel de sistema que rastrea las operaciones de 
reserva de memoria. Durante los ciclos muertos de la JVM, la hebra de "garbage collection" verifica 
qué memoria puede liberarse y realiza dicha opera
El proceso de "Garbage collection" se realiza automáticamente durante el ciclo de vida de un 
programa java, eliminando la necesidad de liberar memoria y evitando las pérdidas de memoria. Sin 
embargo, la implementación del gestor de "garbage collecti
diferentes implementaciones de la JVM. 
 
 Para uso exclusivo de los alumnos de CETICSA S.L.
 La máquina virtual Java (JVM).
La Especificaciónde la Máquina Virtual Java la define como: 
Una máquina imaginaria implementada mediante la emulación por software en una máquina real. El 
código para la máquina virtual Java se almacena en archivos .class, cada uno de los cuales contiene, 
al menos, el código para una clase pública. 
La especificación de la máquina virtual java proporciona las especificaciones de hardware para las 
que se compila toda la tecnología java. Esta especificación permite al software en java ser 
independiente de la plataforma ya que la compilación se hace para una máquina genérica conocida 
tual java (JVM). Esta puede ser emulada por software para poder ser ejecutada 
en los diferentes sistemas informáticos existentes, o bien ser implementada en hardware. 
A partir del código fuente el compilador genera bytecodes. Estos bytecodes son instrucci
código máquina para la JVM. Cada intérprete de java tiene una implementación de la JVM. 
La especificación de la JVM proporciona definiciones muy concretas para la implementación de:
Conjunto de instrucciones (equivalente al de la CPU). 
Formato de los archivos de clase. 
El Garbage collection
Gran parte de los lenguajes de programación permiten la reserva de memoria en tiempo de 
ejecución. El proceso de reserva de memoria varía según la sintaxis del lenguaje, pero siempre 
involucra el retorno de un puntero al inicio del bloque de memoria reservado. 
Una vez la memoria reservada deja de necesitarse (el puntero que la referencia esta "out of scope"), 
ción debería liberar esa memoria. 
En C, C++, y otros lenguajes, el programador es responsable de la gestión de la liberación de 
memoria. Esta es una tarea complicada a veces porque no siempre se sabe a priori cuando se puede 
liberar la memoria. Los programas que no liberan la memoria utilizada pueden generar errores de 
ejecución cuando ya no queda memoria disponible en el sistema. Se dice que estos programas 
tienen fugas de memoria ("memory-links"). 
Java libera al programador de la responsabilidad de liberar la menoria. El lenguaje java pr
una hebra de ejecución, o proceso en paralelo, a nivel de sistema que rastrea las operaciones de 
reserva de memoria. Durante los ciclos muertos de la JVM, la hebra de "garbage collection" verifica 
qué memoria puede liberarse y realiza dicha operación. 
El proceso de "Garbage collection" se realiza automáticamente durante el ciclo de vida de un 
programa java, eliminando la necesidad de liberar memoria y evitando las pérdidas de memoria. Sin 
embargo, la implementación del gestor de "garbage collection" puede variar sustancialmente en las 
es implementaciones de la JVM. 
 www.ceticsa.es 
Para uso exclusivo de los alumnos de CETICSA S.L. 
P
á
g
in
a
5
 
La máquina virtual Java (JVM). 
a mediante la emulación por software en una máquina real. El 
código para la máquina virtual Java se almacena en archivos .class, cada uno de los cuales contiene, 
rciona las especificaciones de hardware para las 
que se compila toda la tecnología java. Esta especificación permite al software en java ser 
independiente de la plataforma ya que la compilación se hace para una máquina genérica conocida 
tual java (JVM). Esta puede ser emulada por software para poder ser ejecutada 
en los diferentes sistemas informáticos existentes, o bien ser implementada en hardware. 
A partir del código fuente el compilador genera bytecodes. Estos bytecodes son instrucciones de 
código máquina para la JVM. Cada intérprete de java tiene una implementación de la JVM. 
La especificación de la JVM proporciona definiciones muy concretas para la implementación de: 
El Garbage collection 
Gran parte de los lenguajes de programación permiten la reserva de memoria en tiempo de 
gún la sintaxis del lenguaje, pero siempre 
involucra el retorno de un puntero al inicio del bloque de memoria reservado. 
Una vez la memoria reservada deja de necesitarse (el puntero que la referencia esta "out of scope"), 
En C, C++, y otros lenguajes, el programador es responsable de la gestión de la liberación de 
memoria. Esta es una tarea complicada a veces porque no siempre se sabe a priori cuando se puede 
zada pueden generar errores de 
ejecución cuando ya no queda memoria disponible en el sistema. Se dice que estos programas 
Java libera al programador de la responsabilidad de liberar la menoria. El lenguaje java proporciona 
una hebra de ejecución, o proceso en paralelo, a nivel de sistema que rastrea las operaciones de 
reserva de memoria. Durante los ciclos muertos de la JVM, la hebra de "garbage collection" verifica 
El proceso de "Garbage collection" se realiza automáticamente durante el ciclo de vida de un 
programa java, eliminando la necesidad de liberar memoria y evitando las pérdidas de memoria. Sin 
on" puede variar sustancialmente en las 
 
 © 
 
Ya hemos visto que el código fuente de Java se compila en el sentido de que se convierten a un 
conjunto de bytecodes. 
En el momento de la ejecución, los diferentes archivos bytecodes que componen el programa a 
ejecutar se cargan, se verifican y se ejecutan en el intérprete. La función del intérprete es doble: 
Por un lado ejecuta los bytecodes y por otro gestiona las llam
El entorno de ejecución que ejecuta el código compilado para una JVM realiza tres tareas 
principales: 
Carga el código: Lo realiza el cargador de clases.
Verificación del código: Lo realiza el verificador de bytecode.
Ejecución del código: Lo realiza el intérprete de bytecode.
 
El cargador de clases. 
Su función es cargar todas las clases necesarias para la ejecución de un programa. 
Además, mantiene separadas aquellas clases cargadas a partir del sistema de archivos local y 
aquellas otras cargadas a través de los recursos de la red. Esto permite limitar la acción de posibles 
aplicaciones dañinas, ya que las clases locales son las primeras en ser cargadas. 
Una vez que todas las clases han sido cargadas, se determina el mapa de m
En este momento se asigna direcciones de memoria reales a las referencias simbólicas del código y 
se rellena la tabla de asignación de memoria. Debido a que el proceso de asignación de memoria se 
realiza en el momento de la ejecuci
autorizado a las áreas de código. 
 
Verificador de bytecode. 
El código de java se verifica mediante diferentes test antes de ejecutarse en la máquina. La JVM 
verifica el formato de los diferentes 
utilice punteros, que viola los permisos de acceso de los objetos o intenta cambiar los tipos de los 
objetos. Todas las clases importadas por la red pasan obligatoriamente por el verificador de 
bytecode. 
En el proceso de verificación se resuelve si el código cumple las especificaciones de la JVM y no viola 
la integridad del sistema. Si la verificación se completa con éxito, se puede asegurar lo siguiente: 
Las clases cumplen con el formato de ar
No hay violaciones de acceso restringido.
El código no provoca desbordamientos de la pila.
Los tipos de parámetros para todo el código es correcto y no se modificará durante la ejecución.
No existen conversiones ilegales de datos, por ejemplo, convertir enteros a referencias a objetos.
Los accesos a los campos de los objetos están autorizados.
 
 
 Para uso exclusivo de los alumnos de CETICSA S.L.
Seguridad del código
Ya hemos visto que el código fuente de Java se compila en el sentido de que se convierten a un 
En el momento de la ejecución, los diferentes archivos bytecodes que componen el programa a 
ejecutar se cargan, se verifican y se ejecutan en el intérprete. La función del intérprete es doble: 
Por un lado ejecuta los bytecodes y por otro gestiona las llamadas al hardware del sistema.
El entorno de ejecución que ejecuta el código compilado para una JVM realiza tres tareas 
Carga el código: Lo realiza el cargador de clases. 
Verificación del código: Lo realiza el verificador debytecode. 
n del código: Lo realiza el intérprete de bytecode. 
Su función es cargar todas las clases necesarias para la ejecución de un programa. 
Además, mantiene separadas aquellas clases cargadas a partir del sistema de archivos local y 
ellas otras cargadas a través de los recursos de la red. Esto permite limitar la acción de posibles 
aplicaciones dañinas, ya que las clases locales son las primeras en ser cargadas. 
Una vez que todas las clases han sido cargadas, se determina el mapa de m
En este momento se asigna direcciones de memoria reales a las referencias simbólicas del código y 
se rellena la tabla de asignación de memoria. Debido a que el proceso de asignación de memoria se 
realiza en el momento de la ejecución, el intérprete de java añade protección contra acceso no 
 
El código de java se verifica mediante diferentes test antes de ejecutarse en la máquina. La JVM 
verifica el formato de los diferentes fragmentos de bytecode en busca de código ilegal 
utilice punteros, que viola los permisos de acceso de los objetos o intenta cambiar los tipos de los 
objetos. Todas las clases importadas por la red pasan obligatoriamente por el verificador de 
En el proceso de verificación se resuelve si el código cumple las especificaciones de la JVM y no viola 
la integridad del sistema. Si la verificación se completa con éxito, se puede asegurar lo siguiente: 
Las clases cumplen con el formato de archivo de clase de la especificación JVM.
No hay violaciones de acceso restringido. 
El código no provoca desbordamientos de la pila. 
Los tipos de parámetros para todo el código es correcto y no se modificará durante la ejecución.
gales de datos, por ejemplo, convertir enteros a referencias a objetos.
Los accesos a los campos de los objetos están autorizados. 
 www.ceticsa.es 
Para uso exclusivo de los alumnos de CETICSA S.L. 
P
á
g
in
a
6
 
Seguridad del código 
Ya hemos visto que el código fuente de Java se compila en el sentido de que se convierten a un 
En el momento de la ejecución, los diferentes archivos bytecodes que componen el programa a 
ejecutar se cargan, se verifican y se ejecutan en el intérprete. La función del intérprete es doble: 
adas al hardware del sistema. 
El entorno de ejecución que ejecuta el código compilado para una JVM realiza tres tareas 
Su función es cargar todas las clases necesarias para la ejecución de un programa. 
Además, mantiene separadas aquellas clases cargadas a partir del sistema de archivos local y 
ellas otras cargadas a través de los recursos de la red. Esto permite limitar la acción de posibles 
aplicaciones dañinas, ya que las clases locales son las primeras en ser cargadas. 
Una vez que todas las clases han sido cargadas, se determina el mapa de memoria de la aplicación. 
En este momento se asigna direcciones de memoria reales a las referencias simbólicas del código y 
se rellena la tabla de asignación de memoria. Debido a que el proceso de asignación de memoria se 
ón, el intérprete de java añade protección contra acceso no 
El código de java se verifica mediante diferentes test antes de ejecutarse en la máquina. La JVM 
fragmentos de bytecode en busca de código ilegal - código que 
utilice punteros, que viola los permisos de acceso de los objetos o intenta cambiar los tipos de los 
objetos. Todas las clases importadas por la red pasan obligatoriamente por el verificador de 
En el proceso de verificación se resuelve si el código cumple las especificaciones de la JVM y no viola 
la integridad del sistema. Si la verificación se completa con éxito, se puede asegurar lo siguiente: 
chivo de clase de la especificación JVM. 
Los tipos de parámetros para todo el código es correcto y no se modificará durante la ejecución. 
gales de datos, por ejemplo, convertir enteros a referencias a objetos. 
 
 © 
 
Introducción. 
La arquitectura presentada en el punto anterior proporciona unas características a Java que ningún 
otro lenguaje de programación tiene: 
 
Robusto. 
Java realiza verificaciones en busca de problemas tanto en tiempo de compilación como en tiempo 
de ejecución. En tiempo de compilación no tiene ningún misterio porque todos los lenguajes realizan 
esas verificaciones, sin embargo, en tiempo de ejecución, la JVM, que realiza la interpretación de los 
bytecodes, detecta cuando existe algún problema en la ejecución de
que pueden ser recogidas por el programador con el propósito de recuperarse de dichos errores.
 
Arquitectura neutral (multiplataforma).
Gracias a que la compilación se realiza a un código objeto independiente de la arquitect
máquina (bytecodes), tan sólo necesitamos utilizar el intérprete adecuado para que nuestro 
programa funcione sobre cualquier plataforma. El lema de Sun es "escribir una vez, ejecutar en 
cualquier parte". 
 
Seguro. 
Como toda la ejecución la realiza
comprobaciones antes de ejecutarse en la máquina. En concreto:
El código se pasa a través de un verificador de ByteCodes que comprueba el formato de los 
fragmentos de código y detecta fragmentos de 
derechos de acceso sobre objetos, ...).
El cargador de clases separa el espacio de nombres del sistema de ficheros local del de los recursos 
procedentes de la red. Esto limita cualquier aplicación del tipo C
buscan primero entre las locales y luego entre las procedentes del exterior.
Respecto a la seguridad del código fuente, el propio JDK proporciona un desensamblador de 
ByteCodes, que hace que cualquier programa pueda se
bytecodes. Utilizando javap no se obtiene el código fuente original, aunque si desmonta el programa 
mostrando su estructura. Este problema de seguridad del código fuente es algo todavía pendiente 
de subsanar. 
 
 
Portable. 
Más allá de la portabilidad básica por ser de arquitectura independiente, Java implementa otros 
estándares de portabilidad para facilitar el desarrollo. 
Los enteros son de 32 bits en complemento a 2.
 
 Para uso exclusivo de los alumnos de CETICSA S.L.
Características de Java
La arquitectura presentada en el punto anterior proporciona unas características a Java que ningún 
otro lenguaje de programación tiene: 
Java realiza verificaciones en busca de problemas tanto en tiempo de compilación como en tiempo 
En tiempo de compilación no tiene ningún misterio porque todos los lenguajes realizan 
esas verificaciones, sin embargo, en tiempo de ejecución, la JVM, que realiza la interpretación de los 
bytecodes, detecta cuando existe algún problema en la ejecución del programa, y lanza excepciones 
que pueden ser recogidas por el programador con el propósito de recuperarse de dichos errores.
Arquitectura neutral (multiplataforma). 
Gracias a que la compilación se realiza a un código objeto independiente de la arquitect
máquina (bytecodes), tan sólo necesitamos utilizar el intérprete adecuado para que nuestro 
programa funcione sobre cualquier plataforma. El lema de Sun es "escribir una vez, ejecutar en 
Como toda la ejecución la realiza la JVM, los programas Java pueden ser sometidos a muchas 
comprobaciones antes de ejecutarse en la máquina. En concreto: 
El código se pasa a través de un verificador de ByteCodes que comprueba el formato de los 
fragmentos de código y detecta fragmentos de código ilegal (código que falsea punteros, viola 
derechos de acceso sobre objetos, ...). 
El cargador de clases separa el espacio de nombres del sistema de ficheros local del de los recursos 
procedentes de la red. Esto limita cualquier aplicación del tipo Caballo de Troya, ya que las clases se 
buscan primero entre las locales y luego entre las procedentes del exterior. 
Respecto a la seguridad del código fuente, el propio JDK proporciona un desensamblador de 
ByteCodes, que hace que cualquier programa pueda ser convertido a código fuente a partir de sus 
bytecodes. Utilizando javap no se obtiene el código fuenteoriginal, aunque si desmonta el programa 
mostrando su estructura. Este problema de seguridad del código fuente es algo todavía pendiente 
Más allá de la portabilidad básica por ser de arquitectura independiente, Java implementa otros 
estándares de portabilidad para facilitar el desarrollo. 
Los enteros son de 32 bits en complemento a 2. 
 www.ceticsa.es 
Para uso exclusivo de los alumnos de CETICSA S.L. 
P
á
g
in
a
7
 
Características de Java 
La arquitectura presentada en el punto anterior proporciona unas características a Java que ningún 
Java realiza verificaciones en busca de problemas tanto en tiempo de compilación como en tiempo 
En tiempo de compilación no tiene ningún misterio porque todos los lenguajes realizan 
esas verificaciones, sin embargo, en tiempo de ejecución, la JVM, que realiza la interpretación de los 
l programa, y lanza excepciones 
que pueden ser recogidas por el programador con el propósito de recuperarse de dichos errores. 
Gracias a que la compilación se realiza a un código objeto independiente de la arquitectura de la 
máquina (bytecodes), tan sólo necesitamos utilizar el intérprete adecuado para que nuestro 
programa funcione sobre cualquier plataforma. El lema de Sun es "escribir una vez, ejecutar en 
la JVM, los programas Java pueden ser sometidos a muchas 
El código se pasa a través de un verificador de ByteCodes que comprueba el formato de los 
código ilegal (código que falsea punteros, viola 
El cargador de clases separa el espacio de nombres del sistema de ficheros local del de los recursos 
aballo de Troya, ya que las clases se 
Respecto a la seguridad del código fuente, el propio JDK proporciona un desensamblador de 
r convertido a código fuente a partir de sus 
bytecodes. Utilizando javap no se obtiene el código fuente original, aunque si desmonta el programa 
mostrando su estructura. Este problema de seguridad del código fuente es algo todavía pendiente 
Más allá de la portabilidad básica por ser de arquitectura independiente, Java implementa otros 
 
 © 
Java construye sus interfaces de usuario a tr
éstas puedan ser implantadas en entornos UNIX, Mac o Pc.
 
Para poder desarrollar software con Java necesitamos una serie de herramientas que nos 
proporciona Sun a través de su JDK (Java Development Kit). 
Al igual que el lenguaje natural que utilizamos para comunicarnos, ya sea de forma oral o por 
escrito, cualquier lenguaje de programación dispone de unos elementos y reglas que deben 
conocerse a la hora de programar.
Los elementos del lenguaje natural nos permiten designar cosas (nombres), expresar cualidades de 
esas cosas (adjetivos), expresar acciones (verbos
Las reglas sintácticas (estructura) y semánticas (significado) permiten el entendimiento entre las 
partes que forman la comunicación.
En los lenguajes de programación también encontramos unas reglas sintácticas que debemos 
respetar a la hora de confeccionar los programas y una semántica encargada de resolver el 
problema que queremos programar. 
 
Elementos y reglas sintácticas de los lenguajes de programación.
Aunque todos los conceptos que aprenderemos a continuación
programación existen diferencias en la implementación en cada uno de ellos lo que obliga a un 
estudio individual en cada uno de ellos. 
 
Comentarios en los programas.
Un aspecto importante a la hora de confeccionar un programa es comentar lo más detall
posible lo que significa cada una de las órdenes que forman parte del programa, con el propósito de 
poder recordar en un futuro la función que realiza cada una de ellas, y facilitar su estudio a personas 
ajenas al programa. 
 
Identificadores. 
En todo lenguaje de programación surge la necesidad de utilizar una serie de elementos que 
debemos designar con algún nombre, por ejemplo: 
Elemento 
Variables 
- Elementos utilizados para referenciar posiciones de memoria dónde podremos 
almacenar datos necesarios para el programa.
Funciones 
- Elementos utilizados para referenciar posiciones de memoria dónde reside el 
código del programa.
 
 Para uso exclusivo de los alumnos de CETICSA S.L.
Java construye sus interfaces de usuario a través de un sistema abstracto de ventanas de forma que 
das en entornos UNIX, Mac o Pc. 
Desarrollo con Java
Para poder desarrollar software con Java necesitamos una serie de herramientas que nos 
proporciona Sun a través de su JDK (Java Development Kit). 
Al igual que el lenguaje natural que utilizamos para comunicarnos, ya sea de forma oral o por 
ier lenguaje de programación dispone de unos elementos y reglas que deben 
conocerse a la hora de programar. 
Los elementos del lenguaje natural nos permiten designar cosas (nombres), expresar cualidades de 
esas cosas (adjetivos), expresar acciones (verbos), etc. 
Las reglas sintácticas (estructura) y semánticas (significado) permiten el entendimiento entre las 
partes que forman la comunicación. 
En los lenguajes de programación también encontramos unas reglas sintácticas que debemos 
nfeccionar los programas y una semántica encargada de resolver el 
problema que queremos programar. 
Elementos y reglas sintácticas de los lenguajes de programación.
Aunque todos los conceptos que aprenderemos a continuación aparecen en todos los lenguajes
programación existen diferencias en la implementación en cada uno de ellos lo que obliga a un 
estudio individual en cada uno de ellos. 
Comentarios en los programas. 
Un aspecto importante a la hora de confeccionar un programa es comentar lo más detall
posible lo que significa cada una de las órdenes que forman parte del programa, con el propósito de 
poder recordar en un futuro la función que realiza cada una de ellas, y facilitar su estudio a personas 
odo lenguaje de programación surge la necesidad de utilizar una serie de elementos que 
debemos designar con algún nombre, por ejemplo: 
Descripción 
Elementos utilizados para referenciar posiciones de memoria dónde podremos 
datos necesarios para el programa. 
Elementos utilizados para referenciar posiciones de memoria dónde reside el 
código del programa. 
 www.ceticsa.es 
Para uso exclusivo de los alumnos de CETICSA S.L. 
P
á
g
in
a
8
 
avés de un sistema abstracto de ventanas de forma que 
 
Desarrollo con Java 
Para poder desarrollar software con Java necesitamos una serie de herramientas que nos 
Al igual que el lenguaje natural que utilizamos para comunicarnos, ya sea de forma oral o por 
ier lenguaje de programación dispone de unos elementos y reglas que deben 
Los elementos del lenguaje natural nos permiten designar cosas (nombres), expresar cualidades de 
Las reglas sintácticas (estructura) y semánticas (significado) permiten el entendimiento entre las 
En los lenguajes de programación también encontramos unas reglas sintácticas que debemos 
nfeccionar los programas y una semántica encargada de resolver el 
Elementos y reglas sintácticas de los lenguajes de programación. 
aparecen en todos los lenguajes de 
programación existen diferencias en la implementación en cada uno de ellos lo que obliga a un 
Un aspecto importante a la hora de confeccionar un programa es comentar lo más detalladamente 
posible lo que significa cada una de las órdenes que forman parte del programa, con el propósito de 
poder recordar en un futuro la función que realiza cada una de ellas, y facilitar su estudio a personas 
odo lenguaje de programación surge la necesidad de utilizar una serie de elementos que 
Elementos utilizados para referenciar posiciones de memoria dónde podremos 
Elementos utilizados para referenciar posiciones de memoria dónde reside el 
 
 © 
Objetos 
- Elementos que encapsulan variables (propiedades) y funciones (métodos) de 
manera que resulta más 
simplificando el diseño de programas complejos.
etc.- Conforme avancemos iremos conociendo más elementos de los lenguajes de 
programación. 
 A la hora de asignar nombre a todos estos elementos hay que 
 
Tipos de datos básicos. 
El modelo mental más sencillo que se puede tener de una aplicación informática es el de una caja 
negra que recibe unos datos de entrada, los procesa y entrega unos datos de salida representados 
de alguna manera. 
Estos datos de entrada, los cuáles deben s
alguna variable, pueden ser de diferente naturaleza (numéricos, alfanuméricos, etc.).
Cada lenguaje de programación dispone de unos tipos de datos básicos a los cuáles nos tenemos 
que amoldar a la hora de realizar el análisis de los datos que necesitamos en nuestra aplicación. 
 
 Variables. 
Este elemento juega un papel muy importante en el programa porque es el mecanismo que pone a 
nuestra disposición el lenguaje de programación para gestionar de una mane
la aplicación. 
Al declarar una variable en el programa estamos reservando una zona de memoria para 
posteriormente albergar un dato. Existen lenguajes que necesitan que especifiquemos el tipo de 
dato que se va a albergar (java) y 
Al asignar un valor a la variable lo que estamos haciendo es almacenar el dato en la posición de 
memoria que se reservó para dicha variable. 
En todo momento tenemos que tener presente que al usar la variable realme
dato al que representa. 
 
Operadores. 
Una de las primeras aplicaciones de los ordenadores fue el cálculo de matemático y, aunque ahora 
ha pasado a un segundo plano, los lenguajes de programación ofrecen una serie de elementos que 
permiten realizar operaciones con los datos. 
Estas operaciones no sólo se limitan a operaciones aritméticas. Disponemos también de operaciones 
lógicas, comparaciones, etc. 
 
Sentencias de control. 
Sin embargo, la característica que confiere al ordenador su potencia es la capacidad de 
procesamiento de la que dispone. 
 
 Para uso exclusivo de los alumnos de CETICSA S.L.
Elementos que encapsulan variables (propiedades) y funciones (métodos) de 
manera que resulta más sencillo modelar los problemas que queremos resolver 
simplificando el diseño de programas complejos. 
Conforme avancemos iremos conociendo más elementos de los lenguajes de 
 
A la hora de asignar nombre a todos estos elementos hay que seguir unas reglas. 
modelo mental más sencillo que se puede tener de una aplicación informática es el de una caja 
negra que recibe unos datos de entrada, los procesa y entrega unos datos de salida representados 
Estos datos de entrada, los cuáles deben ser albergados en memoria y referenciados mediante 
alguna variable, pueden ser de diferente naturaleza (numéricos, alfanuméricos, etc.).
Cada lenguaje de programación dispone de unos tipos de datos básicos a los cuáles nos tenemos 
realizar el análisis de los datos que necesitamos en nuestra aplicación. 
Este elemento juega un papel muy importante en el programa porque es el mecanismo que pone a 
el lenguaje de programación para gestionar de una mane
Al declarar una variable en el programa estamos reservando una zona de memoria para 
posteriormente albergar un dato. Existen lenguajes que necesitan que especifiquemos el tipo de 
dato que se va a albergar (java) y otros que no lo necesitan (javascript). 
Al asignar un valor a la variable lo que estamos haciendo es almacenar el dato en la posición de 
memoria que se reservó para dicha variable. 
En todo momento tenemos que tener presente que al usar la variable realme
Una de las primeras aplicaciones de los ordenadores fue el cálculo de matemático y, aunque ahora 
ha pasado a un segundo plano, los lenguajes de programación ofrecen una serie de elementos que 
miten realizar operaciones con los datos. 
Estas operaciones no sólo se limitan a operaciones aritméticas. Disponemos también de operaciones 
Sin embargo, la característica que confiere al ordenador su potencia es la capacidad de 
 
 www.ceticsa.es 
Para uso exclusivo de los alumnos de CETICSA S.L. 
P
á
g
in
a
9
 
Elementos que encapsulan variables (propiedades) y funciones (métodos) de 
sencillo modelar los problemas que queremos resolver 
Conforme avancemos iremos conociendo más elementos de los lenguajes de 
seguir unas reglas. 
modelo mental más sencillo que se puede tener de una aplicación informática es el de una caja 
negra que recibe unos datos de entrada, los procesa y entrega unos datos de salida representados 
er albergados en memoria y referenciados mediante 
alguna variable, pueden ser de diferente naturaleza (numéricos, alfanuméricos, etc.). 
Cada lenguaje de programación dispone de unos tipos de datos básicos a los cuáles nos tenemos 
realizar el análisis de los datos que necesitamos en nuestra aplicación. 
Este elemento juega un papel muy importante en el programa porque es el mecanismo que pone a 
el lenguaje de programación para gestionar de una manera sencilla los datos de 
Al declarar una variable en el programa estamos reservando una zona de memoria para 
posteriormente albergar un dato. Existen lenguajes que necesitan que especifiquemos el tipo de 
Al asignar un valor a la variable lo que estamos haciendo es almacenar el dato en la posición de 
En todo momento tenemos que tener presente que al usar la variable realmente estamos usando el 
Una de las primeras aplicaciones de los ordenadores fue el cálculo de matemático y, aunque ahora 
ha pasado a un segundo plano, los lenguajes de programación ofrecen una serie de elementos que 
Estas operaciones no sólo se limitan a operaciones aritméticas. Disponemos también de operaciones 
Sin embargo, la característica que confiere al ordenador su potencia es la capacidad de 
 
 © 
Aunque esto nos pueda asustar, el tipo de procesamiento que puede realizar es muy básico, 
limitándose a: 
Tomar decisiones sobre la ejecución o no de determinadas tareas en base al cumplimiento o no de 
una o varias condiciones (sentencias de decisión). En dichas condiciones siempre estarán implicados 
datos (o si se quiere, sus representantes las variables).
Alterar el flujo de ejecución normal del código del programa (sentencias de salto o bucles). También 
estas alteraciones estarán controladas por variables.
La combinación adecuada de este tipo de sentencias es la que definirá la estructura que resuelve un 
determinado problema. 
 
Almac enamiento de datos mediante Arrays. 
Hemos visto el uso de variables como mecanismo básico para almacenar y acceder a datos en 
memoria. Sin embargo, en la mayoría de aplicaciones este tipo de almacenamiento de información 
se queda corto por ser demasiado s
complejos pero también más potentes. 
Uno de estos sistemas, que aparece en todos los lenguajes de programación, es el de los Arrays. 
 
Excepciones. 
 Todos los lenguajes de programación avisan de los err
compilación, pero pocos son los que han sido diseñados para seguir avisando de posibles errores en 
tiempo de ejecución. Las aplicaciones Java, gracias a que se ejecutan bajo la supervisión de la 
máquina virtual (JVM), están siendo controladas constantemente. En caso de que ocurra algún error 
de ejecución, se lanza una excepción que puede ser recogida y tratada por el programador en su 
aplicación. De esta manera, lo que antes solía terminar en una ejecución anormal del program
java puede ser resuelto. 
 
Objetos. 
Java es un lenguaje de programación orientado a objetos. La importancia de este tema es tal que le 
dedicamos el siguiente capítulo entero. 
 
 
Unidad 2: Programación Orientada a Objetos 
Introducción. 
El programador debe conocer cuál es su situación respecto a la máquina que va a programar y qué 
personajes, junto con él, son importantes a la hora de desarrollar una aplicación. Cada uno de estos 
personajes tiene un punto de vista diferente que describimo
Desarrollador del lenguaje de programación.Su conocimiento de la máquina es profundo debido a 
que debe desarrollar la aplicación que ayudará al programador a realizar su trabajo. En un principio 
se desarrollaban los lenguajes de program
microprocesador. Esto dio lugar a lenguajes como C, Pascal, etc. 
 
 Para uso exclusivo de los alumnos de CETICSA S.L.
Aunque esto nos pueda asustar, el tipo de procesamiento que puede realizar es muy básico, 
ejecución o no de determinadas tareas en base al cumplimiento o no de 
una o varias condiciones (sentencias de decisión). En dichas condiciones siempre estarán implicados 
datos (o si se quiere, sus representantes las variables). 
n normal del código del programa (sentencias de salto o bucles). También 
estas alteraciones estarán controladas por variables. 
La combinación adecuada de este tipo de sentencias es la que definirá la estructura que resuelve un 
enamiento de datos mediante Arrays. 
Hemos visto el uso de variables como mecanismo básico para almacenar y acceder a datos en 
memoria. Sin embargo, en la mayoría de aplicaciones este tipo de almacenamiento de información 
se queda corto por ser demasiado simple y necesitamos a sistemas de almacenamiento más 
complejos pero también más potentes. 
Uno de estos sistemas, que aparece en todos los lenguajes de programación, es el de los Arrays. 
Todos los lenguajes de programación avisan de los errores que cometamos en tiempo de 
compilación, pero pocos son los que han sido diseñados para seguir avisando de posibles errores en 
tiempo de ejecución. Las aplicaciones Java, gracias a que se ejecutan bajo la supervisión de la 
siendo controladas constantemente. En caso de que ocurra algún error 
de ejecución, se lanza una excepción que puede ser recogida y tratada por el programador en su 
aplicación. De esta manera, lo que antes solía terminar en una ejecución anormal del program
Java es un lenguaje de programación orientado a objetos. La importancia de este tema es tal que le 
dedicamos el siguiente capítulo entero. 
Unidad 2: Programación Orientada a Objetos 
 
El programador debe conocer cuál es su situación respecto a la máquina que va a programar y qué 
personajes, junto con él, son importantes a la hora de desarrollar una aplicación. Cada uno de estos 
personajes tiene un punto de vista diferente que describimos a continuación: 
Desarrollador del lenguaje de programación. Su conocimiento de la máquina es profundo debido a 
que debe desarrollar la aplicación que ayudará al programador a realizar su trabajo. En un principio 
se desarrollaban los lenguajes de programación utilizando el lenguaje de ensamble del 
microprocesador. Esto dio lugar a lenguajes como C, Pascal, etc. 
 www.ceticsa.es 
Para uso exclusivo de los alumnos de CETICSA S.L. 
P
á
g
in
a
1
0
 
Aunque esto nos pueda asustar, el tipo de procesamiento que puede realizar es muy básico, 
ejecución o no de determinadas tareas en base al cumplimiento o no de 
una o varias condiciones (sentencias de decisión). En dichas condiciones siempre estarán implicados 
n normal del código del programa (sentencias de salto o bucles). También 
La combinación adecuada de este tipo de sentencias es la que definirá la estructura que resuelve un 
Hemos visto el uso de variables como mecanismo básico para almacenar y acceder a datos en 
memoria. Sin embargo, en la mayoría de aplicaciones este tipo de almacenamiento de información 
imple y necesitamos a sistemas de almacenamiento más 
Uno de estos sistemas, que aparece en todos los lenguajes de programación, es el de los Arrays. 
ores que cometamos en tiempo de 
compilación, pero pocos son los que han sido diseñados para seguir avisando de posibles errores en 
tiempo de ejecución. Las aplicaciones Java, gracias a que se ejecutan bajo la supervisión de la 
siendo controladas constantemente. En caso de que ocurra algún error 
de ejecución, se lanza una excepción que puede ser recogida y tratada por el programador en su 
aplicación. De esta manera, lo que antes solía terminar en una ejecución anormal del programa, con 
Java es un lenguaje de programación orientado a objetos. La importancia de este tema es tal que le 
Unidad 2: Programación Orientada a Objetos 
El programador debe conocer cuál es su situación respecto a la máquina que va a programar y qué 
personajes, junto con él, son importantes a la hora de desarrollar una aplicación. Cada uno de estos 
s a continuación: 
Desarrollador del lenguaje de programación. Su conocimiento de la máquina es profundo debido a 
que debe desarrollar la aplicación que ayudará al programador a realizar su trabajo. En un principio 
ación utilizando el lenguaje de ensamble del 
 
 © 
Posteriormente, estos lenguajes se han podido utilizar para el desarrollo de tecnologías de 
programación más potentes como C++, y éste a su vez e
Java. El lenguaje de programación proporciona las herramientas necesarias (API, entorno de 
desarrollo, etc.) al siguiente personaje: el programador de aplicaciones.
Programador de aplicaciones. Su conocimiento s
utiliza para el desarrollo de sus aplicaciones. No necesita conocer la máquina tan en profundidad 
como el desarrollador de lenguajes de programación, sin embargo, ese conocimiento extra ayuda a 
comprender lo que se está realizando y, por tanto, facilita el desarrollo de aplicaciones. Su función 
principal es utilizar todas las herramientas que le ofrece un lenguaje de programación para 
desarrollar aplicaciones fáciles de usar (usabilidad) destinadas al siguie
Usuario. Su conocimiento del ordenador suele ser escaso, por no decir nulo, y su función es la de 
utilizar las aplicaciones que ha desarrollado el programador.
Un ejemplo puede aclarar todo lo expuesto anteriormente. Veamos cómo 
cada uno de estos personajes. 
Desarrollador del lenguaje de programación. Este personaje conoce la manera que se ha diseñado 
en la máquina para contabilizar el tiempo. El reloj de tiempo real (RTC) incorpora un contador dónde 
se almacenan los milisegundos que han transcurrido desde el 1
momento. Conocido el origen de coordenadas y los milisegundos que han transcurrido, se puede 
obtener mediante la aplicación de un algoritmo matemático el día, me
encontramos, y la hora con una precisión de milisegundos. Por tanto, el desarrollador de un lenguaje 
de programación, para acceder hasta la hora del sistema, tendría que acceder al dato almacenado 
en el RTC mediante la lectura del pue
conversión, lo que requiere un conocimiento del funcionamiento de la máquina determinado.
Programador. Aprovechando que el desarrollador del lenguaje de programación ha implementado el 
código de más bajo nivel para acceder a la hora del sistema, puede ofrecer este código al 
programador para simplificarle la forma de acceso. Una parte fundamental de un lenguaje de 
programación es el API que ofrece al programador. En él se encuentra todo el código que ha 
desarrollado el desarrollador del lenguaje de programación y que puede utilizar el programador en 
sus aplicaciones. La evolución de las tecnologías de programación ha dado lugar a dos tipos de 
lenguaje de programación (y por tanto a dos tipos de API).
 
API orientado a funciones. 
API orientado a objetos. Por ejemplo, el objeto Date es que se debe utilizar para acceder a la hora 
del sistema. 
 
Usuario. Simplemente visualizará la hora del sistema tal y como el programador haya realizado la 
representación en la aplicación. 
 
En este tema aprenderemos los conceptos de la programación orientada a objetos. 
- El desarrollador de lenguajes de programación debe pensar en facilitar al programador su 
trabajo, el desarrollo de aplicaciones informáticas, ofreciéndole unas herr
ofrezcan: 
 
 
 
 
 Para uso exclusivo de los alumnos de CETICSA S.L.
Posteriormente,estos lenguajes se han podido utilizar para el desarrollo de tecnologías de 
programación más potentes como C++, y éste a su vez es el que se ha utilizado en el desarrollo de 
Java. El lenguaje de programación proporciona las herramientas necesarias (API, entorno de 
desarrollo, etc.) al siguiente personaje: el programador de aplicaciones. 
Programador de aplicaciones. Su conocimiento suele centrarse en el lenguaje de programación que 
utiliza para el desarrollo de sus aplicaciones. No necesita conocer la máquina tan en profundidad 
como el desarrollador de lenguajes de programación, sin embargo, ese conocimiento extra ayuda a 
o que se está realizando y, por tanto, facilita el desarrollo de aplicaciones. Su función 
principal es utilizar todas las herramientas que le ofrece un lenguaje de programación para 
desarrollar aplicaciones fáciles de usar (usabilidad) destinadas al siguiente personaje: el usuario.
Usuario. Su conocimiento del ordenador suele ser escaso, por no decir nulo, y su función es la de 
utilizar las aplicaciones que ha desarrollado el programador. 
Un ejemplo puede aclarar todo lo expuesto anteriormente. Veamos cómo realiza el acceso a la hora 
Desarrollador del lenguaje de programación. Este personaje conoce la manera que se ha diseñado 
en la máquina para contabilizar el tiempo. El reloj de tiempo real (RTC) incorpora un contador dónde 
e almacenan los milisegundos que han transcurrido desde el 1-1-1970 a las 00:00:00
momento. Conocido el origen de coordenadas y los milisegundos que han transcurrido, se puede 
obtener mediante la aplicación de un algoritmo matemático el día, mes y año en el que nos 
encontramos, y la hora con una precisión de milisegundos. Por tanto, el desarrollador de un lenguaje 
de programación, para acceder hasta la hora del sistema, tendría que acceder al dato almacenado 
en el RTC mediante la lectura del puerto dónde está situado e implementar el algoritmo de 
conversión, lo que requiere un conocimiento del funcionamiento de la máquina determinado.
Programador. Aprovechando que el desarrollador del lenguaje de programación ha implementado el 
nivel para acceder a la hora del sistema, puede ofrecer este código al 
programador para simplificarle la forma de acceso. Una parte fundamental de un lenguaje de 
programación es el API que ofrece al programador. En él se encuentra todo el código que ha 
sarrollado el desarrollador del lenguaje de programación y que puede utilizar el programador en 
sus aplicaciones. La evolución de las tecnologías de programación ha dado lugar a dos tipos de 
lenguaje de programación (y por tanto a dos tipos de API). 
API orientado a objetos. Por ejemplo, el objeto Date es que se debe utilizar para acceder a la hora 
Usuario. Simplemente visualizará la hora del sistema tal y como el programador haya realizado la 
En este tema aprenderemos los conceptos de la programación orientada a objetos. 
El desarrollador de lenguajes de programación debe pensar en facilitar al programador su 
trabajo, el desarrollo de aplicaciones informáticas, ofreciéndole unas herr
 www.ceticsa.es 
Para uso exclusivo de los alumnos de CETICSA S.L. 
P
á
g
in
a
1
1
 
Posteriormente, estos lenguajes se han podido utilizar para el desarrollo de tecnologías de 
s el que se ha utilizado en el desarrollo de 
Java. El lenguaje de programación proporciona las herramientas necesarias (API, entorno de 
uele centrarse en el lenguaje de programación que 
utiliza para el desarrollo de sus aplicaciones. No necesita conocer la máquina tan en profundidad 
como el desarrollador de lenguajes de programación, sin embargo, ese conocimiento extra ayuda a 
o que se está realizando y, por tanto, facilita el desarrollo de aplicaciones. Su función 
principal es utilizar todas las herramientas que le ofrece un lenguaje de programación para 
nte personaje: el usuario. 
Usuario. Su conocimiento del ordenador suele ser escaso, por no decir nulo, y su función es la de 
realiza el acceso a la hora 
Desarrollador del lenguaje de programación. Este personaje conoce la manera que se ha diseñado 
en la máquina para contabilizar el tiempo. El reloj de tiempo real (RTC) incorpora un contador dónde 
1970 a las 00:00:00 hasta este 
momento. Conocido el origen de coordenadas y los milisegundos que han transcurrido, se puede 
s y año en el que nos 
encontramos, y la hora con una precisión de milisegundos. Por tanto, el desarrollador de un lenguaje 
de programación, para acceder hasta la hora del sistema, tendría que acceder al dato almacenado 
rto dónde está situado e implementar el algoritmo de 
conversión, lo que requiere un conocimiento del funcionamiento de la máquina determinado. 
Programador. Aprovechando que el desarrollador del lenguaje de programación ha implementado el 
nivel para acceder a la hora del sistema, puede ofrecer este código al 
programador para simplificarle la forma de acceso. Una parte fundamental de un lenguaje de 
programación es el API que ofrece al programador. En él se encuentra todo el código que ha 
sarrollado el desarrollador del lenguaje de programación y que puede utilizar el programador en 
sus aplicaciones. La evolución de las tecnologías de programación ha dado lugar a dos tipos de 
API orientado a objetos. Por ejemplo, el objeto Date es que se debe utilizar para acceder a la hora 
Usuario. Simplemente visualizará la hora del sistema tal y como el programador haya realizado la 
En este tema aprenderemos los conceptos de la programación orientada a objetos. 
El desarrollador de lenguajes de programación debe pensar en facilitar al programador su 
trabajo, el desarrollo de aplicaciones informáticas, ofreciéndole unas herramientas que le 
 
 © 
 
Las diferentes tecnologías de programación se diferencian en la manera que ofrecen de estructurar 
los datos y el código que forman una aplicación. 
A la hora de plantear el análisis del problema que se quiere resolver por software, todas las 
tecnologías han optado por dividir dicho problema en parte más pequeñas. La estrategia a seguir es 
conseguir una estructura en la que cada una de esas partes real
coordinadas por una parte principal
interacción con el usuario. En la actualidad esta interacción se realiza a través de un entorno gráfico 
y las órdenes se generan mediante eventos.
En los lenguajes procedimentales, orientados a funciones, la estructura se realiza tomando como 
referencia el código. Cada una de esas partes se denomina subrutina, procedimiento o función 
dependiendo del lenguaje en el que nos encon
En los lenguaje orientados a objetos, la estructura se realiza tomando como referencia los datos. 
Cada una de esas partes se denomina objeto.
En Java una clase se suele representar con la siguiente estructura: 
 
public class NombreClase{ 
// Definición de propiedades --> Características del elemento que describimos con la clase.
// Definición de los métodos --> Comportamiento y funcionalidades del elemento.
} 
 
Analizaremos algunos conceptos básicos para poder comprender el concepto de propiedad 
(variables), métodos (funciones) y lógicas de funcionamiento.
 
En este primer ejemplo podemos observar que creamos una clase coche. 
 
Las propiedades de la clase representan características del coche: estado, velocidad actual, 
velocidad máxima,… 
 
Los métodos representan acciones que podemos realizar sobre el coche: montar, bajar, salir,...
 
La lógica de funcionamiento se implementa en el código de cada método
 
import java.io.BufferedReader; 
import java.io.InputStreamReader; 
import java.io.IOException; 
public class Coche{ 
 static boolean estado=false;
 static int velocidad=0; 
 static int VMAXIMA=120; 
public static void menu(){ 
 System.out.println("1.- Montar en el coche");
 System.out.println("2.- Comenzar");
 
 Para uso exclusivo de los alumnos de CETICSA S.L.
Las diferentestecnologías de programación se diferencian en la manera que ofrecen de estructurar 
los datos y el código que forman una aplicación. 
A la hora de plantear el análisis del problema que se quiere resolver por software, todas las 
tecnologías han optado por dividir dicho problema en parte más pequeñas. La estrategia a seguir es 
conseguir una estructura en la que cada una de esas partes realice una tarea única e indivisible, 
coordinadas por una parte principal que obtiene la información de lo que hay que hacer de su 
interacción con el usuario. En la actualidad esta interacción se realiza a través de un entorno gráfico 
n mediante eventos. 
En los lenguajes procedimentales, orientados a funciones, la estructura se realiza tomando como 
referencia el código. Cada una de esas partes se denomina subrutina, procedimiento o función 
dependiendo del lenguaje en el que nos encontremos. 
En los lenguaje orientados a objetos, la estructura se realiza tomando como referencia los datos. 
Cada una de esas partes se denomina objeto. 
En Java una clase se suele representar con la siguiente estructura: 
> Características del elemento que describimos con la clase.
> Comportamiento y funcionalidades del elemento. 
Analizaremos algunos conceptos básicos para poder comprender el concepto de propiedad 
(variables), métodos (funciones) y lógicas de funcionamiento. 
En este primer ejemplo podemos observar que creamos una clase coche. 
Las propiedades de la clase representan características del coche: estado, velocidad actual, 
os representan acciones que podemos realizar sobre el coche: montar, bajar, salir,...
La lógica de funcionamiento se implementa en el código de cada método 
static boolean estado=false; 
 
Montar en el coche"); 
Comenzar"); 
 www.ceticsa.es 
Para uso exclusivo de los alumnos de CETICSA S.L. 
P
á
g
in
a
1
2
 
Clases 
Las diferentes tecnologías de programación se diferencian en la manera que ofrecen de estructurar 
A la hora de plantear el análisis del problema que se quiere resolver por software, todas las 
tecnologías han optado por dividir dicho problema en parte más pequeñas. La estrategia a seguir es 
ice una tarea única e indivisible, 
que obtiene la información de lo que hay que hacer de su 
interacción con el usuario. En la actualidad esta interacción se realiza a través de un entorno gráfico 
En los lenguajes procedimentales, orientados a funciones, la estructura se realiza tomando como 
referencia el código. Cada una de esas partes se denomina subrutina, procedimiento o función 
En los lenguaje orientados a objetos, la estructura se realiza tomando como referencia los datos. 
> Características del elemento que describimos con la clase. 
Analizaremos algunos conceptos básicos para poder comprender el concepto de propiedad 
Las propiedades de la clase representan características del coche: estado, velocidad actual, 
os representan acciones que podemos realizar sobre el coche: montar, bajar, salir,... 
 
 © 
 System.out.println("3.- Parar");
 System.out.println("4.- Salir del coche");
 System.out.println(""); 
 System.out.println("Introduzca una opción");
} 
public static void montar(){ 
 if (estado==false){ 
 System.out.println("Ya estás encima del coche.");
 estado=true; 
 } 
 else{ 
 System.out.println("Ya estabas arriba, no intentes subir otra vez.");
 } 
 menu(); 
} 
public static void comenzar (){ 
 if(estado==false){ 
 System.out.println("Primero sube al coche");
 } 
 else if (velocidad== VMAXIMA){
 System.out.println("Ya no puedes 
 } 
 
 else{ 
 ++velocidad; 
 System.out.println("Velocidad actual= "+velocidad);
 } 
 menu(); 
} 
public static void parar(){ 
 if (velocidad==0){ 
 System.out.println("Si estás parado porque frenas");
 } 
 else{ 
 System.out.println("El frenado se realiza de golpe");
 velocidad=0; 
 } 
 menu(); 
 
} 
 
public static void salirCoche(){ 
 
 if(estado==false){ 
 
 System.out.println ("No te has subido y ya te bajas");
 } 
 
 else if(velocidad!=0){ 
 
 System.out.println("Primero frena y luego baja");
 } 
 
 else { 
 
 System.out.println("Acabas de bajar del coche.");
 
 Para uso exclusivo de los alumnos de CETICSA S.L.
Parar"); 
Salir del coche"); 
System.out.println("Introduzca una opción"); 
 
 
System.out.println("Ya estás encima del coche."); 
 
System.out.println("Ya estabas arriba, no intentes subir otra vez.");
 
System.out.println("Primero sube al coche"); 
if (velocidad== VMAXIMA){ 
System.out.println("Ya no puedes acelerar más"); 
 
System.out.println("Velocidad actual= "+velocidad); 
 
System.out.println("Si estás parado porque frenas"); 
nado se realiza de golpe"); 
System.out.println ("No te has subido y ya te bajas"); 
System.out.println("Primero frena y luego baja"); 
System.out.println("Acabas de bajar del coche."); 
 www.ceticsa.es 
Para uso exclusivo de los alumnos de CETICSA S.L. 
P
á
g
in
a
1
3
 
System.out.println("Ya estabas arriba, no intentes subir otra vez."); 
 
 © 
 } 
 menu(); 
 
} 
 
public static void main(String args[])throws IOException{
 
 
 BufferedReader i=new BufferedReader(new InputStreamReader(System.in));
 String opcion;
 
 menu(); 
 
 do{ 
 
 opcion=i.readLine();
 
 try{ 
 
 switch(Integer.parseInt(opcion)){
 
 case 1: montar();
 
 
 case 2: comenzar();
 
 
 case 3:parar();
 
 
 case 4: salirCoche ();
 
 
 
 default:System.out.println("No existe la opción");
 
 
 } 
 } 
 catch( NumberFormatException e){
 
 System.out.println("La opción debe ser un número");
 } 
 
 }while (true); 
 
} 
 
} 
 
 
 
 
 
 
 Para uso exclusivo de los alumnos de CETICSA S.L.
public static void main(String args[])throws IOException{ 
BufferedReader i=new BufferedReader(new InputStreamReader(System.in));
String opcion; 
 
opcion=i.readLine(); 
switch(Integer.parseInt(opcion)){ 
case 1: montar(); 
 break; 
 
case 2: comenzar(); 
 break; 
 
case 3:parar(); 
 break; 
 
case 4: salirCoche (); 
 System.exit(0); 
 
 
default:System.out.println("No existe la opción"); 
 
 
catch( NumberFormatException e){ 
System.out.println("La opción debe ser un número");
 
 
 www.ceticsa.es 
Para uso exclusivo de los alumnos de CETICSA S.L. 
P
á
g
in
a
1
4
 
BufferedReader i=new BufferedReader(new InputStreamReader(System.in)); 
 
System.out.println("La opción debe ser un número"); 
 
 © 
 
Tipos de clases. 
abstract 
Una clase abstract tiene al menos un método abstracto. Una clase abstracta no se instancia, sino 
que se utiliza como clase base para la herencia.
 
final 
Una clase final se declara como la clase que termina una cadena de herencia. No se puede heredar 
de una clase final. Por ejemplo, la clase Math es una clase final.
 
public 
Las clases public son accesibles desde otras clases, bien sea directamente o por herencia. Son 
accesibles dentro del mismo paquete en el que se han declarado. Para acceder desde otros 
paquetes, primero tienen que ser importadas.
 
synchronizable 
Este modificador especifica que todos los métodos definidos en la clase son sincronizados, es decir, 
que no se puede acceder al mismo tiempo a ellos desde distintos threads; el sistema se encarga de 
colocar los flags necesarios para evitarlo. Este mecanismo hace que desde threads diferentes se 
puedan modificar las mismas variables sin que haya problemas de que se sobreescriban.
 
Variables de instancia. 
La declaración de una variable dentro de la definición de una clase por defecto es una variable de 
instancia. Con esto queremos decir que todo objetoque instanciemos de esa clase contiene su 
propia copia de dicha variable. 
Se pueden acceder a las variables de instancia de un objeto de la siguiente manera: 
Nombreobjeto.nombrevariabledeinstancia
Estas variables deben ser declaradas fuera de los métodos y dentro de la clase, y son del tipo global 
por lo que las pueden utilizar cualquier método no estático d
métodos estáticos es necesario instanciar la clase.
 
Variables estáticas. 
Si al definir una variable le anteponemos la palabra static conseguimos que todos los objetos de 
dicha clase compartan dicha variable. Es decir e
algún objeto modifica la variable, quedará modificada para todos los objetos. 
 
Si queremos acceder a una variable de clase no es necesario instanciar ningún objeto de dicha clase, 
basta con usar: 
Nombredeclase.nombredevariableestática
 
 Para uso exclusivo de los alumnos de CETICSA S.L.
tiene al menos un método abstracto. Una clase abstracta no se instancia, sino 
que se utiliza como clase base para la herencia. 
se declara como la clase que termina una cadena de herencia. No se puede heredar 
nal. Por ejemplo, la clase Math es una clase final. 
son accesibles desde otras clases, bien sea directamente o por herencia. Son 
accesibles dentro del mismo paquete en el que se han declarado. Para acceder desde otros 
rimero tienen que ser importadas. 
Este modificador especifica que todos los métodos definidos en la clase son sincronizados, es decir, 
que no se puede acceder al mismo tiempo a ellos desde distintos threads; el sistema se encarga de 
r los flags necesarios para evitarlo. Este mecanismo hace que desde threads diferentes se 
puedan modificar las mismas variables sin que haya problemas de que se sobreescriban.
La declaración de una variable dentro de la definición de una clase por defecto es una variable de 
instancia. Con esto queremos decir que todo objeto que instanciemos de esa clase contiene su 
es de instancia de un objeto de la siguiente manera: 
Nombreobjeto.nombrevariabledeinstancia 
Estas variables deben ser declaradas fuera de los métodos y dentro de la clase, y son del tipo global 
por lo que las pueden utilizar cualquier método no estático de esa clase, pero para acceder desde 
métodos estáticos es necesario instanciar la clase. 
Si al definir una variable le anteponemos la palabra static conseguimos que todos los objetos de 
dicha clase compartan dicha variable. Es decir existe una única copia de dicha variable, por tanto, si 
algún objeto modifica la variable, quedará modificada para todos los objetos. 
Si queremos acceder a una variable de clase no es necesario instanciar ningún objeto de dicha clase, 
bredeclase.nombredevariableestática 
 www.ceticsa.es 
Para uso exclusivo de los alumnos de CETICSA S.L. 
P
á
g
in
a
1
5
 
tiene al menos un método abstracto. Una clase abstracta no se instancia, sino 
se declara como la clase que termina una cadena de herencia. No se puede heredar 
son accesibles desde otras clases, bien sea directamente o por herencia. Son 
accesibles dentro del mismo paquete en el que se han declarado. Para acceder desde otros 
Este modificador especifica que todos los métodos definidos en la clase son sincronizados, es decir, 
que no se puede acceder al mismo tiempo a ellos desde distintos threads; el sistema se encarga de 
r los flags necesarios para evitarlo. Este mecanismo hace que desde threads diferentes se 
puedan modificar las mismas variables sin que haya problemas de que se sobreescriban. 
La declaración de una variable dentro de la definición de una clase por defecto es una variable de 
instancia. Con esto queremos decir que todo objeto que instanciemos de esa clase contiene su 
es de instancia de un objeto de la siguiente manera: 
Estas variables deben ser declaradas fuera de los métodos y dentro de la clase, y son del tipo global 
e esa clase, pero para acceder desde 
Si al definir una variable le anteponemos la palabra static conseguimos que todos los objetos de 
xiste una única copia de dicha variable, por tanto, si 
algún objeto modifica la variable, quedará modificada para todos los objetos. 
Si queremos acceder a una variable de clase no es necesario instanciar ningún objeto de dicha clase, 
 
 © 
En este ejemplo definimos una variable estática para la velocidad máxima a la que puede ir un 
coche, accederemos al valor de la variable sin necesidad de crear una variable de instancia:
 
public class Coche{ 
 … 
 … 
 … 
static int VMAXIMA=120;//Velocidad máxima a la que podemos circular.
… 
… 
… 
} 
 
 
 
public class Conductor { 
 
 
public static void main(String args[]){ 
 
System.out.prinln(Coche.VMAXIMA); 
} 
 
Variables finales. 
En Java se usa la palabra clave final para indicar que una variable debe comportarse como si fuese 
una constante. Por tanto, no se permitirá su modificación una vez que sea declarada e inicializada. 
Poniendo la palabra final con una variable o clase estát
Si intentamos modificar el valor de la variable nos dará error.
En este ejemplo intentaremos modificar la velocidad máxima a la que puede ir un coche. Como la 
variable que controla la velocidad máxima es final comprobare
 
public class Coche{ 
 … 
 … 
 … 
static final int VMAXIMA=120;//Velocidad máxima a la que podemos circular.
… 
… 
… 
} 
 
 
public class Conductor { 
 
public static void main(String args[]){ 
 
Coche.VMAXIMA=180; 
System.out.prinln(Coche.VMAXIMA); 
} 
 
 
 Para uso exclusivo de los alumnos de CETICSA S.L.
En este ejemplo definimos una variable estática para la velocidad máxima a la que puede ir un 
coche, accederemos al valor de la variable sin necesidad de crear una variable de instancia:
static int VMAXIMA=120;//Velocidad máxima a la que podemos circular. 
 
En Java se usa la palabra clave final para indicar que una variable debe comportarse como si fuese 
una constante. Por tanto, no se permitirá su modificación una vez que sea declarada e inicializada. 
Poniendo la palabra final con una variable o clase estática, se crean constantes de clase. 
Si intentamos modificar el valor de la variable nos dará error. 
En este ejemplo intentaremos modificar la velocidad máxima a la que puede ir un coche. Como la 
variable que controla la velocidad máxima es final comprobaremos que nos saltará un error:
static final int VMAXIMA=120;//Velocidad máxima a la que podemos circular. 
 
 www.ceticsa.es 
Para uso exclusivo de los alumnos de CETICSA S.L. 
P
á
g
in
a
1
6
 
En este ejemplo definimos una variable estática para la velocidad máxima a la que puede ir un 
coche, accederemos al valor de la variable sin necesidad de crear una variable de instancia: 
En Java se usa la palabra clave final para indicar que una variable debe comportarse como si fuese 
una constante. Por tanto, no se permitirá su modificación una vez que sea declarada e inicializada. 
ica, se crean constantes de clase. 
En este ejemplo intentaremos modificar la velocidad máxima a la que puede ir un coche. Como la 
mos que nos saltará un error: 
 
 © 
Métodos de clase. 
Los métodos son funciones que pueden ser llamados dentro de la clase o por otras clases. 
La implementación siempre será de dos partes: la declaración y el cuerpo: 
 
[ModificadoresAcceso] TipoRetorno nombreMétodo ([lista_de_argumentos]) [excepciones]{
CuerpodelMétodo 
} 
 
La lista de argumentos es opcional. Los parámetros o argumentos se usan para pasar información al 
cuerpo del método. Los parámetros se pararán a la hora de llamarlos.
El tipo de retorno es obligatorio e indica el tipo de dato que devuelve tras realizar su tarea. Si no 
devuelve nada se indica mediante la palabra void. Lo recibe la aplicación que realizó la llamada.Para devolver un valor se utiliza la palabra clave return. 
Si se declara un método anteponiendo la palabra static, éste se convierte en un método estático o 
de clase. Las características de estos métodos son: 
Pueden ser invocados sin necesidad de que haya que instanciar ningún objeto de la clase.
NombreClase.nombreMétodo(...) 
Los métodos estáticos sólo tienen acceso a variables de clase o estáticas; no tienen acceso a las 
variables de instancia a no ser que se cree un objeto y se acceda a las variables de instancia a 
través de ese objeto. 
 
Sobrecarga de métodos o polimorfismo
En Java es posible definir dos o más métodos dentro de la misma clase que compartan el mismo 
nombre pero las declaraciones de sus parámetros deben ser diferentes. A esto es a lo que se conoce 
como Sobrecarga de Métodos. 
La Sobrecarga es uno de los proce
programación orientada a objetos es la capacidad que tienen los objetos de una clase de responder 
al mismo mensaje o evento en función de los parámetros utilizados durante su invocación).
En este ejemplo definimos una clase con 3 métodos sobrecargados: 
class Principal{ 
 public void Metodo1() 
 { 
 System.out.println(“Metodo sin Argumentos”);
 } 
 
 public void Metodo1(int edad) // Sobrecarga con un parámetro 
 { 
 System.out.print(“Metodo con un 
 System.out.println(“ edad= “ +edad);
 
 } 
 
 public void Metodo1(double edad, double año, double mes) //Sobrecarga con tres parámetros
 { 
 
 Para uso exclusivo de los alumnos de CETICSA S.L.
Los métodos son funciones que pueden ser llamados dentro de la clase o por otras clases. 
La implementación siempre será de dos partes: la declaración y el cuerpo: 
nombreMétodo ([lista_de_argumentos]) [excepciones]{
La lista de argumentos es opcional. Los parámetros o argumentos se usan para pasar información al 
cuerpo del método. Los parámetros se pararán a la hora de llamarlos. 
o es obligatorio e indica el tipo de dato que devuelve tras realizar su tarea. Si no 
devuelve nada se indica mediante la palabra void. Lo recibe la aplicación que realizó la llamada. 
Para devolver un valor se utiliza la palabra clave return. 
a un método anteponiendo la palabra static, éste se convierte en un método estático o 
de clase. Las características de estos métodos son: 
Pueden ser invocados sin necesidad de que haya que instanciar ningún objeto de la clase.
Los métodos estáticos sólo tienen acceso a variables de clase o estáticas; no tienen acceso a las 
variables de instancia a no ser que se cree un objeto y se acceda a las variables de instancia a 
Sobrecarga de métodos o polimorfismo . 
En Java es posible definir dos o más métodos dentro de la misma clase que compartan el mismo 
nombre pero las declaraciones de sus parámetros deben ser diferentes. A esto es a lo que se conoce 
La Sobrecarga es uno de los procedimientos mediante el cual Java implementa el polimorfismo(en 
programación orientada a objetos es la capacidad que tienen los objetos de una clase de responder 
al mismo mensaje o evento en función de los parámetros utilizados durante su invocación).
e ejemplo definimos una clase con 3 métodos sobrecargados: 
System.out.println(“Metodo sin Argumentos”); 
public void Metodo1(int edad) // Sobrecarga con un parámetro 
System.out.print(“Metodo con un Argumento:”); 
System.out.println(“ edad= “ +edad); 
public void Metodo1(double edad, double año, double mes) //Sobrecarga con tres parámetros
 www.ceticsa.es 
Para uso exclusivo de los alumnos de CETICSA S.L. 
P
á
g
in
a
1
7
 
Los métodos son funciones que pueden ser llamados dentro de la clase o por otras clases. 
 
nombreMétodo ([lista_de_argumentos]) [excepciones]{ 
La lista de argumentos es opcional. Los parámetros o argumentos se usan para pasar información al 
o es obligatorio e indica el tipo de dato que devuelve tras realizar su tarea. Si no 
devuelve nada se indica mediante la palabra void. Lo recibe la aplicación que realizó la llamada. 
a un método anteponiendo la palabra static, éste se convierte en un método estático o 
Pueden ser invocados sin necesidad de que haya que instanciar ningún objeto de la clase. 
Los métodos estáticos sólo tienen acceso a variables de clase o estáticas; no tienen acceso a las 
variables de instancia a no ser que se cree un objeto y se acceda a las variables de instancia a 
En Java es posible definir dos o más métodos dentro de la misma clase que compartan el mismo 
nombre pero las declaraciones de sus parámetros deben ser diferentes. A esto es a lo que se conoce 
dimientos mediante el cual Java implementa el polimorfismo(en 
programación orientada a objetos es la capacidad que tienen los objetos de una clase de responder 
al mismo mensaje o evento en función de los parámetros utilizados durante su invocación). 
public void Metodo1(double edad, double año, double mes) //Sobrecarga con tres parámetros 
 
 © 
 System.out.print(“Metodo con tres Argumentos:”);
 System.out.println(“ edad= “ +edad+ “ año= “ + 
 } 
} 
class Prueba{ 
 
 public static void main (String [] var)
 { 
Principal objeto= new Principal(); //Se crea un Objeto de nombre Objeto para llamar a los Métodos Sobrecargados
 objeto.Metodo1();
 objeto.Metodo1a(30);
 o
 
 } 
} 
 
 
Unidad 3 : Identificadores, palabras clave y 
 
Introducción. 
Al igual que el lenguaje natural que utilizamos para comunicarnos, ya sea de forma oral o por 
escrito, cualquier lenguaje de programación dispone de unos elementos y reglas que deben 
conocerse a la hora de programar.
Los elementos del lenguaje natural 
esas cosas (adjetivos), expresar acciones (verbos), etc.
Las reglas sintácticas (estructura) y semánticas (significado) permiten el entendimiento entre las 
partes que forman la comunicación.
En los lenguajes de programación también encontramos unas reglas sintácticas que debemos 
respetar a la hora de confeccionar los programas y una semántica encargada de resolver el 
problema que queremos programar. 
 
Utilizar comentarios en el código fuente
 
Comentarios en los programas
Un aspecto importante a la hora de confeccionar un programa es comentar lo más detalladamente 
posible lo que significa cada una de las órdenes que forman parte del programa, con el propósito de 
poder recordar en un futuro la func
ajenas al programa. 
 
Sintaxis. 
En java hay tres tipos de comentarios: 
 
 Para uso exclusivo de los alumnos de CETICSA S.L.
System.out.print(“Metodo con tres Argumentos:”); 
System.out.println(“ edad= “ +edad+ “ año= “ + año + “ mes= “ + mes );
public static void main (String [] var) 
Principal objeto= new Principal(); //Se crea un Objeto de nombre Objeto para llamar a los Métodos Sobrecargados
objeto.Metodo1(); 
objeto.Metodo1a(30); 
objeto.Metodo1(30.2,76.0,8.6); 
Unidad 3 : Identificadores, palabras clave y 
tipos 
Al igual que el lenguaje natural que utilizamos para comunicarnos, ya sea de forma oral o por 
escrito, cualquier lenguaje de programación dispone de unos elementos y reglas que deben 
conocerse a la hora de programar. 
Los elementos del lenguaje natural nos permiten designar cosas (nombres), expresar cualidades de 
esas cosas (adjetivos), expresar acciones (verbos), etc. 
Las reglas sintácticas (estructura) y semánticas (significado) permiten el entendimiento entre las 
partes que forman la comunicación. 
los lenguajes de programación también encontramos unas reglas sintácticas que debemos 
respetar a la hora de confeccionar los programas y una semántica encargada de resolver el 
problema que queremos programar. 
Utilizar comentarios en el código fuente
mentarios en los programas 
Un aspecto importante a la hora de confeccionar un programa es comentar lo más detalladamente 
posible lo que significa cada una de

Otros materiales