SlideShare una empresa de Scribd logo
1 de 18
Java World – Capítulo 1    2



                                                                                                                                         h
                                                                                                                                         t
                                                                                                                                         t
                                                                                                                                         p
                                                                                                                                         :
                                                                                                                                         /
                                                                                                                                         /
                                                                                                                                         g
                                                                                                                                         u
                                                                                                                                         s
                                                                                                                                         t
                                                                                                                                         a
                                                                                                                                         v
                                                                                                                                         o
                                                                                                                                         a
                                                                                                                                         l
                                                                                                                                         b
                                                                                                                                         e
                                                                                                                                         r
                                                                                                                                         o
                                                                                                                                         l
                                                                                                                                         a
                                                                                                                                         .
                                                                                                                                         b
                                                                                                                                         l
Bienvenidos                                                                                                                              o
Si estás leyendo esto es porque te encuentras interesado en rendir la certificación de Sun SCJP (Sun Certified Java Programmer), o       g
al menos tienes curiosidad al respecto.                                                                                                  s
El texto que leerán a continuación es un resumen que realizo por cada capítulo del libro de “Sun certified Programmer for Java 6         p
Study Guide”, de Katy Sierra y Bert Bates. No fue ideado como alternativa para no comprar dicho libro, es más, recomiendo                o
explícitamente que adquieran el libro.                                                                                                   t
¿Por qué adquirirlo, si me estás facilitando los resúmenes?
                                                                                                                                         .
       Este documento es un resumen, pero a su vez una síntesis. Conceptos que para mí son conocidos, puede que para otros              c
        lectores no lo sean, y viceversa.                                                                                                o
       Este documento contiene conceptos que han sido aportados pura y exclusivamente por el creador.                                   m
       El libro explica en forma más profunda todos los temas que se verán a continuación.
       El libro contiene una serie de exámenes al final de cada capítulo, los cuales debo decir son prácticamente indispensables,
        y muy tramposos en algunos casos.
3   Java World – Capítulo 1




h
t
t
p
:
/
/
v
a
l
o
r
c
r              Recomendaciones
e
               Si no deseas leer mis recomendaciones, puedes pasar al siguiente capítulo “Utilizando Java desde la consola de comandos”,
a
               y comenzar a prepararte para ser un SCJP.
t
i              Los temas que se tratan pueden parecer triviales, pero llegan a ser complejos cuando se los mezcla en un todo. Es muy
v              importante, no dar nada por sentado, y leer hasta el último párrafo (a veces, creemos que sabíamos algo, cuando
               realmente, nos damos cuenta que no era del todo cierto).
o
               Es muy importante lo que sabes, pero también lo que no sabes. Una manera muy buena de realizar esta verificación es con
.              los exámenes provistos en el libro “Sun certified Programmer for Java 6 Study Guide”, de Katy Sierra y Bert Bates. La otra (y
b              recomiendo ambas) es escribir código. Hola mundo, 2 + 2, cualquier cosa. A cada tema que están estudiando hagan un
l              sencillo programa, y piensen para sí mismos, cuáles serían los casos más raros que se les pueden llegar a presentar, y
o              pruébenlos. Por estas razones, no es obligatorio, pero sería recomendable que supieran programar en Java a un nivel
g              básico. Simplemente conocer la sintaxis de java.
               Olvídense de su IDE, su computadora necesita un descanso. Utilicen la consola de comandos para compilar y ejecutar sus
s
               programas.
p
               Al no utilizar una IDE, están propensos a cometer errores, que esta no les permitiría, o les advertiría en el momento.
o              Cuando vayan a compilar, sabrán si algo no le agrada al compilador.
t              ¿Pero, cómo uso es cosa que llamas “consola”?
.              Bien, tienes razón. Si no sabes cómo hacerlo, puede ser un poco frustrante. Para aquellos que sepan:
c
                      Instalar la JDK
o
                      Establecer el Path a la instalación de los binary de la JDK
m                     Compilar un .java desde consola
                      Ejecutar un .class o .jar desde consola

               Los invito a que empiecen con el capítulo de Identificadores, los que no, que les parece si comenzamos a familiarizarnos con
               la consola.
Java World – Capítulo 1      4

Utilizando java desde la consola de comandos
                                                                                                                                             h
Vamos a hacer una diferencia entre dos componentes de Java:
                                                                                                                                             h
                                                                                                                                             t
                                                                                                                                             t
                                                                                                                                             t
        JRE                                                                                                                                 t
                                                                                                                                             p
        JDK                                                                                                                                 p
                                                                                                                                             :
JRE (Java Runtime Environment): Set de librerías que permiten correr una JVM en la pc para poder ejecutar un programa escrito en             :
                                                                                                                                             /
Java (bytecodes).                                                                                                                            /
                                                                                                                                             /
JDK (Java Development Kit): Como mencionamos arriba, los bytecodes son un lenguaje intermedio entre el código fuente y el código             /
                                                                                                                                             g
máquina, el cual es interpretado para la JVM. Para generar este código, necesitamos de otras funcionalidades que no contiene la              g
                                                                                                                                             u
JRE. Además, en la JDK encontraremos la API de Java. Un set de librerías predefinidas para que utilicemos en nuestros programas.             u
                                                                                                                                             s
                                                                                                                                             s
                                                                                                                                             t
Los pasos a continuación representan una guía simple para poder utilizar la consola de comandos, simplemente para que puedan
hacer ejercicios sobre los temas estudiados. De todas maneras, la consola de comandos se tratará más a fondo en entregas
                                                                                                                                             t
                                                                                                                                             a
posteriores.                                                                                                                                 a
                                                                                                                                             v
                                                                                                                                             v
                                                                                                                                             o
Instalando la JDK y configurando el entorno                                                                                                  o
                                                                                                                                             a
                                                                                                                                             a
                                                                                                                                             l
    1.   Si ya tienes una version de la JDK igual o superior a la 1.6.0 puedes pasar al paso 3. Vamos a obtener la JDK desde el sitio
         oficial de sun http://java.sun.com.                                                                                                 l
                                                                                                                                             b
         El link directo: http://java.sun.com/javase/downloads/widget/jdk6.jsp                                                               b
                                                                                                                                             e
         Lo que nosotros buscamos es la JDK de Java SE.                                                                                      e
                                                                                                                                             r
    2.   Una vez que hayas desccargado la JDK es tiempo de instalarla.                                                                       r
                                                                                                                                             o
    3.   Dijimos que ibamos a utilizar la consola de comandos, el problema es que la JDK no se almacena en la variable PATH de               o
         windows, esto quiere decir que aun no podemos ejecutar los comandos de Java, salvo que nos encontremos en el directorio
                                                                                                                                             l
                                                                                                                                             l
                                                                                                                                             a
         de los mismo [Directorio instalación JDK]Bin
                                                                                                                                             a
                                                                                                                                             .
         En Windows, lo que vamos a hacer primero es rastrear este Path. Generalmente se encuentra en: C:Archivos de
         programaJavajdk1.6.0_XXbin. Si no puedes dar con este Path, puedes buscar el archivo javac.exe. Una vez                         .
                                                                                                                                             b
         que tengas el directorio, guardalo en un txt.                                                                                       b
                                                                                                                                             l
    4.   Botón derecho sobre “Mi Pc” -> Propiedades. En la solapa de “Opciones Avanzadas”, buscamos la opción que dice                       l
                                                                                                                                             o
         “Variables de entorno”. En el segundo recuadro, buscamos por una variable que se llame PATH. Doble click sobre la misma,            o
                                                                                                                                             g
         y abrirá la edición. Ahora, agreguen el siguiente texto sin eliminar lo que hubiera antes:                                          g
         ;”[Path copiado al txt]”; donde Path copiado al txt es el path de los bin de la JDK (ponemos entre comillas el                      s
                                                                                                                                             s
                                                                                                                                             p
         código por si el path contiene algún espacio).
         Luego acepta los cambios.
                                                                                                                                             p
                                                                                                                                             o
    5.   Ve a “Menu Inicio” -> “Ejecutar” -> y tipea “cmd”.                                                                                  o
                                                                                                                                             t
         Se debería de abrir una consola de comandos. Ahora vamos a probar que la asignación del Path fue correcta. Para ello                t
                                                                                                                                             .
         tecleamos el comando javac.                                                                                                         .
                                                                                                                                             c
         Debería de aparecerte algo como lo siguiente:                                                                                       c
                                                                                                                                             o
                 C:>javac                                                                                                                   o
                                                                                                                                             m
                 Usage: javac <options> <source files>                                                                                       m
                 where possible options include:


         Si recibiste un mensaje que comienza como este, significa que la instalación fue exitosa, de lo contrario, vuelve a rever los
         pasos anteriores.
5    Java World – Capítulo 1


        Compilando y ejecutando
h
t       Cuando escriban código en Java, cada archivo fuente contendra la extensión java (dificil de recordar, no?!).
        En cambio, los archivos compilados contienen la extensión class. También pueden estar dentro de un jar, que no es más que un
t
        zip que los agrupa en un solo archivo (tiene otras particularidades).
p
:       Nosotros vamos a centrarnos en la creación de los .java y los .class. Los jar los dejaremos fuera por ahora.
/       Esta sección tiene en cuenta que el lector tiene conocimientos básicos para manejarse en la consola de comandos.
/
v       Vamos a crear nuestra primer app. Java:
a           1.   Crea un archivo llamado HolaJavaWorld.java (en el directorio que quieras), y copia el código a continuación dentro del
l                archivo.
o
r         public class HolaJavaWorld {
            static public void main(String[] args) {
c             System.out.println("Hola Java World!");
r           }
e         }

a
            2.   Ejecuta la consola de comandos, y posiciona el Prompt sobre el directorio donde creaste el archivo (Tip: si haces botón
t                derecho sobre el directorio, verás una opción que dice “símbolo de sistema”, esto te habre una consola de comandos
i                posicionada en dicho directorio).
v           3.   Ejecuta javac –g HolaJavaWorld.java . En esta parte es donde le pedimos al compilador de Java que genere el
o                Bytecode de dicho archivo fuente. Si llegase a existir algún error de compilación, es en este punto que se nos informa de tal.
.           4.   Ejecuta java HolaJavaWorld. Aqui creamos una instancia de la JVM sobre la cual correrá nuestra aplicación, en la cual
                 veremos un grandioso “Hola Java World!”.
b
l       Con estos conocimientos básicos de la consola, y un poco de conocimiento del lenguaje Java, ya te encuentras en condiciones de
o       generar código para probar tus conocimientos sobre lo que vayas leyendo.
g
s                                                  System.out.println(“Buena Suerte”);
p
o
t
.
c
o
m
Java World – Capítulo 1    6

Identificadores

Los identificadores permiten que podamos identificar una variable por un nombre y/o conjunto de caracteres alfanuméricos
                                                                                                                                      h
(generalmente, describen el contenido).                                                                                               t
Para los identificadores, existen una serie de convenciones.                                                                          t
                                                                                                                                      p
Identificadores legales                                                                                                               :
Los identificadores legales se refieren a aquellos que cumplen con las normas mínimas de manera que el compilador no genere un
                                                                                                                                      /
error en tiempo de compilación.                                                                                                       /
Las características que deben de cumplir los identificadores son:                                                                     g
                                                                                                                                      u
       Debe estar compuesto de caracteres Unicode, números, $ o _
                                                                                                                                      s
       Debe comenzar con un carácter Unicode, $ o _
                                                                                                                                      t
       Luego del primer carácter, puede contener cualquier conjunto de los nombrados en el primer punto
       No tienen un límite de largo                                                                                                  a
       No es posible utilizar palabras reservadas de Java                                                                            v
       Son case-sensitive (distingue mayúsculas de minúsculas)                                                                       o
                                                                                                                                      a
Expresión regular de la composición de un identificador legal: [w$_]([wd$_]*)
                                                                                                                                      l
Convenciones de código de Java Sun                                                                                                    b
                                                                                                                                      e
Sun creó un conjunto de estándares de codificación para Java, y publicó estos estándares en un documento titulado “Convenciones       r
de código de Java” el cual puede ser encontrado en java.sun.com.
                                                                                                                                      o
Las características que debe de cumplir los identificadores son:
                                                                                                                                      l
   Clases e interfaces                                                                                                               a
        o La primer letra debe ser mayúscula                                                                                          .
        o Utiliza nomenclatura camelCase                                                                                              b
        o Para las clases, los nombres deben de ser sustantivos
                                                                                                                                      l
        o Para las interfaces, los nombres deben de ser adjetivos
                                                                                                                                      o
   Métodos
        o La primer letra debe ser minúscula                                                                                          g
        o Utiliza nomenclatura camelCase                                                                                              s
        o Los nombres deben conformarse por el par verbo + sustantivo                                                                 p
   Variables                                                                                                                         o
        o La primer letra debe ser minúscula                                                                                          t
        o Utiliza nomenclatura camelCase
                                                                                                                                      .
        o Es recomendable utilizar nombres con un significado explícito, y en lo posible, cortos
                                                                                                                                      c
   Constantes
        o Todas las letras de cada palabra deben estar en mayúsculas
                                                                                                                                      o
        o Se separa cada palabra con un _                                                                                             m
7       Java World – Capítulo 1


        Estándares para nombres de JavaBeans
h
h
t
t       Al utilizar estándares para nombres, se garantiza que las herramientas puedan reconocer los componentes realizados por cualquier
t       desarrollador.
t
        Las características que debe de cumplir los identificadores son:
p
p
:
:            Atributos
/
/                  o Ambos (getters y setters) se conforman del prefijo especificado + el nombre del atributo con su primer letra en
/
/                      mayúscula
v                  o Getters
v
                            Si la propiedad no es de tipo boolean el prefijo debe ser get
a
a                           Si la propiedad es de tipo boolean el prefijo debe ser is
l
l                           Deben de ser public, no recibir ningún argumento, y devolver un valor del mismo tipo que el setter para la
o
o                              propiedad.
r
r                  o Setters
c
c                           El prefijo debe ser set
r                           Deben de ser public, recibir un parámetro del mismo tipo que la propiedad, y devolver void
r
e            Listeners
e
                   o Los métodos que agreguen un listener deben de comenzar con el prefijo add
a
a                  o Los métodos que quiten un listener deben de comenzar con el prefijo remove
t
t                  o El tipo del listener a agregar/quitar debe de ser pasado como argumento
i
i                  o Deben de terminar con el sufijo Listener
v
v            Archivos de código fuente
o
o                  o Solo puede haber una clase public por cada archivo
.
.                  o Los comentarios pueden aparecer en cualquier línea
b                  o Si existe una clase public, el nombre de la misma debe corresponderse con el nombre del archivo
b
                   o Si la clase pertenece a un package, esta sentencia debe ser incluida como primera línea
l
l                  o Si hay import, estos deben de ser incluidos entre la declaración del package y de la clase (class)
o
o                  o Los import y package aplican a todas las clases dentro del archivo
g
g                  o Un archivo puede tener más de una clase, siempre que esta no sea public
s
s                  o Los archivos que no tengan una clase public pueden contener cualquier nombre
p
p
o
o
t
t
.
.
c
c
o
o
m
m
Java World – Capítulo 1      8

Declaraciones de clases y modificadores de acceso
                                                                                                                                              h
El acceso significa visibilidad. Dependiendo de los modificadores aplicados a la clase, atributos, o propiedades, será que estos podrán
                                                                                                                                              h
                                                                                                                                              t
ser accedidos o no por otros.                                                                                                                 t
                                                                                                                                              t
                                                                                                                                              t
                                                                                                                                              p
   Modificadores de acceso                                                                                                                   p
       o public                                                                                                                               :
                                                                                                                                              :
                                                                                                                                              /
       o prívate
       o protected                                                                                                                            /
                                                                                                                                              /
       o Default (package). Si no se especifica un modificador, este es el que toma por defecto                                               /
                                                                                                                                              g
   Modificadores de no acceso                                                                                                                g
                                                                                                                                              u
       o strictpf                                                                                                                             u
       o final
                                                                                                                                              s
                                                                                                                                              s
                                                                                                                                              t
       o abstract
                                                                                                                                              t
                                                                                                                                              a
Modificadores de acceso a clases                                                                                                              a
                                                                                                                                              v
                                                                                                                                              v
                                                                                                                                              o
package (default)                                                                                                                             o
                                                                                                                                              a
                                                                                                                                              a
                                                                                                                                              l
Nivel de visibilidad: clase visible para todas las clases que se encuentren dentro del mismo package.
Este no debe especificarse (modificador por defecto).
                                                                                                                                              l
                                                                                                                                              b
                                                                                                                                              b
                                                                                                                                              e
                 En algunas preguntas con lógica compleja, primero es recomendable verificar los modificadores de acceso. Si                  e
                                                                                                                                              r
                 detectas alguna violación de los mismos, directamente elige la opción “Compilation Fails (Fallas de                          r
                 compilación)”.                                                                                                               o
                                                                                                                                              o
                                                                                                                                              l
                                                                                                                                              l
                                                                                                                                              a
public                                                                                                                                        a
                                                                                                                                              .
Nivel de visibilidad: clase visible para todas las clases de todos los package.                                                               .
                                                                                                                                              b
Para especificar este modificador se antepone a la palabra clave class, la palabra public. De todas maneras, si la clase es utilizada         b
                                                                                                                                              l
por otra clase que no se encuentra en el mismo package, es necesario realizar el import de la misma.                                          l
                                                                                                                                              o
                                                                                                                                              o
                                                                                                                                              g
Modificadores de no acceso
                                                                                                                                              g
                                                                                                                                              s
Estos modificadores pueden combinarse con aquellos que si modifican el acceso.                                                                s
                                                                                                                                              p
                                                                                                                                              p
                                                                                                                                              o
strictpf                                                                                                                                      o
                                                                                                                                              t
                                                                                                                                              t
                                                                                                                                              .
No es necesario saber para la certificación como es que funciona strictpf. Lo único que es necesario, es saber que:
                                                                                                                                              .
                                                                                                                                              c
   Es una palabra reservada                                                                                                                  c
                                                                                                                                              o
   Puede modificar solo clases y métodos                                                                                                     o
                                                                                                                                              m
   Hacer una clase strictpf significa que todos los métodos que la conforman cumplen con la norma IEEE 754 para punto                        m
    flotante
9       Java World – Capítulo 1


        final
h
h
t
t       El modificador final indica que una clase no puede ser heredada o redefinida por una subclase.
t
t
        abstract
p
p
:
:       Características de una clase abstract:
/
/
/            No puede ser instanciada (new), solo puede ser heredada.
/
             Si un método de la clase es abstract, esto fuerza a que la clase completa sea abstract.
v
v            No todos los métodos de una clase abstract tienen que ser abstractos.
a
a            Los métodos abstract no llevan cuerpo (no llevan los caracteres {}).
l
l            La primer subclase concreta que herede de una clase abstract debe implementar todos los métodos de la superclase.
o
o
r
r       abstract y final
c
c
        Es posible combinar estos dos modificadores de no acceso, pero… si interpretamos el funcionamiento de cada uno nos dicen que:
r
r
e
e            abstract: obliga a que la subclase defina el cuerpo de los métodos.
a
a            final: previene que la clase sea heredada o redefinida.
t
t       Un modificador se opone al otro, de manera que, aunque no recibamos un error de compilación, la clase declarada de esta manera
i
i       es inutilizable.
v
v
o
o
.
.
b
b
l
l
o
o
g
g
s
s
p
p
o
o
t
t
.
.
c
c
o
o
m
m
Java World – Capítulo 1    10

Declaración de interfaces
                                                                                                                                         h
Cuando creamos una interfaz, lo que estamos diciendo es lo que la clase deberá de poder hacer, pero no como lo hará. Una interfaz
                                                                                                                                         h
                                                                                                                                         t
también es conocida como contrato.                                                                                                       t
                                                                                                                                         t
Características de una interfaz:                                                                                                         t
                                                                                                                                         p
                                                                                                                                         p
                                                                                                                                         :
       Todos los métodos de una interfaz son implícitamente public abstract, no es necesario especificarlo en la declaración del
                                                                                                                                         :
                                                                                                                                         /
        mismo.
                                                                                                                                         /
       Todos los atributos de una interfaz son implícitamente constantes (public static final), no es necesario especificarlo en        /
        la declaración del mismo.                                                                                                        /
                                                                                                                                         g
       Todas las variables de una interfaz deben de ser constantes (public static final).                                               g
                                                                                                                                         u
       Los métodos de una interfaz no pueden ser: static, final, strictfp ni native.                                                    u
                                                                                                                                         s
       Una interfaz puede heredar (extends) de una o más interfaces.                                                                    s
                                                                                                                                         t
       Una interfaz no puede heredar de otro elemento que no sea una interfaz.                                                          t
                                                                                                                                         a
       Una interfaz no puede implementar (implements) otra interfaz.                                                                    a
       Una interfaz debe ser declarada con la palabra clave interface.
                                                                                                                                         v
                                                                                                                                         v
                                                                                                                                         o
       Los tipos de las interfaces pueden ser utilizados polimórficamente.
                                                                                                                                         o
                                                                                                                                         a
       Una interfaz puede ser public o package (valor por defecto).
       Los métodos toman como ámbito el que contiene la interfaz.
                                                                                                                                         a
                                                                                                                                         l
                                                                                                                                         l
                                                                                                                                         b
IMPORTANTE: cuando se menciona el implícitamente, se refiere a que si no se especifican estos son los modificadores que toma,            b
                                                                                                                                         e
pero se pueden especificar todos, ninguno, o algunos, siendo declaraciones semejantes, por ejemplo:                                      e
                                                                                                                                         r
    public interface Dibujable {
        int CONST = 1;
                                                                                                                                         r
                                                                                                                                         o
        public int CONST = 1;                                                                                                            o
                                                                                                                                         l
        public static int CONST = 1;
        public final int CONST = 1;                                                                                                      l
                                                                                                                                         a
        static int CONST = 1;
        final int CONST = 1;                                                                                                             a
                                                                                                                                         .
        static final int CONST = 1;                                                                                                      .
        public static final int CONST = 1;                                                                                               b
                                                                                                                                         b
                                                                                                                                         l
         void doCalculo ();
         public void doCalculo ();                                                                                                       l
                                                                                                                                         o
         abstract void doCalculo ();
         public abstract void doCalculo ();
                                                                                                                                         o
                                                                                                                                         g
    }                                                                                                                                    g
                                                                                                                                         s
                                                                                                                                         s
                                                                                                                                         p
                                                                                                                                         p
                                                                                                                                         o
                                                                                                                                         o
                                                                                                                                         t
                                                                                                                                         t
                                                                                                                                         .
                                                                                                                                         .
                                                                                                                                         c
                                                                                                                                         c
                                                                                                                                         o
                                                                                                                                         o
                                                                                                                                         m
                                                                                                                                         m
11       Java World – Capítulo 1


         Declaración de métodos y atributos
h
h
t
t        Un método puede contener modificadores de acceso y de no acceso. Además, posee más combinaciones que la definición de clases.
t        Dado que ambos, métodos y atributos se declaran de manera semejante, se especifican en un mismo apartado.
t
p
p        Modificadores de acceso
:
:
/
/        Los modificadores disponibles son:
/
/
              public
v
v             protected
a
a             package
l
l             prívate
o
o
r        Con estos modificadores tenemos dos conceptos que entender:
r
c
c             Cuando un método de una clase puede acceder a un miembro de otra clase.
r
r             Cuando una subclase puede heredar un miembro de su superclase.
e
e
         El primer caso se da cuando un método de una clase intenta acceder a un método o atributo de otra clase, valiéndose del operador
a
a        . para invocar un método, u obtener una variable.
t
t        El segundo caso se da cuando una clase hereda de otro, permitiendo que la subclase acceda a los métodos y atributos de la
i
i        superclase, a través de la herencia (extends).
v
v
o
o        public
.
.        Cuando un atributo o método es declarado como public, significa que cualquier clase en cualquier package puede acceder a
b
b        dicho miembro.
l
l
o
o        private
g
g        Cuando un atributo o método es declarado como private, solo puede ser referenciado por la misma clase (ni siquiera por una
s
s        subclase). Incluso si una subclase declarara un atributo o método con el mismo nombre, solo estaría generando un nuevo miembro,
p
p        no sobrescribiéndolo, como puede llegar a ser malinterpretado.
o
o
t
t        package (default)
.
.        Cuando un atributo o método es declarado como package, solo puede ser referenciado por cualquier clase que se encuentre
c
c        dentro del mismo package, por medio de herencia y referencia.
o
o
m
m        protected

         Cuando un atributo o método es declarado como protected, este se comporta de la siguiente manera:

              Una variable declarada como protected, se comporta como un modificador de tipo package en el paquete donde se
               encuentra la clase que declaró el miembro.
              Una variable declarada como protected, solo puede ser accedida a través de la herencia (no referencia), cuando se encuentra
               fuera del package.

         Esto quiere decir que, un miembro declarado como protected es visible para todas las clases dentro del package donde fue
         declarado (ya sean subclases de la misma o no) a través de referencia y herencia, y solo disponible a través de la herencia para las
         subclases que se encuentran fuera del package. Para el resto de las clases, se comporta como un modificador prívate (no subclases
Java World – Capítulo 1    12

fuera del package de declaración).
                                                                                                                                            h
Modificadores de acceso en variables locales                                                                                                h
                                                                                                                                            t
                                                                                                                                            t
                                                                                                                                            t
No es posible aplicar ningún modificador de acceso a una variable local. Solo es posible aplicar un modificador de no acceso: final.        t
                                                                                                                                            p
                                                                                                                                            p
                                                                                                                                            :
Modificadores de no acceso
                                                                                                                                            :
                                                                                                                                            /
Dentro de los modificadores de no acceso, se agregan varios de los 2 ya conocidos a la lista para modificadores de miembros.                /
                                                                                                                                            /
                                                                                                                                            /
                                                                                                                                            g
Modificador de no acceso en métodos – final                                                                                                 g
                                                                                                                                            u
El modificador final fuerza a que un método no pueda ser redefinido por una subclase.                                                       u
                                                                                                                                            s
                                                                                                                                            s
                                                                                                                                            t
Modificador de no acceso en atributos – final                                                                                               t
                                                                                                                                            a
                                                                                                                                            a
                                                                                                                                            v
En el caso de un modificador final para un atributo, pueden darse 2 casos:
                                                                                                                                            v
                                                                                                                                            o
   Si el atributo es un valor primitivo, impide de que modifique su valor (un valor primitivo es por ejemplo un int).                      o
                                                                                                                                            a
   Si el atributo es una referencia, impide que se modifique la referencia, pero no el estado de la misma.                                 a
                                                                                                                                            l
                                                                                                                                            l
                                                                                                                                            b
Modificador de no acceso en métodos – abstract
                                                                                                                                            b
                                                                                                                                            e
El modificador abstract en un método indica que el mismo se ha declarado en el contrato, pero no se ha especificado su                      e
                                                                                                                                            r
comportamiento (cuerpo del método).                                                                                                         r
                                                                                                                                            o
                                                                                                                                            o
                                                                                                                                            l
                                                                                                                                            l
                                                                                                                                            a
                 Al especificar al menos 1 método como abstract, se fuerza a que la clase se declare como tal, por el contrario,
                                                                                                                                            a
                                                                                                                                            .
                 una clase declarada como abstract puede no contener ningún método de este tipo.
                                                                                                                                            .
                                                                                                                                            b
                                                                                                                                            b
                                                                                                                                            l
Modificador de no acceso en métodos – synchronized                                                                                          l
                                                                                                                                            o
                                                                                                                                            o
                                                                                                                                            g
El modificador sinchronized indica que el método solo puede ser accedido por un Thread a la vez.
                                                                                                                                            g
                                                                                                                                            s
Este modificador puede utilizarse en conjunto con cualquiera de los 4 modificadores de acceso.                                              s
                                                                                                                                            p
                                                                                                                                            p
                                                                                                                                            o
Modificador de no acceso en métodos – Native                                                                                                o
                                                                                                                                            t
                                                                                                                                            t
                                                                                                                                            .
El modificador native indica que el código es dependiente de la plataforma, generalmente en código C. Solo es necesario saber
para la certificación que un modificador de no acceso native solo puede ser aplicado a un método.                                           .
                                                                                                                                            c
El método debe especificarse como si fuera abstracto (sin los caracteres {}, y directamente con ;)                                          c
                                                                                                                                            o
                                                                                                                                            o
                                                                                                                                            m
Modificador de no acceso en métodos – strictfp                                                                                              m
Al igual que para una clase, el modificador de no acceso strictfp indica que los caracteres de punto flotante utilizan la norma IEEE
754.

Métodos con listas de argumentos variables

A partir de Java 5.0, es posible crear métodos que reciban una cantidad de argumentos variables.

   Pueden ser de tipo primitivo o un objeto.
13       Java World – Capítulo 1


              La definición de var-args se hace: tipoDato… nombreVariable.
h             Solo se puede especificar un solo parámetro de tipo var-args en la firma del método.
t             El parámetro var-args debe de ser el último especificado en la firma del método.
t
t             La sintaxis de estos es: TipoDeDato… nombreVariable.
p        Al llamar a un método sobrecargado o sobre escrito, primero se verifica si la llamada concuerda con algún método que no tenga
:        argumentos variables, si no se encuentra ninguno de estos, se verifica con los métodos de argumentos variables.
/
/
/
v
             public class PruebaParametrosVariables {
a              static public void haceAlgo(int val) {
l                System.out.println("Soy haceAlgo con un parámetro int");
               }
o
               static public void haceAlgo(int val1, int val2) {
r                System.out.println("Soy haceAlgo con dos parámetros int");
               }
c
               static public void haceAlgo(int... val) {
r                System.out.println("Soy haceAlgo con parámetros variables");
e              }

a              static public void main(String[] args) {
                 PruebaParametrosVariables.haceAlgo(1);
t                PruebaParametrosVariables.haceAlgo(2, 3);
i                PruebaParametrosVariables.haceAlgo(4, 5, 6);
                 PruebaParametrosVariables.haceAlgo(4, 5, 6, 7);
v              }

o
.
b                        Soy   haceAlgo   con   un parámetro int
                         Soy   haceAlgo   con   dos parámetros int
l                        Soy   haceAlgo   con   parámetros variables
o                        Soy   haceAlgo   con   parámetros variables

g
s
p
o
t
.
c
o
m
Java World – Capítulo 1   14

Declaración de constructores
                                                                                                                                           h
En Java, cada vez que un objeto es instanciado, esto se logra a través de un constructor, el cual fue invocado con un new.
                                                                                                                                           h
                                                                                                                                           t
                                                                                                                                           t
                                                                                                                                           t
   Toda clase tiene al menos un constructor. Si este no se especifica, existe un constructor implícito.                                   t
                                                                                                                                           p
   Si se especifica explícitamente al menos un constructor, el constructor implícito deja de existir.                                     p
                                                                                                                                           :
   Un constructor se define como un método, con la salvedad de que jamás puede devolver ningún parámetro.
                                                                                                                                           :
                                                                                                                                           /
   Puede utilizar cualquiera los modificadores de acceso (public, private, protected, package).
                                                                                                                                           /
                                                                                                                                           /
   El nombre del método debe de ser siempre igual al de la clase.
                                                                                                                                           /
                                                                                                                                           g
   Puede existir más de un constructor. Esto se logra utilizando la sobrecarga de métodos.
   Al igual que no pueden existir dos métodos iguales, no pueden existir dos constructores iguales.                                       g
                                                                                                                                           u
   No pueden ser: static, final ni abstract.                                                                                              u
                                                                                                                                           s
   Pueden contener en su definición como parámetro cualquier tipo primitivo, objeto, o incluso var-args.                                  s
                                                                                                                                           t
                                                                                                                                           t
                                                                                                                                           a
                                                                                                                                           a
                                                                                                                                           v
Declaración de variables                                                                                                                   v
                                                                                                                                           o
                                                                                                                                           o
                                                                                                                                           a
Se dividen en dos grupos:
                                                                                                                                           a
                                                                                                                                           l
   Primitivas: estas pueden ser cualquiera de los tipos contenidos en la tabla 1                                                          l
                                                                                                                                           b
   Referencias: se utilizan para referenciar un objeto. Estas son declaradas para ser de un tipo específico, y ese tipo no podrá          b
                                                                                                                                           e
    cambiar jamás                                                                                                                          e
                                                                                                                                           r
                                                                                                                                           r
                                                                                                                                           o
Declaración de variables primitivas y rango de variables
                                                                                                                                           o
                                                                                                                                           l
Estas pueden ser declaradas como:                                                                                                          l
                                                                                                                                           a
                                                                                                                                           a
                                                                                                                                           .
   Variables de clase (static)
                                                                                                                                           .
                                                                                                                                           b
   Variables de instancia (objeto)
                                                                                                                                           b
                                                                                                                                           l
   Parámetros
   Variables locales
                                                                                                                                           l
                                                                                                                                           o
                                                                                                                                           o
                                                                                                                                           g
Tabla 1                                                                                                                                    g
                                                                                                                                           s
*Tipo                 Bits            *Bytes           Minimum range                            Maximum range
                                                                                                                                           s
                                                                                                                                           p
byte                  8             1                 -2^7                                      (2^7)-1
                                                                                                                                           p
                                                                                                                                           o
short                 16            2                 -2^15                                     (2^15)-1
                                                                                                                                           o
                                                                                                                                           t
char                  16            2                 0                                         2^16
int                   24            4                 -2^23                                     (2^23)-1                                   t
                                                                                                                                           .
long                  32            8                 -2^31                                     (2^31)-1                                   .
                                                                                                                                           c
float                 16            4                 -2^15                                     (2^15)-1                                   c
                                                                                                                                           o
double                32            8                 -2^31                                     (2^31)-1                                   o
                                                                                                                                           m
boolean               Dependiente de la JVM                                                                                                m
*Con conocer el valor de estas dos columnas, es más que suficiente para deducir el resto.
15       Java World – Capítulo 1


         Declaración de variables de referencia
h
h
t
t        Estas pueden ser declaradas como:
t
t             Variables de clase (static)
p
p             Variables de instancia (objeto)
:
:             Parámetros
/
/             Variables locales
/
/
v        Variables de instancia
v
a
a        Representan los atributos de una clase. Se definen dentro de la clase, pero fuera de los métodos, y solo se inicializan cuando el
l
l        objeto es inicializado.
o
o        Características:
r
r
              Pueden utilizar cualquiera de los cuatro modificadores de acceso
c
c             Pueden ser final, transient, volatile
r
r             No pueden ser abstract, sinchronized, strictfp, native, static
e
e
a
a        Variables locales
t
t
i        Son variables declaradas dentro de un método. Una variable local puede definirse con el mismo nombre que una variable de
i        instancia. A esto se lo conoce con el nombre de shadowing.
v
v        Dado un caso de estos (shadowing), si se quisiera referenciar la variable de instancia, se debe utilizar el operador this. Este
o
o        almacena una referencia al objeto actual.
.
.        Características:
b
b
l             No son inicializadas por defecto
l
              Pueden ser final
o
o             No pueden ser transient, volatile, abstract, sinchronized, strictfp, native, static (porque se volverían
g
g              variables de clase)
s
s
p
p
o
o        Declaración de arrays
t
t
.        Un array es un objeto que almacena multiples variables del mismo tipo, o subclases del mismo. Estos pueden contener tanto
.
c        variables primitivas como objetos, pero el array, siempre será almacenado en el heap.
c
         Sintaxis:
o
o        TipoVariable[] NombreVariable
m
m        De esta manera, al encontrarnos con una declaración como la anterior, es simple identificar el tipo de dato, en este caso, una
         referencia a un array de objetos de tipo TipoVariable.
         También es posible declarar arrays multidimensionales, que no son otra cosa que arrays de arrays. Por cada dimensión, se especifica
         un par de [].



         Declaración de variables final

         El declarar una variable con el modificador final hace imposible modificar su valor una vez que esta ha sido inicializada con un
         valor explícito.
         En el caso de ser una variable primitiva, su valor no podrá modificarse nunca.
Java World – Capítulo 1   16

En el caso de ser una variable de referencia, no se podrá modificar la referencia al objeto que contiene, pero si su estado.
                                                                                                                                             h
                                                                                                                                             h
                                                                                                                                             t
                                                                                                                                             t
                                                                                                                                             t
Variables transient
                                                                                                                                             t
                                                                                                                                             p
Solo es aplicable a variables de instancia.                                                                                                  p
                                                                                                                                             :
Cuando una variable es marcada como transient, cuando el objeto es serializado, esta variable es excluida.                                   :
                                                                                                                                             /
                                                                                                                                             /
                                                                                                                                             /
                                                                                                                                             /
                                                                                                                                             g
Variables volatile                                                                                                                           g
                                                                                                                                             u
                                                                                                                                             u
                                                                                                                                             s
Cuando una variable es marcada como volatile, le indica a la JVM que cada vez que un thread quiera acceder a su copia local de
la variable, deberá verificarla con la copia maestra en memoria.
                                                                                                                                             s
                                                                                                                                             t
                                                                                                                                             t
                                                                                                                                             a
                                                                                                                                             a
                                                                                                                                             v
Variables y métodos estáticos                                                                                                                v
                                                                                                                                             o
                                                                                                                                             o
                                                                                                                                             a
El modificador static es utilizado para crear variables y métodos que existirán independientemente de las instancias creadas. Los            a
atributos y métodos static existen aun antes de la primer inicialización de un objeto de dicha clase, y solo habrá una copia de
                                                                                                                                             l
                                                                                                                                             l
                                                                                                                                             b
estos, por más que no se realice ninguna o n instancias.
                                                                                                                                             b
                                                                                                                                             e
Elementos que pueden contener este modificador:
                                                                                                                                             e
                                                                                                                                             r
   Métodos                                                                                                                                  r
                                                                                                                                             o
   Variables de clase                                                                                                                       o
                                                                                                                                             l
   Una clase anidada dentro de otra clase (pero no dentro de un método).                                                                    l
   Bloques de inicialización                                                                                                                a
                                                                                                                                             a
                                                                                                                                             .
                                                                                                                                             .
                                                                                                                                             b
                                                                                                                                             b
                                                                                                                                             l
                                                                                                                                             l
                                                                                                                                             o
                                                                                                                                             o
                                                                                                                                             g
                                                                                                                                             g
                                                                                                                                             s
                                                                                                                                             s
                                                                                                                                             p
                                                                                                                                             p
                                                                                                                                             o
                                                                                                                                             o
                                                                                                                                             t
                                                                                                                                             t
                                                                                                                                             .
                                                                                                                                             .
                                                                                                                                             c
                                                                                                                                             c
                                                                                                                                             o
                                                                                                                                             o
                                                                                                                                             m
                                                                                                                                             m
17       Java World – Capítulo 1


         Declaración de enumeradores
h
h
t
t        Java permite restringir una variable para que solo tenga un conjunto
t        determinado de elementos (valores predefinidos).
t
         Declaración:
p
p
               enum NombreEnumerador { VALOR1, VALOR2, … , VALORn }
:
:        Referencia:
/
/              NombreEnumerador.VALOR1
/
/                           Los enumeradores pueden ser declarados como una clase
v
v                           aparte, o miembros de una clase, pero nunca dentro de
a
a                           un método.                                                  Lo que se viene
l
l        Cada valor de un enumerador es una clase del tipo del NombreEnumerador.        En la próxima entrega estaremos
o
o        Cada enumerador conoce su índice, de manera que la posición en que sea
r                                                                                       adentrándonos en el mundo de la
r        declarado el valor si importa.
c                                                                                       programación Orientada a objetos.
c
r
r        Declaración de contructores, métodos y variables
e                                                                                       Conoceremos como se compone una
e        Debido a que los enum son en realidad un tipo especial de clase, estos
a
a                                                                                       clase, y como es la sintaxis de esta.
         pueden contener: constructores, métodos, variables de instancia, y cuerpo
t
t        constante de clase específico (constant specific class body).                  También veremos interfaces, conceptos
i
i        Debes recordar las siguientes características sobre enum:                      como herencia, polimorfismo, y otros.
v
v
              Nunca puedes invocar un constructor enum directamente. El contructor
o
o                                                                                       Aprenderemos sobre las relaciones que
               de enum es invocado automáticamente, con los argumentos que
.
.              defines luego de las constantes.                                         existen entre objetos como Is-A (es u) y
b
b             Puedes definir más de un argumento para el constructor, y puedes         As-A (tiene un).
l
l              sobrecargar los constructores, así como cualquier clase.
o
o                                                                                       Y veremos cómo extender una clase, o
         El constant specific class body, es una declaración de lo que a simple vista
g
g                                                                                       implementar una interface.
         parece una clase interna. Es utilizado cuando una constante requiere
s
s        sobrescribir el comportamiento de algún método.
p
p
o
o
t
t
.
.
c
c
o
o
m
m
Java World – Capítulo 1   18



                               h
                               t
                               t
                               p
                               :
                               /
                               /
                               g
                               u
                               s
                               t
                               a
                               v
                               o
                               a
                               l
                               b
                               e
                               r
                               o
                               l
                               a
                               .
                               b
                               l
                               o
                               g
                               s
                               p
                               o
                               t
                               .
                               c
                               o
                               m

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Capitulo 3
Capitulo 3Capitulo 3
Capitulo 3
 
Capitulo 6
Capitulo 6Capitulo 6
Capitulo 6
 
Programación Enero Febrero 2011
Programación Enero Febrero 2011Programación Enero Febrero 2011
Programación Enero Febrero 2011
 
Anaga
AnagaAnaga
Anaga
 
Diagranacion periodico
Diagranacion periodicoDiagranacion periodico
Diagranacion periodico
 
Los reciclados y sus proyectos
Los reciclados y sus proyectosLos reciclados y sus proyectos
Los reciclados y sus proyectos
 
Podemoscast
PodemoscastPodemoscast
Podemoscast
 
Trampas de luz 09 al 15 de nov de 2012
Trampas de luz 09 al 15 de nov de 2012Trampas de luz 09 al 15 de nov de 2012
Trampas de luz 09 al 15 de nov de 2012
 
Comic
ComicComic
Comic
 
Monigote raro deforme
Monigote raro deformeMonigote raro deforme
Monigote raro deforme
 
Malla vial Tunja
Malla vial TunjaMalla vial Tunja
Malla vial Tunja
 
Sistema heterogéneo
Sistema heterogéneo Sistema heterogéneo
Sistema heterogéneo
 
Diagrama mcti
Diagrama mctiDiagrama mcti
Diagrama mcti
 
Xen Summit Asia 2009 Xen Arm Talk
Xen Summit Asia 2009 Xen Arm TalkXen Summit Asia 2009 Xen Arm Talk
Xen Summit Asia 2009 Xen Arm Talk
 
Plano esquemático de Bueu
Plano esquemático de BueuPlano esquemático de Bueu
Plano esquemático de Bueu
 
Resumen 10 lit. europea
Resumen 10 lit. europeaResumen 10 lit. europea
Resumen 10 lit. europea
 
Processos de Improbidade Administrativa do Aloisio Vieira
Processos de Improbidade Administrativa do Aloisio VieiraProcessos de Improbidade Administrativa do Aloisio Vieira
Processos de Improbidade Administrativa do Aloisio Vieira
 
Lopez
LopezLopez
Lopez
 
Triptico
TripticoTriptico
Triptico
 
Proporcion De Quejas
Proporcion De QuejasProporcion De Quejas
Proporcion De Quejas
 

Similar a Cap1 javaworld

Historietas iznogud el malvado-horacio germán garcía
Historietas iznogud el malvado-horacio germán garcíaHistorietas iznogud el malvado-horacio germán garcía
Historietas iznogud el malvado-horacio germán garcíaHoracio Germán García
 
Unidad 5.- Sistemas de cruzamiento
Unidad 5.- Sistemas de cruzamientoUnidad 5.- Sistemas de cruzamiento
Unidad 5.- Sistemas de cruzamientoElenaRaimundez
 
Examen de matematicas sexto grado supervision
Examen de matematicas sexto grado supervisionExamen de matematicas sexto grado supervision
Examen de matematicas sexto grado supervisiondemonia28
 
Web enabled 2012
Web enabled 2012Web enabled 2012
Web enabled 2012Wiyingi
 
Moodle 1.9 Configuración del curso
Moodle 1.9  Configuración del cursoMoodle 1.9  Configuración del curso
Moodle 1.9 Configuración del cursoRamón OVELAR
 
Presentación atletismo
Presentación atletismoPresentación atletismo
Presentación atletismonachoydiego
 
1963 bar
1963 bar1963 bar
1963 baredusor
 
Folleto del museo_del_romanticismo
Folleto del museo_del_romanticismoFolleto del museo_del_romanticismo
Folleto del museo_del_romanticismoalvarpau
 
Prueba única de informática anderson cardona
Prueba única de informática anderson cardonaPrueba única de informática anderson cardona
Prueba única de informática anderson cardonaandercardona
 
National instruments presentation human capital group dirk willems
National instruments presentation human capital group   dirk willemsNational instruments presentation human capital group   dirk willems
National instruments presentation human capital group dirk willemsDirk Willems
 

Similar a Cap1 javaworld (15)

Historietas iznogud el malvado-horacio germán garcía
Historietas iznogud el malvado-horacio germán garcíaHistorietas iznogud el malvado-horacio germán garcía
Historietas iznogud el malvado-horacio germán garcía
 
Unidad 5.- Sistemas de cruzamiento
Unidad 5.- Sistemas de cruzamientoUnidad 5.- Sistemas de cruzamiento
Unidad 5.- Sistemas de cruzamiento
 
Examen de matematicas sexto grado supervision
Examen de matematicas sexto grado supervisionExamen de matematicas sexto grado supervision
Examen de matematicas sexto grado supervision
 
Web enabled 2012
Web enabled 2012Web enabled 2012
Web enabled 2012
 
Linea desarrollo institucional
Linea  desarrollo institucionalLinea  desarrollo institucional
Linea desarrollo institucional
 
Moodle 1.9 Configuración del curso
Moodle 1.9  Configuración del cursoMoodle 1.9  Configuración del curso
Moodle 1.9 Configuración del curso
 
Torre eiffel 2
Torre eiffel 2Torre eiffel 2
Torre eiffel 2
 
Presentación atletismo
Presentación atletismoPresentación atletismo
Presentación atletismo
 
1963 bar
1963 bar1963 bar
1963 bar
 
Yo me anticipo!!
Yo me anticipo!!Yo me anticipo!!
Yo me anticipo!!
 
Rotativo
RotativoRotativo
Rotativo
 
Folleto del museo_del_romanticismo
Folleto del museo_del_romanticismoFolleto del museo_del_romanticismo
Folleto del museo_del_romanticismo
 
Marifé Soria_Patrimonio Arq.
Marifé Soria_Patrimonio Arq.Marifé Soria_Patrimonio Arq.
Marifé Soria_Patrimonio Arq.
 
Prueba única de informática anderson cardona
Prueba única de informática anderson cardonaPrueba única de informática anderson cardona
Prueba única de informática anderson cardona
 
National instruments presentation human capital group dirk willems
National instruments presentation human capital group   dirk willemsNational instruments presentation human capital group   dirk willems
National instruments presentation human capital group dirk willems
 

Último

6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docxCeciliaGuerreroGonza1
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxlclcarmen
 
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...JAVIER SOLIS NOYOLA
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdfgimenanahuel
 
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxdanalikcruz2000
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
la unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscala unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscaeliseo91
 
Herramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdfHerramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdfMARIAPAULAMAHECHAMOR
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para eventoDiegoMtsS
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFAROJosé Luis Palma
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
Unidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteUnidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteJuan Hernandez
 
Manual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfManual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfMaryRotonda1
 
cortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuacortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuaDANNYISAACCARVAJALGA
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoFundación YOD YOD
 
codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinavergarakarina022
 
Factores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamicaFactores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamicaFlor Idalia Espinoza Ortega
 
Lecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadLecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadAlejandrino Halire Ccahuana
 

Último (20)

Repaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia GeneralRepaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia General
 
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
 
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf
 
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
la unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscala unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fisca
 
Herramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdfHerramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdf
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para evento
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
 
Unidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteUnidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parte
 
Manual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfManual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdf
 
cortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuacortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahua
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativo
 
La Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdfLa Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdf
 
codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karina
 
Factores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamicaFactores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamica
 
Lecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadLecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdad
 

Cap1 javaworld

  • 1.
  • 2. Java World – Capítulo 1 2 h t t p : / / g u s t a v o a l b e r o l a . b l Bienvenidos o Si estás leyendo esto es porque te encuentras interesado en rendir la certificación de Sun SCJP (Sun Certified Java Programmer), o g al menos tienes curiosidad al respecto. s El texto que leerán a continuación es un resumen que realizo por cada capítulo del libro de “Sun certified Programmer for Java 6 p Study Guide”, de Katy Sierra y Bert Bates. No fue ideado como alternativa para no comprar dicho libro, es más, recomiendo o explícitamente que adquieran el libro. t ¿Por qué adquirirlo, si me estás facilitando los resúmenes? .  Este documento es un resumen, pero a su vez una síntesis. Conceptos que para mí son conocidos, puede que para otros c lectores no lo sean, y viceversa. o  Este documento contiene conceptos que han sido aportados pura y exclusivamente por el creador. m  El libro explica en forma más profunda todos los temas que se verán a continuación.  El libro contiene una serie de exámenes al final de cada capítulo, los cuales debo decir son prácticamente indispensables, y muy tramposos en algunos casos.
  • 3. 3 Java World – Capítulo 1 h t t p : / / v a l o r c r Recomendaciones e Si no deseas leer mis recomendaciones, puedes pasar al siguiente capítulo “Utilizando Java desde la consola de comandos”, a y comenzar a prepararte para ser un SCJP. t i Los temas que se tratan pueden parecer triviales, pero llegan a ser complejos cuando se los mezcla en un todo. Es muy v importante, no dar nada por sentado, y leer hasta el último párrafo (a veces, creemos que sabíamos algo, cuando realmente, nos damos cuenta que no era del todo cierto). o Es muy importante lo que sabes, pero también lo que no sabes. Una manera muy buena de realizar esta verificación es con . los exámenes provistos en el libro “Sun certified Programmer for Java 6 Study Guide”, de Katy Sierra y Bert Bates. La otra (y b recomiendo ambas) es escribir código. Hola mundo, 2 + 2, cualquier cosa. A cada tema que están estudiando hagan un l sencillo programa, y piensen para sí mismos, cuáles serían los casos más raros que se les pueden llegar a presentar, y o pruébenlos. Por estas razones, no es obligatorio, pero sería recomendable que supieran programar en Java a un nivel g básico. Simplemente conocer la sintaxis de java. Olvídense de su IDE, su computadora necesita un descanso. Utilicen la consola de comandos para compilar y ejecutar sus s programas. p Al no utilizar una IDE, están propensos a cometer errores, que esta no les permitiría, o les advertiría en el momento. o Cuando vayan a compilar, sabrán si algo no le agrada al compilador. t ¿Pero, cómo uso es cosa que llamas “consola”? . Bien, tienes razón. Si no sabes cómo hacerlo, puede ser un poco frustrante. Para aquellos que sepan: c  Instalar la JDK o  Establecer el Path a la instalación de los binary de la JDK m  Compilar un .java desde consola  Ejecutar un .class o .jar desde consola Los invito a que empiecen con el capítulo de Identificadores, los que no, que les parece si comenzamos a familiarizarnos con la consola.
  • 4. Java World – Capítulo 1 4 Utilizando java desde la consola de comandos h Vamos a hacer una diferencia entre dos componentes de Java: h t t t  JRE t p  JDK p : JRE (Java Runtime Environment): Set de librerías que permiten correr una JVM en la pc para poder ejecutar un programa escrito en : / Java (bytecodes). / / JDK (Java Development Kit): Como mencionamos arriba, los bytecodes son un lenguaje intermedio entre el código fuente y el código / g máquina, el cual es interpretado para la JVM. Para generar este código, necesitamos de otras funcionalidades que no contiene la g u JRE. Además, en la JDK encontraremos la API de Java. Un set de librerías predefinidas para que utilicemos en nuestros programas. u s s t Los pasos a continuación representan una guía simple para poder utilizar la consola de comandos, simplemente para que puedan hacer ejercicios sobre los temas estudiados. De todas maneras, la consola de comandos se tratará más a fondo en entregas t a posteriores. a v v o Instalando la JDK y configurando el entorno o a a l 1. Si ya tienes una version de la JDK igual o superior a la 1.6.0 puedes pasar al paso 3. Vamos a obtener la JDK desde el sitio oficial de sun http://java.sun.com. l b El link directo: http://java.sun.com/javase/downloads/widget/jdk6.jsp b e Lo que nosotros buscamos es la JDK de Java SE. e r 2. Una vez que hayas desccargado la JDK es tiempo de instalarla. r o 3. Dijimos que ibamos a utilizar la consola de comandos, el problema es que la JDK no se almacena en la variable PATH de o windows, esto quiere decir que aun no podemos ejecutar los comandos de Java, salvo que nos encontremos en el directorio l l a de los mismo [Directorio instalación JDK]Bin a . En Windows, lo que vamos a hacer primero es rastrear este Path. Generalmente se encuentra en: C:Archivos de programaJavajdk1.6.0_XXbin. Si no puedes dar con este Path, puedes buscar el archivo javac.exe. Una vez . b que tengas el directorio, guardalo en un txt. b l 4. Botón derecho sobre “Mi Pc” -> Propiedades. En la solapa de “Opciones Avanzadas”, buscamos la opción que dice l o “Variables de entorno”. En el segundo recuadro, buscamos por una variable que se llame PATH. Doble click sobre la misma, o g y abrirá la edición. Ahora, agreguen el siguiente texto sin eliminar lo que hubiera antes: g ;”[Path copiado al txt]”; donde Path copiado al txt es el path de los bin de la JDK (ponemos entre comillas el s s p código por si el path contiene algún espacio). Luego acepta los cambios. p o 5. Ve a “Menu Inicio” -> “Ejecutar” -> y tipea “cmd”. o t Se debería de abrir una consola de comandos. Ahora vamos a probar que la asignación del Path fue correcta. Para ello t . tecleamos el comando javac. . c Debería de aparecerte algo como lo siguiente: c o C:>javac o m Usage: javac <options> <source files> m where possible options include: Si recibiste un mensaje que comienza como este, significa que la instalación fue exitosa, de lo contrario, vuelve a rever los pasos anteriores.
  • 5. 5 Java World – Capítulo 1 Compilando y ejecutando h t Cuando escriban código en Java, cada archivo fuente contendra la extensión java (dificil de recordar, no?!). En cambio, los archivos compilados contienen la extensión class. También pueden estar dentro de un jar, que no es más que un t zip que los agrupa en un solo archivo (tiene otras particularidades). p : Nosotros vamos a centrarnos en la creación de los .java y los .class. Los jar los dejaremos fuera por ahora. / Esta sección tiene en cuenta que el lector tiene conocimientos básicos para manejarse en la consola de comandos. / v Vamos a crear nuestra primer app. Java: a 1. Crea un archivo llamado HolaJavaWorld.java (en el directorio que quieras), y copia el código a continuación dentro del l archivo. o r public class HolaJavaWorld { static public void main(String[] args) { c System.out.println("Hola Java World!"); r } e } a 2. Ejecuta la consola de comandos, y posiciona el Prompt sobre el directorio donde creaste el archivo (Tip: si haces botón t derecho sobre el directorio, verás una opción que dice “símbolo de sistema”, esto te habre una consola de comandos i posicionada en dicho directorio). v 3. Ejecuta javac –g HolaJavaWorld.java . En esta parte es donde le pedimos al compilador de Java que genere el o Bytecode de dicho archivo fuente. Si llegase a existir algún error de compilación, es en este punto que se nos informa de tal. . 4. Ejecuta java HolaJavaWorld. Aqui creamos una instancia de la JVM sobre la cual correrá nuestra aplicación, en la cual veremos un grandioso “Hola Java World!”. b l Con estos conocimientos básicos de la consola, y un poco de conocimiento del lenguaje Java, ya te encuentras en condiciones de o generar código para probar tus conocimientos sobre lo que vayas leyendo. g s System.out.println(“Buena Suerte”); p o t . c o m
  • 6. Java World – Capítulo 1 6 Identificadores Los identificadores permiten que podamos identificar una variable por un nombre y/o conjunto de caracteres alfanuméricos h (generalmente, describen el contenido). t Para los identificadores, existen una serie de convenciones. t p Identificadores legales : Los identificadores legales se refieren a aquellos que cumplen con las normas mínimas de manera que el compilador no genere un / error en tiempo de compilación. / Las características que deben de cumplir los identificadores son: g u  Debe estar compuesto de caracteres Unicode, números, $ o _ s  Debe comenzar con un carácter Unicode, $ o _ t  Luego del primer carácter, puede contener cualquier conjunto de los nombrados en el primer punto  No tienen un límite de largo a  No es posible utilizar palabras reservadas de Java v  Son case-sensitive (distingue mayúsculas de minúsculas) o a Expresión regular de la composición de un identificador legal: [w$_]([wd$_]*) l Convenciones de código de Java Sun b e Sun creó un conjunto de estándares de codificación para Java, y publicó estos estándares en un documento titulado “Convenciones r de código de Java” el cual puede ser encontrado en java.sun.com. o Las características que debe de cumplir los identificadores son: l  Clases e interfaces a o La primer letra debe ser mayúscula . o Utiliza nomenclatura camelCase b o Para las clases, los nombres deben de ser sustantivos l o Para las interfaces, los nombres deben de ser adjetivos o  Métodos o La primer letra debe ser minúscula g o Utiliza nomenclatura camelCase s o Los nombres deben conformarse por el par verbo + sustantivo p  Variables o o La primer letra debe ser minúscula t o Utiliza nomenclatura camelCase . o Es recomendable utilizar nombres con un significado explícito, y en lo posible, cortos c  Constantes o Todas las letras de cada palabra deben estar en mayúsculas o o Se separa cada palabra con un _ m
  • 7. 7 Java World – Capítulo 1 Estándares para nombres de JavaBeans h h t t Al utilizar estándares para nombres, se garantiza que las herramientas puedan reconocer los componentes realizados por cualquier t desarrollador. t Las características que debe de cumplir los identificadores son: p p : :  Atributos / / o Ambos (getters y setters) se conforman del prefijo especificado + el nombre del atributo con su primer letra en / / mayúscula v o Getters v  Si la propiedad no es de tipo boolean el prefijo debe ser get a a  Si la propiedad es de tipo boolean el prefijo debe ser is l l  Deben de ser public, no recibir ningún argumento, y devolver un valor del mismo tipo que el setter para la o o propiedad. r r o Setters c c  El prefijo debe ser set r  Deben de ser public, recibir un parámetro del mismo tipo que la propiedad, y devolver void r e  Listeners e o Los métodos que agreguen un listener deben de comenzar con el prefijo add a a o Los métodos que quiten un listener deben de comenzar con el prefijo remove t t o El tipo del listener a agregar/quitar debe de ser pasado como argumento i i o Deben de terminar con el sufijo Listener v v  Archivos de código fuente o o o Solo puede haber una clase public por cada archivo . . o Los comentarios pueden aparecer en cualquier línea b o Si existe una clase public, el nombre de la misma debe corresponderse con el nombre del archivo b o Si la clase pertenece a un package, esta sentencia debe ser incluida como primera línea l l o Si hay import, estos deben de ser incluidos entre la declaración del package y de la clase (class) o o o Los import y package aplican a todas las clases dentro del archivo g g o Un archivo puede tener más de una clase, siempre que esta no sea public s s o Los archivos que no tengan una clase public pueden contener cualquier nombre p p o o t t . . c c o o m m
  • 8. Java World – Capítulo 1 8 Declaraciones de clases y modificadores de acceso h El acceso significa visibilidad. Dependiendo de los modificadores aplicados a la clase, atributos, o propiedades, será que estos podrán h t ser accedidos o no por otros. t t t p  Modificadores de acceso p o public : : / o prívate o protected / / o Default (package). Si no se especifica un modificador, este es el que toma por defecto / g  Modificadores de no acceso g u o strictpf u o final s s t o abstract t a Modificadores de acceso a clases a v v o package (default) o a a l Nivel de visibilidad: clase visible para todas las clases que se encuentren dentro del mismo package. Este no debe especificarse (modificador por defecto). l b b e En algunas preguntas con lógica compleja, primero es recomendable verificar los modificadores de acceso. Si e r detectas alguna violación de los mismos, directamente elige la opción “Compilation Fails (Fallas de r compilación)”. o o l l a public a . Nivel de visibilidad: clase visible para todas las clases de todos los package. . b Para especificar este modificador se antepone a la palabra clave class, la palabra public. De todas maneras, si la clase es utilizada b l por otra clase que no se encuentra en el mismo package, es necesario realizar el import de la misma. l o o g Modificadores de no acceso g s Estos modificadores pueden combinarse con aquellos que si modifican el acceso. s p p o strictpf o t t . No es necesario saber para la certificación como es que funciona strictpf. Lo único que es necesario, es saber que: . c  Es una palabra reservada c o  Puede modificar solo clases y métodos o m  Hacer una clase strictpf significa que todos los métodos que la conforman cumplen con la norma IEEE 754 para punto m flotante
  • 9. 9 Java World – Capítulo 1 final h h t t El modificador final indica que una clase no puede ser heredada o redefinida por una subclase. t t abstract p p : : Características de una clase abstract: / / /  No puede ser instanciada (new), solo puede ser heredada. /  Si un método de la clase es abstract, esto fuerza a que la clase completa sea abstract. v v  No todos los métodos de una clase abstract tienen que ser abstractos. a a  Los métodos abstract no llevan cuerpo (no llevan los caracteres {}). l l  La primer subclase concreta que herede de una clase abstract debe implementar todos los métodos de la superclase. o o r r abstract y final c c Es posible combinar estos dos modificadores de no acceso, pero… si interpretamos el funcionamiento de cada uno nos dicen que: r r e e  abstract: obliga a que la subclase defina el cuerpo de los métodos. a a  final: previene que la clase sea heredada o redefinida. t t Un modificador se opone al otro, de manera que, aunque no recibamos un error de compilación, la clase declarada de esta manera i i es inutilizable. v v o o . . b b l l o o g g s s p p o o t t . . c c o o m m
  • 10. Java World – Capítulo 1 10 Declaración de interfaces h Cuando creamos una interfaz, lo que estamos diciendo es lo que la clase deberá de poder hacer, pero no como lo hará. Una interfaz h t también es conocida como contrato. t t Características de una interfaz: t p p :  Todos los métodos de una interfaz son implícitamente public abstract, no es necesario especificarlo en la declaración del : / mismo. /  Todos los atributos de una interfaz son implícitamente constantes (public static final), no es necesario especificarlo en / la declaración del mismo. / g  Todas las variables de una interfaz deben de ser constantes (public static final). g u  Los métodos de una interfaz no pueden ser: static, final, strictfp ni native. u s  Una interfaz puede heredar (extends) de una o más interfaces. s t  Una interfaz no puede heredar de otro elemento que no sea una interfaz. t a  Una interfaz no puede implementar (implements) otra interfaz. a  Una interfaz debe ser declarada con la palabra clave interface. v v o  Los tipos de las interfaces pueden ser utilizados polimórficamente. o a  Una interfaz puede ser public o package (valor por defecto).  Los métodos toman como ámbito el que contiene la interfaz. a l l b IMPORTANTE: cuando se menciona el implícitamente, se refiere a que si no se especifican estos son los modificadores que toma, b e pero se pueden especificar todos, ninguno, o algunos, siendo declaraciones semejantes, por ejemplo: e r public interface Dibujable { int CONST = 1; r o public int CONST = 1; o l public static int CONST = 1; public final int CONST = 1; l a static int CONST = 1; final int CONST = 1; a . static final int CONST = 1; . public static final int CONST = 1; b b l void doCalculo (); public void doCalculo (); l o abstract void doCalculo (); public abstract void doCalculo (); o g } g s s p p o o t t . . c c o o m m
  • 11. 11 Java World – Capítulo 1 Declaración de métodos y atributos h h t t Un método puede contener modificadores de acceso y de no acceso. Además, posee más combinaciones que la definición de clases. t Dado que ambos, métodos y atributos se declaran de manera semejante, se especifican en un mismo apartado. t p p Modificadores de acceso : : / / Los modificadores disponibles son: / /  public v v  protected a a  package l l  prívate o o r Con estos modificadores tenemos dos conceptos que entender: r c c  Cuando un método de una clase puede acceder a un miembro de otra clase. r r  Cuando una subclase puede heredar un miembro de su superclase. e e El primer caso se da cuando un método de una clase intenta acceder a un método o atributo de otra clase, valiéndose del operador a a . para invocar un método, u obtener una variable. t t El segundo caso se da cuando una clase hereda de otro, permitiendo que la subclase acceda a los métodos y atributos de la i i superclase, a través de la herencia (extends). v v o o public . . Cuando un atributo o método es declarado como public, significa que cualquier clase en cualquier package puede acceder a b b dicho miembro. l l o o private g g Cuando un atributo o método es declarado como private, solo puede ser referenciado por la misma clase (ni siquiera por una s s subclase). Incluso si una subclase declarara un atributo o método con el mismo nombre, solo estaría generando un nuevo miembro, p p no sobrescribiéndolo, como puede llegar a ser malinterpretado. o o t t package (default) . . Cuando un atributo o método es declarado como package, solo puede ser referenciado por cualquier clase que se encuentre c c dentro del mismo package, por medio de herencia y referencia. o o m m protected Cuando un atributo o método es declarado como protected, este se comporta de la siguiente manera:  Una variable declarada como protected, se comporta como un modificador de tipo package en el paquete donde se encuentra la clase que declaró el miembro.  Una variable declarada como protected, solo puede ser accedida a través de la herencia (no referencia), cuando se encuentra fuera del package. Esto quiere decir que, un miembro declarado como protected es visible para todas las clases dentro del package donde fue declarado (ya sean subclases de la misma o no) a través de referencia y herencia, y solo disponible a través de la herencia para las subclases que se encuentran fuera del package. Para el resto de las clases, se comporta como un modificador prívate (no subclases
  • 12. Java World – Capítulo 1 12 fuera del package de declaración). h Modificadores de acceso en variables locales h t t t No es posible aplicar ningún modificador de acceso a una variable local. Solo es posible aplicar un modificador de no acceso: final. t p p : Modificadores de no acceso : / Dentro de los modificadores de no acceso, se agregan varios de los 2 ya conocidos a la lista para modificadores de miembros. / / / g Modificador de no acceso en métodos – final g u El modificador final fuerza a que un método no pueda ser redefinido por una subclase. u s s t Modificador de no acceso en atributos – final t a a v En el caso de un modificador final para un atributo, pueden darse 2 casos: v o  Si el atributo es un valor primitivo, impide de que modifique su valor (un valor primitivo es por ejemplo un int). o a  Si el atributo es una referencia, impide que se modifique la referencia, pero no el estado de la misma. a l l b Modificador de no acceso en métodos – abstract b e El modificador abstract en un método indica que el mismo se ha declarado en el contrato, pero no se ha especificado su e r comportamiento (cuerpo del método). r o o l l a Al especificar al menos 1 método como abstract, se fuerza a que la clase se declare como tal, por el contrario, a . una clase declarada como abstract puede no contener ningún método de este tipo. . b b l Modificador de no acceso en métodos – synchronized l o o g El modificador sinchronized indica que el método solo puede ser accedido por un Thread a la vez. g s Este modificador puede utilizarse en conjunto con cualquiera de los 4 modificadores de acceso. s p p o Modificador de no acceso en métodos – Native o t t . El modificador native indica que el código es dependiente de la plataforma, generalmente en código C. Solo es necesario saber para la certificación que un modificador de no acceso native solo puede ser aplicado a un método. . c El método debe especificarse como si fuera abstracto (sin los caracteres {}, y directamente con ;) c o o m Modificador de no acceso en métodos – strictfp m Al igual que para una clase, el modificador de no acceso strictfp indica que los caracteres de punto flotante utilizan la norma IEEE 754. Métodos con listas de argumentos variables A partir de Java 5.0, es posible crear métodos que reciban una cantidad de argumentos variables.  Pueden ser de tipo primitivo o un objeto.
  • 13. 13 Java World – Capítulo 1  La definición de var-args se hace: tipoDato… nombreVariable. h  Solo se puede especificar un solo parámetro de tipo var-args en la firma del método. t  El parámetro var-args debe de ser el último especificado en la firma del método. t t  La sintaxis de estos es: TipoDeDato… nombreVariable. p Al llamar a un método sobrecargado o sobre escrito, primero se verifica si la llamada concuerda con algún método que no tenga : argumentos variables, si no se encuentra ninguno de estos, se verifica con los métodos de argumentos variables. / / / v public class PruebaParametrosVariables { a static public void haceAlgo(int val) { l System.out.println("Soy haceAlgo con un parámetro int"); } o static public void haceAlgo(int val1, int val2) { r System.out.println("Soy haceAlgo con dos parámetros int"); } c static public void haceAlgo(int... val) { r System.out.println("Soy haceAlgo con parámetros variables"); e } a static public void main(String[] args) { PruebaParametrosVariables.haceAlgo(1); t PruebaParametrosVariables.haceAlgo(2, 3); i PruebaParametrosVariables.haceAlgo(4, 5, 6); PruebaParametrosVariables.haceAlgo(4, 5, 6, 7); v } o . b Soy haceAlgo con un parámetro int Soy haceAlgo con dos parámetros int l Soy haceAlgo con parámetros variables o Soy haceAlgo con parámetros variables g s p o t . c o m
  • 14. Java World – Capítulo 1 14 Declaración de constructores h En Java, cada vez que un objeto es instanciado, esto se logra a través de un constructor, el cual fue invocado con un new. h t t t  Toda clase tiene al menos un constructor. Si este no se especifica, existe un constructor implícito. t p  Si se especifica explícitamente al menos un constructor, el constructor implícito deja de existir. p :  Un constructor se define como un método, con la salvedad de que jamás puede devolver ningún parámetro. : /  Puede utilizar cualquiera los modificadores de acceso (public, private, protected, package). / /  El nombre del método debe de ser siempre igual al de la clase. / g  Puede existir más de un constructor. Esto se logra utilizando la sobrecarga de métodos.  Al igual que no pueden existir dos métodos iguales, no pueden existir dos constructores iguales. g u  No pueden ser: static, final ni abstract. u s  Pueden contener en su definición como parámetro cualquier tipo primitivo, objeto, o incluso var-args. s t t a a v Declaración de variables v o o a Se dividen en dos grupos: a l  Primitivas: estas pueden ser cualquiera de los tipos contenidos en la tabla 1 l b  Referencias: se utilizan para referenciar un objeto. Estas son declaradas para ser de un tipo específico, y ese tipo no podrá b e cambiar jamás e r r o Declaración de variables primitivas y rango de variables o l Estas pueden ser declaradas como: l a a .  Variables de clase (static) . b  Variables de instancia (objeto) b l  Parámetros  Variables locales l o o g Tabla 1 g s *Tipo Bits *Bytes Minimum range Maximum range s p byte 8 1 -2^7 (2^7)-1 p o short 16 2 -2^15 (2^15)-1 o t char 16 2 0 2^16 int 24 4 -2^23 (2^23)-1 t . long 32 8 -2^31 (2^31)-1 . c float 16 4 -2^15 (2^15)-1 c o double 32 8 -2^31 (2^31)-1 o m boolean Dependiente de la JVM m *Con conocer el valor de estas dos columnas, es más que suficiente para deducir el resto.
  • 15. 15 Java World – Capítulo 1 Declaración de variables de referencia h h t t Estas pueden ser declaradas como: t t  Variables de clase (static) p p  Variables de instancia (objeto) : :  Parámetros / /  Variables locales / / v Variables de instancia v a a Representan los atributos de una clase. Se definen dentro de la clase, pero fuera de los métodos, y solo se inicializan cuando el l l objeto es inicializado. o o Características: r r  Pueden utilizar cualquiera de los cuatro modificadores de acceso c c  Pueden ser final, transient, volatile r r  No pueden ser abstract, sinchronized, strictfp, native, static e e a a Variables locales t t i Son variables declaradas dentro de un método. Una variable local puede definirse con el mismo nombre que una variable de i instancia. A esto se lo conoce con el nombre de shadowing. v v Dado un caso de estos (shadowing), si se quisiera referenciar la variable de instancia, se debe utilizar el operador this. Este o o almacena una referencia al objeto actual. . . Características: b b l  No son inicializadas por defecto l  Pueden ser final o o  No pueden ser transient, volatile, abstract, sinchronized, strictfp, native, static (porque se volverían g g variables de clase) s s p p o o Declaración de arrays t t . Un array es un objeto que almacena multiples variables del mismo tipo, o subclases del mismo. Estos pueden contener tanto . c variables primitivas como objetos, pero el array, siempre será almacenado en el heap. c Sintaxis: o o TipoVariable[] NombreVariable m m De esta manera, al encontrarnos con una declaración como la anterior, es simple identificar el tipo de dato, en este caso, una referencia a un array de objetos de tipo TipoVariable. También es posible declarar arrays multidimensionales, que no son otra cosa que arrays de arrays. Por cada dimensión, se especifica un par de []. Declaración de variables final El declarar una variable con el modificador final hace imposible modificar su valor una vez que esta ha sido inicializada con un valor explícito. En el caso de ser una variable primitiva, su valor no podrá modificarse nunca.
  • 16. Java World – Capítulo 1 16 En el caso de ser una variable de referencia, no se podrá modificar la referencia al objeto que contiene, pero si su estado. h h t t t Variables transient t p Solo es aplicable a variables de instancia. p : Cuando una variable es marcada como transient, cuando el objeto es serializado, esta variable es excluida. : / / / / g Variables volatile g u u s Cuando una variable es marcada como volatile, le indica a la JVM que cada vez que un thread quiera acceder a su copia local de la variable, deberá verificarla con la copia maestra en memoria. s t t a a v Variables y métodos estáticos v o o a El modificador static es utilizado para crear variables y métodos que existirán independientemente de las instancias creadas. Los a atributos y métodos static existen aun antes de la primer inicialización de un objeto de dicha clase, y solo habrá una copia de l l b estos, por más que no se realice ninguna o n instancias. b e Elementos que pueden contener este modificador: e r  Métodos r o  Variables de clase o l  Una clase anidada dentro de otra clase (pero no dentro de un método). l  Bloques de inicialización a a . . b b l l o o g g s s p p o o t t . . c c o o m m
  • 17. 17 Java World – Capítulo 1 Declaración de enumeradores h h t t Java permite restringir una variable para que solo tenga un conjunto t determinado de elementos (valores predefinidos). t Declaración: p p enum NombreEnumerador { VALOR1, VALOR2, … , VALORn } : : Referencia: / / NombreEnumerador.VALOR1 / / Los enumeradores pueden ser declarados como una clase v v aparte, o miembros de una clase, pero nunca dentro de a a un método. Lo que se viene l l Cada valor de un enumerador es una clase del tipo del NombreEnumerador. En la próxima entrega estaremos o o Cada enumerador conoce su índice, de manera que la posición en que sea r adentrándonos en el mundo de la r declarado el valor si importa. c programación Orientada a objetos. c r r Declaración de contructores, métodos y variables e Conoceremos como se compone una e Debido a que los enum son en realidad un tipo especial de clase, estos a a clase, y como es la sintaxis de esta. pueden contener: constructores, métodos, variables de instancia, y cuerpo t t constante de clase específico (constant specific class body). También veremos interfaces, conceptos i i Debes recordar las siguientes características sobre enum: como herencia, polimorfismo, y otros. v v  Nunca puedes invocar un constructor enum directamente. El contructor o o Aprenderemos sobre las relaciones que de enum es invocado automáticamente, con los argumentos que . . defines luego de las constantes. existen entre objetos como Is-A (es u) y b b  Puedes definir más de un argumento para el constructor, y puedes As-A (tiene un). l l sobrecargar los constructores, así como cualquier clase. o o Y veremos cómo extender una clase, o El constant specific class body, es una declaración de lo que a simple vista g g implementar una interface. parece una clase interna. Es utilizado cuando una constante requiere s s sobrescribir el comportamiento de algún método. p p o o t t . . c c o o m m
  • 18. Java World – Capítulo 1 18 h t t p : / / g u s t a v o a l b e r o l a . b l o g s p o t . c o m