Descarga la aplicación para disfrutar aún más
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
Compartir