Orientada a Objetos con Java: Anexos

Documentos relacionados
Información de la lectura en un programa.

Tipos DataInputStream/DataOutputStream: L/E de datos de tipo simple y Cadenas (Strings) ObjectInputStream/ObjectOutputStream: para persistencia de obj

Programación Orientada a Objetos. Tema 7: Persistencia

Entrada y Salida con Java

- Compilar y ejecutar programas en Java - Estructura básica de una clase - El comando javac - El comando java - Introducción al IDE de desarrollo

Práctica 4: Herencia. Objetivos:

Excepciones y E/S Java y Servicios Web I Master en Ingeniería Matemática

Prácticas de Programación

James Gosling, creador de Java

2. Estructura de un programa en Java

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Ficheros y streams. Desde el punto de vista de Java, cada fichero no es más que una secuencia o flujo de bytes [stream].

Flujos (streams) Programación. Licenciatura Lingüística y Nuevas Tecnologias Nadjet Bouayad-Agha

Nota: en el directorio de prácticas y en PoliformaT puedes descargar los ficheros de código fuente de los ejemplos que aparecen en este anexo.

Apuntes de Java. Tema 5: API de Java. Uploaded by Ingteleco

C.I.F.: B Inscrita en el Registro Mercantil de Madrid, Tomo Libro 0, Folio 135, Sección 8. Hoja M Inscripción 1ª

Guía - Taller # 2 (JAVA)

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java

Unidad II. Fundamentos de programación en Java. Ing. José Luis Llamas Cárdenas

Tema 4. Excepciones en Java

CÁTEDRA DE LENGUAJE DE PROGRAMACIÓN JAVA 2014

Práctica III: Streams, Readers y Writers

Sockets. Los sockets son un mecanismo de comunicación entre procesos que se utiliza en Internet.

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Introducción a Java LSUB. 30 de enero de 2013 GSYC

Elementos del lenguaje Java

Introducción - por qué usarlas?(1)

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

CONCEPTOS BASICOS DEL LENGUAJE JAVA

Federico Peinado

Cadenas y Entrada/Salida

Tema 2. El lenguaje de programación Java (Parte 1)

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

Programa Java. El lenguaje de programación Java. Comentarios. Programa Java. Palabras reservadas. Identificadores

Introduciendo datos desde el

TÉCNICAS DE PROGRAMACIÓN Lenguaje Java

Lo que necesitaremos para programar en Java, será un editor de texto o IDE y la JDK.

Tema 4. Entrada/Salida. Serialización de Objetos.

Elementos léxicos del lenguaje de programación Java

TEMA 2. Agenda. Fundamentos de JAVA

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Iniciación a Java. 1.Introducción a Java 2.Programación Orientada a Objetos 3.Fundamentos del lenguaje Java

RESUMEN DEL CONTENIDO

Programación Orientada a Objetos. Java: Excepciones

La clase Integer y sus métodos. Los Operadores (concepto). Operadores Lógicos y a nivel de Bits. Operadores de desplazamiento. Concatenaciones. La Con

Sockets en Java. Prof. Wílmer Pereira Universidad Simón Bolívar

Los caracteres de Java pueden agruparse en letras, dígitos, espacios en blanco, caracteres especiales, signos de puntuación y secuencias de escape.

Programación Orientada a Objetos. Java: Excepciones

Lenguaje de programación con JAVA

Arquitecturas cliente/servidor

Objetivo de aprendizaje del tema

Las clases Java Socket y ServerSocket

Temario Iniciación a Java J2SE para web

Java en 2 horas. Rodrigo Santamaría

CURSO DE PREPARACIÓN PARA LA CERTIFICACIÓN COMO PROGRAMADOR DE JAVA J2SE 5.0 DE SUN

JavaScript. Contenidos. Introducción El lenguaje Validación de formularios. Programación en Internet DLSI - Universidad de Alicante 1

Práctica 3 mtp. metodoloxía e tecnoloxía da programación. Presentar detalles básicos sobre la sintaxis del lenguaje de programación Java.

Java en 3 horas. Ampliación de Sistemas Operativos. Rodrigo Santamaría

Java RMI. las RPC de Java. Parte I. Luis Fernando Llana Díaz. Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid

INTRODUCCIÓN...9 CAPÍTULO 1. ELEMENTOS DE UN PROGRAMA INFORMÁTICO...11

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

Streams y manejo de entrada y salida (Input & Output)

POO en Java. Relaciones de composición y Herencia. Composición: clase Círculo. Composición. Herencia: La palabra reservada extends

Ejercicios de evaluación de fundamentos de programación en Java

fundamentos de programación (unidad 7) herencia y relaciones entre clases

Para leer la entrada de consola, lo primero que se hace es construir un Scanner que este asociado al flujo de entrada estándar System.

Estructuras básicas de la programación en Java

MANUAL TÉCNICO DEL PROXY UTN

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

Universidad Carlos III de Madrid Ingeniería de Telecomunicación. Examen de Programación Febrero Parte de Ejercicios

Estructura de las Aplicaciones Orientadas a Objetos Herencia de clases

Por convención, se declaran primero las variables (atributos) miembro de la clase y luego las declaraciones e implementaciones de métodos.

1 SOCKETS EN JAVA. Sistemas Distribuidos::Sockets en Java EUI-SG/INFOR.UVA.ES 1

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

Programación Concurrente en Java

2) Cual modificador limita el acceso a un método de una clase pública a los miembros de la misma clase?

Ejercicios de Programación Tema 7. Programación Orientada a Objetos

Cliente/Servidor en Java

Introducción a Java LSUB. 15 de enero de 2015 GSYC

Programación Orientada a Objetos con Java. Elementos Básicos del Lenguaje Java. Creación de un objeto. Creación de un objeto. Creación de un objeto

Fundamentos del Lenguaje de Programación Java

Tema 2. El lenguaje de programación Java. Arrays y cadenas

DISEÑO DE UNA ARQUITECTURA CLIENTE/SERVIDOR MEDIANTE OBJETOS DISTRIBUIDOS EN JAVA

Metodología y Tecnología de la Programación

Universidad de Cantabria

Capítulo 5. Programación de aplicaciones de red

Universidad Autónoma de Tlaxcala. M.C. José Juan Hernández Mora. Primera Sesión

Soluciones Ejercicios Tema 3

11. Algunas clases estándar de Java (II)

Clases Abstractas e Interfaces

class Nombre_Clase extends Nombre_SuperClase { cuerpo de la clase extendida }

TEMA 1. Introducción a la programación. CONSIDERACIONES GENERALES.

PROGRAMACIÓN CLIENTE-SERVIDOR MEDIANTE SOCKETS EN JAVA

Transcripción:

Programación Orientada a Objetos con Java: Anexos Ingeniería del Software II Curso 2009/2010 Sergio Ilarri Artigas silarri@unizar.es Parte del material está extraído de JavaSun y Java Tutorial: Copyright 1994-2007 Sun Microsystems, Inc. All Rights Reserved.

Introducción Este anexo contiene algunos otros temas importantes del lenguaje Java Junto con el otro bloque de transparencias sobre Java, se pretende dar una introducción ió al llenguaje en lugar de cubrir todos los aspectos del mismo Por supuesto, se recomienda ampliar los conocimientos con otras fuentes y practicando

Índice Detallado (I) Anexo I: Algunos Paquetes y Clases Clase Object de Uso Común Paquetes: java.lang, java.io, java.util, java.net Manejo de Cadenas Clases Numéricas Arrays

Índice Detallado (II) Anexo II: Flujos de E/S Conceptos básicos Clases básicas (paquete java.io) Ejemplo de flujo de bytes/caracteres Flujos con buffer E/S por línea de comandos Flujos de objetos Objetos File

Anexo I: Algunos Paquetes y Clases de Uso Común

Clase Object (I) protected Object clone() Interface Cloneable (no implementado por Object) CloneNotSupportedException Comportamiento por defecto en Object: Copia las variables miembro Shallow copy vs. deep copy acloneableobject.clone();

Clase Object (II) public class Stack implements Cloneable { private Vector items; protected Object clone() { try { Stack s = (Stack) super.clone(); s.items = (Vector) items.clone(); return s; catch (CloneNotSupportedException t ti e) { throw new InternalError();

Clase Object (III) Equals Integer one = new Integer(1), anotherone = new Integer(1); if (one.equals(anotherone)) System.out.println("objects are equal"); -Compara las identidades de los objetos (implementación por defecto) -A veces, compara los contenidos - Qué hacer si no nos vale el equals por defecto?

Clase Object (IV) hashcode (cods. no necesariamente únicos) finalize tostring System.out.println(Thread.currentThread().toString()); Thread[main,5,main]

Clase Object (V) getclass String.class or Class.forName("String") void PrintClassName(Object obj) { System.out.println("The Object's class is + obj.getclass().getname()); Object createnewinstanceof(object obj) { return obj.getclass().newinstance();

Clase Object (VI) notify, notifyall, wait

Paquete java.lang Class (metaclase) Object (raíz de la jerarquía) Runtime (entorno de ejecución) SecurityManager (políticas seguridad) String System: in, out, getproperties(), gc() Thread Throwable (construcción de excepciones)...

Paquete java.io Tipos de streams: bytes, caracteres, con/sin buffer, acceso aleatorio, etc. Clase File, operaciones sobre directorios

Paquete java.util Dictionary, Hashtable, Stack, Vector Observer/Observable Random StringTokenizer Date

Paquete java.net Sockets InetAddress

Manejo de Cadenas (I) Clase String: cadenas estáticas (compartibles) Clase StringBuffer: cadenas dinámicas public class StringsDemo { public static void main(string[] args) { String palindrome = "Dot saw I was Tod"; int len = palindrome.length(); length() StringBuffer dest = new StringBuffer(len); for (int i = (len - 1); i >= 0; i--) { dest.append(palindrome.charat(i)); System.out.println(dest.toString()); tostring());

Manejo de Cadenas (II) String palindrome = "Dot saw I was Tod"; char[] helloarray = { 'h', 'e', 'l', 'l', 'o'; String hellostring = new String(helloArray); System.out.println(helloString); t tl ll St i String palindrome = "Dot saw I was Tod"; int len = palindrome.length(); StringBuffer dest = new StringBuffer(len);

Manejo de Cadenas (III) (StringBuffer)

Manejo de Cadenas (IV) ==,!= compara referencias Si no se especifica, hasta el final de la cadena str1.equals(str2)

Manejo de Cadenas (V) indexof(int/string) lastindexof(int/string) indexof(int/string, int) lastindexof(int/string, int) String append(char) insert(int, String) setcharat(int, char) StringBuffer

Manejo de Cadenas (VI) String tostring() Object, Boolean, Integer, etc. String.valueOf( ) System.out.println(String.valueOf(Math.PI)); <aclass>.valueof( ) l Float pi = Float.valueOf(piStr); + (sobrecargado) concatena cadenas: System.out.println("con" + cat + "enation");

Clases Numéricas Clase abstracta

Arrays (I)

Arrays (II) public class ArrayDemo { public static void main(string[] args) { int[] anarray; Reserva de espacio anarray = new int[10]; for (int i = 0; i < anarray.length; i++) { anarray[i] = i; System.out.print(anArray[i] + " "); System.out.println();

Arrays (III) boolean[] answers = { true, false, true, true, false ; String[][] cartoons = { {"Flintstones", "Fred", "Wilma", "Pebbles, {"Rubbles", " "Barney", " "Betty", " "Bam Bam", {"Scooby Doo Gang", "Scooby Doo", "Shaggy ;

Arrays (IV) dest: creado previamente public static void arraycopy(object source public static void arraycopy(object source, int srcindex, Object dest, int destindex, int length)

Arrays (V) Si necesitamos más espacio p int[] v = new int[5]; int[] v1 = v; v = new int[20]; for(int i = 0; i < 5; i++) v[i] = v1[i];

Anexo II: Flujos de E/S

Flujos de Entrada y de Salida

Clases Básicas en java.io Clases abstractas

Lectura

Escritura

Ejemplo de Flujos de Bytes public class CopyBytes { public static void main(string[] args) throws IOException { FileInputStream in = null; FileOutputStream out = null; try { in = new FileInputStream("xanadu.txt"); out = new FileOutputStream("outagain.txt"); int c; while ((c = in.read())!= -1) { out.write(c); Devuelve un entero, no un byte: -1 indica fin de flujo finally { if (in!= null) { in.close(); if (out!= null) { out.close(); Cerrar los flujos para evitar memory leaks

Ejemplo de Flujos de Caracteres Carácter a carácter public static void main(string[] args) throws IOException { FileReader inputstream = null; FileWriter outputstream = null; try { inputstream = new FileReader("xanadu.txt"); outputstream = new FileWriter("characteroutput.txt"); int c; while ((c = inputstream.read())!= -1) { outputstream.write(c); finally { if (inputstream!= null) { inputstream.close(); if (outputstream!= null) { outputstream.close();

Ejemplo de Flujos de Caracteres Línea a línea public class CopyLines { public static void main(string[] args) throws IOException { BufferedReader inputstream = null; PrintWriter outputstream = null; try { inputstream = new BufferedReader(new FileReader("xanadu.txt")); outputstream = new PrintWriter(new FileWriter("characteroutput.txt")); String l; while ((l = inputstream.readline())!= null) { outputstream.println(l); finally { if (inputstream!= null) { inputstream.close(); if (outputstream!= null) { outputstream.close();

Flujos con Buffer inputstream = new BufferedReader(new FileReader("xanadu.txt")); outputstream = new BufferedWriter(new FileWriter("characteroutput.txt")); BufferedInputStream, BufferedOutputStream: flujos de bytes con buffer BufferedReader, BufferedWriter: flujos de caracteres con buffer Método flush, posibilidad d de autoflush

Entrada/Salida por Línea de Comandos Flujos estándar: System.in System.out System.errerr InputStream PrintStream Aunque uno esperaría que fueran flujos de caracteres, son flujos de bytes (por razones históricas) Para usar la entrada estándar como flujo de caracteres: InputStreamReader cin = new InputStreamReader(System.in);

Ejemplo de Flujos de Datos (I) static final String datafile = "invoicedata"; static final double[] prices = { 19.99, 9.99, 15.99, 3.99, 4.99 ; static final int[] units = { 12, 8, 13, 29, 50 ; static final String[] descs = { "Java T-shirt", "Java Mug", "Duke Juggling Dolls", "Java Pin", "Java Key Chain" ; out = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(dataFile))); for (int i = 0; i < prices.length; i ++) { out.writedouble(prices[i]); out.writeint(units[i]); out.writeutf(descs[i]);

Ejemplo de Flujos de Datos (II) in = new DataInputStream(new BufferedInputStream(new FileInputStream(dataFile))); double price; int unit; String desc; double total t = 0.0; 0 while (true) { try { price = in.readdouble(); unit = in.readint(); desc = in.readutf(); System.out.format("You ordered %d units of %s at $%.2f%n", unit, desc, price); total += unit * price; catch (EOFException e) { Forma de detectar el final de fichero con data streams

Flujos de Objetos (I) Para clases que implementan el interface Serializable ObjectInputStream, ObjectOutputStream Implementan los interfaces ObjectInput y ObjectOutput, subinterfaces de DataInput t y DataOutput t t Por tanto, pueden contener tanto objetos como valores primitivos

Flujos de Objetos (II) Object ob = new Object(); out.writeobject(ob); out.writeobject(ob); Object ob1 = in.readobject(); Object ob2 = in.readobject(); ob1 y ob2 son referencias al mismo objeto: Un flujo sólo puede contener una copia del objeto, aunque puede contener cualquier número de referencias a él

Objetos File Representan nombres de fichero File a = new File("xanadu.txt"); File b = new File(".." + File.separator + "examples" + File.separator + "xanadu.txt"); File.compareTo() identifica a y b como diferentes

Ejemplo de Uso de File (I) public class FileStuff { public static void main(string args[]) throws IOException { out.print("file system roots: "); for (File root : File.listRoots()) { out.format("%s ", root); out.println(); for (String filename : args) { out.format("%n------%nnew File(%s)%n", filename); File f = new File(fileName); out.format("tostring(): %s%n", f); out.format("exists(): %b%n", f.exists()); out.format("lastmodified(): %tc%n", f.lastmodified()); out.format("isfile(): %b%n", f.isfile()); out.format("isdirectory(): %b%n", f.isdirectory()); out.format("ishidden(): %b%n", f.ishidden());

Ejemplo de Uso de File (II) out.format("canread(): %b%n", f.canread()); out.format("canwrite(): %b%n", f.canwrite()); out.format("canexecute(): %b%n", f.canexecute()); out.format("isabsolute(): %b%n", f.isabsolute()); out.format("length(): %d%n", f.length()); out.format("getname(): t(" tn () %s%n",% f.getname()); out.format("getpath(): %s%n", f.getpath()); out.format("getabsolutepath(): %s%n", f.getabsolutepath()); out.format("getcanonicalpath(): %s%n", f.getcanonicalpath()); out.format("getparent(): %s%n", f.getparent()); out.format("touri: %s%n", f.touri()); Otros métodos: delete, deleteonexit, setlastmodified, renameto, mkdir, mkdirs, etc. Métodos estáticos: createtempfile, etc.

Ejemplo: Copiar un Fichero void copy(file src, File dst) throws IOException { InputStream in = new FileInputStream(src); OutputStream out = new FileOutputStream(dst); // Transfer bytes from in to out byte[] buf = new byte[1024]; int len; while ((len = in.read(buf)) > 0) { out.write(buf, 0, len); in.close(); out.close();

Ficheros de Acceso Aleatorio try { File f = new File("filename"); RandomAccessFile raf = new RandomAccessFile(f, "rw"); // Read a character char ch = raf.readchar(); // Seek to end of file raf.seek(f.length()); // Append to the end raf.writechars("astring"); raf.close(); catch (IOException e) { Otros métodos: int skipbytes(int), ( void seek(long), long getfilepointer(), etc. http://www.exampledepot.com/egs/java.io/readfromstdin.html?l=rel