Guia de estudio OCA Java SE 7 Programmer

15

Click here to load reader

Transcript of Guia de estudio OCA Java SE 7 Programmer

Page 1: Guia de estudio OCA Java SE 7 Programmer

Oracle Certified Associate Java SE 7 Programmer (1Z0-803) - Guia de estudio

Oscar Vásquez Flores ([email protected] ) 1

Guia de estudio para OCAJP7

“Oracle Certified Associate Java SE 7 Programmer”

Fecha Cambios

2014-01-20 Primera publicación

2014-05-14 Cambios de formato del documento

I. Información del examen

Duración: 150 minutes

Nro. de preguntas: 90

Score para pasar: 63%

Código del examen: 1Z0-803

Nombre del examen: Java SE 7 Programmer I

Costo: $ 150

Detalles completos del examen

http://education.oracle.com/pls/web_prod-plq-

dad/db_pages.getpage?page_id=5001&get_params=p_exam_id:1Z0-803

Page 2: Guia de estudio OCA Java SE 7 Programmer

Oracle Certified Associate Java SE 7 Programmer (1Z0-803) - Guia de estudio

Oscar Vásquez Flores ([email protected] ) 2

II. Temas del examen

1. Java basico

2. Trabajando con tipos de datos Java

3. Uso de operadores y construcción de decisiones

4. Creación y uso de arrays

5. Construcción de bucles

6. Trabajando con métodos y encapsulamiento

7. Trabajando con herencia

8. Manejando excepciones

Page 3: Guia de estudio OCA Java SE 7 Programmer

Oracle Certified Associate Java SE 7 Programmer (1Z0-803) - Guia de estudio

Oscar Vásquez Flores ([email protected] ) 3

III. Desarrollo de temas

1. Java basico

1.1. Definir el alcance de las variables

No hay detalles en esta sección

1.2. Definir la estructura de una clase

No hay detalles en esta sección

1.3. Crear aplicaciones Java ejecutables con el metodo main

No hay detalles en esta sección

1.4. Importar paquetes Java para utilizar diversas clases

No hay detalles en esta sección

Page 4: Guia de estudio OCA Java SE 7 Programmer

Oracle Certified Associate Java SE 7 Programmer (1Z0-803) - Guia de estudio

Oscar Vásquez Flores ([email protected] ) 4

2. Trabajando con tipos de datos Java

2.1. Declarar e inicializar variables

No hay detalles en esta sección

2.2. Diferencias entre variables que referencian a objetos y variables

primitivas

No hay detalles en esta sección

2.3. Leer y escribir campos de un objeto

No hay detalles en esta sección

2.4. Explicar el ciclo de vida de un objeto

No hay detalles en esta sección

2.5. Invocar métodos de un objeto

No hay detalles en esta sección

2.6. Manipular datos usando la clase StringBuilder y sus métodos

❑ Los objetos String son inmutables (No se pueden modificar), pero las variables de

referencia a un objeto String no lo son.

❑ Si se crea un String nuevo sin ser asignado a alguna variable, este se perderá del

programa.

❑ Si se direcciona la referencia de un String a un nuevo String, el antiguo String puede

ser perdido.

❑ Los métodos de la clase String basan sus índices iniciando en cero, excepto el segundo

parámetro de substring().

❑ La clase String es final, sus métodos no se puede sobre escribir.

❑ Cuando la JVM encuentra un String literal, este se agregar al pool de String literal.

❑ String tiene un metodo length(); y los arrays tienen un atributo length.

❑ El API StringBuffer es lo mismo que el nuevo API StringBuilder, excepto que los

métodos de StringBuilder no son sincronizados para thread safety.

❑ Los métodos de StringBuilder deben correr mas rápidos que los métodos de

StringBuffer.

❑ Todos los siguiente puntos aplican a StringBuffer y StringBuilder:

❑ Ambos son mutables, ellos pueden cambiar sin tener que crear un objeto nuevo.

Page 5: Guia de estudio OCA Java SE 7 Programmer

Oracle Certified Associate Java SE 7 Programmer (1Z0-803) - Guia de estudio

Oscar Vásquez Flores ([email protected] ) 5

❑ Los métodos de StringBuffer actúan directo sobre el objeto que los invoca, y

pueden cambiar al objeto, sin necesidad de una asignación explicita en la sentencia.

❑ equals() de StringBuffer() no esta sobre escrito, este no compara valores.

❑ Se debe recordar que una cadena de métodos se evalúan de izquierda a derecha.

❑ Los siguiente métodos de String son los mas importantes:

charAt(), concat(), equalsIgnoreCase(), length(), replace(), substring(),

toLowerCase(), toString(), toUpperCase() y trim().

❑ Los siguiente métodos de StringBuffer son los mas importantes:

append(), delete(), insert(), reverse() y toString()

2.1. Crear y manipular cadenas

No hay detalles en esta sección

Page 6: Guia de estudio OCA Java SE 7 Programmer

Oracle Certified Associate Java SE 7 Programmer (1Z0-803) - Guia de estudio

Oscar Vásquez Flores ([email protected] ) 6

3. Uso de operadores y construcción de decisiones

3.1. Use Java operators

No hay detalles en esta sección

3.2. Use parentheses to override operator precedence

No hay detalles en esta sección

3.3. Test equality between strings and other objects using == and equals

()

No hay detalles en esta sección

3.4. Creación de if y if/else

❑ La única expresión valida dentro de una sentencia if, es una expresión booleana,

es decir una expresión que retorne una un tipo boolean o Boolean.

❑ No confundir la asignación (=) con la prueba de la igualdad (==).

Ejemplo:

boolean x = false;

if (x = true) { } // Es una asignación, entonces siempre va a retornar true.

❑ Las llaves son opcionales para un bloque if, si solo tiene una sentencia

condicional.

3.5. Use a switch statement

❑ La sentencia switch puede evaluar únicamente tipos de datos enum, byte,

short, int o char.

Esto es invalido.

long s = 30;

switch(s) { }

❑ El dato que esta en la sentencia case, debe ser un valor literal o una variable

final, o una expresión constante, incluido un enum. No se puede tener una case

con una variable no final o un rango de valores.

❑ En una sentencia switch cuando se entra a un case y este no tiene una

sentencia break, se entrara a todos los siguientes case, hasta encontrar un break,

a pesar de que el valor que representan los demás case no tenga un valor que

coincide con la buscado por el switch, es muy importe el uso del break para

terminar cada case, si así se desea, debido a que el uso de break es opcional.

❑ Se puede usar un bloque default para el caso en que ninguna sentencia case

cumpla la condición del switch.

❑ El bloque default se puede ubicar en cualquier parte en una sentencia switch, y

se ingresa a este si algún case previo fue activado, si el default no tiene un break

se ejecutará el siguiente case, hasta encontrar algún break.

Page 7: Guia de estudio OCA Java SE 7 Programmer

Oracle Certified Associate Java SE 7 Programmer (1Z0-803) - Guia de estudio

Oscar Vásquez Flores ([email protected] ) 7

4. Creación y uso de arrays

4.1. Declarar, instanciar, inicializar y usar arrays de una dimensión

❑ Los arreglos pueden contener datos primitivos u objetos, pero los arreglos son

siempre un objetos.

❑ Todos los siguientes ejemplos son validos para la declaración de un arreglo:

String arreglo1[ ];

String [ ]arreglo2;

String [ ] arreglo3;

String [ ] arreglo3;

Page 8: Guia de estudio OCA Java SE 7 Programmer

Oracle Certified Associate Java SE 7 Programmer (1Z0-803) - Guia de estudio

Oscar Vásquez Flores ([email protected] ) 8

❑ No se debe incluir el tamaño del arreglo en la declaración.

Esto no es valido: String arreglo1[5];

❑ Un arreglo puede contener cualquier objeto que pase la prueba IS-A (o

instanceof) según el tipo declarado en el arreglo.

Ejemplo:

Si Cliente extiende a Persona, entonces un objeto Cliente puede estar en un arreglo

de Persona.

4.2. Declare, instantiate, initialize and use multi-dimensional array

No hay detalles en esta sección

4.3. Declare and use an ArrayList

No hay detalles en esta sección

Page 9: Guia de estudio OCA Java SE 7 Programmer

Oracle Certified Associate Java SE 7 Programmer (1Z0-803) - Guia de estudio

Oscar Vásquez Flores ([email protected] ) 9

5. Construcción de bucles

5.1. Crear y usar el bucle while

No hay detalles en esta sección

5.2. Create and use for loops including the enhanced for loop

❑ La forma basica del bucle for tiene tres partes: declaración y/o inicialización, evaluación

booleana y una expresión para iteración.

❑ Si una variable es incrementada o evaluada dentro del for, esta debe ser declarada

antes del for o dentro de la sección de declaración del for.

❑ Una variable que se declara dentro de un for no puede ser accedida fuera del for.

❑ Se puede inicializar mas de una variable del mismo tipo en la sección de declaraciones

del for, cada inicialización debe estar separada por una coma.

❑ Un for mejorado (Disponible desde JSE 6.0), tiene dos partes, una declaración (La

variable debe ser compatible con los elementos del array o colección) y una expresión (array o colección). Se utiliza únicamente para navegar en los arrays y colecciones.

❑ Dentro del bloque del for mejorado la variable que utilizamos en la declaración inicial

contendrá o representara cada elemento del array.

❑ La sección de expresión booleana de los bucles en Java siempre debe retornar un dato

tipo boolean, de lo contrario se genera un error de compilación.

❑ En un bucle do se ingresa por lo menos una vez al cuerpo de este.

5.3. Crear y usar el bucle do/while

No hay detalles en esta sección

5.4. Comparar la construcción de bucles

No hay detalles en esta sección

5.5. Uso de la sentencia break y continue

No hay detalles en esta sección

Page 10: Guia de estudio OCA Java SE 7 Programmer

Oracle Certified Associate Java SE 7 Programmer (1Z0-803) - Guia de estudio

Oscar Vásquez Flores ([email protected] ) 10

6. Trabajando con métodos y encapsulamiento

6.1. Crear métodos con argumentos y valor de retorno

No hay detalles en esta sección

6.2. Aplicar la palabra reservada static a métodos y campos

No hay detalles en esta sección

6.3. Crear un metodo sobrecargado

No hay detalles en esta sección

6.4 Diferencia entre el constructor por defecto y los definidos por usuario

No hay detalles en esta sección

6.5 Crear y sobrecargar constructores

No hay detalles en esta sección

6.6. Aplicar modificadores de acceso

No hay detalles en esta sección

6.7 Aplicar principios de encapsulamiento a una clase

No hay detalles en esta sección

6.8 Determinar el efecto de pasar referencias de objetos y valores

primitivos a métodos que realizan cambios sobre estos

No hay detalles en esta sección

Page 11: Guia de estudio OCA Java SE 7 Programmer

Oracle Certified Associate Java SE 7 Programmer (1Z0-803) - Guia de estudio

Oscar Vásquez Flores ([email protected] ) 11

7. Trabajando con herencia 7.1. Implementar herencia

No hay detalles en esta sección

7.2. Desarrollar código que demuestra el uso de polimorfismo

No hay detalles en esta sección

7.3. Diferencia entre el tipo de la referencia y el tipo del objeto

No hay detalles en esta sección

7.4. Determinar cuando una conversión es necesaria

No hay detalles en esta sección

7.5. Uso de super y this para acceder a constructores y objetos

❑ Un constructor siempre se invoca cuando un objeto nuevo es creado.

❑ Each superclass in an object's inheritance tree will have a constructor called.

❑ Cada clase, incluso una clase abstracta tiene por lo menos un constructor.

❑ El constructor tiene el mismo nombre que la clase.

❑ El constructor no tiene un tipo de retorno. Si puede ver un metodo con el mismo

nombre que la clase, debe retornar algo o ser void.

❑ La ejecución típica de un constructor es la siguiente:

❑ El constructor invoca al constructor de la super clase, y esta al de su super

clase, hasta llegar al constructor de la clase Object.

❑ Luego de ejecutar el constructor de la clase Object se retornar a la clase que

invoca el constructor y asi sucesivamente hasta completar todos, luego de eso la instancia de la clase deseada es creada.

❑ El constructor puede usar cualquier modificador de acceso incluso private.

❑ El compilador crea un constructor por defecto si no se especifica ningún constructor en

la clase.

❑ El constructor por defecto no tiene argumentos e invoca a super().

❑ En caso de ser necesario la primera sentencia que cada constructor deberá invocar es

ya sea a this()(Sobre carga de constructores) o super(); estas sentencias no puede estar después de otras sentencias. No puede invocar super() y this() a al vez.

Page 12: Guia de estudio OCA Java SE 7 Programmer

Oracle Certified Associate Java SE 7 Programmer (1Z0-803) - Guia de estudio

Oscar Vásquez Flores ([email protected] ) 12

❑ El compilador agregara un llamado a super(), al menos que se tenga una invocacion a

this() o super().

❑ Las clases abstractas tienen constructores que son invocados cuando una subclase

concreta es invocada.

❑ Las interfaces no tienen constructores.

❑ Si la súper clase no tiene un constructor sin argumentos, en la sub clase se debe crear

un constructor e insertar una invocación a super() con los argumentos que coincidan con los de la súper clase.

❑ Los constructores nunca se heredan, ellos no se pueden sobre escribir.

❑ Los constructores se pueden invocar de forma directo únicamente por otros

constructores, usando la invocación super() o this().

❑ Los constructores pueden invocar a constructores y estos a otros constructores, así

sucesivamente, pero tarde o temprano alguno de estos invocara a super().

7.6. Uso de clases abstractas e interfaces

❑ Las interfaces son contratos respecto a que debe hacer una clase, pero no

especifica el como se debe realizar.

❑ Las interfaces pueden ser implementadas por cualquier clase de cualquier

jerarquía.

❑ Una interface es similar a una clase 100% abstracta. La interface puede tener el

modificador abstract, el cual es implícito.

❑ Una interface puede tener únicamente métodos abstractos, no esta permitido los

métodos concretos.

❑ Por defecto los métodos de una interface son public y abstract, la declaración

explicita de estos modificadores es opcional.

❑ Las interfaces pueden tener constantes las cuales son siempre implícitamente

public, static y final, la declaración de cualquiera de estos modificadores es

opcional, no es valido cualquier otro modificador.

❑ Una clase no abstracta de implementación debe seguir las siguientes reglas:

❑ Debe proveer implementación para todos los métodos de la interface.

❑ Deberá seguir todas las reglas de sobre escritura para los métodos que

implementa.

❑ No deberá declarar ninguna nueva excepción chequeada para el método

que implementa.

Page 13: Guia de estudio OCA Java SE 7 Programmer

Oracle Certified Associate Java SE 7 Programmer (1Z0-803) - Guia de estudio

Oscar Vásquez Flores ([email protected] ) 13

❑ No deberá declarar ninguna excepción chequeada que se más amplia

(superclase) que la excepción declarada en el método de la interface.

❑ Se puede declara cualquier excepción de tipo runtime (RuntimeException)

en la implementación de cualquier método de interface sin importar la

declaración en la interface.

❑ Se debe mantener la firma exacta del método (es permitido retornos

covariant) y el tipo de retorno del método que se implementa, no es

necesario que se declare las excepciones del método que esta en la

interface.

❑ Una clase que implementa una interface puede ser abstract.

❑ Una clase abstract que implementa una interface no es obligatorio que

implemente todos los métodos de la interface, pero la primera clase concreta que la

extienda si debe hacerlo.

❑ Una clase solo puede extender una clase (No es valida la herencia múltiple),

pero puede implementar varias interfaces a la vez.

❑ Las interfaces pueden extender una o varios interfaces a la vez.

❑ Las interfaces no pueden extender una clase o implementar una interface.

Page 14: Guia de estudio OCA Java SE 7 Programmer

Oracle Certified Associate Java SE 7 Programmer (1Z0-803) - Guia de estudio

Oscar Vásquez Flores ([email protected] ) 14

8. Manejando excepciones

8.1. Diferenciar entre checked exceptions, runtime excepcion y errors

❑ Las excepciones pueden ser de dos tipos: checked (manejadas) y unchecked (no

manejadas).

❑ Las excepciones checked incluyen todos los sub tipos de la clase Exception, pero sin

considerar a las que sean sub tipo de RuntimeException.

❑ Las excepciones checked son sujetas a ser manejadas o declaración de reglas,

cualquier metodo que pueda lanzar una excepción checked (incluyendo métodos que invocan a otros métodos que puedan lanzar una excepción checked) deberá declara una excepción usando la clausula throws, o manejar la excepción con un apropiado try/catch.

❑ Los sub tipos de Error o RuntimeException son unckecked, entonces el compilador

no obliga a manejarlas o declarar reglas. Se tiene la libertad de manejarlas si se desea o declararlas.

❑ Si se usa el bloque opcional finally, este siempre será invocado, sin importar que se

genere una excepción o no, y sin importar que la excepción sea atrapada.

❑ La única forma para que el bloque finally no sea invocado es cuando se tenga un

apagado de la JVM, por ejemplo cuando se invoca a System.exit() dentro del código antes del bloque finally.

❑ Al invocar a finally no significa que este siempre se completara o ejecutara todo su

bloque, debido a que dentro de este bloque se puede generar una excepción o lanzar una System.exit() el cual lo interrumpirá.

❑ Una excepción no controlada pasara de metodo a metodo (iniciando por el metodo que

genero la excepción) hasta que alguno de ellos tenga un try/catch que lo controle, de lo contrario provocara que se termine el programa (Cancelación del JVM).

❑ Se pueden crear excepciones personalizadas extendiendo la clase Exception o algún

sub tipo de esta. Según eso la excepción se considera checked, entonces el compilador forzara a manejarla o declararla.

❑ Todos los bloques catch deben ser ordenados del más especificos al más general.

Por ejemplo si se tiene una clausula catch con IOException y otro con Exception, se deberá colocar primero IOException. De otro forma la excepción tipo IOException será atrapada por el bloque catch de Exception, el bloque catch atrapa cualquier excepción que sea un sub tipo del argumento, luego de eso ya no se continua con el siguiente catch, el compilar generara un error cuando se tenga clausulas que nunca serán alcanzadas.

8.2. Crear bloques try-catch y determinar como las excepciones alteran el

flujo normal de un programa

No hay detalles en esta sección

8.3. Describir que excepciones son usadas en Java

No hay detalles en esta sección

8.4. Invocar a un metodo que lance una excepción

No hay detalles en esta sección

Page 15: Guia de estudio OCA Java SE 7 Programmer

Oracle Certified Associate Java SE 7 Programmer (1Z0-803) - Guia de estudio

Oscar Vásquez Flores ([email protected] ) 15

8.5. Reconocer clases comunes de excepciones y sus categorías

❑ Algunas excepciones son creadas por los programadores otras son creadas por la JVM.

❑ Las siguientes son ejemplos de excepciones unchecked.

* Sub clases de java.lang.RuntimeException.

Estas excepciones pueden ser lanzadas en programación.

ArrayIndexOutOfBoundsException, indica que un array a sido accedido con un

índice ilegal. El índice es negativo, mayor o igual que el tamaño del array. Es una

sub clase de IndexOutOfBoundsException.

ClassCastException, indica que el código intenta hacer un cast de un objeto hacia

una sub clase de la cual no es instancia, ejemplo el siguiente código genera esa

excepción.

Object x= new Integer(0);

System.out.println((String)x);

IllegalArgumentException, indica que al metodo a sido pasado un argumento

ilegal o inapropiado.

IllegalStateException, Es una señal que un metodo a sido invocado en un tiempo

inapropiado. En otras palabras, el entorno Java o aplicación Java no esta en un

apropiado estado para la operación solicitada.

NullPointerException, Ocurre cuando una aplicación intenta usar un null cuando

un objeto es requerido.

NumberFormatException, Indica que una aplicación a intentado convertir una

cadena a un tipo numérico, pero la cadena no tiene un formato apropiado. Es una

sub clase de IllegalArgumentException.

* Sub clases de java.lang.Error.

Estas excepciones son lanzadas usualmente solo por el JVM.

AssertionError, Indica que el assertion a fallado.

ExceptionInInitializerError, Indica que una excepción inesperada a ocurrido

durante una inicialización estática. Es una sub clase de LinkageError.

StackOverflowError, Ocurre cuando existe un desbordamiento de pila, en

aplicaciones recursivas por entrar muy profundo, es una sub clase de

VirtualMachineError.

NoClassDefFoundError, Se genera cuando el JVM o el cargador de clases intenta

cargar una definición de clase pero no se encuentra la definición de esta. Es una

sub clase de LinkageError.