OCA Java 8 Programmer I Teoría y Práctica Para Certificación
Por Julio Sanchez
()
Información de este libro electrónico
Libro de preparación con más de 270 preguntas resueltas, dirigido a profesionales que desean certificarse en Java 8 Programmer I de Oracle. Esta publicación detalla en teoría y con ejemplos didácticos todo el temario especificado por Oracle. Además se incluyen un simulacro de examen por cada uno de los seis capítulos del libro, asi como de un simulacro final de examen de certificación, de tal forma que al finalizar la lectura, se esté preparado para rendir exitosamente el examen de certificación Java Programmer I (1Z0-808) de Oracle.
Comentarios para OCA Java 8 Programmer I Teoría y Práctica Para Certificación
0 clasificaciones0 comentarios
Vista previa del libro
OCA Java 8 Programmer I Teoría y Práctica Para Certificación - Julio Sanchez
CRÉDITOS
OCA JAVA 8 PROGRAMMER I: TEORÍA Y PRÁCTICA PARA CERTIFICACIÓN
JULIO SÁNCHEZ
© Julio César Sánchez Díaz, 2018
julio.sanchez@sanxdit.com
Diseño y Diagramación:
Julio César Sánchez Díaz
Edición Digital por:
Julio César Sánchez Díaz
Primera Edición Digital – junio del 2018
AGRADECIMIENTOS
Agradradezco a la comunidad de profesionales certificados de Oracle en LinkedIn, por su apoyo y colaboración en la revisión del contenido, así como por las sugerencias muy bien apreciadas.
Respecto al Diseño de La Cubierta
La imagen principal de la cubierta es una imagen fractal, que tiene como parámetro principal un factor lambda. El valor de este factor lambda tiene como número principal el 8. Ya se imaginan, que nada de esto es casualidad, a excepción, tal vez esté equivocado, de la imagen producto de la combinación es estas características.
TEMARIO GENERAL
JAVA ELEMENTAL
CONTROL DE FLUJO Y OPERADORES
CLASES SELECTAS DE JAVA
LAMBDAS, MÉTODOS Y ENCAPSULAMIENTO
POLIMORFISMO Y HERENCIA DE CLASES E INTERFACES
MANEJANDO EXCEPCIONES
Introducción
Agradecemos por su elección y le comunicamos que el examen de certificación es bastante llevadero, y podemos dividir el tipo de preguntas en dos categorías que pasamos a detallar.
La primera categoría de preguntas comunes que necesitan conocer la teoría y que ascienden aproximadamente al 80%. La segunda categoría de preguntas con detalles escondidos de menor cantidad y requiere más de nuestra atención.
Vamos a poner toda nuestra experiencia para ayudarle a lograr la certificación Oracle. Te vamos a empoderar para que puedas rendir exitosamente el examen de certificación OCA: Java Programmer I y así, te unas a este grupo privilegiado de profesionales.
Oracle especifica los temas que abarca el examen y este curso los va a desarrollar ampliamente en la teórica y, sobre todo, en la parte práctica, de tal manera, que obtengas los skills necesarios para rendir confiadamente el examen de certificación.
Te recomendamos que realices los simulacros que adjuntamos, practiques e identifiques qué temas necesitan repaso.
Si deseas comunicarte para hacer un comentario o recomendación, te alentamos a escribirnos al correo electrónico ocajava8book@sanxdit.com o hacer un post al blog que tiene por dirección https://ocajava8book.blogspot.com, creado para esta publicación.
Finalmente, deseamos que la comunidad de profesionales certificados de Oracle, se incremente hasta llegar a la meta de tener equipos completos de profesionales certificados, con la finalidad que nuestra comunidad de habla hispana, especialmente de latino américa, se beneficie mucho más de la industria del desarrollo de software.
Julio Sánchez.
Contenido
CRÉDITOS
AGRADECIMIENTOS
TEMARIO GENERAL
CAPITULO i: jAVA ELEMENTAL
Introducción
Comenzando con Java
Fundamentos de Programación Orientada a Objetos
Abstracción
Encapsulamiento
Herencia
Polimorfismo
Estructura de una clase
Campos
Métodos
Método main
Comentarios
Usando Objetos
Qué Es Un Constructor
Trabajando con campos de un objeto
Identificadores
Diferencias entre tipos Primitivos y Referencias
Qué son las variables
Tipos Primitivos
Tipo referencia
Declarando múltiples Variables
Inicializar una Variable
Variables Locales
Variables de clase
Variables de Instancia
Parámetro de Métodos
Variable de Instancia Final
Alcance de una variable
Bloque de inicialización de campos
Orden de inicialización de campos
Cómo Declarar e Importar Paquetes
Qué es un Paquete
Cómo declarar un paquete
Cómo importar paquetes
Importaciones redundantes de paquetes
Conflicto de paquetes
Ciclo de Vida Simplificado de un Objeto
Estado Creado
Estado En Uso
Estado Inalcanzable
Estado Finalizado
Estado Desasignado
Eliminando un Objeto
Qué es Garbage Collection
Qué es el método finalize
Guardar las clases que programamos
Compilar y ejecutar clases
Ventajas de Java
Independiente de plataforma
Soporta Programación Funcional
Lenguaje Orientado a Objetos
Abstracción
Herencia
Encapsulación
Polimorfismo
Seguridad
Gestión Automática de Memoria
Fuertemente Tipado
Soporta Herencia Múltiple
MEDIA MARATÓN - EJERCICIOS DE ENTRENAMIENTO
SIMULACRO DE EXAMEN DE CERTIFICACIÓN – CAPÍTULO I- Tiempo: 75’
RESPUESTAS AL EXAMEN
CAPITULO ii: CONTROL DE FLUJO Y OPERADORES
Introducción
Qué es un operador
Orden de precedencia de Operadores
Operador de Asignación
Operadores Aritméticos
Los paréntesis modifican el orden de precedencia
Promoción Numérica
Operadores Unarios
Introducción
Operador de Negación
Operadores Incremento y Decremento
Más Sobre Operadores Binarios
Casting a Valores Primitivos
Operadores de Asignación Compuesta
Operadores de Igualdad
Operadores Relacionales
Operador instanceOf
Operadores Lógicos
Trabajando con el Operador Ternario
Usando Clases Contenedoras
Estructura de Herencia de clases Contenedoras
Conversión de String a Tipos Primitivos y Clases Contenedoras
Autoboxing y Unboxing
SENTENCIAS DE DECISIÓN
Usando if
Trabajando con if – else
Sentencia for en práctica
Facilitando el trabajo con for- each
Usando la sentencia while
Trabajando con do – while
Usando switch
Loops Anidados
Usando etiquetas
Sentencia continue
La Sentencia break
MEDIA MARATÓN - EJERCICIOS DE ENTRENAMIENTO
SIMULACRO DE EXAMEN DE CERTIFICACIÓN – CAPÍTULO II - Tiempo: 78’
RESPUESTAS AL EXAMEN
CAPITULO III: CLASES SELECTAS DE JAVA
Introducción
Las Nuevas Clases de Fecha y Tiempo
Cómo Crear Objetos de Fechas y Tiempo
Usando Fecha y Tiempo en Java
Interpretando cadenas de Fecha y Tiempo
Trabajando con Cadenas
La clase String
String es Inmutable
El Pool de String
Concatenación
Métodos de String
Encadenado de Métodos
String Builder, Mejorando String
Usando Arreglos
Qué es un Arreglo
Declarar e Inicializar un Arreglo
Campo length
Método clone
Ordenamiento de Arreglos
Búsqueda en Arreglos
Qué es varargs
Arreglos Multidimensionales
Usando Listas
Interface List
La clase ArrayList
Acceder a Elementos de una Lista
Modificar Elementos de una Lista
Eliminar elemento de una Lista
Conversión entre un Arreglo y una Lista
Ordenamiento Mediante el uso de la clase Collection
Definiendo Igualdad
El Operador ==
Método equals
MEDIA MARATÓN - EJERCICIOS DE ENTRENAMIENTO
SIMULACRO DE EXAMEN DE CERTIFICACIÓN – CAPÍTULO III- Tiempo: 75’
RESPUESTAS AL EXAMEN
CAPITULO IV: LAMBDA, MÉTODOS Y ENCAPSULAMIENTO
Introducción
Constructores
Propiedades de Constructor
Cómo crear Constructores
Constructor por Defecto
Constructores Sobrecargados
Invocación entre Constructores
Destructor
Trabajando con Métodos
Qué son los modificadores de Acceso
Especificadores Opcionales
Tipo de Retorno
Nombre del Método
Lista de Parámetros
Parámetro tipo vararg
Lista de Excepciones
Cuerpo del Método
Trabajando con modificadores de acceso
Miembros de Clase Estáticos
Pasar información a un método
Sobrecargando Métodos
Orden de Inicialización
Introducción
Trabajando con Encapsulamiento
Cómo Realizar Encapsulamiento
Lambda Elemental
Introducción
Programando con Expresiones Lambda
Estructura de una Expresión Lambda
Interface Funcional
Método removeIf, usando Lambdas con Listas
MEDIA MARATÓN - EJERCICIOS DE ENTRENAMIENTO
SIMULACRO DE EXAMEN DE CERTIFICACIÓN – CAPÍTULO IV - Tiempo: 75’
RESPUESTAS AL EXAMEN
CAPITULO V: POLIMORFISMO Y HERENCIA DE CLASES E INTERFACES
Introducción
Qué es Herencia de Clases
Beneficios de Herencia de Clases
Cómo Realizar Herencia de Clases
Control de Acceso a Miembros de Clase
Modificador de Acceso Privado (private)
Modificador de Acceso Por Defecto
Modificador de Acceso Protegido (protected)
Modificador de Acceso Público (public)
Qué Miembros Hereda una Sub Clase
Instanciando una Clase
Cómo Usar Miembros Heredados
Usando Variables Heredadas
Trabajando con Métodos Heredados
Diferencias entre Sobrescribir y Sobrecargar Métodos Heredados
Jerarquía de Clases
Cómo crear clases abstractas
Especificación de una Clase Abstracta
Sub Clase Concreta
Cómo extender una clase Abstracta
Usando Interfaces y Herencia Múltiple
Introducción
Qué es una interface
Consideraciones para Definir una Interface
Variables de una Interface
Cómo extender una Interface
Resolviendo Conflicto de Métodos Heredados
Métodos Estáticos de Interfaces
Herencia de Interfaces con Métodos por Defecto
Usando Polimorfismo y Conversiones
Polimorfismo
Conversiones Explícitas
MEDIA MARATÓN - EJERCICIOS DE ENTRENAMIENTO
SIMULACRO DE EXAMEN DE CERTIFICACIÓN – CAPÍTULO V - Tiempo: 75’
RESPUESTAS AL EXAMEN
CAPITULO VI: MANEJANDO EXCEPCIONES
Introducción
Qué Son Excepciones
El API de Excepciones
Cómo Capturar una Excepción
Cómo Lanzar una Excepción Programáticamente
Usando finally
Manejando Varios tipos de Excepciones
Lanzando Múltiples Excepciones
Trabajando con Excepciones Comunes
Excepciones Explícitas
Excepciones Implícitas
Errores
Cómo Manejar Excepciones Lanzado por Métodos
Analizando una Excepción
MEDIA MARATÓN - EJERCICIOS DE ENTRENAMIENTO
SIMULACRO DE EXAMEN DE CERTIFICACIÓN – CAPÍTULO VI - Tiempo: 75’
RESPUESTAS AL EXAMEN
ADENDA
SIMULACRO DE EXAMEN DE CERTIFICACIÓN 1Z0-808: OCA JAVA SE 8 PROGRAMMER I
RESPUESTAS AL SIMULACRO DE EXAMEN DE CERTIFICACIÒN
JAVA ELEMENTAL
Fundamentos de programación
Estructura de una clase
Usando Objetos
Identificadores
Diferencia entre tipos
Importar paquetes
Ventajas de Java
Introducción
En este capítulo explicaremos los conceptos principales del lenguaje de programación Java y de la programación orientada a objetos en general. A pesar de ser aspectos básicos del lenguaje, es recomendable una revisión del capítulo porque hay temas que seguramente serán nuevos para ti.
En cada tema presentamos ejemplos tipo examen de certificación, de tal manera que se familiarice con las preguntas. Cuánto más preguntas desarrolle y practique, aumentará su posibilidad de lograr el objetivo. Con trabajo y persistencia, estamos seguros que serán así. Comencemos con este apartado importante.
Comenzando con Java
¿Qué es Java?
A: Un lenguaje orientado a objetos
B: Un lenguaje funcional y orientado a objetos
C. Lenguaje procedural
Java es un lenguaje de programación orientado a objetos principalmente, pero además tiene características funcionales. Respuesta A.
Por qué Java es un lenguaje Orientado a Objetos
Porque los programas que creamos en Java están basados en la interacción de objetos que se envían mensajes unos a otros con la finalidad de brindar un funcionamiento útil. Los mecanismos fundamentales de la programación orientada a objetos son, justamente, los objetos, métodos, mensajes y clases.
Qué es una clase
Una clase es un tipo de objeto definido por el usuario. Una clase es una generalización de tipos de objetos, como un molde o plantilla que dará la forma a objetos
que obtendremos a partir de esta plantilla.
En una clase se especifica o programa dos aspectos principales, primero, las características o estado del objeto. Segundo, el comportamiento o funcionamiento
Técnicamente, una clase es un bloque de construcción básico, y nuestro trabajo consiste en definir o programar cada parte de ese bloque.
Se puede hacer una analogía de clases con moldes o corta galletas. Con el corta galletas podemos obtener galletas de diferentes características y en cualquier número y, dependiendo del molde, cualquier forma.
Figura1.1. Molde de Galletas
Qué es un Objeto
Un objeto es producto de usar una clase para su creación, lo que se conoce técnicamente como instanciar una clase. Nosotros los programadores escribimos clases que nos servirán para crear objetos que irán a interactuar con otros.
Los objetos son la base de un programa orientados a objetos, en base a su interacción se construye el software. Haciendo uso de las mejores prácticas de análisis y diseño, podemos estructurar correctamente un software, comenzando por diseñar una clase y utilizar estructuras complejas como patrones de diseño.
Técnicamente, un objeto es una encapsulación genérica de datos y comportamiento que manipulan esos datos y, eventualmente, producen un resultado. Un objeto es una entidad que tiene propiedades y métodos que manipulan esas propiedades.
Fundamentos de Programación Orientada a Objetos
Abstracción
Exponer lo esencial y relevante ocultando los detalles a los usuarios. Nos permite generalizar y enfocarnos en los aspectos que brinden una visión global del problema.
Encapsulamiento
Esta característica nos permite ver a un objeto como una caja negra, con entradas y salidas específicas, sin considerar los detalles internos. Además va a permitir proteger el estado del objeto de inconsistencias y manipulación que causen errores.
Herencia
Nos brinda acceso automático de información contenida en otras clases, lo que garantiza la reutilización de código, atributos y comportamiento.
La herencia va a dar lugar a la formación de jerarquías de clases, obteniendo clases relacionadas. Las clases que están en la parte inferior de la jerarquía heredan de las clases que están en la jerarquía superior, llamadas super clases o clases padre.
La herencia de clases en Java es simple, es decir que una clase sólo puede tener una super clase. Sin embargo, con el uso de las nuevas características de interfaces podemos tener herencia múltiple.
Figura1.2. Herencia Simple
Polimorfismo
Hace referencia a la capacidad que puede tener un objeto de asumir tipos distintos al suyo. Así, un objeto puede asumir el tipo de la super clase, por ejemplo.
A nivel de clase, un método puede tener comportamientos distintos, como se explicará en los siguientes capítulos.
Estructura de una clase
Una clase tiene dos partes principales. Los campos y los métodos. Adicionalmente se consideran comentarios, inicializadores de instancia y estáticos. Así como constructores y sentencias importación.
Figura 1.3. Estructura de clase
Como se aprecia, se definió una clase que tiene de nombre Clase. Esta clase tiene dos campos o estados llamados campo1 y campo2. Se observan dos métodos, el primero llamado metodo1 y el segundo llamado metodo2, que retorna un valor tipo String y especifica un parámetro tipo String.
Se aprecia que dentro del paréntesis del método metodo2 hay una variable de nombre arg y tipo String. Esta es una variable parámetro que recibirá los argumentos al momento de la invocación del método.
Como dijimos, una clase tiene dos partes principales, campos y métodos que detallaremos a continuación.
Campos
Contendrá las características de nuestro objeto, lo que se conoce como estado. Por ejemplo el color rojo un objeto laptop es un estado.
Métodos
Es el funcionamiento o comportamiento que se especifica en la clase. Por ejemplo, el encender un objeto laptop es un comportamiento.
Declaración de Método
La declaración de un método está formada por los siguientes elementos:
Nombre del método
Lista de parámetros del método
Bloque de código que forma el cuerpo del método
Tipo retornado por el método
Lista de excepciones, como opcional
Definición o Firma de método
La definición de un método está formada por los siguientes elementos:
Nombre del método
La lista de argumentos, teniendo en cuenta el tipo, la cantidad y el orden de parámetros.
Este concepto es ampliamente utilizado en el apartado de Herencia, especialmente cuando se sobrecarguen, sobrescriban y oculten métodos, que se explicará en los capítulos de Métodos y Herencia. Esta parte también es conocida como signature del método.
Método main
El método main es especial, pues sirve para decirle a la máquina virtual de Java de dónde tiene que empezar a ejecutar nuestro programa; a esto se le llama el punto de entrada del programa o entry point.
Todo programa debe tener un punto de entrada. El signature o firma del método main es de la siguiente manera:
Es posible cambiar el nombre del argumento nameArg y la ubicación de los modificadores public y static. Además es válido agregar otros modificadores como final y synchronized. El tipo de retorno del método, en este caso void, no debe omitirse y siempre debe ir antes del nombre del método
Los corchetes nos dicen que la variable es un arreglo, un objeto que puede contener varios objetos del mismo tipo, en este caso, el tipo es una cadena, un String.
Si un programador cambia el signature del método main no será un punto de entrada y se convertirá en un método común.
Comentarios
Los comentarios sirven para que un programador explique o documente el código que escribe. Tenemos que decirle al compilador que vamos a escribir un comentario y para hacerlo hay dos formas:
Dos barras inclinadas ( // ). Este tipo de comentario es de una sola línea
Una barra seguida de un asterisco y luego con un asterisco seguido de una barra (/* */). Este tipo de comentarios fue creado para soportar múltiples líneas.
Usando Objetos
Ahora que conocemos cómo se construyen plantillas o moldes de objetos, que son las clases, pasaremos a detallar cómo obtener objetos que colaboren entre sí para llegar a obtener la funcionalidad completa del sistema informático.
Los objetos van a permitir ejecutar la funcionalidad que escribimos en las clases, así como manipular sus estados. Por ejemplo si nuestro objeto es una laptop, vamos a poder encender, apagar, ponerle más memoria, etc. a nuestro objeto virtual, estableciendo valores a sus estados, a través del comportamiento que ofrecen.
El proceso de crear un objeto, en términos técnicos se llama instanciar una clase. Veamos un ejemplo:
Se escribe el tipo de objeto como String. Se le da nombre a la referencia como cadena y se usa la palabra reservada new. Finalmente especificamos el nombre del constructor, que es igual al nombre de la clase, escribiendo los argumentos dentro de los paréntesis si fuese necesario. En este caso sin argumentos.
Qué Es Un Constructor
Un constructor es un tipo especial de método que tiene la finalidad de inicializar valores en los campos al momento de construir un objeto. Solamente puede ser llamado en la construcción o instanciación de objetos. Sin embargo, un constructor puede llamar a otro constructor de su propia clase o de su clase padre usando la palabra this o super, según el caso.
Veamos un ejemplo de invocación a constructores:
Trabajando con campos de un objeto
En este punto conocemos cómo definir clases de las cuales podemos obtener objetos, ahora deseamos utilizar los objetos que se han creado, enviarles información y obtener una respuesta. Siguiendo con el ejemplo anterior, si se instanció un objeto LapTop, ¿cómo podemos saber cuál es su color?
Podemos averiguar el estado de un objeto escribiendo la referencia al objeto seguido de punto y luego el nombre del campo, de la siguiente manera:
nombreReferencia.nombreCampo
Se puede imprimir la marca del objeto laptop en pantalla así:
Si se desea asignar o cambiar el estado marca se puede realizar de la siguiente forma:
Identificadores
Un identificador es un nombre, de longitud ilimitada, que se puede asignar a variables, clases, métodos, paquetes e interfaces y otros. Los identificadores deben cumplir ciertas reglas para ser considerados válidos, como el uso de caracteres permitidos y la restricción de usar palabras reservadas del lenguaje Java.
Java soporta codificación de caracteres Unicode 16, que va a permitir a los programadores utilizar identificadores de su propio idioma, como español, chino, japonés, coreano y otros.
Veamos las reglas que debe cumplir