Clase1 introduccinalcurso

Download Clase1 introduccinalcurso

Post on 08-Jul-2015

255 views

Category:

Documents

5 download

Embed Size (px)

TRANSCRIPT

<ul><li><p>SCJP 6 Clase 0 Presentacin </p><p>Ezequiel Aranda </p><p>Sun Microsystems Campus Ambassador </p></li><li><p>Disclaimer &amp; Acknowledgments </p><p>&gt;!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. </p><p>&gt;!Sun Microsystems is not responsible for any inaccuracies in the contents. </p><p>&gt;!Acknowledgments The slides of this presentation are made from SCJP Unit 1 by Warit Wanwithu and Thanisa Kruawaisayawan and SCJP Workshop by P. Srikanth. </p><p>&gt;!This slides are Licensed under a Creative Commons Attribution Noncommercial Share Alike 3.0 &gt;!http://creativecommons.org/licenses/by-nc-sa/3.0/ </p></li><li><p>Certificarse, Para qu? </p><p>&gt;!Los ttulos universitarios no prueban nuestras capacidades en tecnologas utilizadas en aplicaciones del mundo real. </p><p>&gt;!Los cursos de institutos brindan certificaciones a todos, por lo que no pueden ser utilizados para medir nuestros conocimientos. </p><p>&gt;!La industria necesita una forma de conocer nuestros conocimientos en las tecnologas que utilizan para construir sus aplicaciones. </p><p>&gt;!Para probar nuestras credenciales en el mercado global. </p></li><li><p>Certificarse, Para qu? (II) </p><p>&gt;!Los puestos de trabajo en IT estn entre los 10 ms difciles de llenar, de acuerdo a una encuesta de Manpower de abril de 2008. </p><p>&gt;!Cerca del 25% de los empleadores tienen problemas para contratar personal debido a falta de capacidad. </p><p>&gt;!Mltiples 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 prximos 5 a 10 aos. </p></li><li><p>Valor de una certificacin </p><p>&gt;! El verdadero valor yace en la capacidad de verificar que una persona posee las habilidades que son importantes para el empleador. </p><p>&gt;! Las compaas de software consiguen ms contratos o cobran mayores tarifas cuando sus empleados son certificados. </p><p>&gt;! Prueban efectivamente que una persona con un titulo universitario posee adicionalmente conocimientos sobre tecnologas del mundo real. </p><p>&gt;! Los empleadores buscan candidatos con este tipo de conocimientos, que mejor para conseguir un primer trabajo que obtener una credencial reconocida por la industria? </p><p>&gt;! Ayuda a obtener conocimientos profundos sobre una tecnologa. </p></li><li><p>SCJP </p><p>Esta certificacin de base est dirigida a programadores interesados en </p><p>demostrar su competencia en los fundamentos del lenguaje de </p><p>programacin Java. </p></li><li><p>Certification Path </p></li><li><p>SCJP </p><p>&gt;!Tipo de examen: Multiple choice y drag and drop </p><p>&gt;!Nmero de preguntas: 72 </p><p>&gt;!Condicin de Aprobacin: 65%(47 de 72 preguntas) </p><p>&gt;!Tiempo: 210 minutos </p><p>&gt;!Prerrequisito: Ninguno </p><p>&gt;!Valor: US$ 40 </p></li><li><p>Declaraciones, inicializaciones y mbitos </p><p>&gt;!Clases (incluyendo abstractas y todas las formas de clases anidadas), interfaces, y enums. </p><p>&gt;!JavaBeans, estndares de nomenclatura. </p><p>&gt;!Lista de argumentos de longitud variable. </p><p>&gt;!Valores de retorno legales, incluyendo covariantes. </p></li><li><p>Control de Flujo </p><p>&gt;!Switch. </p><p>&gt;!Loops e iteradores. </p><p>&gt;!Assertions. </p><p>&gt;!Exceptions y clusulas para su manejo (try, catch, finally). </p><p>&gt;!Entender cuales son arrojadas por la mquina virtual. </p></li><li><p>API </p><p>&gt;!Wrappers de tipos primitivos y/o autoboxing &amp; unboxing. </p><p>&gt;!Diferencias entre String, StringBuilder, and StringBuffer. </p><p>&gt;!Leer de archivos, escribir a archivos, interactuar con el usuario, desarrollar soluciones correctas utilizando: BufferedReader, BufferedWriter, File, FileReader, FileWriter, PrintWriter, y Console. </p><p>&gt;!Serializacin y de-serializacin de objetos. </p><p>&gt;!Utilizar el paquete java.text para formatear y parsear fechas, nmeros y divisas. </p><p>&gt;!Describir el propsito y uso de java.util.Locale. </p><p>&gt;!Utilizar java.util.regex para formatear o parsear cadenas de caracteres. </p></li><li><p>Concurrencia </p><p>&gt;!Escribir cdigo para definir, instanciar e inicializar threads utilizando Java.lang.Thread y java.lang.Runnable. </p><p>&gt;!Estados de los Threads. </p><p>&gt;!Bloqueo de objetos para proteger variables estaticas o de instancia de problemas de acceso concurrente. </p><p>&gt;!Dado un escenario, escribir cdigo que haga uso apropiado de wait, notify, o notifyAll. </p></li><li><p>Conceptos de OO </p><p>&gt;!Encapsulamiento, bajo acoplamiento y alta cohesin entre clases. </p><p>&gt;!Uso de polimorfismo. Determinar cuando ser necesario realizar castings y reconocer errores de compilacin vs. errores en tiempo de ejecucin. </p><p>&gt;!Declarar y/o invocar mtodos sobrecargados y sobreescritos, y cdigo para invocar a la superclase y/o constructores sobrecargados. </p><p>&gt;!Desarrollar cdigo que implemente relaciones es-un o tiene-un. </p></li><li><p>Colecciones / Genricos </p><p>&gt;! Comparable. </p><p>&gt;! Sobrescribir hashCode() y equals(). </p><p>&gt;! Escribir cdigo que use las versiones genricas de la API Collections. </p><p>&gt;! Reconocer las limitaciones de la API de Colecciones no genricas y como refactorizar el cdigo para utilizar las versiones genricas. </p><p>&gt;! Escribir cdigo que use las interfaces NavigableSet y NavigableMap. </p><p>&gt;! Escribir mtodos genricos o mtodos que hagan uso de los tipos comodines. </p><p>&gt;! Usar las interfaces java.util.Comparator y java.lang.Comparableinterfaces para afectar el ordenamiento de listas y arreglos. </p><p>&gt;! Ordenamiento natural de wrappers de tipos primitivos y String. </p></li><li><p>Fundamentos </p><p>&gt;!Modificadores de acceso apropiados, declaracion de paquetes y sentencias import. </p><p>&gt;!Un objeto se vuelve elegible para el garbage collector. </p><p>&gt;!Reconocer los comportamientos del mtodo Object.finalize(). </p><p>&gt;!JARs, construir la estructura de directorios apropiada. Classpath. </p><p>&gt;!Uso correcto de operadores. </p><p>&gt;!Escribir cdigo que determine la igualdad de dos objetos o primitivos. </p></li><li><p>Diferencia entre los objetivos de los examenes 1.5 (055) y 1.6 (065) </p><p>&gt;!java.io.Console, </p><p>&gt;!java.util.NavigableSet, </p><p>&gt;!java.util.NavigableMap. </p><p>&gt;!Sers evaluado en gran profundidad en: manejo de exceptions, collections, assertions, threads, y control de flujo. </p></li><li><p>Cmo prepararse para el examen? </p><p>&gt;!Entender los objetivos perfectamente. </p><p>&gt;!Si no sabes Java, aprende Java primero. </p><p>&gt;!Referirse a la documentacin de la API y la especificacin del lenguaje. </p><p>&gt;!Estudiar de un buen libro de preparacin para la certificacin. </p><p>&gt;!Hacer tantas simulaciones de examen como sea posible. </p></li><li><p>SCJP 6 Clase 0.5 Intro a Java </p></li><li><p>Qu es Java? </p><p>&gt;!Java es un lenguaje de programacin orientado a objetos desarrollado a principios de los aos 90. </p><p>&gt;!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. </p><p>&gt;!Es independiente de la plataforma. Las primeras implementaciones de Java rezaban:write once, run anywhere. </p><p>&gt;!Posee un sistema de administracin de memoria automtico. </p></li><li><p>Un poco de historia </p><p>&gt;!Fue realizado por un equipo de 13 personas, dirigidas por James Gosling. </p><p>&gt;!Los objetivos de Gosling eran implementar una mquina virtual y un lenguaje con una estructura y sintaxis similar a C++. </p></li><li><p>Un poco de historia (II) </p><p>&gt;! Con esto en mente Gosling y su equipo crearon el navegador WebRunner y ralizarn un demo que mostraba una molecula animada en una reunin de profesionales de la industria del entretenimiento e Internet. </p><p>&gt;! Todos sabemos como termina esta historia. </p></li><li><p>Porqu JAVA? </p><p>&gt;!El lenguaje se denomin inicialmente Oak. Luego pas a denominarse Green tras descubrir que Oak era ya una marca comercial registrada. </p><p>&gt;!El trmino JAVA fue acuado en una cafetera frecuentada por algunos de los miembros del equipo. </p><p>&gt;!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. </p><p>&gt;!La hiptesis que ms fuerza tiene es la que Java debe su nombre a un tipo de caf disponible en la cafetera. </p></li><li><p>.java, . Class, JVM??? </p><p>&gt;!En Java el cdigo fuente se escribe en un archivo de texto plano con extensin .java. </p><p>&gt;!Luego, el cdigo es compilado a archivos .class. Un archivo .class no contiene cdigo nativo a un tipo de procesador, en cambio contiene bytecodes. </p><p>&gt;!Finalmente, la aplicacin es interpretada por la maquina virtual de Java, transformando los bytecodes en cdigo nativo en tiempo de ejecucin. </p></li><li><p>Bytecode </p><p>&gt;! 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. </p></li><li><p>La plataforma Java </p><p>&gt;!Una plataforma es el ambiente de software o hardware en el que corre un programa. </p><p>&gt;!La plataforma Java consta de dos componentes &gt;!La maquina virtual de Java </p><p>&gt;!La API de Java (Application Programming Interface) </p><p>&gt;!La API de Java es una vasta coleccin de componentes de software que proveen un conjunto de funciones tiles. </p></li><li><p>Java en detalle: Inicializacin de variables </p><p>&gt;!El lenguaje Java es fuertemente tipado, lo que significa que todas las variables deben ser declaradas antes de utilizarse. </p><p>int unaVariable = 1; </p></li><li><p>Java en detalle: tipos primitivos </p><p>Identificador Descripcin Rango Valor por defecto </p><p>byte Entero con signo, </p><p>8 bits -128 a 127 0 </p><p>short Entero con signo,</p><p>16 bits -32.768 a 32.767 0 </p><p>Int Entero con signo, </p><p>32 bits -2.147.483.648 a 2.147.483.647 0 </p><p>long Entero con signo, </p><p>64 bits -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807 </p><p>0 </p></li><li><p>tipos primitivos (II) </p><p>Identificador Descripcin Rango Valor por defecto </p><p>float Punto flotante, precision simple </p><p>Ver 32-bit IEEE 754 floating </p><p>point </p><p>0.0 </p><p>double Punto flotante, precision doble </p><p>Ver 64-bit IEEE 754 floating </p><p>point. </p><p>0.0 </p><p>boolean Valor booleano true o false false </p><p>char Caracter simple, 16 bits </p><p>'\u0000 a '\uffff' </p><p>'\u0000' </p></li><li><p>La clase String </p></li><li><p>Operadores, precedencia y funcionalidad </p><p>Operadores representacin </p><p>Postfix expr++ expr-- </p><p>Unarios ++expr --expr +expr -expr ~ ! </p><p>Multiplicativos * / % </p><p>Aditivos + - </p><p>Desplazamientos &gt; &gt;&gt;&gt; </p><p>Relacionales &lt; &gt; = </p><p>Igualdad == != </p></li><li><p>Operadores, precedencia y funcionalidad (II) </p><p>Operadores representacin </p><p>AND bit a bit &amp; </p><p>OR exclusivo bit a bit ^ </p><p>OR inclusivo bit a bit | </p><p>AND logico &amp;&amp; </p><p>OR logico || </p><p>Ternario ? : </p><p>Asignacin = += -= *= /= %= &amp;= ^= |= = &gt;&gt;&gt;= </p></li><li><p>Ejemplo con operadores aritmticos </p><p>int i=2+3; // i vale 5 </p><p>i=i+1; //i vale 6 </p><p>i=6*2; //i vale 12 </p><p>i=2+5*2%8; //i vale4 </p></li><li><p>Ejemplo con operadores postfix y unarios </p><p>int i=5; // i vale 5 </p><p>System.out.println(i); //Imprime:5 </p><p>System.out.println(++i); //Imprime:6 </p><p>System.out.println(i++); //Imprime:6 </p><p>System.out.println(i); //Imprime:7 </p></li><li><p>Sentencias de control: if </p><p>if(expr){ </p><p> .... </p><p>} </p><p>if(expr) </p><p> sentencia; </p><p>if(expr){ </p><p> .... </p><p>} else { </p><p> .... </p><p>} </p></li><li><p>Sentencias de control: switch </p><p>Switch (num){ </p><p> case num1:...break; </p><p> case num2:...break; </p><p> default:...break; </p><p>} </p></li><li><p>Sentencias de control: while y do-while </p><p>do { </p><p> .... </p><p>}while(expr); </p><p>while (expr){ </p><p> .... </p><p>} </p></li><li><p>Sentencias de control: for </p><p>for (exprInic; condCorte; pasoSig) { </p><p> .... </p><p>} for (int i=0; i</p></li><li><p>Estructura de un programa Java </p><p>&gt;! La programacin orientada a objetos se basa en que cada programa es una simulacin de un mundo real o virtual. </p><p>&gt;! Cada uno de estos mundos esta compuesto de objetos. &gt;! Los objetos se comunican a travs de mensajes &gt;! Por lo tanto, un programa orientado a objetos no es mas </p><p>que una configuracin de un conjunto de objetos y los mensajes que se envan entre ellos. </p><p>&gt;! El molde que guarda la descripcin de todos los objetos de un mismo tipo e lo que conocemos como clase. </p><p>&gt;! A su vez, las clases con propsitos similares pueden agruparse en paquetes. </p><p>&gt;! La ejecucin de un programa comienza en el mtodo main de una clase. </p></li><li><p>Ejemplo de paquete </p><p>!"#$%&amp;'</p><p>($)*"+',-$)*.'</p><p>+&amp;*+$*&amp;%/%.&amp;01'</p><p>!"#$%&amp;'(</p><p>)'%*&amp;+(#,)"'(</p><p>)'%*&amp;+($,&amp;$%&amp;,#-#+,./(</p><p>!"#$%&amp;'.#,)"'/(</p><p>0+$1,23%&amp;'(</p><p>)'%*&amp;+(&amp;,)'-(</p><p>)'%*&amp;+(&amp;,)'4(</p><p>)'%*&amp;+($,&amp;$%&amp;,#-#+,./(</p><p>0+$1,23%&amp;'.&amp;,)'-5(&amp;,)'41'</p><p>6"3%#,7(</p></li><li><p>Reglas para la creacin de Clases y paquetes </p><p>&gt;!Las clases Java se implementan en archivos separados. </p><p>&gt;!Cada clase se debe encontrar dentro de un paquete. </p><p>&gt;!El nombre del archivo de la implementacin de clase debe ser igual al nombre de la clase. </p><p>&gt;!La estructura de paquete debe corresponderse a la estructura de directorio. Ej: edu.poo.Ejemplo seria mapeado al archivo .../edu/poo/Ejemplo.java </p></li><li><p>Estructura de una clase </p></li><li><p>Modificadores de Acceso - Visibilidad </p><p>Clase Paquete Subclase Otros </p><p>public ! ! ! ! </p><p>private ! " " " </p><p>protected ! ! ! " </p><p>Default (sin modificador) ! ! " " </p></li><li><p>SCJP 6 Clase 1 Declaracin y </p><p>Control de Acceso </p></li><li><p>Programacin orientada a Objetos </p><p>&gt;!Objeto </p><p>&gt;!Atributos (Variables de instancia) </p><p>&gt;!Comportamiento (mtodos) </p><p>&gt;!La clase es el molde del objeto. </p><p>&gt;!Los objetos son instancias de una clase. </p></li><li><p>Identificadores legales </p><p>&gt;!Comienzan con una letra, ($), ( _ ). No pueden comenzar con un nmero. </p><p>&gt;!Son case-sensitive. </p><p>&gt;!No pueden utilizarse palabras clave de Java, incluyendo enum, agregada en java 5.0. </p></li><li><p>Identificadores legales (II) </p><p>&gt;!Clases e interfaces, la primera letra debe ser mayscula. Por Ej: Account, PrintWriter. </p><p>&gt;!En los mtodos, la primera letra debe ser minscula. Por Ej: getBalance ,doCalculation. </p><p>&gt;!Para las variables, mismas reglas que para los mtodos. </p><p>&gt;!Constantes, MAYUSCULAS_SEPARADAS_POR_CARACTER_DE_SUBRAYADO. </p></li><li><p>Declaracin de clases y modificadores </p><p>&gt;!Slo puede haber una clase pblica por archivo fuente. </p><p>&gt;!Si la clase pertenece a un paquete, la declaracin del mismo debe estar en la primera lnea del archivo, antes de los imports. </p><p>&gt;!Un archivo puede tener ms de una clase no pblica. </p><p>Modifiers class ClassName{ </p><p> [class member] </p><p> } </p><p> ClassName: debe ser el mismo que el nombre del archivo (.java) </p></li><li><p>Acceso por defecto </p><p>&gt;!Puede pensarse como acceso a nivel paquete, ya que una clase con este nivel de acceso slo puede ser vista por clases dentro del mismo paquete. </p><p>&gt;!Ausencia de palabra clave. </p></li><li><p>Acceso pblico </p><p>&gt;!Una declaracin de clase con la palabra clave public da a todas las clases de todos los paquetes acceso a dicha clase. </p><p>&gt;!Pero, si la clase pblica que ests intentando usar se encuentra en otro paquete, debers importarla. </p></li><li><p>Acceso privado </p><p>&gt;!No puede accederse desde ninguna clase que no sea la clase donde fue declarado el miembro privado. </p><p>&gt;!Palabra clave Private. </p></li><li><p>Acceso Protegido </p><p>&gt;!Similar al acceso por defecto. Un miembro declarado Protected puede ser accedido desde una subclase incluso si est en otro paquete. </p><p>&gt;!El acceso por defecto y el protegido difieren slo cuando hablamos de subclases. </p></li><li><p>Pregunta </p><p>&gt;!Compila? </p><p>package certification; </p><p> public class Parent { </p><p> protected int x = 9; </p><p> } </p><p>package other; </p><p>import certification.Parent; </p><p>class Child extends Parent { </p><p> public void testIt() { </p><p> System.out.println("x is " + x); </p><p> Parent p = new Parent(); </p><p> System.out.println("X in parent is " + p.x); </p><p> } </p><p>} </p></li><li><p>Modificadores Adicionales </p><p>&gt;!Final </p><p>&gt;!Abstract </p><p>&gt;!Transient </p><p>&gt;!Synchronized </p><p>&gt;!Static </p></li><li><p>Final </p><p>&gt;!La palabra clave Final previene que un mtodo, clase o variable sea sobrescrita en una subclase. </p><p>&gt;!Varios de los mtodos en las bibliotecas de clases principales no pueden ser sobrescritos. </p></li><li><p>Abstract </p><p>&gt;!Un mtodo abstracto es un mtodo declarado pero no implementado. Es decir, el mtodo no posee cdigo funcional. </p><p>&gt;!Es ilegal tener incluso un nico mtodo abstracto en una clase que no se declare explcitamente como abstracta. </p><p>&gt;!Cualquier clase que extienda una clase abstracta debe implementar todos los m...</p></li></ul>