SlideShare una empresa de Scribd logo
1 de 74
Descargar para leer sin conexión
SCJP 6
  Clase 0 – Presentación




    Ezequiel Aranda
Sun Microsystems Campus
      Ambassador
Disclaimer & Acknowledgments
> Even though Ezequiel Aranda is a full-time employee of Sun
  Microsystems, the contents here are created as his own
  personal endeavor and thus does not reflect any official
  stance of Sun Microsystems.
> Sun Microsystems is not responsible for any inaccuracies in
  the contents.
> Acknowledgments – The slides of this presentation are made
  from “SCJP Unit 1” by Warit Wanwithu and Thanisa
  Kruawaisayawan and SCJP Workshop by P. Srikanth.
> This slides are Licensed under a Creative Commons
  Attribution – Noncommercial – Share Alike 3.0
   > http://creativecommons.org/licenses/by-nc-sa/3.0/
Certificarse, ¿Para qué?
> Los títulos universitarios no prueban nuestras capacidades en
  tecnologías utilizadas en aplicaciones del mundo real.

> Los cursos de institutos brindan certificaciones a todos, por lo
  que no pueden ser utilizados para medir nuestros
  conocimientos.

> La industria necesita una forma de conocer nuestros
  conocimientos en las tecnologías que utilizan para construir
  sus aplicaciones.

> Para probar nuestras credenciales en el mercado global.
Certificarse, ¿Para qué? (II)
> Los puestos de trabajo en IT están entre los 10 más difíciles
  de llenar, de acuerdo a una encuesta de Manpower de abril
  de 2008.

> Cerca del 25% de los empleadores tienen problemas para
  contratar personal debido a falta de capacidad.

> Múltiples estudios sugieren que habrá una amplia brecha
  entre la demanda de puestos de IT y la oferta de trabajadores
  con las habilidades necesarias en los próximos 5 a 10 años.
Valor de una certificación
>  El verdadero valor yace en la capacidad de verificar que una persona
   posee las habilidades que son importantes para el empleador.

>  Las compañías de software consiguen más contratos o cobran mayores
   tarifas cuando sus empleados son certificados.

>  Prueban efectivamente que una persona con un titulo universitario posee
   adicionalmente conocimientos sobre tecnologías del mundo real.

>  Los empleadores buscan candidatos con este tipo de conocimientos, ¿que
   mejor para conseguir un primer trabajo que obtener una credencial
   reconocida por la industria?

>  Ayuda a obtener conocimientos profundos sobre una tecnología.
SCJP


Esta certificación de base está dirigida a
      programadores interesados en
     demostrar su competencia en los
       fundamentos del lenguaje de
             programación Java.
Certification Path
SCJP

>  ipo de examen: Multiple choice y drag and
 T
 drop
>  úmero de preguntas: 72
 N
>  ondición de Aprobación: 65%(47 de 72
 C
 preguntas)
>  iempo: 210 minutos
 T
>  rerrequisito: Ninguno
 P
>  alor: US$ 40
 V
Declaraciones, inicializaciones y
             ámbitos
>  lases (incluyendo abstractas y todas las
 C
 formas de clases anidadas), interfaces, y
 enums.
>  avaBeans, estándares de nomenclatura.
 J
>  ista de argumentos de longitud variable.
 L
>  alores de retorno legales, incluyendo
 V
 covariantes.
Control de Flujo

>  witch.
 S
>  oops e iteradores.
 L
>  ssertions.
 A
>  xceptions y cláusulas para su manejo (try,
 E
 catch, finally).
>  ntender cuales son arrojadas por la máquina
 E
 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.
> Serialización y de-serialización de objetos.
> Utilizar el paquete java.text para formatear y parsear fechas,
  números y divisas.
> Describir el propósito y uso de java.util.Locale.
> Utilizar java.util.regex para formatear o parsear cadenas de
  caracteres.
Concurrencia

>  scribir código para definir, instanciar e
 E
 inicializar threads utilizando Java.lang.Thread
 y java.lang.Runnable.
>  stados de los Threads.
 E
>  loqueo de objetos para proteger variables
 B
 estaticas o de instancia de problemas de
 acceso concurrente.
>  ado un escenario, escribir código que haga
 D
 uso apropiado de wait, notify, o notifyAll.
Conceptos de OO

> Encapsulamiento, bajo acoplamiento y alta cohesión
  entre clases.
> Uso de polimorfismo. Determinar cuando será
  necesario realizar castings y reconocer errores de
  compilación vs. errores en tiempo de ejecución.
> Declarar y/o invocar métodos sobrecargados y
  sobreescritos, y código para invocar a la superclase
  y/o constructores sobrecargados.
> Desarrollar código que implemente relaciones “es-
  un” o “tiene-un”.
Colecciones / Genéricos
>  Comparable.
>  Sobrescribir hashCode() y equals().
>  Escribir código que use las versiones genéricas de la API Collections.
>  Reconocer las limitaciones de la API de Colecciones no genéricas y como
   refactorizar el código para utilizar las versiones genéricas.
>  Escribir código que use las interfaces NavigableSet y NavigableMap.
>  Escribir métodos genéricos o métodos 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 método Object.finalize().
> JARs, construir la estructura de directorios apropiada.
  Classpath.
> Uso correcto de operadores.
> Escribir código que determine la igualdad de dos objetos o
  primitivos.
Diferencia entre los objetivos de los
    examenes 1.5 (055) y 1.6 (065)
> ava.io.Console,
 j
> ava.util.NavigableSet,
 j
> ava.util.NavigableMap.
 j
>  erás evaluado en gran profundidad en:
 S
 manejo de exceptions, collections, assertions,
 threads, y control de flujo.
¿Cómo prepararse para el
             examen?
>  ntender los objetivos perfectamente.
 E
>  i no sabes Java, aprende Java primero.
 S
>  eferirse a la documentación de la API y la
 R
 especificación del lenguaje.
>  studiar de un buen libro de preparación para
 E
 la certificación.
>  acer tantas simulaciones de examen como
 H
 sea posible.
SCJP 6
Clase 0.5 – Intro a Java
¿Qué es Java?

> Java es un lenguaje de programación orientado a
  objetos desarrollado a principios de los años 90.
> El lenguaje en sí mismo toma mucha de su
  sintaxis de C y C++, pero tiene un modelo de
  objetos más 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 administración de memoria
  automático.
Un poco de historia




> Fue realizado por un equipo de 13
  personas, dirigidas por James Gosling.
> Los objetivos de Gosling eran implementar
  una máquina virtual y un lenguaje con una
  estructura y sintaxis similar a C++.
Un poco de historia (II)




>  Con esto en mente Gosling y su equipo
   crearon el navegador WebRunner y
   ralizarón un demo que mostraba una
   molecula animada en una reunión de
   profesionales de la industria del
   entretenimiento e Internet.
>  Todos sabemos como termina esta
   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 término “JAVA” fue acuñado en una cafetería
  frecuentada por algunos de los miembros del equipo.
> No está claro si es un acrónimo o no, algunas
  hipotesis indican que podría tratarse de las iniciales
  de sus creadores: James Gosling, Arthur Van Hoff, y
  Andy Bechtolsheim. Otras abogan por “Just Another
  Vague Acronym”.
> La hipótesis que más fuerza tiene es la que Java debe
  su nombre a un tipo de café disponible en la cafetería.
.java, . Class, JVM???



> En Java el código fuente se escribe en un archivo de
  texto plano con extensión .java.
> Luego, el código es compilado a archivos .class. Un
  archivo .class no contiene código nativo a un tipo
  de procesador, en cambio contiene bytecodes.
> Finalmente, la aplicación es interpretada por la
  maquina virtual de Java, transformando los
  bytecodes en código nativo en tiempo de ejecución.
Bytecode

>  El bytecode es lenguaje nativo de cualquier
   implementación 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)




> La API de Java es una vasta colección de componentes de
  software que proveen un conjunto de funciones útiles.
Java en detalle:
        Inicialización de variables
>  l lenguaje Java es fuertemente tipado, lo que
 E
 significa que todas las variables deben ser
 declaradas antes de utilizarse.

         int unaVariable = 1;
Java en detalle:
                          tipos primitivos
Identificador     Descripción                  Rango                 Valor por defecto
                Entero con signo,
    byte                                      -128 a 127                    0
                      8 bits
                Entero con signo,
   short                                   -32.768 a 32.767                 0
                     16 bits
                Entero con signo,
     Int                            -2.147.483.648 a 2.147.483.647          0
                     32 bits

                Entero con signo,   -9.223.372.036.854.775.808 a
    long                                                                    0
                     64 bits          9.223.372.036.854.775.807
tipos primitivos (II)

Identificador       Descripción          Rango         Valor por defecto


    float         Punto flotante,    Ver 32-bit IEEE         0.0
                  precision simple    754 floating
                                         point
  double          Punto flotante,    Ver 64-bit IEEE         0.0
                  precision doble     754 floating
                                         point.


  boolean         Valor booleano      true o false           false

    char          Caracter simple,    'u0000’ a           'u0000'
                      16 bits           'uffff'
La clase String
Operadores, precedencia y
     funcionalidad
    Operadores              representación

       Postfix             expr++ expr--

      Unarios        ++expr --expr +expr -expr
                                ~!
   Multiplicativos             */%

      Aditivos                  +-

  Desplazamientos            << >> >>>

    Relacionales             < > <= >=

      Igualdad                 == !=
Operadores, precedencia y
    funcionalidad (II)
       Operadores                   representación

      AND bit a bit                       &

  OR exclusivo bit a bit                  ^

  OR inclusivo bit a bit                   |

       AND logico                        &&

        OR logico                         ||

        Ternario                          ?:

       Asignación          = += -= *= /= %= &= ^= |= <<= >>=
                                          >>>=
Ejemplo con operadores
       aritméticos
int i=2+3; // i vale 5
i=i+1; //i vale 6

i=6*2; //i vale 12

i=2+5*2%8; //i vale4
Ejemplo con operadores postfix y
             unarios
int i=5; // i vale 5

System.out.println(i); //Imprime:5

System.out.println(++i); //Imprime:6

System.out.println(i++); //Imprime:6

System.out.println(i); //Imprime:7
Sentencias de control: if

if(expr){
                 if(expr){
  ....
                   ....
}
                 } else {
                   ....
if(expr)
                 }
 sentencia;
Sentencias de control: switch

Switch (num){
  case num1:...break;
  case num2:...break;
  default:...break;
}
Sentencias de control: while y do-while




while (expr){       do {
  ....               ....
}                   }while(expr);
Sentencias de control: for

for (exprInic; condCorte;
  pasoSig) {
  ....
}
for (int i=0; i<10; i++) {
 System.out.println(i);
}//Imprime los números del 0
 al 9
Estructura de un programa Java

>  La programación orientada a objetos se basa en que cada
   programa es una simulación de un mundo real o virtual.
>  Cada uno de estos mundos esta compuesto de objetos.
>  Los objetos se comunican a través de mensajes
>  Por lo tanto, un programa orientado a objetos no es mas
   que una configuración de un conjunto de objetos y los
   mensajes que se envían entre ellos.
>  El “molde” que guarda la descripción de todos los objetos
   de un mismo tipo e lo que conocemos como clase.
>  A su vez, las clases con propósitos similares pueden
   agruparse en paquetes.
>  La ejecución de un programa comienza en el método
   “main” de una clase.
Ejemplo de paquete
Figuras 

                 Figura 


                 public Double 
                 calcularArea() 




  Rectangulo                   Circulo 
  double ladoA                 double radio 
  double ladoB                 double calcularArea() 
  double calcularArea()        Circulo(radio) 
  Rectangulo(ladoA, ladoB) 
Reglas para la creación de Clases y
                  paquetes
> Las clases Java se implementan en archivos
  separados.
> Cada clase se debe encontrar dentro de un paquete.
> El nombre del archivo de la implementación de clase
  debe ser igual al nombre de la clase.
> La estructura de paquete debe corresponderse a la
  estructura de directorio. Ej: edu.poo.Ejemplo seria
  mapeado al archivo .../edu/poo/Ejemplo.java
Estructura de una clase
Modificadores de Acceso - Visibilidad

                            Clase   Paquete   Subclase   Otros


         public              ✓        ✓          ✓        ✓


        private              ✓        ✗          ✗        ✗


       protected             ✓        ✓          ✓        ✗


Default (sin modificador)    ✓        ✓          ✗        ✗
SCJP 6
Clase 1 – Declaración y
  Control de Acceso
Programación orientada a Objetos

>  bjeto
 O
  >  tributos (Variables de instancia)
    A
  >  omportamiento (métodos)
    C

>  a clase es el molde del objeto.
 L

>  os objetos son instancias de una clase.
 L
Identificadores legales

>  omienzan con una letra, ($), ( _ ). No pueden
 C
 comenzar con un número.

>  on case-sensitive.
 S

>  o pueden utilizarse palabras clave de Java,
 N
 incluyendo “enum”, agregada en java 5.0.
Identificadores legales (II)
> Clases e interfaces, la primera letra debe ser mayúscula. Por
  Ej: Account, PrintWriter.

> En los métodos, la primera letra debe ser minúscula. Por Ej:
  getBalance ,doCalculation.

> Para las variables, mismas reglas que para los métodos.

> Constantes,
  MAYUSCULAS_SEPARADAS_POR_CARACTER_DE_SUBRAYADO.
Declaración de clases y modificadores

> Sólo puede haber una clase pública por archivo fuente.
> Si la clase pertenece a un paquete, la declaración del mismo
  debe estar en la primera línea del archivo, antes de los
  imports.
> Un archivo puede tener más de una clase no pública.

Modifiers class ClassName{
 [class member]
 }

ClassName: debe ser el mismo que el nombre del archivo (.java)
Acceso por defecto

>  uede pensarse como “acceso a nivel
 P
 paquete”, ya que una clase con este nivel de
 acceso sólo puede ser vista por clases dentro
 del mismo paquete.
>  usencia de palabra clave.
 A
Acceso público

>  na declaración de clase con la palabra clave
 U
 “public” da a todas las clases de todos los
 paquetes acceso a dicha clase.

>  ero, si la clase pública que estás intentando
 P
 usar se encuentra en otro paquete, deberás
 importarla.
Acceso privado

>  o puede accederse desde ninguna clase que
 N
 no sea la clase donde fue declarado el
 miembro privado.
>  alabra clave “Private”.
 P
Acceso Protegido

>  imilar al acceso por defecto. Un miembro
 S
 declarado “Protected” puede ser accedido
 desde una subclase incluso si está en otro
 paquete.
>  l acceso por defecto y el protegido difieren
 E
 sólo 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(quot;x is quot; + x);
    Parent p = new Parent();
    System.out.println(quot;X in parent is quot; + p.x);
  }
}
Modificadores Adicionales

>  inal
 F
>  bstract
 A
>  ransient
 T
>  ynchronized
 S
>  tatic
 S
Final

>  a palabra clave “Final” previene que un
 L
 método, clase o variable sea sobrescrita en
 una subclase.

>  arios de los métodos en las bibliotecas de
 V
 clases principales no pueden ser sobrescritos.
Abstract

> Un método abstracto es un método declarado pero
  no implementado. Es decir, el método no posee
  código funcional.
> Es ilegal tener incluso un único método abstracto en
  una clase que no se declare explícitamente como
  abstracta.
> Cualquier clase que extienda una clase abstracta
  debe implementar todos los métodos abstractos de
  la superclase, o ser declarada abstracta también.
Preguntas

>  Podríamos tener una clase abstracta sin
 ¿
 métodos abstractos?

>  i es así, ¿Porqué no declaramos las clases
 S
 como abstractas siempre?

>  as clases abstractas, ¿Pueden tener un
 L
 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 { … }


> ¿Qúe métodos debería sobrescribir Mini?
Métodos con listas de argumentos
        variables (var-args)
>  esde la versión 5.0, Java permite crear
 D
 métodos con un número variable de
 argumentos.
>  uando declaramos un parámetro var-arg
 C
 debemos especificar el tipo de los
 argumentos que este parámetro podrá recibir
 (puede ser primitivo u objetos).
Var-args (II)

> La sintaxis básica para declarar un método usando
  un parámetro var-arg es: nombreDelTipo…
  nombreDelArregloQueContendráLosParametros

> Puede haber otros parámetros en un método que
  posee un parámetro con var-args, siempre y cuando
  solo uno sea variable, y el mismo sea el último
  declarado en la signatura del método.
Var-args (III)
>  egal:
 L
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) { }


> legal:
 I
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.   class Voop {
2.   public static void main(String [] args) {
3.     doStuff(1);
4.     doStuff(1,2);
5.   }
6.   // punto de inserción
7.   }
> ¿Cúal de estas líneas compila al colocarla en la línea 6?
     >  A. static void doStuff(int... doArgs) { }
     >  B. static void doStuff(int[] doArgs) { }
     >  C. static void doStuff(intdoArgs...) { }
     >  D. static void doStuff(int... doArgs, inty) { }
     >  E. static void doStuff(intx, int... doArgs) { }
Declaración 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.
Declaración 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,
           métodos y clases
Variables locales   Variables no     Métodos      Clases
                      locales

      final            final          final        public
                      public          public       final
                     protected      protected     abstract
                      private        private      strictfp
                       static         static
                     transient       abstract
                      volatile     synchronized
                                     strictfp
                                      native
Declaración de Enums

>  na practica común en programación es
 U
 tener un conjunto finito de nombres
 simbólicos que representan los valores de un
 atributo.
>  num == Class.
 E
>  jemplo.
 E
enumGrade{
  A,B,C,D,F
}; // el punto y coma es opcional
Declaración de Enums (II)

> Los enums pueden ser declarados como una clase
  separada, o como miembro de una clase, pero no
  pueden ser declarados dentro de un método.
> Declarar un enum fuera de una clase:

enum CoffeeSize{
  BIG, HUGE, OVERWHELMING
}
class Coffee {
CoffeeSizesize;
}
Declaración de Enums (III)

>  eclarar un enum dentro de una clase
 D

class Coffee {
  enumCoffeeSize{
    BIG, HUGE, OVERWHELMING
  }
  CoffeeSize size;
}
Declaración de Enums (IV)
> Lo que tendrían que saber es:

enum Grade{
A,B,C,D,F
public static final Grade A = new Grade(“A”,0);
};


> Y hay que usarlo así:
public class Student{
  private Grade grade= Grade.A;
}
Declaración de Enums (V)

>  sto es ilegal:
 E

public class CoffeeTest1 {
  public static void main(String[] args{
    enumCoffeeSize{ BIG, HUGE, OVERWHELMING }
  //¡MAL!
  //no pueden declararse enums dentro de métodos.
Coffee drink = new Coffee(); drink.size =
  CoffeeSize.BIG;
  }
}
Declaración de constructors, métodos y
             variables en un Enum
enum CoffeeSize{
   BIG(8), HUGE(10), OVERWHELMING(16);

    CoffeeSize(int ounces) {
       this.ounces= ounces; // asigna el valor a
                            //una variable de instancia.
    }

    private int ounces; // una variable de
                      //instancia que tiene
                   //cada valor del enum.

    public int getOunces() { return ounces; }
}
Declaración de constructors, métodos y
         variables en un Enum (II)
Coffee drink1= new Coffee();

drink1.size = CoffeeSize.BIG;

Coffee drink2= new Coffee();

drink2.size = CoffeeSize.OVERWHELMING;

System.out.println(drink1.size.getOunces());
// imprime 8

System.out.println(drink2.size.getOunces() ());
// imprime 16
Declaración de constructors, métodos y
           variables en un Enum (III)
Enum CoffeeSize{
  BIG(8),HUGE(10),OVERWHELMING(16) {
   public String getLidCode() { return quot;Aquot;; }
  }; // el punto y coma es obligatorio

    CoffeeSize(int ounces){this.ounces = ounces; }

    private int ounces;
    public int getOunces() { return ounces; }

    public String getLidCode(){
      return quot;Bquot;; // el valor por defecto
    }
}
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 sólo sacamos la línea 1, compila.
    >    C. Si sólo sacamos la línea 3, compila.
    >    D. Si sólo sacamos la línea 5, compila.
    >    E. Si sacamos las líneas 1 y 3, compila.
    >    F. Si sacamos las líneas 1, 3 y 5, compila.
Preguntas

Más contenido relacionado

La actualidad más candente

Jyoc java-cap02 bifurcaciones
Jyoc java-cap02 bifurcacionesJyoc java-cap02 bifurcaciones
Jyoc java-cap02 bifurcacionesJyoc X
 
Manuales seminario java-manualdejava-sem 3 - 4
Manuales seminario java-manualdejava-sem 3 - 4Manuales seminario java-manualdejava-sem 3 - 4
Manuales seminario java-manualdejava-sem 3 - 4Robert Wolf
 
7090112 Clase Transact Sql Server
7090112 Clase Transact Sql Server7090112 Clase Transact Sql Server
7090112 Clase Transact Sql ServerCorfapo
 
Jyoc java-cap03 bucles
Jyoc java-cap03 buclesJyoc java-cap03 bucles
Jyoc java-cap03 buclesJyoc X
 
Programa Java que gestiona los productos que comercializan varios viveros
Programa Java que gestiona los productos que comercializan varios viverosPrograma Java que gestiona los productos que comercializan varios viveros
Programa Java que gestiona los productos que comercializan varios viverosjubacalo
 
Clase8 innerclasses
Clase8 innerclassesClase8 innerclasses
Clase8 innerclassesjorg_marq
 
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAPARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAVíctor Bolinches
 
Jyoc java-cap16 persistencia. bases de datos
Jyoc java-cap16 persistencia. bases de datosJyoc java-cap16 persistencia. bases de datos
Jyoc java-cap16 persistencia. bases de datosJyoc X
 
05. Creando e implementando objetos y métodos
05. Creando e implementando objetos y métodos05. Creando e implementando objetos y métodos
05. Creando e implementando objetos y métodosDanae Aguilar Guzmán
 
METODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTOMETODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTOLuiS YmAY
 

La actualidad más candente (20)

Jyoc java-cap02 bifurcaciones
Jyoc java-cap02 bifurcacionesJyoc java-cap02 bifurcaciones
Jyoc java-cap02 bifurcaciones
 
Semana 5 Java Swing
Semana 5   Java SwingSemana 5   Java Swing
Semana 5 Java Swing
 
Resumen java
Resumen javaResumen java
Resumen java
 
Manuales seminario java-manualdejava-sem 3 - 4
Manuales seminario java-manualdejava-sem 3 - 4Manuales seminario java-manualdejava-sem 3 - 4
Manuales seminario java-manualdejava-sem 3 - 4
 
Semana 1 Estructuras de Datos en Java
Semana 1   Estructuras de Datos en JavaSemana 1   Estructuras de Datos en Java
Semana 1 Estructuras de Datos en Java
 
7090112 Clase Transact Sql Server
7090112 Clase Transact Sql Server7090112 Clase Transact Sql Server
7090112 Clase Transact Sql Server
 
Jyoc java-cap03 bucles
Jyoc java-cap03 buclesJyoc java-cap03 bucles
Jyoc java-cap03 bucles
 
Programación Java
Programación JavaProgramación Java
Programación Java
 
Programa Java que gestiona los productos que comercializan varios viveros
Programa Java que gestiona los productos que comercializan varios viverosPrograma Java que gestiona los productos que comercializan varios viveros
Programa Java que gestiona los productos que comercializan varios viveros
 
Clase8 innerclasses
Clase8 innerclassesClase8 innerclasses
Clase8 innerclasses
 
Por pagar
Por pagarPor pagar
Por pagar
 
Mod2ud2 1
Mod2ud2 1Mod2ud2 1
Mod2ud2 1
 
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAPARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
 
Jyoc java-cap16 persistencia. bases de datos
Jyoc java-cap16 persistencia. bases de datosJyoc java-cap16 persistencia. bases de datos
Jyoc java-cap16 persistencia. bases de datos
 
Java básico
Java  básicoJava  básico
Java básico
 
05. Creando e implementando objetos y métodos
05. Creando e implementando objetos y métodos05. Creando e implementando objetos y métodos
05. Creando e implementando objetos y métodos
 
Chap 15dpin
Chap 15dpinChap 15dpin
Chap 15dpin
 
Guia 12 js
Guia 12 jsGuia 12 js
Guia 12 js
 
METODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTOMETODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTO
 
Chap 15gpin
Chap 15gpinChap 15gpin
Chap 15gpin
 

Similar a SCJP, Clase 1: Introducción al curso, Intro a Java, Declaración y Control de Acceso

Desarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agilesDesarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agilesJobsket
 
Construcción de Aplicaciones de Avanzada con Geo-Distribución
Construcción de Aplicaciones de Avanzada con Geo-DistribuciónConstrucción de Aplicaciones de Avanzada con Geo-Distribución
Construcción de Aplicaciones de Avanzada con Geo-DistribuciónLoja Valle de Tecnología
 
Grails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - SistemasGrails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - SistemasCarlos Camacho
 
Guia laboratorios no2-programacion_avanzada
Guia laboratorios no2-programacion_avanzadaGuia laboratorios no2-programacion_avanzada
Guia laboratorios no2-programacion_avanzadaharoldhicc
 
Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007guestd24c393
 
Clase1 introduccinalcurso
Clase1 introduccinalcursoClase1 introduccinalcurso
Clase1 introduccinalcursojorg_marq
 
Conferencia Rails: Integracion Continua Y Rails
Conferencia Rails: Integracion Continua Y RailsConferencia Rails: Integracion Continua Y Rails
Conferencia Rails: Integracion Continua Y RailsDavid Calavera
 
PHPAJAX
PHPAJAXPHPAJAX
PHPAJAXrodasc
 
Groovy & Grails
Groovy & GrailsGroovy & Grails
Groovy & Grailsbetabeers
 
Dragome en JavaConf Buenos Aires 2014
Dragome en JavaConf Buenos Aires 2014 Dragome en JavaConf Buenos Aires 2014
Dragome en JavaConf Buenos Aires 2014 Fernando Petrola
 
Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007guest976d083
 

Similar a SCJP, Clase 1: Introducción al curso, Intro a Java, Declaración y Control de Acceso (20)

Desarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agilesDesarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agiles
 
JQuery Mvc
JQuery   MvcJQuery   Mvc
JQuery Mvc
 
Grails barcamp 2013
Grails barcamp 2013Grails barcamp 2013
Grails barcamp 2013
 
Javascript
JavascriptJavascript
Javascript
 
Javascript
JavascriptJavascript
Javascript
 
Guia JavaScript INCES Militar - Kurt Gude
Guia JavaScript INCES Militar - Kurt GudeGuia JavaScript INCES Militar - Kurt Gude
Guia JavaScript INCES Militar - Kurt Gude
 
Grails en SG08
Grails en SG08Grails en SG08
Grails en SG08
 
Construcción de Aplicaciones de Avanzada con Geo-Distribución
Construcción de Aplicaciones de Avanzada con Geo-DistribuciónConstrucción de Aplicaciones de Avanzada con Geo-Distribución
Construcción de Aplicaciones de Avanzada con Geo-Distribución
 
Grails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - SistemasGrails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - Sistemas
 
Introducción a groovy & grails
Introducción a groovy & grailsIntroducción a groovy & grails
Introducción a groovy & grails
 
Clase 1
Clase 1 Clase 1
Clase 1
 
Guia laboratorios no2-programacion_avanzada
Guia laboratorios no2-programacion_avanzadaGuia laboratorios no2-programacion_avanzada
Guia laboratorios no2-programacion_avanzada
 
Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007
 
Clase1 introduccinalcurso
Clase1 introduccinalcursoClase1 introduccinalcurso
Clase1 introduccinalcurso
 
Intro a Grails @ ITESCA
Intro a Grails @ ITESCAIntro a Grails @ ITESCA
Intro a Grails @ ITESCA
 
Conferencia Rails: Integracion Continua Y Rails
Conferencia Rails: Integracion Continua Y RailsConferencia Rails: Integracion Continua Y Rails
Conferencia Rails: Integracion Continua Y Rails
 
PHPAJAX
PHPAJAXPHPAJAX
PHPAJAX
 
Groovy & Grails
Groovy & GrailsGroovy & Grails
Groovy & Grails
 
Dragome en JavaConf Buenos Aires 2014
Dragome en JavaConf Buenos Aires 2014 Dragome en JavaConf Buenos Aires 2014
Dragome en JavaConf Buenos Aires 2014
 
Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007
 

Más de flekoso

JavaFX 1.2 - Introducción
JavaFX 1.2 - IntroducciónJavaFX 1.2 - Introducción
JavaFX 1.2 - Introducciónflekoso
 
Ruby: a Programmer's best friend
Ruby: a Programmer's best friendRuby: a Programmer's best friend
Ruby: a Programmer's best friendflekoso
 
De 0 A Python En 40 Minutos
De 0 A Python En 40 MinutosDe 0 A Python En 40 Minutos
De 0 A Python En 40 Minutosflekoso
 
Cultura Libre: Origenes, Definiciones y Alcances
Cultura Libre: Origenes, Definiciones y AlcancesCultura Libre: Origenes, Definiciones y Alcances
Cultura Libre: Origenes, Definiciones y Alcancesflekoso
 
Introducción a la Programación con Java
Introducción a la Programación con JavaIntroducción a la Programación con Java
Introducción a la Programación con Javaflekoso
 
SCJP, Clase 10: Strings, I/O
SCJP, Clase 10: Strings, I/OSCJP, Clase 10: Strings, I/O
SCJP, Clase 10: Strings, I/Oflekoso
 
SCJP, Clase 9: Threads
SCJP, Clase 9: ThreadsSCJP, Clase 9: Threads
SCJP, Clase 9: Threadsflekoso
 
Introducción a JavaFX
Introducción a JavaFXIntroducción a JavaFX
Introducción a JavaFXflekoso
 

Más de flekoso (8)

JavaFX 1.2 - Introducción
JavaFX 1.2 - IntroducciónJavaFX 1.2 - Introducción
JavaFX 1.2 - Introducción
 
Ruby: a Programmer's best friend
Ruby: a Programmer's best friendRuby: a Programmer's best friend
Ruby: a Programmer's best friend
 
De 0 A Python En 40 Minutos
De 0 A Python En 40 MinutosDe 0 A Python En 40 Minutos
De 0 A Python En 40 Minutos
 
Cultura Libre: Origenes, Definiciones y Alcances
Cultura Libre: Origenes, Definiciones y AlcancesCultura Libre: Origenes, Definiciones y Alcances
Cultura Libre: Origenes, Definiciones y Alcances
 
Introducción a la Programación con Java
Introducción a la Programación con JavaIntroducción a la Programación con Java
Introducción a la Programación con Java
 
SCJP, Clase 10: Strings, I/O
SCJP, Clase 10: Strings, I/OSCJP, Clase 10: Strings, I/O
SCJP, Clase 10: Strings, I/O
 
SCJP, Clase 9: Threads
SCJP, Clase 9: ThreadsSCJP, Clase 9: Threads
SCJP, Clase 9: Threads
 
Introducción a JavaFX
Introducción a JavaFXIntroducción a JavaFX
Introducción a JavaFX
 

Último

Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosJhonJairoRodriguezCe
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIhmpuellon
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativanicho110
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxFederico Castellari
 

Último (10)

Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 

SCJP, Clase 1: Introducción al curso, Intro a Java, Declaración y Control de Acceso

  • 1. SCJP 6 Clase 0 – Presentación Ezequiel Aranda Sun Microsystems Campus Ambassador
  • 2. Disclaimer & Acknowledgments > Even though Ezequiel Aranda is a full-time employee of Sun Microsystems, the contents here are created as his own personal endeavor and thus does not reflect any official stance of Sun Microsystems. > Sun Microsystems is not responsible for any inaccuracies in the contents. > Acknowledgments – The slides of this presentation are made from “SCJP Unit 1” by Warit Wanwithu and Thanisa Kruawaisayawan and SCJP Workshop by P. Srikanth. > This slides are Licensed under a Creative Commons Attribution – Noncommercial – Share Alike 3.0 > http://creativecommons.org/licenses/by-nc-sa/3.0/
  • 3. Certificarse, ¿Para qué? > Los títulos universitarios no prueban nuestras capacidades en tecnologías utilizadas en aplicaciones del mundo real. > Los cursos de institutos brindan certificaciones a todos, por lo que no pueden ser utilizados para medir nuestros conocimientos. > La industria necesita una forma de conocer nuestros conocimientos en las tecnologías que utilizan para construir sus aplicaciones. > Para probar nuestras credenciales en el mercado global.
  • 4. Certificarse, ¿Para qué? (II) > Los puestos de trabajo en IT están entre los 10 más difíciles de llenar, de acuerdo a una encuesta de Manpower de abril de 2008. > Cerca del 25% de los empleadores tienen problemas para contratar personal debido a falta de capacidad. > Múltiples estudios sugieren que habrá una amplia brecha entre la demanda de puestos de IT y la oferta de trabajadores con las habilidades necesarias en los próximos 5 a 10 años.
  • 5. Valor de una certificación >  El verdadero valor yace en la capacidad de verificar que una persona posee las habilidades que son importantes para el empleador. >  Las compañías de software consiguen más contratos o cobran mayores tarifas cuando sus empleados son certificados. >  Prueban efectivamente que una persona con un titulo universitario posee adicionalmente conocimientos sobre tecnologías del mundo real. >  Los empleadores buscan candidatos con este tipo de conocimientos, ¿que mejor para conseguir un primer trabajo que obtener una credencial reconocida por la industria? >  Ayuda a obtener conocimientos profundos sobre una tecnología.
  • 6. SCJP Esta certificación de base está dirigida a programadores interesados en demostrar su competencia en los fundamentos del lenguaje de programación Java.
  • 8. SCJP >  ipo de examen: Multiple choice y drag and T drop >  úmero de preguntas: 72 N >  ondición de Aprobación: 65%(47 de 72 C preguntas) >  iempo: 210 minutos T >  rerrequisito: Ninguno P >  alor: US$ 40 V
  • 9. Declaraciones, inicializaciones y ámbitos >  lases (incluyendo abstractas y todas las C formas de clases anidadas), interfaces, y enums. >  avaBeans, estándares de nomenclatura. J >  ista de argumentos de longitud variable. L >  alores de retorno legales, incluyendo V covariantes.
  • 10. Control de Flujo >  witch. S >  oops e iteradores. L >  ssertions. A >  xceptions y cláusulas para su manejo (try, E catch, finally). >  ntender cuales son arrojadas por la máquina E virtual.
  • 11. 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. > Serialización y de-serialización de objetos. > Utilizar el paquete java.text para formatear y parsear fechas, números y divisas. > Describir el propósito y uso de java.util.Locale. > Utilizar java.util.regex para formatear o parsear cadenas de caracteres.
  • 12. Concurrencia >  scribir código para definir, instanciar e E inicializar threads utilizando Java.lang.Thread y java.lang.Runnable. >  stados de los Threads. E >  loqueo de objetos para proteger variables B estaticas o de instancia de problemas de acceso concurrente. >  ado un escenario, escribir código que haga D uso apropiado de wait, notify, o notifyAll.
  • 13. Conceptos de OO > Encapsulamiento, bajo acoplamiento y alta cohesión entre clases. > Uso de polimorfismo. Determinar cuando será necesario realizar castings y reconocer errores de compilación vs. errores en tiempo de ejecución. > Declarar y/o invocar métodos sobrecargados y sobreescritos, y código para invocar a la superclase y/o constructores sobrecargados. > Desarrollar código que implemente relaciones “es- un” o “tiene-un”.
  • 14. Colecciones / Genéricos >  Comparable. >  Sobrescribir hashCode() y equals(). >  Escribir código que use las versiones genéricas de la API Collections. >  Reconocer las limitaciones de la API de Colecciones no genéricas y como refactorizar el código para utilizar las versiones genéricas. >  Escribir código que use las interfaces NavigableSet y NavigableMap. >  Escribir métodos genéricos o métodos 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.
  • 15. Fundamentos > Modificadores de acceso apropiados, declaracion de paquetes y sentencias import. > Un objeto se vuelve elegible para el garbage collector. > Reconocer los comportamientos del método Object.finalize(). > JARs, construir la estructura de directorios apropiada. Classpath. > Uso correcto de operadores. > Escribir código que determine la igualdad de dos objetos o primitivos.
  • 16. Diferencia entre los objetivos de los examenes 1.5 (055) y 1.6 (065) > ava.io.Console, j > ava.util.NavigableSet, j > ava.util.NavigableMap. j >  erás evaluado en gran profundidad en: S manejo de exceptions, collections, assertions, threads, y control de flujo.
  • 17. ¿Cómo prepararse para el examen? >  ntender los objetivos perfectamente. E >  i no sabes Java, aprende Java primero. S >  eferirse a la documentación de la API y la R especificación del lenguaje. >  studiar de un buen libro de preparación para E la certificación. >  acer tantas simulaciones de examen como H sea posible.
  • 18. SCJP 6 Clase 0.5 – Intro a Java
  • 19. ¿Qué es Java? > Java es un lenguaje de programación orientado a objetos desarrollado a principios de los años 90. > El lenguaje en sí mismo toma mucha de su sintaxis de C y C++, pero tiene un modelo de objetos más 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 administración de memoria automático.
  • 20. Un poco de historia > Fue realizado por un equipo de 13 personas, dirigidas por James Gosling. > Los objetivos de Gosling eran implementar una máquina virtual y un lenguaje con una estructura y sintaxis similar a C++.
  • 21. Un poco de historia (II) >  Con esto en mente Gosling y su equipo crearon el navegador WebRunner y ralizarón un demo que mostraba una molecula animada en una reunión de profesionales de la industria del entretenimiento e Internet. >  Todos sabemos como termina esta historia….
  • 22. ¿Porqué JAVA? > El lenguaje se denominó inicialmente “Oak”. Luego pasó a denominarse “Green” tras descubrir que Oak era ya una marca comercial registrada. > El término “JAVA” fue acuñado en una cafetería frecuentada por algunos de los miembros del equipo. > No está claro si es un acrónimo o no, algunas hipotesis indican que podría tratarse de las iniciales de sus creadores: James Gosling, Arthur Van Hoff, y Andy Bechtolsheim. Otras abogan por “Just Another Vague Acronym”. > La hipótesis que más fuerza tiene es la que Java debe su nombre a un tipo de café disponible en la cafetería.
  • 23. .java, . Class, JVM??? > En Java el código fuente se escribe en un archivo de texto plano con extensión .java. > Luego, el código es compilado a archivos .class. Un archivo .class no contiene código nativo a un tipo de procesador, en cambio contiene bytecodes. > Finalmente, la aplicación es interpretada por la maquina virtual de Java, transformando los bytecodes en código nativo en tiempo de ejecución.
  • 24. Bytecode >  El bytecode es lenguaje nativo de cualquier implementación de la maquina virtual de Java. De esta forma se logra que un programa Java corra en cualquier plataforma que disponga de una JVM.
  • 25. 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) > La API de Java es una vasta colección de componentes de software que proveen un conjunto de funciones útiles.
  • 26. Java en detalle: Inicialización de variables >  l lenguaje Java es fuertemente tipado, lo que E significa que todas las variables deben ser declaradas antes de utilizarse. int unaVariable = 1;
  • 27. Java en detalle: tipos primitivos Identificador Descripción Rango Valor por defecto Entero con signo, byte -128 a 127 0 8 bits Entero con signo, short -32.768 a 32.767 0 16 bits Entero con signo, Int -2.147.483.648 a 2.147.483.647 0 32 bits Entero con signo, -9.223.372.036.854.775.808 a long 0 64 bits 9.223.372.036.854.775.807
  • 28. tipos primitivos (II) Identificador Descripción Rango Valor por defecto float Punto flotante, Ver 32-bit IEEE 0.0 precision simple 754 floating point double Punto flotante, Ver 64-bit IEEE 0.0 precision doble 754 floating point. boolean Valor booleano true o false false char Caracter simple, 'u0000’ a 'u0000' 16 bits 'uffff'
  • 30. Operadores, precedencia y funcionalidad Operadores representación Postfix expr++ expr-- Unarios ++expr --expr +expr -expr ~! Multiplicativos */% Aditivos +- Desplazamientos << >> >>> Relacionales < > <= >= Igualdad == !=
  • 31. Operadores, precedencia y funcionalidad (II) Operadores representación AND bit a bit & OR exclusivo bit a bit ^ OR inclusivo bit a bit | AND logico && OR logico || Ternario ?: Asignación = += -= *= /= %= &= ^= |= <<= >>= >>>=
  • 32. Ejemplo con operadores aritméticos int i=2+3; // i vale 5 i=i+1; //i vale 6 i=6*2; //i vale 12 i=2+5*2%8; //i vale4
  • 33. Ejemplo con operadores postfix y unarios int i=5; // i vale 5 System.out.println(i); //Imprime:5 System.out.println(++i); //Imprime:6 System.out.println(i++); //Imprime:6 System.out.println(i); //Imprime:7
  • 34. Sentencias de control: if if(expr){ if(expr){ .... .... } } else { .... if(expr) } sentencia;
  • 35. Sentencias de control: switch Switch (num){ case num1:...break; case num2:...break; default:...break; }
  • 36. Sentencias de control: while y do-while while (expr){ do { .... .... } }while(expr);
  • 37. Sentencias de control: for for (exprInic; condCorte; pasoSig) { .... } for (int i=0; i<10; i++) { System.out.println(i); }//Imprime los números del 0 al 9
  • 38. Estructura de un programa Java >  La programación orientada a objetos se basa en que cada programa es una simulación de un mundo real o virtual. >  Cada uno de estos mundos esta compuesto de objetos. >  Los objetos se comunican a través de mensajes >  Por lo tanto, un programa orientado a objetos no es mas que una configuración de un conjunto de objetos y los mensajes que se envían entre ellos. >  El “molde” que guarda la descripción de todos los objetos de un mismo tipo e lo que conocemos como clase. >  A su vez, las clases con propósitos similares pueden agruparse en paquetes. >  La ejecución de un programa comienza en el método “main” de una clase.
  • 39. Ejemplo de paquete Figuras  Figura  public Double  calcularArea()  Rectangulo  Circulo  double ladoA  double radio  double ladoB  double calcularArea()  double calcularArea()  Circulo(radio)  Rectangulo(ladoA, ladoB) 
  • 40. Reglas para la creación de Clases y paquetes > Las clases Java se implementan en archivos separados. > Cada clase se debe encontrar dentro de un paquete. > El nombre del archivo de la implementación de clase debe ser igual al nombre de la clase. > La estructura de paquete debe corresponderse a la estructura de directorio. Ej: edu.poo.Ejemplo seria mapeado al archivo .../edu/poo/Ejemplo.java
  • 42. Modificadores de Acceso - Visibilidad Clase Paquete Subclase Otros public ✓ ✓ ✓ ✓ private ✓ ✗ ✗ ✗ protected ✓ ✓ ✓ ✗ Default (sin modificador) ✓ ✓ ✗ ✗
  • 43. SCJP 6 Clase 1 – Declaración y Control de Acceso
  • 44. Programación orientada a Objetos >  bjeto O >  tributos (Variables de instancia) A >  omportamiento (métodos) C >  a clase es el molde del objeto. L >  os objetos son instancias de una clase. L
  • 45. Identificadores legales >  omienzan con una letra, ($), ( _ ). No pueden C comenzar con un número. >  on case-sensitive. S >  o pueden utilizarse palabras clave de Java, N incluyendo “enum”, agregada en java 5.0.
  • 46. Identificadores legales (II) > Clases e interfaces, la primera letra debe ser mayúscula. Por Ej: Account, PrintWriter. > En los métodos, la primera letra debe ser minúscula. Por Ej: getBalance ,doCalculation. > Para las variables, mismas reglas que para los métodos. > Constantes, MAYUSCULAS_SEPARADAS_POR_CARACTER_DE_SUBRAYADO.
  • 47. Declaración de clases y modificadores > Sólo puede haber una clase pública por archivo fuente. > Si la clase pertenece a un paquete, la declaración del mismo debe estar en la primera línea del archivo, antes de los imports. > Un archivo puede tener más de una clase no pública. Modifiers class ClassName{ [class member] } ClassName: debe ser el mismo que el nombre del archivo (.java)
  • 48. Acceso por defecto >  uede pensarse como “acceso a nivel P paquete”, ya que una clase con este nivel de acceso sólo puede ser vista por clases dentro del mismo paquete. >  usencia de palabra clave. A
  • 49. Acceso público >  na declaración de clase con la palabra clave U “public” da a todas las clases de todos los paquetes acceso a dicha clase. >  ero, si la clase pública que estás intentando P usar se encuentra en otro paquete, deberás importarla.
  • 50. Acceso privado >  o puede accederse desde ninguna clase que N no sea la clase donde fue declarado el miembro privado. >  alabra clave “Private”. P
  • 51. Acceso Protegido >  imilar al acceso por defecto. Un miembro S declarado “Protected” puede ser accedido desde una subclase incluso si está en otro paquete. >  l acceso por defecto y el protegido difieren E sólo cuando hablamos de subclases.
  • 52. 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(quot;x is quot; + x); Parent p = new Parent(); System.out.println(quot;X in parent is quot; + p.x); } }
  • 53. Modificadores Adicionales >  inal F >  bstract A >  ransient T >  ynchronized S >  tatic S
  • 54. Final >  a palabra clave “Final” previene que un L método, clase o variable sea sobrescrita en una subclase. >  arios de los métodos en las bibliotecas de V clases principales no pueden ser sobrescritos.
  • 55. Abstract > Un método abstracto es un método declarado pero no implementado. Es decir, el método no posee código funcional. > Es ilegal tener incluso un único método abstracto en una clase que no se declare explícitamente como abstracta. > Cualquier clase que extienda una clase abstracta debe implementar todos los métodos abstractos de la superclase, o ser declarada abstracta también.
  • 56. Preguntas >  Podríamos tener una clase abstracta sin ¿ métodos abstractos? >  i es así, ¿Porqué no declaramos las clases S como abstractas siempre? >  as clases abstractas, ¿Pueden tener un L constructor?
  • 57. 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 { … } > ¿Qúe métodos debería sobrescribir Mini?
  • 58. Métodos con listas de argumentos variables (var-args) >  esde la versión 5.0, Java permite crear D métodos con un número variable de argumentos. >  uando declaramos un parámetro var-arg C debemos especificar el tipo de los argumentos que este parámetro podrá recibir (puede ser primitivo u objetos).
  • 59. Var-args (II) > La sintaxis básica para declarar un método usando un parámetro var-arg es: nombreDelTipo… nombreDelArregloQueContendráLosParametros > Puede haber otros parámetros en un método que posee un parámetro con var-args, siempre y cuando solo uno sea variable, y el mismo sea el último declarado en la signatura del método.
  • 60. Var-args (III) >  egal: L 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) { } > legal: I 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.
  • 61. Pregunta 1. class Voop { 2. public static void main(String [] args) { 3. doStuff(1); 4. doStuff(1,2); 5. } 6. // punto de inserción 7. } > ¿Cúal de estas líneas compila al colocarla en la línea 6? >  A. static void doStuff(int... doArgs) { } >  B. static void doStuff(int[] doArgs) { } >  C. static void doStuff(intdoArgs...) { } >  D. static void doStuff(int... doArgs, inty) { } >  E. static void doStuff(intx, int... doArgs) { }
  • 62. Declaración 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.
  • 63. Declaración 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.
  • 64. Modificadores en variables, métodos y clases Variables locales Variables no Métodos Clases locales final final final public public public final protected protected abstract private private strictfp static static transient abstract volatile synchronized strictfp native
  • 65. Declaración de Enums >  na practica común en programación es U tener un conjunto finito de nombres simbólicos que representan los valores de un atributo. >  num == Class. E >  jemplo. E enumGrade{ A,B,C,D,F }; // el punto y coma es opcional
  • 66. Declaración de Enums (II) > Los enums pueden ser declarados como una clase separada, o como miembro de una clase, pero no pueden ser declarados dentro de un método. > Declarar un enum fuera de una clase: enum CoffeeSize{ BIG, HUGE, OVERWHELMING } class Coffee { CoffeeSizesize; }
  • 67. Declaración de Enums (III) >  eclarar un enum dentro de una clase D class Coffee { enumCoffeeSize{ BIG, HUGE, OVERWHELMING } CoffeeSize size; }
  • 68. Declaración de Enums (IV) > Lo que tendrían que saber es: enum Grade{ A,B,C,D,F public static final Grade A = new Grade(“A”,0); }; > Y hay que usarlo así: public class Student{ private Grade grade= Grade.A; }
  • 69. Declaración de Enums (V) >  sto es ilegal: E public class CoffeeTest1 { public static void main(String[] args{ enumCoffeeSize{ BIG, HUGE, OVERWHELMING } //¡MAL! //no pueden declararse enums dentro de métodos. Coffee drink = new Coffee(); drink.size = CoffeeSize.BIG; } }
  • 70. Declaración de constructors, métodos y variables en un Enum enum CoffeeSize{ BIG(8), HUGE(10), OVERWHELMING(16); CoffeeSize(int ounces) { this.ounces= ounces; // asigna el valor a //una variable de instancia. } private int ounces; // una variable de //instancia que tiene //cada valor del enum. public int getOunces() { return ounces; } }
  • 71. Declaración de constructors, métodos y variables en un Enum (II) Coffee drink1= new Coffee(); drink1.size = CoffeeSize.BIG; Coffee drink2= new Coffee(); drink2.size = CoffeeSize.OVERWHELMING; System.out.println(drink1.size.getOunces()); // imprime 8 System.out.println(drink2.size.getOunces() ()); // imprime 16
  • 72. Declaración de constructors, métodos y variables en un Enum (III) Enum CoffeeSize{ BIG(8),HUGE(10),OVERWHELMING(16) { public String getLidCode() { return quot;Aquot;; } }; // el punto y coma es obligatorio CoffeeSize(int ounces){this.ounces = ounces; } private int ounces; public int getOunces() { return ounces; } public String getLidCode(){ return quot;Bquot;; // el valor por defecto } }
  • 73. 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 sólo sacamos la línea 1, compila. >  C. Si sólo sacamos la línea 3, compila. >  D. Si sólo sacamos la línea 5, compila. >  E. Si sacamos las líneas 1 y 3, compila. >  F. Si sacamos las líneas 1, 3 y 5, compila.