Desarrollo de Funciones en el Sistema Informático
                                                    Curso 2009/2010




Programación en Java (II)
  Presentación en diapositivas (PRE08)
Desarrollo de Funciones en el Sistema Informático
                                                                       Curso 2009/2010



         Diferencias entre C++ y Java
Aunque Java se basa en C++ ...
●   Intenta mejorarlo en muchos aspectos
●   Elimina la “no orientación a objetos”


Entrada/salida
●   Java está pensado para trabajar de forma gráfica
●   La entrada/salida en modo texto se gestiona de manera básica
●   Gestión de entrada/salida con la clase System (librería java.lang)
Desarrollo de Funciones en el Sistema Informático
                                                                       Curso 2009/2010



                       Entrada/salida
Destacan 3 objetos (clase System):
●   System.in. Entrada estándar (normalmente el teclado)
●   System.out. Salida estándar (normalmente la pantalla)
●   System.err. Mensajes de error (normalmente la pantalla)


Métodos básicos de los anteriores objetos:
●   System.in.read(). Lee un carácter y lo devuelve como entero
●   System.out.print(var). Imprime una variable de un tipo primitivo
●   System.out.println(var). Como el anterior junto a un salto de línea
Desarrollo de Funciones en el Sistema Informático
                                                                                                     Curso 2009/2010



                                   Entrada/salida
La salida de datos es bastante natural... pero la entrada NO lo es

Ejemplo (salida):
                           int unEntero = 3;

                           System.out.println (“El número entero es ” + unEntero);

Gráficamente:
                                                      System.out

   System.out.println();                                  (int)                                  Consola




Ejemplo (entrada):
                           InputStreamReader unIsr = new InputStreamReader (System.in);
                           BufferedReader unBr = new BufferedReader (unIsr);
                           String unString;

                           unString = unBr.readLine();

Gráficamente:
                            BufferedReader          InputStreamReader                System.in

   unBr.readLine();            (String)                     (int)                     (byte)        Teclado
Desarrollo de Funciones en el Sistema Informático
                                                                    Curso 2009/2010



                   El preprocesador
Java no tiene preprocesador. Se eliminan las instrucciones:
●
    defines. En Java, las constantes se declaran como variables final.
●   include. En Java, las librerías (paquetes) se incluyen con import.
Desarrollo de Funciones en el Sistema Informático
                                                                                     Curso 2009/2010



    La declaración de variables y constantes
VARIABLES
La declaración ES IGUAL en Java que en C++


CONSTANTES
La declaración CAMBIA de la siguiente forma:
●   Antecede a la declaración la palabra reservada final
●
    No es necesario asignar un valor en el momento de la declaración
●   Una vez asignado un valor, ya no puede ser modificado
Ejemplo:
           final int i;   // declaramos la constante i sin asignar ningún valor
           int j = 5;
           …
           i = j + 1;     // en este momento asignamos un valor a i, por tanto ya no se podrá modificar
Desarrollo de Funciones en el Sistema Informático
                                                                             Curso 2009/2010



                     Los tipos de datos (I)
2 tipos:
●   Tipos de datos primitivos. Contiene el valor
    Ejemplo:
                            int unInt;

    Gráficamente:

                    unInt          (int)



●   Tipos de datos referencias. Contiene la dirección de memoria
    Ejemplo:
                            int[] unArrayDeInt;

    Gráficamente:
     unArrayDeInt
                                           null (al reservar memoria se apuntará a valores int)
Desarrollo de Funciones en el Sistema Informático
                                                                   Curso 2009/2010



                    Los tipos de datos (II)
Tipos primitivos:
●   byte
●   short
●   int         El tamaño es el mismo, no importa la plataforma
●   long        No existe el especificador unsigned
●   float
●   double
●   char        Utiliza Unicode (16 bits). 0-127 igual que ASCII
●   boolean


Si no se inicializa una variable, Java lo hace automáticamente.
Desarrollo de Funciones en el Sistema Informático
                                                                Curso 2009/2010



                 Los tipos de datos (III)
Tipos referencia:
●
    Vectores
●   Clases          Puede asimilarse a los punteros de otros lenguajes,
●   Interfaces      pero para acceder basta con utilizar su nombre


Se han eliminado:
●   struct          Se pueden implementar con class
●   union
●   enum            Se puede emular con final
●   typedef
Desarrollo de Funciones en el Sistema Informático
                                                                    Curso 2009/2010



               Los tipos de datos (y IV)
CASTING
Sólo se permiten coerciones automáticas seguras:
Ejemplo:
              int a float
              float a int (se debería indicar explícitamente)
VECTORES
●   Se tratan como objetos reales
●
    Genera un error (excepción) cuando se superan los límites
●
    Dispone de un miembro length que indica su longitud
CADENAS DE CARACTERES
Java dispone de los tipos String (estático) y StringBuffer (dinámico).
Desarrollo de Funciones en el Sistema Informático
                                                                   Curso 2009/2010



          La gestión de variables dinámicas
USO DE PUNTEROS EN C/C++           EN JAVA NO SON NECESARIOS
cadenas y vectores                 Proporciona objetos de ambos casos
paso de parámetros por variable    Utiliza referencias
TRABAJO PUNTEROS EN C++            LAS OPERACIONES SE REALIZAN
Con su dirección (puntero)         referencia es diferente a puntero
Con su contenido (*puntero)        puntero=contenido, nuevo=new, asignación<>duplicación


LIBERAR MEMORIA EN C++             LIBERAR MEMORIA EN JAVA

delete                             se realiza automáticamente con:
                                   recolector de basura (garbage collector)


                                   basta con asignar la referencia a null
Desarrollo de Funciones en el Sistema Informático
                                                                    Curso 2009/2010



       Las funciones y el paso de parámetros
En Java... sólo se permite programación orientada a objetos:
          funciones independientes (se incluirán dentro de las clases)
          funciones globales


En Java... todos los parámetros se pasan por valor:
●
    Datos primitivos. Recibe una copia del valor original, no modificable
●
    Datos referencia. Recibe una copia del valor original, modificable


NOTA:
Si se desea modificar los parámetros, se debe incluir como variables
   miembro de la clase y pasar la referencia como argumento
Desarrollo de Funciones en el Sistema Informático
                                                                                                                          Curso 2009/2010




                               Programación en Java (II)
                                          Presentación en diapositivas (PRE08)




                   Esta obra de Cristian Jorge Garcia Marcos está bajo una licencia Reconocimiento-Compartir bajo la misma licencia 3.0 España de Creative Commons.
                   Para ver una copia de esta licencia, visite http://creativecommons.org/licenses/by-sa/3.0/es/ o envíe una carta a Creative Commons, 171
                   SecondStreet, Suite 300, San Francisco, California 94105, USA



Basado en el documento:
López, J. A. P., Xirgo, L. R. (2008, February 18). Introducción al desarrollo de software. Retrieved February 25, 2010, from UOCOpenCourseWare Web site: http://ocw.uoc.edu/informatica-
tecnologia-y-multimedia/introduccion-al-desarrollo-de-software, publicado bajo una licencia GNU Free Document License.

Programación en Java (y II)

  • 1.
    Desarrollo de Funcionesen el Sistema Informático Curso 2009/2010 Programación en Java (II) Presentación en diapositivas (PRE08)
  • 2.
    Desarrollo de Funcionesen el Sistema Informático Curso 2009/2010 Diferencias entre C++ y Java Aunque Java se basa en C++ ... ● Intenta mejorarlo en muchos aspectos ● Elimina la “no orientación a objetos” Entrada/salida ● Java está pensado para trabajar de forma gráfica ● La entrada/salida en modo texto se gestiona de manera básica ● Gestión de entrada/salida con la clase System (librería java.lang)
  • 3.
    Desarrollo de Funcionesen el Sistema Informático Curso 2009/2010 Entrada/salida Destacan 3 objetos (clase System): ● System.in. Entrada estándar (normalmente el teclado) ● System.out. Salida estándar (normalmente la pantalla) ● System.err. Mensajes de error (normalmente la pantalla) Métodos básicos de los anteriores objetos: ● System.in.read(). Lee un carácter y lo devuelve como entero ● System.out.print(var). Imprime una variable de un tipo primitivo ● System.out.println(var). Como el anterior junto a un salto de línea
  • 4.
    Desarrollo de Funcionesen el Sistema Informático Curso 2009/2010 Entrada/salida La salida de datos es bastante natural... pero la entrada NO lo es Ejemplo (salida): int unEntero = 3; System.out.println (“El número entero es ” + unEntero); Gráficamente: System.out System.out.println(); (int) Consola Ejemplo (entrada): InputStreamReader unIsr = new InputStreamReader (System.in); BufferedReader unBr = new BufferedReader (unIsr); String unString; unString = unBr.readLine(); Gráficamente: BufferedReader InputStreamReader System.in unBr.readLine(); (String) (int) (byte) Teclado
  • 5.
    Desarrollo de Funcionesen el Sistema Informático Curso 2009/2010 El preprocesador Java no tiene preprocesador. Se eliminan las instrucciones: ● defines. En Java, las constantes se declaran como variables final. ● include. En Java, las librerías (paquetes) se incluyen con import.
  • 6.
    Desarrollo de Funcionesen el Sistema Informático Curso 2009/2010 La declaración de variables y constantes VARIABLES La declaración ES IGUAL en Java que en C++ CONSTANTES La declaración CAMBIA de la siguiente forma: ● Antecede a la declaración la palabra reservada final ● No es necesario asignar un valor en el momento de la declaración ● Una vez asignado un valor, ya no puede ser modificado Ejemplo: final int i; // declaramos la constante i sin asignar ningún valor int j = 5; … i = j + 1; // en este momento asignamos un valor a i, por tanto ya no se podrá modificar
  • 7.
    Desarrollo de Funcionesen el Sistema Informático Curso 2009/2010 Los tipos de datos (I) 2 tipos: ● Tipos de datos primitivos. Contiene el valor Ejemplo: int unInt; Gráficamente: unInt (int) ● Tipos de datos referencias. Contiene la dirección de memoria Ejemplo: int[] unArrayDeInt; Gráficamente: unArrayDeInt null (al reservar memoria se apuntará a valores int)
  • 8.
    Desarrollo de Funcionesen el Sistema Informático Curso 2009/2010 Los tipos de datos (II) Tipos primitivos: ● byte ● short ● int El tamaño es el mismo, no importa la plataforma ● long No existe el especificador unsigned ● float ● double ● char Utiliza Unicode (16 bits). 0-127 igual que ASCII ● boolean Si no se inicializa una variable, Java lo hace automáticamente.
  • 9.
    Desarrollo de Funcionesen el Sistema Informático Curso 2009/2010 Los tipos de datos (III) Tipos referencia: ● Vectores ● Clases Puede asimilarse a los punteros de otros lenguajes, ● Interfaces pero para acceder basta con utilizar su nombre Se han eliminado: ● struct Se pueden implementar con class ● union ● enum Se puede emular con final ● typedef
  • 10.
    Desarrollo de Funcionesen el Sistema Informático Curso 2009/2010 Los tipos de datos (y IV) CASTING Sólo se permiten coerciones automáticas seguras: Ejemplo: int a float float a int (se debería indicar explícitamente) VECTORES ● Se tratan como objetos reales ● Genera un error (excepción) cuando se superan los límites ● Dispone de un miembro length que indica su longitud CADENAS DE CARACTERES Java dispone de los tipos String (estático) y StringBuffer (dinámico).
  • 11.
    Desarrollo de Funcionesen el Sistema Informático Curso 2009/2010 La gestión de variables dinámicas USO DE PUNTEROS EN C/C++ EN JAVA NO SON NECESARIOS cadenas y vectores Proporciona objetos de ambos casos paso de parámetros por variable Utiliza referencias TRABAJO PUNTEROS EN C++ LAS OPERACIONES SE REALIZAN Con su dirección (puntero) referencia es diferente a puntero Con su contenido (*puntero) puntero=contenido, nuevo=new, asignación<>duplicación LIBERAR MEMORIA EN C++ LIBERAR MEMORIA EN JAVA delete se realiza automáticamente con: recolector de basura (garbage collector) basta con asignar la referencia a null
  • 12.
    Desarrollo de Funcionesen el Sistema Informático Curso 2009/2010 Las funciones y el paso de parámetros En Java... sólo se permite programación orientada a objetos: funciones independientes (se incluirán dentro de las clases) funciones globales En Java... todos los parámetros se pasan por valor: ● Datos primitivos. Recibe una copia del valor original, no modificable ● Datos referencia. Recibe una copia del valor original, modificable NOTA: Si se desea modificar los parámetros, se debe incluir como variables miembro de la clase y pasar la referencia como argumento
  • 13.
    Desarrollo de Funcionesen el Sistema Informático Curso 2009/2010 Programación en Java (II) Presentación en diapositivas (PRE08) Esta obra de Cristian Jorge Garcia Marcos está bajo una licencia Reconocimiento-Compartir bajo la misma licencia 3.0 España de Creative Commons. Para ver una copia de esta licencia, visite http://creativecommons.org/licenses/by-sa/3.0/es/ o envíe una carta a Creative Commons, 171 SecondStreet, Suite 300, San Francisco, California 94105, USA Basado en el documento: López, J. A. P., Xirgo, L. R. (2008, February 18). Introducción al desarrollo de software. Retrieved February 25, 2010, from UOCOpenCourseWare Web site: http://ocw.uoc.edu/informatica- tecnologia-y-multimedia/introduccion-al-desarrollo-de-software, publicado bajo una licencia GNU Free Document License.