Oracle certified professional java se 6 programmer 1

100 %
0 %
Information about Oracle certified professional java se 6 programmer 1
Education

Published on February 28, 2014

Author: PabloGaleanaBailey

Source: slideshare.net

Description

SCJP , Curso SCJP

México Distrito Federal a 27 de Febrero de 2014 Autor: Pablo Galeana Bailey Email: knoppixpgb@gmail.com 1. Objetivo de Certificación 1.3 - Identificadores Desarrollar código que declare, inicialice y use tipos primitivos, enumerados y objetos como estáticos, instancias y variables locales. Además, usar identificadores legales para el nombre de las variables. Un identificador es el nombre que reciben las clases, los métodos y las variables. Los identificadores legales deben estar formados solo por caracteres UNICODE, números, '$' y '_'. Utilice las siguientes reglas para asignar los identificadores:       Deben empezar con letra (mayúscula o minúscula), '$' o '_'.No pueden empezar por un número. Después del primer carácter, los identificadores pueden contener cualquier letra, número, '$' o '_'. No hay límite en el número de caracteres que un identificador puede tener. No pueden contener signos de puntuación. No podemos usar "palabras claves" como identificador. Los identificadores en Java son "case sensitive" (distingue entre mayúscula y minúscula). Ejemplos de identificadores legales:

Ejemplos de identificadores ilegales: Son identificadores válidos todos aquellos que cumplan estas normas, y además que no sean “palabras clave o reservadas” del propio lenguaje Java. Ejemplo de un programa con identificadores válidos: 1.1. Convenciones del código Java Clases e interfaces: Las clases deben ser sustantivos. Su primer carácter debe ser mayúscula el resto puede ser mayúsculas y minúsculas. Por ejemplo: MiClase Las interfaces suelen ser adjetivos. Por ejemplo: Serializable, Runnable, ...

Métodos: Los nombres de métodos normalmente son verbos. Se escribe el primer carácter en minúscula y el resto minúsculas y mayúsculas intercaladas. Por ejemplo: getNombre(), calcular(). Variables: Para las variables es igual que para los métodos. Se recomiendan nombres cortos e identificativos. *Constantes: Son variables "static" y "final". Se deben escribir todo en mayúsculas con el carácter '_' para separar las palabras. 2. Objetivo de Certificación 1.4 - JavaBeans Desarrollar código que declare métodos estáticos y no estáticos y usar nombres para los métodos que se ajusten al estándar de nombres de JavaBeans. Desarrollar código que declare y use una lista de argumentos variable. 2.1. Estándares JavaBeans La especificación de JavaBeans intenta ayudar a los desarrolladores Java a crear componentes Java que pueden ser usados por otros desarrolladores de Java. En primer lugar, JavaBeans son clases Java que tiene propiedades de instancias de variable private. Así la única manera de acceder a dichas propiedades desde fuera de la clase es a través de métodos de la clase. Los métodos que cambian el valor de las propiedades son métodosetter y los métodos para recuperar el valor de las propiedades son getters. Las normas de la nomenclatura de JavaBean que debemos saber para el examen son:  Si la propiedad no es un booleano, el prefijo del método getter debe ser get. Por ejemplo, para la propiedad size seria getSize().  Si la propiedad es un booleano, el prefijo del método getteresget o is. Por ejemplo: getSttoped() o isSttoped() ambos son validos.  El prefijo del método setter debe ser set. Por ejemplo: setSize() es válido para la propiedad size.  Para completar el nombre de un método getter o setter, cambiamos el primer carácter de la propiedad a mayúscula y le ponemos el prefijo get, set o is respectivamente.  Los métodos setter no devuelven nada (void) y tienen un argumento que representa el tipo de la propiedad. Deben ser declarados public  Los métodos getter no reciben argumentos y devuelven un tipo de la propiedad. Deben ser declarados public En segundo lugar, la especificación JavaBeans soporta eventos, que permiten a componentes notificar a otros que algo ha sucedido, para el examen es necesario saber que los métodos que se utilizan para añadir o eliminar oyentes de un evento debe seguir la norma de denominación de JavaBean, que pasamos a describir ahora:  Los nombres de los métodos Listener, usados para "registrar" a un oyente en un evento, deben usar el prefijo add seguido del tipo del oyente. Por ejemplo: addActionListener() es un nombre valido.

  Los nombres de los métodos Listener, usados para "eliminar" a un oyente en un evento, deben usar el prefijo remove seguido del tipo del oyente. Por ejemplo: addActionListener() es un nombre valido. El tipo del oyente que será añadido o eliminado debe ser pasado como argumento al método. Ejemplos de métodos JavaBeans válidos: Ejemplos de métodos JavaBeans inválidos: 3. Objetivo de Certificación 1.1 - Declarar clases Desarrollar código que declare clases (incluyendo abstractas y todos los demás tipos de clases), interfaces y enumerados, y hacer un uso apropiado de las sentencias "package" e "import". Normas asociadas con la declaración de clases, y el uso de sentencias import y package en el código fuente.  Cada fichero código fuente debe tener una sola clase pública.  Los comentarios pueden aparecer en cualquier línea de código.  Si hay una clase pública en un fichero, el nombre del fichero debe coincidir con el nombre de la clase pública.  Si la clase pertenece a un paquete, la sentencia "package" debe estar en la primera línea de código, antes de cualquier sentencia "import" que haya.  Si hay sentencias "import", deben estar entre la sentencia "package" (si hay) y la declaración de la clase.  No hay manera de declarar múltiples clases en un fichero y que tengan diferentes paquetes, o usen diferentes sentencias "import".  Un fichero puede tener más de una clase no pública.  Un fichero que no tenga clase pública puede tener cualquier nombre, no debe coincidir con el nombre de ninguna de las clases que contiene.

3.1. Declaraciones y modificadores de Clases El siguiente código es la declaración de una clase: Este código compila bien, pero se le pueden añadir modificadores antes de la declaración de la clase. Los modificadores se dividen en dos categorías:  Modificadores de acceso (public, protected y private): El control de acceso de Java es un poco difícil porque hay cuatro niveles de acceso pero solo tres modificadores de acceso. El cuarto nivel de acceso (por defecto) es cuando no utilizamos ninguno de los tres modificadores de acceso. En otras palabras, que toda clase, método y variable declarada tiene un control de acceso, indiques el tipo explícitamente o no. Aunque todos los controles de acceso funcionan para la mayoría de métodos y declaraciones de variables, una clase solo puede ser declarada como pública o por defecto. Acceso a clases Para que una clase A tenga acceso a otra clase B, la clase A debe hacer una de las tres tareas:  Crear una instancia de la clase B  Extender de la clase B  Acceso seguro a métodos y variables de la clase B, dependiendo del control de acceso de estos métodos o variables.

En efecto, el acceso se conoce como visibilidad. Si la clase A no puede ver a la clase B, el nivel de acceso a los métodos y variables dentro de la clase B no tiene importancia; la clase A no tiene ninguna manera de acceder a estos métodos y variables. Acceso por defecto Una clase con acceso por defecto no tiene modificador precediéndola en la declaración. El nivel de acceso por defecto es a nivel de paquete, es decir una clase con acceso por defecto solo es vista por las clases de su mismo paquete. Por ejemplo si la clase A y la clase B están en diferentes paquetes, y la clase A tiene un nivel de acceso por defecto, la clase B no tiene permitido crear una instancia de la clase A, o incluso declarar una variable o devolver un tipo de clase A. De hecho, la clase B tiene que fingir que la clase A no existe, o el compilador se quejara. Ejemplo: Ahora mira este siguiente código: La superclase Aula1 está en un paquete diferente de la subclase. La sentencia import del fichero Aula1_Prueba está intentando importar la clase Aula1. El fichero Aula1 compila bien, pero cuando intentamos compilar la clase Aula1_Prueba obtendremos algo parecido a:

La clase Aula1_Prueba no puede compilar porque su superclase, Aula1, tiene acceso por defecto y está en un paquete diferente. Como solución a este problema podemos hacer dos cosas:  Poner las clases en el mismo paquete  Poner la clase Aula1 como public.

Guía para el Examen: En una pregunta con lógica compleja, nos debemos asegurar de mirar primero los modificadores de acceso. De esta forma, si encontramos una violación de acceso (por ejemplo una clase del paquete A que intenta acceder a una por defecto del paquete B), sabrás que el código no compilara, así que no pierdas el tiempo en la lógica y elige la opción "fallo de compilación" y vete a la siguiente pregunta. Acceso público "public" Todas las clases del universo Java tienen acceso a una clase pública. No olvides, que si una clase publica que estas intentando usar se encuentra en un diferente paquete en el cual se encuentra la clase que estamos escribiendo, deberemos importar la clase pública. En el ejemplo anterior, es posible que no quiera guardar la subclase en el mismo paquete que la superclase. Para hacer que el código funcione, necesitamos añadir la palabra clave public en la declaración de la superclase. Este cambio hace visible a la clase para todas las clases en todos los paquetes. La clase puede ser ahora instanciada desde cualquier otra clase, y cualquier clase puede extender de ella, a menos que también está marcada con el modificador de no_acceso "final".  Modificadores de no-acceso (incluyendo strictfp, final y abstract) Podemos cambiar la declaración de una clase usando las palabras clave "final", "abstract" o "strictfp". Estos modificadores son adicionales a cualquier control de acceso de la clase. Por ejemplo: declarar una clase como public y final. Pero no siempre podemos mezclar modificadores de no acceso. Por ejemplo podemos usar una combinación de final y strictfp, pero nunca marcar una clase como final y abstract. Para el examen, solo necesitamos saber que "strictfp" es una palabra clave y puede ser usada para modificar una clase o un método, pero nunca una variable. Marcando una clase como "strictfp" significa que cualquier código de método de la clase será conforme a las estándar de normas IEEE 754 para puntos flotantes. Clases Final Cuando usamos la palabra clave "final" en la declaración de una clase, ninguna clase puede extender de la clase final, y cualquier intento de hacerlo le dará un error de compilación. Solo se debe marcar una clase como final si necesitamos total garantía de que ninguno de los métodos de la clase será sobrescrito. Muchas clases en las librerías Java son finales. Por ejemplo, la clase String no puede ser extendida por ninguna otra clase. Imagine que no pudiésemos garantizar como trabaja un objeto String Vamos a modificar nuestro ejemplo Aula2 para marcar la clase como final:

Ahora, si intentamos compilar la subclase Aula2_Prueba al extender de Aula2 Nosotros obtendremos algo parecido a lo siguiente: En la práctica, casi nunca vamos a crear una clase final. Una clase final elimina un beneficio clave de la programación orientada a objetos (extensibilidad, que otras clases extiendan de otra). Por lo tanto, al menos que necesitemos mucha seguridad, asume que algún día otro programador necesitara extender de tu clase.

Clases Abstractas Una clase abstracta es una clase de la que no se puede crear objetos. La utilidad de estas clases estriba en que otras clases hereden de ésta, por lo que con ello conseguiremos reutilizar código. Para declarar una clase como abstracta utilizamos la palabra clave abstract. Algunas de las características de una clase abstracta son las siguientes: 1. Los métodos para los que no aporte una implementación serán declarados a su vez abstractos. 2. Si una clase tiene un método abstract es obligatorio que la clase sea abstract. 3. Todas las subclases que hereden de una clase abstracta tendrán que redefinir los métodos abstractos dándoles una implementación. 4. En el caso de que no implementen alguno de esos métodos la clase hija también será abstracta y tendrá que declararse como tal (tanto la clase como los métodos que siguen siendo abstractos). 5. Un método abstract no pude ser static, ya que no podría ser redefinido por las subclases. Una clase abstracta nunca será instanciada. Su único objetivo es ser extendida (que otra clase extienda de ella). (NOTA, sin embargo, tú puedes compilar y ejecutar una clase abstracta, siempre y cuando tú no intentes instanciarla). Por ejemplo, imagina que tienes una clase Car que tiene métodos comunes con todos los vehículos. Pero tú no quieres que nadie cree un objeto abstracto Car genérico. Lo que necesitas es instanciar tipos de coche como BMWBoxster y Subaruoutback. Eche un vistazo a la siguiente clase abstracta: Este código compilara bien. Al instanciar un Car en otro código, el compilador nos dará un error de compilación similar al siguiente: NOTA: Los métodos marcados abstractos acaban en ";" y no en llaves "{}".

Recordar que siempre que haya un método abstracto en una clase, esa clase debe ser marcada como abstracta.Pero, sin embargo, podemos poner métodos no abstractos en una clase abstracta. Por ejemplo: tu necesitarías tener métodos con implementaciones que no deberían cambiar de un tipo de Car a otro, tales como "getColor()" o "setPrice". Por poner métodos abstractos en una clase abstracta, las subclases de la clase abstracta heredan métodos implementados. La buena noticia es que las subclases heredan funcionalidad, y necesitan implementar solo los métodos que definen el comportamiento específico de la subclase. Codificando con tipos de clases abstractas permite obtener ventajas de polimorfismo y dar un mayor grado de flexibilidad y extensibilidad no podemos marcar una clase como abstracta y final. Porque tienen significados opuestos, una clase abstracta debe ser extendida por otras clases mientras que una final no tendrá clases que extiendan de ella. Si vemos una combinación de estos modificadores, usados para la declaración de un método o clase, el código no compilara. Ejemplo:

4. Objetivo de Certificación 1.2 - Declarar Interfaces Desarrollar código que declare una interfaz. Desarrollar código que implemente o extienda de una o más interfaces. Desarrollar código que declare una clase abstracta. Desarrollar código que extienda de una clase abstracta. 4.1. Declaración de una interfaz Cuando creas una interfaz, estas definiendo un contrato de lo que la clase podrá hacer, sin decir nada sobre como lo hará. Las interfaces pueden ser implementadas por cualquier clase, desde cualquier árbol de herencia. Esto te permite tomar clases diferentes y darles una característica común. Por ejemplo, la clase Balón y la clase Neumático tienen Rebotar como comportamiento, pero Balón y Neumático no comparten ninguna relación de herencia (Balón extiende de Juguete y Neumático de java.lang.Object). Pero haciendo que ambas clases implementen la interfaz Rebotable (del verbo Rebotar), estaremos diciendo que ambos pueden ser tratados como, "Cosas que pueden reRebotar", que en el lenguaje Java significa "Cosas que pueden invocar los métodos reRebotar() y setReRebotarFactor()". Una interfaz define métodos abstractos que toman la siguiente forma: abstractvoidbounce(); Una clase abstracta puede definir tanto métodos abstractos como no abstractos, una interfaz solo puede tener métodos abstractos. Las siguientes normas son estrictas:          Todos los métodos de una interfaz son implícitamente públicos y abstractos. Todas las variables definidas en una interfaz deben ser públicas, estáticas y finales, en otras palabras, las interfaces solo pueden declarar constantes, no instancias de variables. Los métodos de una interfaz no deben ser estáticos. Debido a que los métodos de una interfaz sin abstractos, no pueden ser marcados como final, strictfp o nativo Una interfaz puede extender de una o más interfaces. Una interfaz no puede extender de cualquier cosa excepto de una interfaz. Una interfaz no puede implementar otra interfaz o clase. Una interfaz debe ser declarada con la palabra clave "interface". Los tipos de interfaz pueden ser usados polimórficamente .

A continuación mostraremos una declaración legal de una interfaz: Las interfaces son implícitamente abstractas, se considera redundante márcala como abstracta. Solo debemos saber que las dos siguientes declaraciones son legales: El modificador "public" es requerido si deseas que la interfaz sea pública y no tenga un nivel de acceso por defecto. A continuación mostramos como se declaran los métodos de una interfaz. Marcar los métodos con los modificadores public y abstract es redundante, ya que todos los métodos de una interfaz son implícitamente public y abstract. Veremos a continuación como el código siguiente es equivalente al anterior: Los siguientes cinco métodos declarados con una combinación de modificadores public, abstract o no modificadores son legales e idénticos. Las siguientes declaraciones de métodos de una interfaz no pueden compilar:

4.2. Declarando constantes de interfaz Tienes permitido poner constantes en una interfaz. Al hacerlo, garantizas que ninguna clase que implemente la interfaz tendrá acceso a la constante. Colocando las constantes de forma correcta en una interfaz, cualquier clase que implemente la interfaz tendrá acceso directo a las constantes, como si la clase la heredara, recordar una regla clave para las constantes de interfaz siempre debe ser "publicstatic final". NOTA:Puesto que las constantes de interfaz son definidas en una interfaz, no tienen que ser declaradas como public, static *o* final. Siempre son public, static *y* final. Cualquier variable definida en una interfaz implicitamente es una constante. Encontrar el problema con el siguiente código (asume que están en ficheros separados): Una vez que el valor haya sido asignado, el valor nunca puede ser modificado. La asignación de la constante sucede en la propia interfaz (donde es declarada), así la clase que implementa la interfaz puede acceder a ella y usarla, pero como solo lectura. La asignación BAR = 27 no compilara. 5. Declarar miembros de una clase Una clase puede usar dos de los cuatro niveles de control de acceso (por defecto y public), los miembros pueden usar los cuatro:  public  protected  private  default La protección por defecto es cuando tú no indicas en la declaración del método ningún tipo de modificador de acceso. El control de acceso por defecto y protected tienen casi el mismo comportamiento, excepto una diferencia que comentaremos mas tarde. Es crucial entender los dos diferentes tipos de acceso:

 El primer tipo de acceso es cuando un método de una clase intenta acceder al método o a la variables de otra clase, usando el operador punto (.) para invocar una método o recuperar una variable. Por ejemplo:  El segundo tipo de acceso es cuando una clase hereda los miembros de otra clase. Para este caso debemos recordar, que si una clase hereda un miembro, la subclase tiene dicho miembro. Por ejemplo: Muchos de los acceso de control se centran en mirar si las dos clases involucradas están en el mismo o en o diferente paquete. No olvidar, sin embargo, que si la clase A en si no puede ser accedida por la clase B, entonces no hay miembros de la clase A que puedan ser accedidos por la clase B.

5.1. Miembros Public Cuando un miembro es declarado public significa que todas las clases, independientemente del paquete al que pertenezca, pueden acceder al miembro (asumiendo que la clase es visible). Ejemplo: Ahora mira las siguientes líneas: Como podemos ver, Goo y Sludge se encuentran en diferentes paquetes. Sin embargo, Goo puede invocar al método testIt() en Sludge sin problemas debido a que la clase Sludge y el método testIt() son públicos. Desde una subclase, si un miembro de la superclase es declarado público, la subclase hereda esos miembros independientemente de si están o no en el mismo paquete las clases. La clase Roo declara el miembro doRooThings() como público. Así que si nosotros creamos una subclase de Roo, cualquier código de la subclase pueda llamar a su propio método doRooThings() heredado.

El código anterior como el método doRooThings() es invocado sin necesidad de tener una referencia. Si existeun método invocado (o una variable accedida) sin el operador punto (.), sabrás que el método o la variable pertenecen a la clase dóndeestás viendo el código. También sabrás que el método o la variable están siendo implícitamente accedidos usando la referencia this. Así que en el código anterior, la llamada a doRooThings() en la clase Cloo podría haberse escrito también como this.doRooThings(). La referencia this siempre se refiere al actual objeto en ejecución, en otras palabras, el código donde tú ves la referencia this. Además de ser capaz de invocar al método doRooThings() por si misma, el código de alguna otra clase puede llamar a doRooThings() con una instancia de Cloo, como en el siguiente: 5.2. Miembros privados Los miembros marcados como "private" no pueden ser accedidos por código desde cualquier clase distinta de la clase en la que el miembro es declarado. Vamos a hacer un pequeño cambio a la clase Roo de un ejemplo anterior: El método doRooThings() es ahora privado, asi que ninguna otra clase puede usarlo. Si nosotros intentamos invocar al método desde cualquier otra clase, tendremos problemas al ejecutar:

Intentar compilar UseARoo, cannotfind symbol:methoddoRooThings() genera un error de compilación: symbol Es como si el método no existiera. Un miembro privado es invisible a cualquier código fuera de los propios miembros de la clase. Cuando un miembro es declarado privado, una subclase no puede heredarlo. Para el examen, necesitamos reconocer que una subclase no puede ver o usar el miembro privado de la superclase. Podemos sin embargo, declarar un método similar en la subclase. Pero independientemente de cómo se vea, no es un método sobrescrito. Es simplemente un método que resulta tener el mismo nombre que un método privado de la superclase. Las reglas de sobrescritura no se aplican, así que puedes hacer con el método lo que quieras. El método doRooThings()está ahora fuera de límites para todas las subclase, incluso los que están en el mismo paquete como la superclase: Al compilar la subclase Cloo, el compilador mostrara algo parecido a lo siguiente: %javac Cloo.java Cloo.java:4: Undefinedmethod: doRooThings() System.out.println(doRooThings()); 1 error

NOTA: Aunque tengamos permitido marcar instancias de variables como públicas, en la práctica es mejor marcarlas como private o protected. Si las variables necesitan ser cambiadas, o leídas, los programadores deberían usar métodos de acceso públicos para acceder a ellas. Así que el código en cualquier otra clase tiene que llamar al get o set de la variable, en lugar de acceder a ella directamente. Los métodos de acceso toman la forma get (para booleanos is) y set, y proporcionan un lugar donde verificar y validar antes de devolver o modificar el valor. Un método privado no puede ser sobrescrito por una subclase. Desde la subclase, como hemos visto, no podemos heredar un método privado, por lo tanto no puede sobrescribir al método. 5.3. Miembros protected o default Los niveles de control de acceso protected y por defecto son casi idénticos, pero con una diferencia. Un miembro con control de acceso por defecto debe ser accedido solo si la clase que esta accediendo esta dentro del mismo paquete, sin embargo un miembro protected puede ser accedido por una subclase aunque estén en diferentes paquetes. Mira las siguientes dos clases en diferentes ficheros: El compilador devolverá No methodmatchingtestIt() certification.OtherClass. algo found parecido in a: class o.testIt(); El comportamiento del control de acceso por defecto y el protected difiere solo cuando hablamos de subclases. Si la palabra protected es usada para definir un miembro, cualquier subclase de la clase declarando el miembro puede acceder a él a través de la herencia. No nos tenemos que fijar si las clases están en diferentes paquetes, el miembro protected de la superclase es visible a la subclase Hay una diferencia con el comportamiento que tendría si lo declarásemos como por defecto, ya que no permite a una subclase acceder al miembro de

una superclase a menos que la subclase este en el mismo paquete que la superclase. NOTA: El acceso por defecto, es la restricción de paquetes y el tipo de acceso protected, piensa en las restricciones de paquetes e hijos. Una clase con un miembro protected tiene marcado que el miembro tiene acceso a nivel de paquete para todas las clases del paquete, pero con una excepción para las subclases fuera del paquete que heredaría el método. Para una subclase un método protected significara lo mismo que si fuese por defecto (o incluso private), cuando la subclase use una referencia a la superclase. La subclase puede ver al miembro protected solo a través de la herencia. Detalles de proteted Analizar la variable protected de una superclase. El código anterior declara la variable x como protected. Esto hace a la variable accesible para todas las otras clases dentro del mismo paquete, y también heredable para cualquier subclase fuera del paquete. Ahora vamos a crear una subclase en un paquete diferente intentaremos usar la variable x (que la subclase heredará): El código compila bien. Vemos como la clase hijo esta accediendo a la variable protected a través de la herencia. Recordar, que cuando hablamos de que una subclase tiene acceso al miembro de una superclase, nos referimos a que la subclase hereda el miembro, pero no accediendo al miembro a través de una referencia mediante una instancia de la superclase. A continuación, mostraremos que sucedería en el caso de acceder a una variable protected usando una referencia a la clase Parent:

El compilador %javac other/Child.java:9: x System.out.println("X ^ 1 has in mostraria -d protectedaccess parentis lo in " siguiente: .other/Child.java certification.Parent + p.x); error Detalles del acceso por defecto El comportamiento del acceso por defecto de un miembro en una superclase. Nosotros modificaremos el miembro x de Parent para hacerlo por defecto. Ahora intentaremos acceder al miembro con acceso por defecto desde la clase Child de antes: Al compilar obtenemos un error similar a este: Child.java:4: Undefined variable: x System.out.println("Variable x is " + x); 1 error El compilador da el mismo error que cuando el miembro es declarado private. La subclase Child (en un paquete diferente del de la suoerclaseParent) no puede ver o usar el miembro con acceso por defecto x de la superclase. ¿Que pasaría ahora si estuviesen en el mismo paquete? Y en la segunda clase tú tienes lo siguiente:

El código anterior compila bien, y la clase Child ejecutara y mostrara el valor de x. Recordar que un miembro con acceso por defecto es visible por una subclase solo si esta en el mismo paquete que la superclase. 5.5. Variables locales y Modificadores de acceso Hay una variable local no se le puede aplicar modificadores de acceso, como por ejemplo se ve en el siguiente código: Una variable local declarada con un modificador de acceso no compilara. De hecho, solo el modificador final puede ser aplicado a una variable local. Tabla de combinaciones de acceso y visibilidad: Visibilidad Public Protected Default Private Desde la misma clase si si si si Desde cualquier clase en el mismo paquete si si si no Desde una subclase en el mismo paquete si si si no si, a través de Desde una clase fuera del paquete si no no herencia Desde cualquier clase no subclase fuera del si no no no paquete

5.6. Métodos finales La palabra clave final previene a un método de ser sobrescrito en una subclase, y se hace a menudo para cumplir la funcionalidad del método. Por ejemplo, la clase Thread tiene un método llamado isAlive() que comprueba si un hilo esta activo. Si tú extiendes la clase Thread, no hay forma de que tú puedas implementar ese método. Debemos tener cuidado a la hora de utilizarlo, ya que previenes que una subclase sobrescriba un método y con esto quitamos muchos beneficios de la Orientación a Objetos como la extensibilidad. La declaración de un método final típica es parecida a la siguiente: Es legal extender extender a Superclass, ya que la clase no esta marca como final, pero no podremos sobrescribir el método final showsample(), como el siguiente código intenta hacer. Al compilar el código anterior, el compiladornosdaráalgoparecido a esto: %javac FinalTest.java FinalTest.java:5: The method void showsample() declared in class Subclass cannot override the final method of the same signature declared in class SuperClass. Final methods cannot be overridden. public void showSample() { } 1 error Argumentos final Los argumentos de un método son las declaraciones de variables que aparecen entre los paréntesis en la declaración del método. Una declaración típica de método con múltiples argumentos es parecido a lo siguiente: public Record getRecord(intfileNumber, intrecordNumber){} Los argumentos de un método son esencialmente lo mismo que variables locales. En el ejemplo anterior, ambas variables fileNumber y recordNumber siguen las reglas aplicadas a las variables locales. Esto significa que pueden también tener el modificador final: public Record getRecord(intfileNumber, finalintrecNumber) {} En este ejemplo, la variable recordNumbre es declarada final, que significa que no podremos

modificarla dentro del método. En este caso, "modificado" significa reasignarle un nuevo valor a la variable. En otras palabras, un argumento final debe mantener el mismo valor que tuvo cuando fue pasado al método. 5.7. Métodos abstract Un método abstracto es un método que está declarado pero no implementado. En otras palabras, el método no contiene ningún código que realice alguna funcionalidad, la declaración de un método abstracto no lleva llaves ({}) donde va la implementación del código si no que termina con punto y coma (;). En otras palabras el método no tiene cuerpo. Túmarcas un método abstracto cuando quieres forzar a las subclases a que lo implementen. Por ejemplo, si tu escribes una clase abstracta Car con un método abstracto goUpHill(), debes querer forzar a cada subtipo de Car a definir el comportamiento propio de goUpHill(): publicabstractvoidshowSample(); Fíjate como el método abstracto termina con punto y coma (;) y no con llaves ({}). Es ilegal incluso tener un solo método abstracto en una clase que no está declarada explícitamente como abstract. Mira la siguiente clase que es ilegal: La clase anterior producirá el siguiente error IllegalClass.java:1: classIllegalClassmust abstract. Itdoesnot define voiddoIt() publicclassIllegalClass{ 1 si intentas be compilarla: declared fromclassIllegalClass. error Tu puedes, sin embargo, tener una clase abstracta sin ningún método abstracto. El siguiente ejemplo compilaría bien: En el ejemplo anterior, goodMethod() no es abstracto. A continuación veremos tres formas diferentes de ver que un método no es abstracto:  El método no está marcado como abstract.  La declaración del método incluye llaves, en vez de terminar con punto y coma (;). En otras palabras, el método tiene cuerpo.  El método tiene código. Cualquier clase que extienda de una clase abstracta debe implementar todos los métodos

abstractos de la superclase, a menos que la subclase sea también abstracta. La regla es la siguiente: La primera subclase que no sea abstracta de una clase que si es abstracta debe implementar todos los métodos abstractos de la superclase. El siguiente código nos muestra un árbol de herencia con dos clases abstractas y una que no lo es. Como podemos ver la clase Mini tendrá tres métodos, los métodos heredados getType() y doCarThings(), puesto que son públicos y no abstractos. Pero ya que goUpHill() es abstracto en la superclase Vehicle, y nunca es implementado en la clase Car, significa que la clase Mini (primera clas no abstracta despues de Vehicle) debe implementar el método goUpHill(). En otras palabras, la clase Mini no puede pasar la implementación del método abstracto a la próxima clase del árbol de herencia por debajo, pero la clase Car si puede porque es abstracta. Las clases no abstractas que no proporciones implementación a los métodos abstractos de la superclase no compilarán como podemos ver en el siguiente código:

La clase B no compilara porque no implementa el método abstracto heredado foo(). Aunque el método foo(int I) en la clase aparenta ser una implementación del método abstracto de la superclase, es simplemente un método sobrecargado (un método usando el mismo identificador, pero con diferentes argumentos), así que no cumple los requerimientos de implementación del método abstracto de la superclase. Un método nunca puede, con los modificadores abstract y final, o abstract y prívate. Los modificadores abstract y final son virtualmente opuestos y modificador abstract nunca puede ser combinado con el modificado static. Recordar que lo siguiente es illegal: abstractstaticvoiddoStuff(); El error que nos saldría sería algo parecido a lo siguiente: 5.9. Métodossyncronized La palabra clave syncronized indica que un método puede ser accedido por solo un hilo a la vez, el modificador syncronized puede ser aplicado solo en métodos y no en variables ni clase. Una declaración típica de syncronized es la siguiente: El modificador syncronized puede ser encontrado con los cuatro niveles de control de acceso (significa que puede ser emparejado con cualquiera de los tres modificadores de acceso). 5.10. Métodos Native El modificador native indica que un método esta implementado en otro lenguaje, el más común en C. No necesitas saber cómo usar métodos nativos para el examen, lo que debes saber es que es un modificador (por tanto palabra clave) y que native puede ser solo aplicado en métodos no en clase ni variables. Otra cosa que deberíamos saber es que el cuerpo de los métodos native debe ser un punto y coma (;) (Como los abstract), indicando que la implementación sea omitida.

5.11. Métodos con lista de argumentos variable (var-args) Java permite crear métodos que puedan tomar un número variable de argumentos. Nosotros usaremos el término "var-args". A continuación usar los términos argumento y parámetro en el resto de la documentación:  Argumentos Lo que declaramos entre los paréntesis cuando invocamos a un método:  Parámetros Lo que debe recibir el método cuando es invocado. Nosotros trataremos los métodos que usan un número variable de argumentos, por ahora vamos a revisar las reglas de declaración de var-args:  Tipo de var-arg Cuando declaramos un parámetro var-arg, debemos especificar el tipo de argumento/s que podemos recibir (puede ser un tipo primitivo o un objeto).  Sintaxis básica Al declarar un método usando un parámetro var-arg, continuaremos el tipo con una elipsis (...), un espacio y entonces el nombre del array recibirá el parámetro recibido.  Otros parámetros Es legal tener otros parámetros en un método que usa var-arg.  Límites de var-args Debe ser el ultimo parámetro en la declaración del método, y puedes tener un solo var_arg en el método. Acontinuación Legales: alguna declaraciones legales e ilegales: Ilegales: 5.13. Declaración de constructores Todas las clases tienen un constructor, si tu no creas uno explícitamente, el compilador construirá uno para ti. Reglas básicas de declaración. Ejemplo: Lo primero que vemos es que los constructores son como métodos. Una diferencia clave es que un constructor nunca tiene un tipo return. Las declaraciones de constructores pueden

tener todos los modificadores de acceso normal y pueden tomar argumentos (incluyendo varargs), como los métodos. La otra REGLA es que los constructores es que deben ser llamados como la clase en la que son declarados. Los constructores no pueden ser marcados como static (están asociados con instanciaciones de objeto), nunca pueden ser marcados final o abstract (porque no pueden ser sobrescritos). A continuación veremos declaraciones de constructores legales e ilegales: Constructores legales Constructores ilegales 5.13. Declaraciones de Variable Hay dos tipos de variable en Java:  Primitivas Un primitivo puede ser uno de los ocho tipos: char, boolean, byte, short, int, long, double o float. Una vez el primitivo haya sido declarado, ese tipo primitivo nunca cambia, aunque en su mayoría de los casos cambia de valor.  Variables de referencia Una variable de referencia es usado para referirse (o acceder) a un objeto. Una referencia está declarada para ser de un tipo especifico y nunca puede cambiar. Una referencia puede ser usada para referirse a cualquier tipo especifico, o de un subtipo del tipo declarado (un tipo compatible). 5.14. Declarando primitivos y Rangos de primitivos Las variables primitivas pueden ser declaradas como variables de clase (estáticas), instancias de variables, parámetros de métodos o variables locales. Puedes declarar uno o más

primitivos, del mismo tipo de primitivo, en una sola línea. Ejemplo de declaraciones de variables: Es importante entender que para los tipos entero la secuencia de menor a mayor es: byte, short, int, long y que doubles son mayor que floats También necesitaras saber que los tipos de número son todos con signo y que les afecta sus rangos. Todos los seis tipos en Java están hechos de un número de 8-bit bytes y son signo, significa que pueden ser negativos y positivos. El bit más significativo (bit más a la izquierda) es usado para representar el signo, donde un 1 significa negativo y 0 positivo. El resto de los bits representa el valor, usando notación complemento a 2. Tabla de los tipos primitivos con sus tamaños y rangos. Tipo Bits Bytes Minimo Maximo byte 8 1 -27 27-1 short 16 2 -215 215-1 int 32 4 -231 231-1 long 64 8 -263 263-1 float 32 4 n/a n/a double 64 8 n/a n/a Para los tipos booleanos no hay un rango, un booleano solo puede ser true o false. El tipo char (un carácter) contiene un único carácter, 16bits Unicode. Los caracteres Unicode son actualmente representados por enteros sin signo de 16 bits, que significa 216 valores posibles, rango desde 0 a 65535 (216)-1. Pueden ser asignados a cualquier número lo suficientemente largo hasta llegar a tener 65535. Aunque el char y el short son tipos de 16 bits, recordar que un short usa 1 bit para representar al signo, así que pocos números positivos son aceptables en un short. 5.15. Declaración de Variables de Referencia Las variables de referencia pueden ser declaradas como variables estáticas, instancias de variables, parámetros de método o variables locales. Puedes declarar una o más referencias, del mismo tipo, en una sola línea.

5.16. Variables de instancia Las variables de instancia están definidas en la clase, pero fuera de cualquier método, y son inicializadas solo cuando la clase es instanciada. Las variables de instancia son los campos que pertenecen a cada objeto único. Por ejemplo, el siguiente código define campos (variables de instancia) para el nombre, título y manager de los objetos empleados: La clase Empleado puede decir que cada instancia de empleado sabrá su propio nombre, título y manager. En otras palabras, cada instancia puede tener sus propios valores únicos de los tres campos. Para el examen, necesitamos saber que las variables de instancia:  Pueden usar cualquiera de los cuatro niveles de acceso (que significa que pueden ser marcados con cualquiera de los tres modificadores de acceso).  Pueden ser marcados con final.  Pueden ser marcados con transient.  No pueden ser marcados abstract.  No pueden ser marcados syncronized.  No pueden ser marcados strictfp.  No pueden ser marcados native.  No pueden ser marcados static, porque si no serian variables de clase. Tenemos que abarcar los efectos de aplicación de controles de acceso a variables de instancia (trabajan de la misma forma que para los métodos). La siguiente tabla compara la manera en que los modificadores pueden ser aplicados a métodos vs variables. Variables Variables no locales Métodos locales final public protected private final public protected private static abstract final static transient volatile synchronized strictfp native 5.17. Variables locales (Automática/Pila/Método) Las variables locales están declaradas dentro de un método. Esto significa que la variable no está inicializada dentro del método. Ya que la variable local empieza su vida dentro del método, es también destruida cuando el método sea completado. Las variables locales están siempre en la pila, no en la heap. Aunque el valor de la variable debe ser pasado a otro método entonces almacenara el valor en una variable de instancia, la variable por si sola vive solo dentro del ámbito del método. No olvidar que la variable está en la pila, si la variable es un objeto referencia, el objeto aún

será creado en la heap. Una variable local antes de poder ser usada, debe ser inicializada con un valor. Normalmente inicializaremos una variable local en la misma línea en que la declaras, aunque puede que aún sea necesario reinicializarla más tarde en el método. La clave es que una variable local debe ser in inicializada antes de intentar usarla.El compilador rechazara cualquier código que intente usar una variable local que no tenga asignado un valor, porque a diferencia de las variables de instancia, las variables locales no obtienen valores por defecto. En el anterior código de ejemplo, sería imposible referenciar a la variable count desde cualquier otro lugar de la clase excepto dentro del ámbito del método logIn(). Como veremos en el siguiente código ilegal: Es posible declarar una variable local con el mismo nombre que una variable de instancia. Conocida como shadowing, como lo demuestra el siguiente código:

El anterior código produce la siguiente salida: local variable instance variable countis countis 10 9 El siguiente código (incorrecto) está intentando cambiar el valor de la variable de instancia usando un parámetro: Para resolver esto tenemos la palabra clave this. Con this siempre, siempre nos vamos a referir al objeto actualmente en ejecución. El siguiente código muestra this es acción: 5.18. Declaración de Array En Java, los arrays son objetos que almacenan múltiples variables del mismo tipo, o variables que son subclases del mismo tipo. Los Arrays pueden tener tanto primitivos como referencias a objetos, pero el propio array siempre es un objeto en la heap, incluso si el array es declarado para tener elementos primitivos. En otras palabras, Para el examen tenemos tres cosas que sabernos:  Como crear un array como variable de referencia (declarar).  Como crear un objeto array (constructor).  Como rellenar el array con elementos (inicializar). Los arrays son declarados indicando el tipo de elementos que el arraycontendrá (objeto o primitivo), seguido de corchetes a cada lado del identificador. Declarando un array de primitivos

El primer ejemplo es un array tridimensional y el segundo es bidimensional. Fíjate como en el segundo ejemplo nosotros tenemos unos corchetes antes del nombre de la variable y otros después. Esto es perfectamente legal para el compilador, demostrando una vez más que por que sea legal no significa que sea correcto. Guía para el Examen: Es ilegal incluir el tamaño del array en su declaración. Si, nosotros sabemos que puede hacerse en otros lenguajes, que es la razón por la que puede ver una o dos preguntas que incluya código similar al siguiente: int[5] scores; El código anterior no compilara. Recordar, la JVM no asigna el espacio hasta que se instancia al objeto array. Que es cuando realmente importa su tamaño. 5.19. Variables Finales Declarando una variable con la palabra final haces que sea imposible reinicializar la variables una vez haya sido inicializada con un valor explicito (por defecto). Para los primitivos, esto significa que una vez que la variable tiene asignado el valor, el valor no puede ser alterado. Por ejemplo, si tú asignas 10 a la variable de tipo entero, entonces la x va a permanecer a 10, siempre. 5.20. Variables Transient Marcar una instancia de variable como transient, tu le estás diciendo a la JVM que ignore esa variable cuando trate de serializar al objeto que lo contiene. La socialización es una de las característicasmás buenas de Java; permite guardar el valor de su variable instanciada en un tipo especial de flujo de I/O. Con la socialización tu puedes guardar un objeto a un fichero . 5.21. Variables Volatile Para el examen, todo lo que necesitas saber sobre volatile es que, como con transient, puede ser solo aplicado a variables de instancia. 5.22. Variables y Métodos estáticos El modificador static es usado para crear variables y métodos que existirán independientemente de cualquier instancia creada por la clase. En otras palabras, los

miembros static existen antes incluso de crear una nueva instancia de la clase y habrá solo una copia del miembro estático independientemente del número de instancias de la clase. En otras palabras, todas las instancias de una clase tienen el mismo valor para una variable estática. Cosas que podemos marcar como static:  Métodos.  Variables.  Una clase anidada dentro de otra clase, pero no dentro de un  Bloques de inicialización Cosas que no podemos marcarlas static:  Constructores (hacerlo no tiene sentido, un constructor es usado solo para crear instancias).  Clases (a menos que estén anidadas)  Interfaces  Métodos locales dentro de clases  Métodos dentro de clases y variables de instancia.  Variables locales. 5.23. Declarando enumerados (enum) A partir de Java 5.0, permite restringir a una variable a tener solo uno pocos valores predefinidos, en otras palabras, un valor de una lista enumerada. Es común que ciertos dominios que se nos presentan a la hora de modelar tengan elementos distinguidos. Imaginemos una baraja de cartas. Los naipes en cuatro clases: corazón, trébol, pica y diamante, y además numerados del dos al nueve, seguido de las figuras J (sota), Q (reina), K (rey) y A (as). Aquí tenemos dos ejemplos de enumeraciones, los cuatro palos y las diez cartas. El palo trébol es un elemento distinguido del conjunto de palos, del mismo modo que el número cinco, lo es del conjunto de la numeración de las cartas. Las enumeraciones permiten entonces definir un conjunto de elementos distinguidos. En las versiones anteriores de Java, este tipo de enumeraciones se definían utilizando constantes de tipo numérico o de tipo String.

La imagen nos muestra el diagrama que corresponde a una enumeración con el estilo anterior a las enumeraciones.El problema de este tipo de enumeraciones es que PICA no es de tipo Palo y por lo tanto en todos lados donde queramos usar un palo aparecerá el tipo String. Imaginen un método que está esperando un tipo Palo y se encarga de recibir la cadena denominada “hola mundo!”, seguramente se encargaría de romper el programa. Es este sentido, sabemos que una solución para estos casos era utilizar realmente el tipo Palo y proceder a hacer que cada palo sea una instancia. Para asegurarse de que no se crean más palos que los determinados, se marca como privado el constructor. Diagrama de una enumeración utilizando objetos que modelan correctamente el concepto.Este tipo de construcciones representan una gran mejora frente a las otras enumeraciones, yaque tenemos un tipo determinado para representar a los palos e instancias de ese tipo. Lasenumeraciones modernas en Java son un artefacto sintáctico que produce el mismo resultado que la construcción anterior pero sin escribir tanto. El lenguaje ahora tiene el concepto de enumeración, no es algo que solamente esté en la mente del programador,para definir una enumeración en Java se consigue mediante el uso de la palabra clave enum en lugar de class.Luego en el cuerpo de la enumeración se definen los elementos distinguidos.Usando enumerados podemos ayudar a reducir los bugs en el código. Ejemplo: La única manera de obtener un CoffeeSizeserá con una sentencia como la siguiente:

No es necesario que las constantes enumeradas estén todas en mayúsculas, pero tomando prestada las convenciones de código de Sun que las constantes van en mayúsculas, es una buena idea.Los componentes básicos de un enumerado son constantes, aunque dentro de poco veras que puede haber muchas más cosas en un enumerado. Los enumerados pueden ser declarados como una clase propia separada, o como una clase miembro, sin embargo no deben ser declaradas dentro de un método. Declarando un enumerado fuera de una clase El código anterior puede ser partido en un solo fichero. (Recordar, el fichero debe ser llamado CoffeeTest1.java ya que este es el nombre de la clase publica en el fichero. El punto clave a recordar es que los enumerados pueden ser declarados solo con los modificadores public o default, al igual que una clase no interna. Aquí el ejemplo de un enumerado declarado dentro de una clase. Los puntos claves a tomar de estos ejemplos son que los enumerados pueden ser declarados como una clase propia o encerrados en otra clase, y que la sintaxis para acceder al miembro de un enumerado depende de donde el enumerado fue declarado. Lo siguiente no es legal:

Para hacerlo todo más confuso, los diseñadores del lenguaje Java han puesto opcional poner un punto y coma (;) al final de la declaración de un enumerado. Lo más importante que debemos recordar es que los enumerados no son String ni ints. Cada tipo de los enumerados CoffeeSize son actualmente instancias de CoffeeSize. En otraspalabras, BIG es de tipoCoffeeSize, //conceptual example of how you can think about enums Cada uno de los valores de los enumerados son instancias del tipo CoffeeSize. Ellos están representados como static y final, que en el mundo Java, es como si fuera una constante. Fíjate también como cada valor del enumerado sabe su índice o posición, en otras palabras, el orden en el que los enumerados son declarados. Tu puedes pensar de los enumerados de CoffeeSize como si existieran en un array de tipo CoffeeSize. Declarando constructores, métodos y variables en un Enumerado Un enumerado realmente es un tipo especial de clase, puedes hacer algo más que la lista de valores constantes enumerados. Puedes añadir constructores, variables de instancia,

métodos y algo realmente extraño como una constante especifica del cuerpo de la clase. Para entender porque tú necesitas más en tu enumerado, imagínate este escenario: quieres saber el actual tamaño, en onzas, de cada una de las tres constantes CoffeeSize. Por ejemplo, tu quieres saber que BIG tiene 8 onzas, HUGE 10 onzas y OVERWHELMING 16 onzas. Podrías hacer algún tipo de tabla, usando alguna otra estructura de datos pero sería un mal diseño y duro mantenimiento. La forma más simple es tratar a los valores de los enumerados como objetos que pueden tener cada uno sus propias variables de instancia. Entonces tu puedesasignar esos valores a la vez que inicializas los enumerados, pasándole un valor al constructor del enumerado. Vamos a ver el siguiente código: Los puntos claves a recordar sobre los constructores de enumerados son:  Nunca puedes invocar directamente el constructor de un enumerado. El constructor de un enumerado es invocado automáticamente, con los argumentos tu defines el valor de la constante.Por ejemplo BIG(8) invoca al constructor de CoffeeSize que toma un valor int, pasándole el valor 8.

  Puedes definir más de un argumento para el constructor y sobrecargar los constructores de enumerados, al igual que puedes sobrecargar un constructor de una clase normal. Y finalmente, puedes definir algo realmente extraño en un enumerado que se ve como una clase interna. Se conoce como una constante especifica del cuerpo de una clase y se usa cuando necesitas una constante particular para anular un método definido en el enumerado. Parece extraño pero necesitas entender las reglas básicas de declaración: 1. Declaraciones y control de acceso Guía para el Examén1.1 Debemos tener claro la diferencia que existe entre lo que son identificadores legales y las convenciones de nombres "namingconventions". Es decir, usted debe ser capaz de reconocer un identificador que es legal aunque no se ajuste a las normas de nomenclatura. Si el examen pregunta sobre convenciones de nombres se mencionará explícitamente. Guía para el Examén1.2 Mira las siguientes declaraciones de una interfaz que definen todas unas constantes, pero sin necesidad de usar explícitamente los modificadores requeridos: publicint x = 1;// Looks non-static and non-final, but isn't! int x = 1;// Looks default, non-final, non-static, but isn't! staticint x = 1;// Doesn't show final or public finalint x = 1;// Doesn't show static or public publicstaticint x = 1;// Doesn't show final publicfinalint x = 1;// Doesn't show static

staticfinalint x = 1// Doesn't show public publicstaticfinalint x = 1;// what you get implicitly Cualquier combinación de los modificadores requeridos (aún implícitos) es legal. En el examen puedes encontrarte preguntas que tu no sepas contestar correctamente a menos que tu sepas, por ejemplo, que una variable en una interfaz es final y nunca puede tomar un valor asignado por la clase que implementa la interfaz ( o cualquier otra). Lo siguiente es entrar a la consola y empezar a compilar nuestras clases java. COMPILAR Para compilar entramos a la consola y nos situamos dentro del directorio de nuestro proyecto y ocupamos el comando javac para compilar de la siguiente forma Ej: javac archivo1.java Si el archivo se encuentra dentro de algún paquete escribimos algo como esto Ej: javac paquetearchivo.java Si lo que necesitamos es compilar varias clases dentro de un proyecto escribimos algo parecido a esto Ej: javac fuente1.java paquetefuente2.java paquetesubpaquetefuente3.java Lo que nos generara un los archivos .class EJECUTAR UN ARCHIVO .class De nuevo situados en la dirección del proyecto no en un subdirectorio y escribimos algo como esto (nótese que se está separando el paquete del archivo por "." no por "" y no se añade la extensión .class)Ej: java paquete.archivo1 CREACION DE UN ARCHIVO jar Para crear un archivo jar debemos de ejecutar el comando "jar" situados otra vez en el directorio del proyecto: jar cf proyecto.jar archivo1.class paquete Esto mete dentro de proyecto.jar a archivo1.class y el directorio paquete completo con todo su contenido (otros paquetes y clases); Para ejecutar el archivo jar usamos el comando java apuntando a la clase que tenga la clase main Ej: java -cp proyecto.jar archivo1 Ahora para ejecutar una clase o jar que depende de otras librerías lo que se debe de hacer es usar la opción -cp del comando java agregando las rutas de las librerías necesarias separadas por ";" java -cp "%ClassPath%;C:Folder1Subfolder1libreria1.jar;C:Folder1Subfolder2libreria2.jar;." mx.com.paquete.clase1 Espero poder seguir escribiendo algo de manera cotidiana aunque sean cosas elementales como esta, se agradecerán todos los comentarios.

Add a comment

Related presentations

Related pages

Oracle Certified Professional, Java SE 6 Programmer

Programmers with advanced Oracle Java SE 6 Professional Certifications under their belt have an edge in the ... Certified Java Programmer ... 1.800.529.0165 X.
Read more

Java SE 6 Programmer Certified Professional | Oracle ...

Additional Training and Preparation . In addition to the Recommended Training course(s) from Oracle University, your preparation plan for Oracle ...
Read more

Oracle Java Zertifikate – Wikipedia

... das unter der Plattform-Version 6 abgelegt ... Seit der Version 7 ist es Voraussetzung für das Zertifikat Oracle Certified Professional Java Programmer.
Read more

NEW CERTIFICATION: Oracle Certified Professional (OCP ...

... Oracle Certified Professional, Java SE 7 Programmer; ... pursuing Java SE 5 or SE 6 Programmer, ... 1. On ORACLE site i can see OCPJP for JAVA 8, ...
Read more

Oracle Certification Program - Wikipedia, the free ...

The Oracle Certification Program certifies candidates ... Oracle Certified Associate Java SE Programmer I ... Oracle Certified Professional Java SE ...
Read more

Oracle Certified Professional, Java SE 6 Programmer (1Z0-851)

Top reasons to register for SCJP 1.6 | OCPJP 6 Certification? Lot of Java Professionals wants to recognised their skills, while they are already into ...
Read more

Oracle Certified Professional, Java SE 6 Programmer - Acclaim

An Oracle Certified Professional, Java SE 6 Programmer has experience ... An Oracle Certified Professional, Java SE 6 Programmer has experience using ...
Read more

Oracle Certified Professional, Java SE 6 Programmer - Acclaim

Oracle Certified Professional, Java SE 6 Programmer An Oracle Certified Professional, Java SE 6 Programmer has experience using the Java programming ...
Read more

Oracle Certified Professional, Java SE 6 Programmer ...

... to get the certification Oracle Certified Professional, Java SE 6 ... Certified Professional, Java SE 6 Programmer. Name ... Previous 1 Next. DXpertise ...
Read more

Oracle Certified Professional, Java SE 6 Programmer

... eigentlich kurz darauf den "Sun Certified Java Programmer SE 6 ... von Sun durch Oracle nun Oracle Certified Professional, Java SE 6 ... 1°C. Wind ...
Read more