Ignacio Zahonero Martínez Luis Joyanes Aguilar Curso Programación en Java Tema 3 Entrada y Salida básica en Java -Paquetes-

Slides:



Advertisements
Presentaciones similares
FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE (SL-110) CAPÍTULO 13 Ing. Ronald Criollo.
Advertisements

ESTRUCTURA DE DATOS Unidad 01 Conceptos Previos.
Introducción a C#.
Sun Microsystems desarrolló, en 1991, el lenguaje de programación orientado a objetos que se conoce como Java. La intención de Sun era crear un lenguaje.
Java nos ofrece System.out para escribir en pantalla, pero también tenemos System.in para leer. System.in es un objeto de una clase de java que se llama.
Archivos de Texto. Introducción Los archivos son una secuencia de bits que se guarda en el disco duro. La ventaja de utilizar archivos es que los datos.
EXCEPCIONES UNIDAD 5.
Orientación a Objetos con Java SE
Archivos Implementar un método que lea una secuencia de números enteros de un archivo y compute la cantidad de elementos leídos.
Tema 1. Introducción a la programación (Lenguaje java).
1.2 Sintaxis del lenguaje Java.
2.4 Construcción de un TAD a partir de otro.
UNIVERSIDAD LATINA (UNILA)
PROGRAMACIÓN ORIENTADA A OBJETOS
PROGRAMACIÓN EN JAVA Curso-taller inicial de programación en JAVA Facultad de Estadística e Informática TEMA II.
Lenguaje de Programación II Manejo de Paquetes Corporación Universitaria del Caribe CECAR.
Archivos Contenido: Archivos de Texto Archivos de Acceso Aleatorio
Conceptos Básicos de Java
Material Elaborado por: Lic. Saily González. CONTENIDO 2.1- Estructura de una Aplicación JAVA 2.2- Elementos básicos de la Programación JAVA Comentarios.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Métodos Algoritmos y Desarrollo de Programas I. Cuando utilizar métodos  Los métodos se utilizan para romper un problema en pedazos de forma que este.
Curso Programación en Java
Material de apoyo Unidad 2 Estructura de datos
Modificadores.
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Creación de Aplicaciones
Curso Programación en Java
Tema 6: Clases Antonio J. Sierra.
En Java las estructuras de repetición son las mismas que en C/C++.
Unidad I Java y C++ : Similitudes y diferencias
Input – Scanner y Cajas de diálogo
SCJP Sun Certified Programmer for Java 6
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
Curso Programación en Java
El lenguaje de programación Java
Tema 2: Los tipos de datos
Java. Java nació el año 1991, por un par de ingenieros de la Sun Microsystems.
Capitulo # 4 herencia PROGRAMACION III UNIVERSIDAD
Informática Ingeniería en Electrónica y Automática Industrial
ESTRUCTURA DE DATOS EN JAVA
Introducción a Java (2ª parte) - excepciones, colecciones, i/o, … -
Curso Programación en Java
Programación Orientada a Objetos
Entrada / Salida. Java adopta de Unix el concepto de stream Un stream es un flujo de datos (secuencia de bytes) que va de una fuente a un destino. Desde.
El lenguaje de programación Java
USO DE EXCEPCIONES EN JAVA LSC. Natalia Rodríguez Castellón.
Tema 9: Paquetes Antonio J. Sierra. Índice 1. Introducción. 2. Protección de acceso. 3. Importación de paquetes. 4. Modelado UML de un paquete.
Programación avanzada en Java Miguel Ángel Corella 22 de Septiembre de 2005.
Unidad 2 REUTILIZACIÓN DE CLASES Programación Orientada a Objetos M.S.C. Ivette Hernández Dávila.
PAQUETES Un paquete es un conjunto de clases, interfaces y subpaquetes relacionados. El paquete define un ámbito de visibilidad: los miembros que no tienen.
Java.
Manejo de Ficheros en JAVA
INGENIERIA EN SISTEMAS COMPUTACIONALES ASIGNATURA: PROGRAMACION ORIENTADA A OBJETOS ALUMNO: JAVIER MARTINEZ MARTINEZ.
Metodología de Programación Ayudantía 4 lelagos.ublog.cl 2009.
Instituto Tecnológico Superior de Libres Ingeniería en Sistemas Computacionales Segundo semestre Materia: Programación Orientada a Objetos Asesora: Ing.
MEMORIA DINÁMICA.
LENGUAJE DE PROGRAMACIÓN
Clases “ Es una Abstracción de un elemento del mundo real ”
INSTITUTO TECNOLOGICO SUPERIOR DE LIBRES ORGANISMO PÚBLICO DESCENTRALIZADO DEL GOBIERNO DEL ESTADO DE PUEBLA MAGALY SALAZAR GARCIA ALUMNA: ANGELINA LEAL.
 DIANA GARCIA VALERIO. CONCEPTO DE FLUJO DE JAVA:  La información que necesita un programa para su función se obtiene mediante una entrada de datos.
Tratamientos Secuenciales Generalizados II Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 19 Versión
Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 3.
1 Métodos. 2 Un método es un conjunto de instrucciones definidas dentro de una clase, que realizan una determinada tarea y a las que podemos invocar mediante.
Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Práctica 4 Versión Diseño de tipos Igualdad, representación, código,
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ Facultad de Ingeniería de Sistemas Computacionales Programa de Lic. en Informática Educativa Computación.
Programación I Clases. Paradigma POO La programación Orientada a objetos (POO) es una forma programar, más cercana a como expresaríamos las cosas en la.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Transcripción de la presentación:

Ignacio Zahonero Martínez Luis Joyanes Aguilar Curso Programación en Java Tema 3 Entrada y Salida básica en Java -Paquetes-

2 Ignacio Zahonero Martínez Luis Joyanes Aguilar ENTRADA DESDE DISPOSITIVO ESTÁNDAR(I)  En Java la entrada y salida se lee y escribe en flujos (streams). La fuente básica de entrada de datos es el teclado y de salida de datos es la pantalla.  La clase System define dos referencias a objetos static para la gestión de la entrada y de la salida por consola: System.in para entrada por teclado. System.out para salida por pantalla.  System.in está asociado, normalmente, con el teclado. Es un flujo de tipo InputStream.  Los elementos básicos del flujo de entrada System.in son bytes individuales. Con el método read() ( int read() throws IOException ) se lee un byte : char c; c = (char)System.in.read();

3 Ignacio Zahonero Martínez Luis Joyanes Aguilar ENTRADA DESDE DISPOSITIVO ESTÁNDAR(II)  No resulta práctico el captar la entrada byte a byte, es preferible hacerlo línea a línea. Para ello se utiliza, primero un flujo de tipo InputStreamReader cuya misión es convertir el blujo básico de bytes ( System.in ) a flujo de caracteres. InputStreamReader en = new InputStreamReader(System.in);  este objeto que se crea se utiliza a su vez como argumento para inicializar otro objeto de la clase BufferedReader, que ya permite captar líneas de caracteres del teclado con el método readLine(): String cd; BufferedReader entrada = new BufferedReader(en); System.out.print(“Introduzca una línea por teclado: “); cd = entrada.readLine(); System.out.println(“Línea de entrada: “ + cd);  El método readLine() devuelve un objeto cadena (tipo String ) con la línea leída.

4 Ignacio Zahonero Martínez Luis Joyanes Aguilar ENTRADA DESDE DISPOSITIVO ESTÁNDAR(III)  El objeto de la clase BufferedReader se puede crear de una sola tacada, de una sola sentencia, es la forma habitual en que aparece en los programas : BufferedReader entrada = new BufferedReader( new InputStreamReader(System.in));  Es necesario tener en cuenta que la especificación de readLine() indica que levanta una excepción de tipo IOException que es necesario procesar o propagar. try { entrada.readLine(); } catch (IOException e) {...;}

5 Ignacio Zahonero Martínez Luis Joyanes Aguilar ENTRADA DE UN NUMERO ENTERO  El método parseInt () de la clase Integer, se utiliza con mucha frecuencia para entrada de datos enteros desde el teclado. Primero se crea un objeto asociado con el teclado, se lee a continuación una línea con el número entero tecleado y con parseInt() se convierte a dato int. BufferedReader entrada = new BufferedReader( new InputStreamReader(System.in)); String cd; int dato; System.out.print("Introduzca un dato entero: "); cd = entrada.readLine(); dato = Integer.parseInt(cd); Se puede simplificar concatenando llamadas : dato = Integer.parseInt(entrada.readLine());

6 Ignacio Zahonero Martínez Luis Joyanes Aguilar ENTRADA DE UN NUMERO REAL  Los pasos a seguir para entrada de un dato de tipo double : 1. Crear el objeto para entrada asociado con el dispositivo estándar de entrada, el teclado. Este objeto se utiliza para cualquier entrada. BufferedReader entrada = new BufferedReader( new InputStreamReader(System.in)); 2. Leer línea y transformar a double con el método Double.parseDouble(cadena) double d = Double.parseDouble(entrada.readLine()) Alternativamente: 2. Crear un objeto Double con el método de la clase valueOf(). Double d; String cd; cd = entrada.readLine(); d = Double.valueOf(cd); se puede concatenar llamadas : d = Double.valueOf(entrada.readLine()); 3. Obtener el dato double del objeto con el método doubleValue(). double x = d.doubleValue();

7 Ignacio Zahonero Martínez Luis Joyanes Aguilar EJEMPLO DE ENTRADA  Dada la base y altura de un triángulo calcular su área : import java.io.*; public class Area { public static void main(String ar[]) throws Exception { double base, altura; String cd; BufferedReader entrada = new BufferedReader( new InputStreamReader(System.in)); System.out.println("Base del Triángulo: "); cd = entrada.readLine(); base = Double.parseDouble(cd); System.out.println("Altura del Triángulo: "); altura = Double. parseDouble(entrada.readLine()); System.out.println("El area = " + base*altura/2); }

8 Ignacio Zahonero Martínez Luis Joyanes Aguilar OTRA VERSION DEL EJEMPLO  Dada la base y altura de un triángulo calcular su área : import java.io.*; public class Area { public static void main(String ar[]) throws Exception { double base, altura; Double d; String cd; BufferedReader entrada = new BufferedReader( new InputStreamReader(System.in)); System.out.println("Base del Triángulo: "); cd = entrada.readLine(); d = Double.valueOf(cd); base = d.doubleValue(); System.out.println("Altura del Triángulo: "); d = Double.valueOf(entrada.readLine()); altura = d.doubleValue(); System.out.println("El area = " + base*altura/2); }

9 Ignacio Zahonero Martínez Luis Joyanes Aguilar SALIDA POR PANTALLA  El objeto out definido en la clase System está asociado con el flujo de salida, que dirige los datos a consola o pantalla.  out es un objeto de la clase PrintStream. Los métodos más utilizados son: print() transfiere una cadena de caracteres al buffer de la pantalla. println() transfiere una cadena de caracteres y el car á cter de fin de l í nea al buffer dela pantalla.  Argumento de print() o println() puede ser constantes o variables de los tipos básicos, int, double, char... y de tipo String (cadena).  se pueden concatenar cadenas con caracteres, enteros.... Para ello se utiliza el operador + que internamente realiza la conversión, por ejemplo: double r = 2.0; double area = Math.PI*r*r; System.out.println("Radio = " + r + ',' + "area: " + area);

10 Ignacio Zahonero Martínez Luis Joyanes Aguilar ENTRADA UTILIZANDO CLASE SCANNER  Java 5 dispone de la clase Scanner (paquete java.util) para analizar un flujo de caracteres y obtener los elementos, de cualquier tipo primitivo, de que consta.  La clase puede analizar cualquier flujo, y en particular el flujo de bytes básico asociado al teclado representado por System.in.  El flujo a analizar por Scanner se asocia a través del constructor. Scanner dc = new Scanner(System.in); El scanner dc esta´ asociado a la entrada básica, el teclado.  El scanner divide la entrada en tockens (elementos) separados por un delimitador, por defecto un espacio.  Los métodos más interesantes son: Tipo nextTipo(); obtiene el siguiente valor de tipo primitivo Tipo. boolean hasNextTipo(); true si el siguiente elemento es de tipo primitivo Tipo

11 Ignacio Zahonero Martínez Luis Joyanes Aguilar METODOS DE SCANNER int nextInt(); devuelve el valor entero del sgte elemento. short nextShort(); devuelve el valor entero corto del sgte elemento. long nextLong(); devuelve el valor entero largo del sgte elemento. double nextDouble(); devuelve el valor double del sgte elemento.... para cada tipo de dato primitivo String next(); devuelve una cadena con el sgte elemento. String nextLine(); devuelve los caracteres hasta fin de línea y se sitúa en la siguiente. Los métodos nextTipo levantan la excepción InputMismatchException si no pueden obtener un siguiente elemento del tipo requerido. A tener en cuenta: en la entrada de un número real, la parte entera se separa de una coma (,) de la parte decimal,p. e. : 3,50 boolean hasNext(); true si quedan elementos en la línea. boolean hasNextInt(); true si siguiente elemento es un entero.... para cada tipo de dato primitivo

12 Ignacio Zahonero Martínez Luis Joyanes Aguilar EJEMPLO import java.util.Scanner; //import static java.lang.System.*; import java.util.Date; public class EjemploScanner { public static void main(String [] a) { Scanner sc = new Scanner(System.in); System.out.println("Nombre: "); String nm = sc.nextLine(); System.out.println("edad y peso: "); int edad = sc.nextInt(); double peso = sc.nextDouble(); System.out.println(nm + ", tu edad es: " + edad + ", pesas: " + peso + " en el día de " + new Date()); }

13 Ignacio Zahonero Martínez Luis Joyanes Aguilar PAQUETES

14 Ignacio Zahonero Martínez Luis Joyanes Aguilar AGRUPACIÓN DE CLASES EN JAVA  Los paquetes es la forma que tiene Java de organizar las clases relacionadas. En un paquete se agrupan clases e interfaces.  Los paquetes están compuestos por clases, interfaces, subpaquetes relacionados y pueden contener archivos de recursos.  La utilización de paquetes permite: Crear agrupaciones de clases e interfaces relacionadas formando bibliotecas de clases. Crear espacios de nombres que sirven para evitar conflictos de nombres entre los tipos. Los miembros de diferentes paquete pueden utilizar el mismo nombre. Proporcionan un marco de protección para desarrollar aplicaciones, de forma que los miembros de un paquete pueden utilizar componentes de otras clases del paquete pero que no es accesible desde el exterior. Es el ámbito del paquete la visibilidad por omisión (visibilidad friendly).  Los paquetes se estructuran de manera jerárquica. Se permite un paquete (subpaquete) dentro de otro paquete.

15 Ignacio Zahonero Martínez Luis Joyanes Aguilar ESTRUCTURA DE UN PAQUETE  Los paquetes han de asociarse a la estructura rígida de directorios. Dentro de un paquete puede haber subpaquetes; así, el paquete java está compuesto de los subpquetes util, io, awt,.... mipaquete clase1interface1 subpaquete1subpaquete2 clase21clase22clase23 interface24

16 Ignacio Zahonero Martínez Luis Joyanes Aguilar CREACIÓN DE UN PAQUETE: sentencia package  Los ficheros de un paquete deben situarse en un subdirectorio que coincida con el nombre completo del paquete. La barra, que representa directorio, se sustituye por el punto (. ) en el lenguaje Java. es.upsam.alumnos.Master.class -> directorio es/upsam/alumnos/Master.class  Para crear un paquete: 1. Crear la estructura de directorios, desde el directorio base, correspondiente a la jerarquía de paquetes. 2. Para incorporar una clase al paquete, incluir la sentencia package como primera sentencia (primera línea del archivo fuente) en el archivo que contiene a la clase. Por ejemplo la clase Jabalina en el paquete atletismo : //archivo fuente Jabalina.java package atletismo; public class Jabalina {... }

17 Ignacio Zahonero Martínez Luis Joyanes Aguilar PAQUETE escritorio  Si las clases Lapiz, Bol í grafo y Folio se van a organizar formando el paquete escritorio, el esquema a seguir es el siguiente: //archivo fuente Lapiz.java package escritorio; public class Lapiz {... } //archivo fuente Boligrafo.java package escritorio; public class Boligrafo {... } //archivo fuente Folio.java package escritorio; public class Folio {... }  En el directorio escritorio se ubicarán los archivos Lapiz.java, Boligrafo.java y Folio.java. Y también los archivos que que resultan de la compilación: Lapiz.class, Boligrafo.class y Folio.class

18 Ignacio Zahonero Martínez Luis Joyanes Aguilar PAQUETES  Si las clases no se definen como pertenecientes a un package, se utiliza un package por defecto, que es el directorio actual.  Formato package NombrePaquete;  Los nombres de los paquetes deben evitar conflictos con otros nombres de paquetes.  Para ubicar el paquete en el sistema de archivos local, Java utiliza la variable CLASSPATH a partir de la cual obtiene el directorio base del paquete. CLASSPATH en el sistema operativo contiene uno o más directorios utilizados como raíz en la búsqueda del archivo. Una vez ubicado el directorio raíz toma el nombre del paquete y reemplaza cada punto por la barra de directorio (invertida o no dependiendo del sistema operativo), de forma que el paquete mipaquete.parte1.parte2 se convierte en el directorio mipaquete/parte1/parte2 que cuelga del directorio determinado por CLASSPATH.  Por ejemplo, si las clases del paquete escritorio cuelgan del directorio c:\java\clases\ escritorio. La variable de entorno deberá especificar: CLASSPATH=.;c:\java\clases

19 Ignacio Zahonero Martínez Luis Joyanes Aguilar UTILIZAR PAQUETES: import  Las clases que se encuentran en los paquetes se identifican utilizando el nombre del paquete, el selector punto (. ) y a continuación el nombre de la clase. Por ejemplo, la declaración de la clase Arte con atributos de la clase PrintStream (paquete java.io ) y Lapiz (paquete escritorio ): public class Arte { private java.io.PrintStream salida; private escritorio.Lapiz p;  La sentencia import facilita la selección de una clase, permite escribir únicamente su nombre, evitando el nombre del paquete. La declaración anterior se puede abreviar: import java.io.PrintStream; import escritorio.*; public class Arte { private PrintStream salida; private Lapiz p;

20 Ignacio Zahonero Martínez Luis Joyanes Aguilar import  La sentencia import debe aparecer antes de la declaración de las clases, a continuación de la sentencia package. Tiene dos formatos: 1. import identificadorpaquete.nombreClase; 2.import identificadorpaquete.*;  El primer formato especifica una clase concreta.  El segundo formato es para poder acceder a todos los elementos de un paquete sin necesidad de calificar con el nombre del paquete. Se denomina importación a demanda.  Con frecuencia se utiliza el formato.*. Tiene la ventaja de poder simplificar cualquier clase del paquete, se pueden señalar los siguientes problemas: Se desconoce qué clases concretas del paquete se están utilizando. Puede haber colisiones entre nombres de clases declaradas en el archivo y nombres de clases del paquete. Mayor tiempo de compilación debido a que el compilador busca la existencia de cualquier clase en el paquete. Nota: Aunque aparezca la sentencia import paquete.*, el compilador genera bytecode s ó lo para las clases utilizadas.

21 Ignacio Zahonero Martínez Luis Joyanes Aguilar import (II)  Al importar un paquete no se importan los subpaquetes. Estos deben ser importados explícitamente. La sentencia: import java.util.*; importa todas las clases de ese paquete, pero no las de paquetes cuyo nombre esté relacionado jerárquicamente. Así el subpaquete prefs no se importa.  Los subpaquetes deben ser importados explícitamente. Por ejemplo, el subpaquete prefs del paquete java.util util, y el subpaquete event de java.awt: import java.util.*; import java.awt.event.*;  El paquete java.lang siempre se importa por defecto.  Java 5 incorpora la importación estática de una clase. Permite acceder a los elementos static de una clase sin necesidad de calificar el elemento con el nombre de la clase. Por ejempo para la clase System y la clase Math : import static java.lang.System.*; import static java.lang.Math.*; out.println("seno(90) = " + sin(PI/2.)); equivale a System.out.println( Math.sin(Math.PI...

22 Ignacio Zahonero Martínez Luis Joyanes Aguilar PAQUETES ESTÁNDAR  La biblioteca de Java incorpora más de 35 paquetes. Algunos se muestran a continuación: java.lang Constituye el núcleo del lenguaje. El compilador importa automáticamente este paquete (es el único que lo hace). Entre otras cosas contiene las clases: Object. La superclase. Tipos de datos envueltos ( Integer, Double,...). String y StringBuffer y StringBuilder. System y Runtime, que permiten utilizar los recursos del sistema. System proporciona la interface de programación independiente del sistema para los recursos del sistema y Runtime da acceso al entorno de ejecución específico de un sistema. Thread, para la programación con hilos. Class, proporciona una descripción de la clase en tiempo de ejecución. Math, de rutinas matemáticas. Exception, Error y Throwable para el manejo de excepciones. Process, representa el proceso del sistema que se crea en tiempo de ejecuación.

23 Ignacio Zahonero Martínez Luis Joyanes Aguilar PAQUETES ESTÁNDAR java.io Proporciona canales de entrada y salida que permiten la escritura y lectura de archivos de datos y otras fuentes de entrada y salida. java.util Utilidades genéricas, de manejo de cadenas, fechas, calendarios (Vector, ArrayList, GregorianCalendar, Date, StringTokenizar,... ). java.net Implementa clases e interfaces para el trabajo en red como conexiones HTTP,.... java.applet Contiene la clase Applet para la construcción de applets. java. awt Incluye este paquete elementos GUI (ventanas, botones, etc.), subpaquete event para procesar eventos, java.awt.image para manejar figuras, colores, cortar y pegar, etc.