Curso Java OCA
Curso Java OCA
ÍNDICE
• Introducción
• Tema 1 Construyendo código Java
• Tema 2 Operadores y sentencias
• Tema 3 APIs de JAVA
• Tema 4 Métodos y encapsulación
• Tema 5 Diseño de clases
• Tema 6 Excepciones
2
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
INTRODUCCIÓN
• Presentación
§ Presentación del profesor
§ Presentación de los alumnos
o Experiencia con JAVA
o Expectativas sobre el curso
o Expectativas sobre la certificación
• Sobre el curso
§ Presentación del temario
§ Dinámica de teoría y ejercicios
§ Descanso
3
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
INTRODUCCIÓN
• Sobre la certificación
• Presentación del learning path de JAVA
• Associate level certification (Java SE)
• Professional level certification (Java SE)
4
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
INTRODUCCIÓN
• Sobre el examen
§ Metodología de estudios
§ Crear un plan de estudio
§ Leer el libro
§ Escribir aplicaciones de prueba con eclipse
§ Resolver los ejercicios de prueba y comprobar las respuestas
§ Crear flashcards y probarse
§ Hacer varios exámenes de prueba en condiciones reales.
• Consejos generales
§ Identifica tus puntos débiles
§ Responde a todas las preguntas siempre
§ Controla el tiempo (minuto y medio por pregunta). Calcula después de varias preguntas para ver el progreso.
o 120 Minutes Remaining: Start exam.
o 90 Minutes Remaining: One third of the exam finished.
o 60 Minutes Remaining: Two thirds of the exam finished.
o 30 Minutes Remaining: First pass of all questions complete.
o 5 Minutes Remaining: Finished reviewing all questions marked for “Review.” Select answers to all questions left blank.
§ 65% de 70 preguntas para pasar, recomendamos un 80% en ejercicios para pasar
§ Ponerse un objetivo de fechas (al menos mes y medio para estudiar)
§ Escoger bien el idioma del examen
5
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
INTRODUCCIÓN
6
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
INTRODUCCIÓN
• Unintended line breaks: Sample code might have unintended line breaks.
If you see a line of code that looks like it has wrapped, and this creates a
situation where the wrapping is significant (for example, a quoted String
literal has wrapped), assume that the wrapping is an extension of the
same line, and the line does not contain a hard carriage return that would
cause a compilation failure.
• Code fragments: A code fragment is a small section of source code that is
presented without its context. Assume that all necessary supporting code
exists and that the supporting environment fully supports the correct
compilation and execution of the code shown and its omitted
environment.
• Descriptive comments: Take descriptive comments, such as "setter and
getters go here," at face value. Assume that correct code exists, compiles,
and runs successfully to create the described effect.
7
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
INTRODUCCIÓN
8
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
9
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
10
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
• Tipos primitivos
11
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
12
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
13
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
14
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
15
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
16
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
17
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
• El colector de basura.
§ Cuando el objeto no tiene referencias apuntándole
§ Cuando todas las referencias están fuera del scope de ejecución.
§ [Link]() pide a la JVM que borre los elementos en memoria que no se
usan. No se garantiza que se ejecute.
§ protected void finalize(){} se ejecuta si se ejecuta el garbage collector. Si el gc
falla por cualquier motivo no se ejecuta de nuevo
• Beneficios de Java (entra en el exámen)
§ Orientado a objetos
§ Permite encapsulación
§ Independiente de la plataforma “Write once, run everywhere.”
§ Robusto gracias a su gestión de la memoria
§ Simple
§ Seguro al ejecutarse en una máquina virtual que crea un sandbox de
ejecución.
18
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
19
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
• Operadores de Java
y precedencia
20
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
• Operadores
§ Binarios: requieren dos operandos
§ Unarios: requieren solo uno
• Promoción de primitivas: las primitivas al operar entre ellas pueden ser
promocionar a valores mayores. Estas son las reglas
§ Si dos valores tienen datos diferentes java promociona al mayor
§ Si uno es un entero y el otro un real java promociona el entero a real
§ Los valores pequeños (byte, short y char) se promocionan a int siempre que se
use algún operador binario (+, *, -, …) incluso si ninguno es int.
§ El valor resultante al que se le asigna debe tener el mismo valor que el
promocionado.
21
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
• Operadores unarios
22
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
23
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
24
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
25
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
• Switch ahora soporta más tipos pero solo podemos usar valores resueltos
en tiempo de compilación o finales para las comparaciones en los case.
26
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
• Un ejemplo de switch
27
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
• While statement
• do-while statement
28
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
• for statement
29
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
• Para el examen debemos tener varias cosas en cuenta para un bucle for
§ Se pueden crear bucles infinitos for( ; ; )
§ Se pueden añadir múltiples términos. for(long y = 0, z = 4; x < 5 && y < 10;
x++, y++)
§ Debemos tener cuidado de no redeclarar variables en la inicialización.
§ Hay que vigilar tipos incompatibles en la inicialización.
§ Hay que vigilar no usar variables declaradas en el for fuera del mismo.
• for each statement. Es una adaptación del for para arrays y objetos que
implementen la interfaz Collection
30
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
• Para trabajar con colecciones en el for each solo tenemos que conocer List
y ArrayList.
• Para el examen es importante estar familiarizado con los bucles anidados
con varios elementos
§ break
§ continue
§ se pueden crear etiquetas para los bucles que pueden ser referenciadas por
break y continue
31
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
32
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
33
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
34
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
35
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
36
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
37
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
38
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
39
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
40
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
41
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
• Wrappers
42
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
• Conversiones a string
43
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
44
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
45
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
46
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
47
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
48
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
49
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
50
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
51
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
52
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
• Elementos de un método
53
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
54
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
55
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
56
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
57
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
58
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
59
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
60
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
61
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
62
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
• Los constructores deben llamarse exactamente igual que la clase y no devuelven tipo
alguno. Se instancian con new. Debemos vigilar que no intenten pasar un método como
constructor y o bien devuelva algo o no tenga exactamente el nombre de la clase.
• Es importante recordar que por defecto se llama a super()
• Los constructores tienen modificadores de acceso. ¿Para qué podríamos necesitar un
constructor privado?
• También se pueden sobrecargar los constructores con reglas similares a los métodos.
• Con sobrecarga podemos usar this() para referenciar a otros constructores.
• El orden de inicializaciones se expande un poco
§ Si hay una super clase se inicializa primero (una llamada a super por ejemplo)
§ Variables e inicializadores estáticos en el orden que aparezcan.
§ Variables e inicializadores de instancia en el orden que aparezcan.
§ El constructor.
• La encapsulación es un mecanismo de Java muy importante para el desarrollo y una de
las características principales de Java. Hay unas convenciones de nombres a seguir
63
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
64
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
65
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
66
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
67
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
68
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
69
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
70
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
71
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
• Hay que vigilar los modificadores de acceso a la hora de usar los métodos
del padre y vigilar los paquetes en los que se declaran.
• Podemos acceder a los atributos y métodos del padre a través de
[Link] o [Link]()
• Una pregunta de exámen suele sobre la sobreescritura de métodos.
• Para hacer la sobreescritura hay algunas reglas:
§ Debe tener la misma estructura que el padre
§ Tiene que tener el mismo o mayor acceso que el padre
§ No puede lanzar una excepción chequeada más amplia que el padre o nueva.
§ Si el hijo devuelve algún valor debe ser del mismo tipo o una subclase del
mismo.
72
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
73
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
74
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
75
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
76
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
77
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
78
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
79
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
• Si hay dos métodos estáticos iguales la clase que los implemente falla al
compilar (no es igual que con los métodos normales)
• Java 8 también da cobertura para métodos estáticos dentro de los interfaces.
§ Serán públicos siempre.
§ Deben usar el nombre de la interfaz para referenciarlo.
• El polimorfismo permite a un objeto comportarse de manera diferente según
la referencia que lo implemente. Para las preguntas relacionadas con el
polimorfismo es muy importante dibujar bien la relación para entenderlo.
• El casting nos ayuda a encajar objetos en referencias siguiendo estas reglas
§ De una subclase a una clase padre no hace falta casting
§ De una superclase a una clase hija requiere un cast explícito.
§ Si no están relacionadas el compilador lanzará un error.
• Para el examen debemos saber que un método virtual es aquel que no se sabe
cual se ejecutará hasta que se ejecuta. En teoría todos son métodos virtuales
menos los estáticos y/o finales y/o privados.
80
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
81
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
TEMA 6 EXCEPCIONES
• Handling Exceptions
• Differentiate among checked exceptions, unchecked exceptions and Errors
• Create a try-catch block and determine how exceptions alter normal
program flow
• Describe the advantages of Exception handling
• Create and invoke a method that throws an exception
• Recognize common exception classes (such as NullPointerException,
ArithmeticException, ArrayIndexOutOfBoundsException,
ClassCastException)
82
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
TEMA 6 EXCEPCIONES
83
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
TEMA 6 EXCEPCIONES
84
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
TEMA 6 EXCEPCIONES
85
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
TEMA 6 EXCEPCIONES
86
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
TEMA 6 EXCEPCIONES
87
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
TEMA 6 EXCEPCIONES
88
[Link] avante@[Link] 902 117 902
ESCRIBIR NOMBRE DEL CURSO
89
[Link] avante@[Link] 902 117 902