Professional Documents
Culture Documents
Clase 0 Presentacin
Ezequiel Aranda
Sun Microsystems Campus
Ambassador
SCJP
Certification Path
SCJP
>Tipo de examen: Multiple choice y drag and
drop
>Nmero de preguntas: 72
>Condicin de Aprobacin: 65%(47 de 72
preguntas)
>Tiempo: 210 minutos
>Prerrequisito: Ninguno
>Valor: US$ 40
Declaraciones, inicializaciones y
mbitos
Control de Flujo
>Switch.
>Loops e iteradores.
>Assertions.
>Exceptions y clusulas para su manejo (try,
catch, finally).
>Entender cuales son arrojadas por la mquina
virtual.
API
>Wrappers de tipos primitivos y/o autoboxing & unboxing.
>Diferencias entre String, StringBuilder, and StringBuffer.
>Leer de archivos, escribir a archivos, interactuar con el
usuario, desarrollar soluciones correctas utilizando:
BufferedReader, BufferedWriter, File, FileReader, FileWriter,
PrintWriter, y Console.
>Serializacin y de-serializacin de objetos.
>Utilizar el paquete java.text para formatear y parsear fechas,
nmeros y divisas.
>Describir el propsito y uso de java.util.Locale.
>Utilizar java.util.regex para formatear o parsear cadenas de
caracteres.
Concurrencia
>Escribir cdigo para definir, instanciar e
inicializar threads utilizando Java.lang.Thread
y java.lang.Runnable.
>Estados de los Threads.
>Bloqueo de objetos para proteger variables
estaticas o de instancia de problemas de
acceso concurrente.
>Dado un escenario, escribir cdigo que haga
uso apropiado de wait, notify, o notifyAll.
Conceptos de OO
>Encapsulamiento, bajo acoplamiento y alta cohesin
entre clases.
>Uso de polimorfismo. Determinar cuando ser
necesario realizar castings y reconocer errores de
compilacin vs. errores en tiempo de ejecucin.
>Declarar y/o invocar mtodos sobrecargados y
sobreescritos, y cdigo para invocar a la superclase
y/o constructores sobrecargados.
>Desarrollar cdigo que implemente relaciones esun o tiene-un.
Colecciones / Genricos
> Comparable.
> Sobrescribir hashCode() y equals().
> Escribir cdigo que use las versiones genricas de la API Collections.
> Reconocer las limitaciones de la API de Colecciones no genricas y como
refactorizar el cdigo para utilizar las versiones genricas.
> Escribir cdigo que use las interfaces NavigableSet y NavigableMap.
> Escribir mtodos genricos o mtodos que hagan uso de los tipos
comodines.
> Usar las interfaces java.util.Comparator y java.lang.Comparableinterfaces
para afectar el ordenamiento de listas y arreglos.
> Ordenamiento natural de wrappers de tipos primitivos y String.
Fundamentos
>Modificadores de acceso apropiados, declaracion de
paquetes y sentencias import.
>Un objeto se vuelve elegible para el garbage collector.
>Reconocer los comportamientos del mtodo Object.finalize().
>JARs, construir la estructura de directorios apropiada.
Classpath.
>Uso correcto de operadores.
>Escribir cdigo que determine la igualdad de dos objetos o
primitivos.
SCJP 6
Clase 0.5 Intro a Java
Qu es Java?
>Java es un lenguaje de programacin orientado a
objetos desarrollado a principios de los aos 90.
>El lenguaje en s mismo toma mucha de su
sintaxis de C y C++, pero tiene un modelo de
objetos ms simple y elimina herramientas de
bajo nivel.
>Es independiente de la plataforma. Las primeras
implementaciones de Java rezaban:write once,
run anywhere.
>Posee un sistema de administracin de memoria
automtico.
Un poco de historia
Porqu JAVA?
>El lenguaje se denomin inicialmente Oak. Luego
pas a denominarse Green tras descubrir que Oak
era ya una marca comercial registrada.
>El trmino JAVA fue acuado en una cafetera
frecuentada por algunos de los miembros del equipo.
>No est claro si es un acrnimo o no, algunas
hipotesis indican que podra tratarse de las iniciales
de sus creadores: James Gosling, Arthur Van Hoff, y
Andy Bechtolsheim. Otras abogan por Just Another
Vague Acronym.
>La hiptesis que ms fuerza tiene es la que Java debe
su nombre a un tipo de caf disponible en la cafetera.
Bytecode
> El bytecode es lenguaje nativo de cualquier
implementacin de la maquina virtual de Java. De esta
forma se logra que un programa Java corra en cualquier
plataforma que disponga de una JVM.
La plataforma Java
>Una plataforma es el ambiente de software o hardware en
el que corre un programa.
>La plataforma Java consta de dos componentes
>La maquina virtual de Java
>La API de Java (Application Programming Interface)
Java en detalle:
Inicializacin de variables
>El lenguaje Java es fuertemente tipado, lo que
significa que todas las variables deben ser
declaradas antes de utilizarse.
int unaVariable = 1;
Java en detalle:
tipos primitivos
Identificador
Descripcin
Rango
byte
-128 a 127
short
-32.768 a 32.767
Int
-2.147.483.648 a 2.147.483.647
long
-9.223.372.036.854.775.808 a
9.223.372.036.854.775.807
Descripcin
Rango
float
Punto flotante,
precision simple
0.0
double
Punto flotante,
precision doble
0.0
boolean
Valor booleano
true o false
false
char
Caracter simple,
16 bits
'\u0000 a
'\uffff'
'\u0000'
La clase String
Operadores, precedencia y
funcionalidad
Operadores
representacin
Postfix
expr++ expr--
Unarios
Multiplicativos
* / %
Aditivos
+ -
Desplazamientos
Relacionales
Igualdad
== !=
Operadores, precedencia y
funcionalidad (II)
Operadores
representacin
&
AND logico
&&
OR logico
||
Ternario
?:
Asignacin
Sentencias de control: if
if(expr){
....
}
if(expr)
sentencia;
if(expr){
....
} else {
....
}
while (expr){
....
}
do {
....
}while(expr);
Ejemplo de paquete
Figuras
Figura
publicDouble
calcularArea()
Rectangulo
Circulo
doubleladoA
doubleladoB
doublecalcularArea()
Rectangulo(ladoA,ladoB)
doubleradio
doublecalcularArea()
Circulo(radio)
Paquete
Subclase
Otros
public
private
protected
SCJP 6
Clase 1 Declaracin y
Control de Acceso
Identificadores legales
>Comienzan con una letra, ($), ( _ ). No pueden
comenzar con un nmero.
>Son case-sensitive.
>No pueden utilizarse palabras clave de Java,
incluyendo enum, agregada en java 5.0.
Acceso pblico
>Una declaracin de clase con la palabra clave
public da a todas las clases de todos los
paquetes acceso a dicha clase.
>Pero, si la clase pblica que ests intentando
usar se encuentra en otro paquete, debers
importarla.
Acceso privado
>No puede accederse desde ninguna clase que
no sea la clase donde fue declarado el
miembro privado.
>Palabra clave Private.
Acceso Protegido
>Similar al acceso por defecto. Un miembro
declarado Protected puede ser accedido
desde una subclase incluso si est en otro
paquete.
>El acceso por defecto y el protegido difieren
slo cuando hablamos de subclases.
Pregunta
>Compila?
package certification;
public class Parent {
protected int x = 9;
}
package other;
import certification.Parent;
class Child extends Parent {
public void testIt() {
System.out.println("x is " + x);
Parent p = new Parent();
System.out.println("X in parent is " + p.x);
}
}
Modificadores Adicionales
>Final
>Abstract
>Transient
>Synchronized
>Static
Final
>La palabra clave Final previene que un
mtodo, clase o variable sea sobrescrita en
una subclase.
>Varios de los mtodos en las bibliotecas de
clases principales no pueden ser sobrescritos.
Abstract
>Un mtodo abstracto es un mtodo declarado pero
no implementado. Es decir, el mtodo no posee
cdigo funcional.
>Es ilegal tener incluso un nico mtodo abstracto en
una clase que no se declare explcitamente como
abstracta.
>Cualquier clase que extienda una clase abstracta
debe implementar todos los mtodos abstractos de
la superclase, o ser declarada abstracta tambin.
Preguntas
>Podramos tener una clase abstracta sin
mtodos abstractos?
>Si es as, Porqu no declaramos las clases
como abstractas siempre?
>Las clases abstractas, Pueden tener un
constructor?
Pregunta
public abstract class Vehicle {
private String type;
public abstract void goUpHill();
public String getType(){ return type; }
}
public abstract class Car extends Vehicle {
public abstract void goUpHill();
public abstract void goDownHill(int speed) { }
public void doCarThings() { } }
public class Mini extends Car { }
Var-args (II)
>La sintaxis bsica para declarar un mtodo usando
un parmetro var-arg es: nombreDelTipo
nombreDelArregloQueContendrLosParametros
>Puede haber otros parmetros en un mtodo que
posee un parmetro con var-args, siempre y cuando
solo uno sea variable, y el mismo sea el ltimo
declarado en la signatura del mtodo.
Var-args (III)
>Legal:
void doStuff(int... x) { } //0 a varios ints.
void doStuff2(char c, int... x) { } //primero un
char, luego entre 0 y varios ints.
void doStuff3(Animal... animal) { }
>Ilegal:
void doStuff4(intx...) { } // sintaxis incorrecta
void doStuff5(int... x, char... y) { } // demasiados
var-args.
void doStuff6(String... s, byte b) { } // var-arg
debe estar al final.
Pregunta
1.
2.
3.
4.
5.
6.
7.
class Voop {
public static void main(String [] args) {
doStuff(1);
doStuff(1,2);
}
// punto de insercin
}
Declaracin de constructores
>En Java, los objetos son construidos. Cada vez que
hacemos un nuevo objeto, al menos un
constructor es invocado.
>Cada clase tiene un constructor. Incluso si no
creamos uno, el compilador lo har por nosotros.
>Pueden recibir argumentos (incluido var-args), pero
no pueden tener un valor de retorno.
>La otra regla importante, es que los constructores
deben tener el mismo nombre que las clases en las
que son declarados.
Declaracin de variables
>Hay ocho tipos primitivos: char,
boolean, byte,short, int, long,
double, or float. Una vez declarado,
el tipo de un primitivo no puede ser
cambiado.
>Referencias: una variable de
referencia es usada para acceder al
lugar en memoria donde se
almacena un objeto. Array, Collection
y String, son variables de referencia.
Modificadores en variables,
mtodos y clases
Variables locales
Variables no
locales
Mtodos
Clases
final
final
final
public
public
public
final
protected
protected
abstract
private
private
strictfp
static
static
transient
abstract
volatile
synchronized
strictfp
native
Declaracin de Enums
>Una practica comn en programacin es
tener un conjunto finito de nombres
simblicos que representan los valores de un
atributo.
>Enum == Class.
>Ejemplo.
enumGrade{
A,B,C,D,F
}; // el punto y coma es opcional
Pregunta
> Dado:
1. enumA { A }
2.
class E2 {
3.
enumB { B }
4.
void C() {
5.
enumD { D }
6. } }
> Cuales de las siguientes afirmaciones son ciertas?
>
>
>
>
>
>
A. compila.
B. Si slo sacamos la lnea 1, compila.
C. Si slo sacamos la lnea 3, compila.
D. Si slo sacamos la lnea 5, compila.
E. Si sacamos las lneas 1 y 3, compila.
F. Si sacamos las lneas 1, 3 y 5, compila.
Preguntas